İçindekiler:

Mongoose OS ve XinaBox Kullanan Sanal Kapı Düğmesi: 10 Adım
Mongoose OS ve XinaBox Kullanan Sanal Kapı Düğmesi: 10 Adım

Video: Mongoose OS ve XinaBox Kullanan Sanal Kapı Düğmesi: 10 Adım

Video: Mongoose OS ve XinaBox Kullanan Sanal Kapı Düğmesi: 10 Adım
Video: ☒ xChips Daily: Outside the Box 2024, Kasım
Anonim
Mongoose OS ve XinaBox Kullanan Sanal Kapı Düğmesi
Mongoose OS ve XinaBox Kullanan Sanal Kapı Düğmesi

Mongoose ve bazı xChips kullanarak sanal bir kapı düğmesi yaptık. Personeli bilgilendirmek için fiziksel bir düğme yerine, artık bunu kendileri yapabilirler.

Adım 1: Bu Projede Kullanılanlar

Donanım bileşenleri

  • XinaBox CW02 x 1 Bunun yerine CW01'i kullanabilirsiniz
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Daha fazla modül programlamayı düşünmüyorsanız, güç için IP01'i kullanabilirsiniz.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 Hepsini çalıştıran "tutkal"!

Yazılım uygulamaları ve çevrimiçi hizmetler

Mongoose OS Gerçekten harika ve kolay IoT geliştirme aracı… ve ücretsiz

2. Adım: Öykü

Resepsiyonumuzda personelimizin devreye girmesi gerekiyordu, bu yüzden kendi ilacımızı alıp sanal bir düğme oluşturmaya karar verdik. Bu kod, herhangi bir tarayıcıdan normal bir HTTP çağrısı gibi görünen bir RPC (Uzaktan Prosedür Çağrısı) göndermenizi sağlar. Çalışması gerçekten kolay ve hızlı olduğu ve yerleşik OTA (Over The Air) kod güncellemesi olduğu için Mongoose kullandık, bu, teknolojimizi kurabileceğimiz ve yine de zaman içinde bellenimi yeniden programlama için parçalara ayırmadan yükseltebileceğimiz anlamına geliyor.

Adım 3: Hazırlık

  • Mongoose-OS'u yükleyin: Basitçe, işletim sisteminiz için şu çok kolay adımları buradan izleyin:
  • Bir XC10 konektörü kullanarak IP01 ve CW02'yi birlikte tıklayın. Aşağıdaki resme bakın:
resim
resim
  • IP01'i USB bağlantı noktanıza takın
  • IP01 anahtarlarının B ve DCE konumunda olduğundan emin olun.
  • Komut satırınızdan Mongoose-OS'u CW02'ye flashlayın. Bunun gibi:

CD

MOS_PORT'u dışa aktar= bin/mos flash esp32

Ayrıca konsola girip çoğunu oradan yapabilirsiniz, ancak burada komut satırından yapıyoruz, bu yüzden iş hızlı bir şekilde bitiyor. Konsola girmek için:

CD

bin/mos

4. Adım: Yapılandırma

Bu adımlar tek bir uzun açıklamada yapılabilirken, onları bölmeye karar verdik ve yine de onları kopyalayıp yapıştıracağınız için bunu kolaylaştıralım:

I2C pinlerini xChips standardına ayarlayın:

bin/mos yapılandırma seti i2c.scl_gpio=14 i2c.sda_gpio=2

CW02'nizi WiFi'nize bağlayın:

bin/mos wifi

AP modunda WiFi bağlantısını kesin ve bir etki alanı adı ayarlayın, böylece doğru IP adresini bulmak yerine ana bilgisayar adıyla CW01'e bağlanabilirsiniz. Bu yalnızca şu durumlarda işe yarar:

  • Aşağıda yaptığımız gibi AP modunda WiFi bağlantısını kesiyorsunuz.
  • Ya bir Mac kullanın ya da Bonjour'u Windows makinenize yükleyin.

bin/mos çağrısı Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin/mos çağrısı Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos çağrısı Config. Set '{"config": {"dns_sd": {"host- name": "xinabox_switch"}}}

Son olarak, yapılandırmanın çalışması için CW02'yi yeniden başlatmanız gerekir.

bin/mos çağrısı Config. Save '{"reboot": true}'

Bundan çok hızlı bir şekilde xinabox_switch.local'a ping atabilmeniz gerekir.

Adım 5: Yükleme

IP01'i bilgisayarınızdan çıkarın ve üstteki resme göre bir devre kurun.

PU01'i (veya IP01'e bağlı kalmaya karar verdiyseniz) bir USB güç kaynağına takın. Kabloları mevcut anahtarınızdan paralel olarak bağlayın (her ihtimale karşı bırakın) OC03'e (polarite önemli değil). Fritzing çizimine bakın.

Güç verildiğinde ve aslında xCW02'nizle konuştuğunuzu görmek için, I2C veriyolu olarak da bilinen BUS'u taramaya ne dersiniz:

bin/mos --port ws://xinabox_switch.local/rpc çağrı I2C. Scan

Her şey çalışıyorsa ve xOC03'ünüz doğru şekilde kurulmuşsa, '56' sayısının döndürüldüğünü görmelisiniz. Bu, OC03'ün ondalık olarak I2C adresidir (onaltılık olarak 0x38'dir).

Adım 6: Programlama

  • Şimdi Mongoose'u konsol modunda açın, yukarıya bakın. Bağlantı noktası numarası istediği bir Pencere ile açılmalıdır, şunu girin:ws://xinabox_switch.local/rpc
  • CW02 ile iletişim kuracak ve ünitenin zaten yanıp söndüğünü ve WiFi'ye bağlı olduğunu fark edecek, bu yüzden sadece 3 onay işareti verecektir. Pencereyi kapatın ve dosya listesini yenileyin
  • Aşağıdaki kodu kopyalayıp init.js'ye yapıştırın ve kaydet+yeniden başlat'a tıklayın
  • Devreniz artık programlanmıştır.

7. Adım: Test edin

Artık başka bir RPC çağrısı uyguladınız, böylece terminalinizden şunları girebilirsiniz:

bin/mos --port ws://xinabox_switch.local/rpc çağrı Anahtarı

… ve sesli uyarınız 2 saniye boyunca gitmelidir. Ayrıca - neredeyse - herhangi bir tarayıcıdan da yapabilirsiniz:

xinabox_switch.local/rpc/Switch

… aynı etkiyle.

Adım 8: Sonraki Adım

Bir URL'yi tetikleyebilecek herhangi bir aracı kullanabilirsiniz. Bunu, telefonumdan veya Apple Watch'ımın bir komplikasyonu olarak yapmama izin veren Workflow adlı bir Apple Uygulamasından yapıyorum, ancak orada başka birçok seçenek var. İşte İş Akışı betiğim, ancak sabit kodlanmış IP adresiyle: Keyfini çıkarın!

resim
resim

Apple Uygulaması: İş Akışı - burada sabit kodlanmış IP adresi ile

9. Adım: Şemalar

Buzzer Devresi OC03'ü mevcut basmalı düğmeye paralel olarak kurun.

Buradan indir.

OC03 Devresi OC03'ü mevcut basmalı düğmeye paralel olarak kurun.

Buradan indir.

resim
resim

Adım 10: Kod

init.js JavaScript Bu proje için ana ve tek kodunuz.

load('api_config.js');

load('api_gpio.js'); load('api_i2c.js'); load('api_net.js'); load('api_sys.js'); load('api_timer.js'); load("api_rpc.js"); let led = Cfg.get('pins.led'); adr = 0x38 olsun; izin ver veri yolu = I2C.get(); I2C.writeRegB(veri yolu, adr, 3, 0); I2C.writeRegB(veri yolu, adr, 1, 0); /* emin olmak için kapat */ let delay = 2000; GPIO.set_mode(led, GPIO. MODE_OUTPUT); RPC.addHandler('Switch', function(args) { GPIO.toggle(led); I2C.writeRegB(bus, adr, 3, 0); /* OC03'ün yeniden bağlanması durumunda */ I2C.writeRegB(bus, adr, 1, 1); Timer.set(delay, false, function() { GPIO.toggle(led); I2C.writeRegB(bus, adr, 1, 0); }, null); return true; });

Önerilen: