Mündəricat:

Mongoose OS və XinaBox istifadə edərək virtual qapı düyməsi: 10 addım
Mongoose OS və XinaBox istifadə edərək virtual qapı düyməsi: 10 addım

Video: Mongoose OS və XinaBox istifadə edərək virtual qapı düyməsi: 10 addım

Video: Mongoose OS və XinaBox istifadə edərək virtual qapı düyməsi: 10 addım
Video: 어몽어스 VS SKIBIDI TOILET, ELEMENTAL SPEAKER HEAD (Titan Speakerman) | Funny Among Us Animation 2024, Noyabr
Anonim
Mongoose OS və XinaBox istifadə edərək virtual qapı düyməsi
Mongoose OS və XinaBox istifadə edərək virtual qapı düyməsi

Mongoose və bəzi xChips istifadə edərək, virtual qapı düyməsini düzəltdik. İşçilərin səs -küy salması üçün fiziki bir düymə yerinə, bunu özləri edə bilərlər.

Addım 1: Bu Layihədə İstifadə Edilən Şeylər

Avadanlıq komponentləri

  • XinaBox CW02 x 1 Bunun əvəzinə CW01 -dən istifadə edə bilərsiniz
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Daha çox modul proqramlaşdırmaq niyyətində deyilsinizsə, sadəcə güc üçün IP01 -dən istifadə edə bilərsiniz.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 Hamısını işə salan "yapışqan"!

Proqram proqramları və onlayn xidmətlər

Mongoose OS Həqiqətən zəhmli və asan IoT inkişaf etdirmə vasitəsi… və pulsuz

Addım 2: Hekayə

Qəbulda işçilərimizin içəri girməsi lazım idi, buna görə də öz dərmanımızı götürüb virtual düymə yaratmağa qərar verdik. Bu kod, hər hansı bir brauzerdən normal HTTP zənginə bənzəyən RPC (Uzaqdan Prosedur Zəngi) göndərməyə imkan verir. Mongoose-dan istifadə etdik, çünki işləmək çox asandır və sürətlidir və daxili OTA (Havada) kod yeniləməsi, texnologiyamızı quraşdıra biləcəyimiz və hələ də zamanla proqram təminatını yenidən proqramlaşdırma üçün sökmədən yeniləyə biləcəyimiz deməkdir.

Addım 3: Hazırlıq

  • Mongoose-OS qurun: Düz irəli, OS üçün bu çox asan addımları burada edin:
  • Bir XC10 konnektoru istifadə edərək IP01 və CW02 düymələrini birlikdə vurun. Aşağıdakı şəklə baxın:
Şəkil
Şəkil
  • IP01 -i USB portunuza daxil edin
  • IP01 açarlarının B və DCE mövqeyində olduğundan əmin olun.
  • Mongoose-OS-ni əmr satırınızdan CW02-ə yandırın. Bunun kimi:

cd

ixrac MOS_PORT = bin/mos flash esp32

Yalnız konsola girə və oradan çox şey edə bilərsiniz, amma burada bunu əmr satırından edirik, buna görə iş tez bir zamanda tamamlanır. Konsola daxil olmaq üçün:

cd

bin/mos

Addım 4: Konfiqurasiya

Bu addımlar uzun bir ifadədə edilə bilsə də, onları bölmək qərarına gəldik və hər halda kopyalayıb yapışdıracağınız üçün bunu asanlaşdıraq:

I2C pinlərini xChips standartına qoyun:

bin/mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2

CW02 -ni WiFi -yə qoşun:

bin/mos wifi

AP rejimində WiFi -ni ayırın və bir domen adı qurun, beləliklə düzgün IP ünvanını tapmaq əvəzinə CW01 -ə ana adı ilə qoşula bilərsiniz. Bu yalnız aşağıdakı hallarda işləyəcək:

  • Aşağıdakı kimi AP rejimində WiFi bağlantısını kəsirsiniz.
  • Ya Mac istifadə edin, ya da Windows maşınınıza Bonjour qurun.

bin/mos zəng Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin/mos çağırışı Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos zəng Config. Set '{"config": {"dns_sd": {"host- adı ":" xinabox_switch "}}}

Və nəhayət, konfiqurasiyanın işləməsi üçün CW02 -ni yenidən başlatmalısınız

bin/mos zəng Config. Save '{"reboot": true}'

Bundan çox tez sonra xinabox_switch.local -a ping yaza bilməlisiniz

Addım 5: Quraşdırma

IP01 -i kompüterinizdən ayırın və yuxarıdakı şəklə uyğun olaraq bir dövrə yığın.

PU01 -i (və ya IP01 -ə bağlı qalmağa qərar verdinizsə) USB güc mənbəyinə qoşun. Mövcud açarınızdan paralel olaraq telləri bağlayın (hər halda buraxın) OC03 -ə (polaritenin əhəmiyyəti yoxdur). Fritzing rəsminə baxın.

İşə başladıqdan sonra və həqiqətən də xCW02 ilə danışdığınızı görmək üçün I2C avtobusu olan BUS -u skan etməyiniz necə olar:

bin/mos -port ws: //xinabox_switch.local/rpc zəng I2C. Scan

Hər şey işləyirsə və xOC03 düzgün qurulubsa, '56' rəqəminin qaytarılacağını görməlisiniz. Bu, OC03 -ün ondalıkdakı I2C ünvanıdır (hexdə 0x38).

Addım 6: Proqramlaşdırma

  • İndi Mongoose'u konsol rejimində açın, yuxarıya baxın. Liman nömrəsi istədiyi bir Pəncərə ilə açılmalıdır, daxil edin: ws: //xinabox_switch.local/rpc
  • CW02 ilə əlaqə quracaq və cihazın artıq yanıb -söndüyünü və WiFi -yə qoşulduğunu başa düşəcək, buna görə sadəcə 3 yoxlama işarəsi verəcək. Pəncərəni bağlayın və fayl siyahısını yeniləyin
  • Aşağıdakı kodu kopyalayın və init.js -ə yapışdırın və saxla+yenidən başladın
  • Sizin dövrəniz indi proqramlaşdırılmışdır.

Addım 7: Test edin

İndi başqa bir RPC zəngi tətbiq etdiniz, buna görə terminaldan daxil ola bilərsiniz:

bin/mos -port ws: //xinabox_switch.local/rpc zəng dəyişdirin

… Və səs siqnalı 2 saniyə dayanmalıdır. Bunu demək olar ki, hər hansı bir brauzerdən də edə bilərsiniz:

xinabox_switch.local/rpc/Switch

… eyni təsiri ilə.

Adım 8: Növbəti addım

Bir URL çıxara biləcək hər hansı bir vasitədən istifadə edə bilərsiniz. Bunu telefonumdan və ya Apple Watch -dan bir komplikasiya olaraq etməyə imkan verən Workflow adlı bir Apple Tətbiqindən edirəm, amma orada bir çox başqa seçim var. İş axını skriptimdir, ancaq sabit kodlu IP ünvanı ilə: Zövq alın!

Şəkil
Şəkil

Apple Tətbiqi: İş axını - burada sabit kodlu IP ünvanı ilə

Addım 9: sxemlər

Buzzer Circuit OC03 -ü mövcud düymə ilə paralel olaraq quraşdırın.

Buradan yükləyin.

OC03 Dövrü OC03 -ü mövcud düymə ilə paralel olaraq quraşdırın.

Buradan yükləyin.

Şəkil
Şəkil

Addım 10: Kod

init.js JavaScript Bu layihə üçün əsas və yeganə kodunuz.

yükləmə ('api_config.js');

yük ('api_gpio.js'); yük ('api_i2c.js'); yük ('api_net.js'); yük ('api_sys.js'); yük ('api_timer.js'); yük ("api_rpc.js"); led = Cfg.get ('pins.led'); adr = 0x38 olsun; avtobus = I2C.get (); I2C.writeRegB (avtobus, adr, 3, 0); I2C.writeRegB (avtobus, adr, 1, 0); / * yalnız əmin olmaq üçün söndürün */ gecikməyə icazə verin = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', function (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * OC03 yenidən bağlanarsa * / I2C.writeRegB (avtobus, adr, 1, 1); Timer.set (gecikmə, yalan, funksiya () {GPIO.toggle (led); I2C.writeRegB (avtobus, adr, 1, 0);}, sıfır); doğruya qayıt;});

Tövsiyə: