Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Z uporabo Mongoose in nekaj xChips smo naredili virtualni gumb za vrata. Namesto fizičnega gumba, s katerim lahko pokličete osebje, lahko to zdaj storijo sami.
1. korak: Stvari, uporabljene v tem projektu
Strojne komponente
- XinaBox CW02 x 1 Namesto tega lahko uporabite CW01
- XinaBox IP01 x 1
- XinaBox PU01 x 1 Za napajanje lahko uporabite samo IP01, če ne nameravate programirati več modulov.
- XinaBox OC03 x 1
- XinaBox XC10 x 1 "Lepilo", zaradi katerega vse deluje!
Programske aplikacije in spletne storitve
Mongoose OS Res super in enostavno orodje za razvoj IoT … in brezplačno
2. korak: Zgodba
Na naši recepciji je bilo treba požvižgati naše osebje, zato smo se odločili, da vzamemo svoje zdravilo in ustvarimo virtualni gumb. Ta koda vam omogoča pošiljanje RPC (Remote Procedure Call), ki je videti kot običajen klic HTTP iz katerega koli brskalnika. Uporabili smo Mongoose, saj je delo z njim zelo enostavno in hitro in ima vgrajeno posodobitev kode OTA (Over The Air), kar pomeni, da bi lahko namestili našo tehnologijo in sčasoma nadgradili vdelano programsko opremo, ne da bi jo razstavljali za ponovno programiranje.
3. korak: Priprava
- Namestite Mongoose-OS: naravnost naprej, sledite tem zelo enostavnim korakom za vaš OS tukaj:
- S priključkom XC10 skupaj pritisnite IP01 in CW02. Oglejte si spodnjo sliko:
- IP01 vstavite v vrata USB
- Prepričajte se, da so stikala IP01 v položaju B in DCE.
- Iz ukazne vrstice Flash Mongoose-OS na CW02. Všečkaj to:
cd
izvoz MOS_PORT = bin/mos flash esp32
Lahko bi tudi samo vstopili v konzolo in od tam naredili največ, vendar tukaj to počnemo iz ukazne vrstice, zato je delo hitro opravljeno. Če želite vstopiti v konzolo:
cd
bin/mos
4. korak: Konfiguracija
Čeprav je te korake mogoče narediti v eni dolgi izjavi, smo se odločili, da jih razdelimo, in ker jih boste vseeno kopirali in prilepili, vam olajšajmo:
Zatiče I2C nastavite na standard xChips:
bin/mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2
Priključite svoj CW02 na WiFi:
bin/mos wifi
Odklopite WiFi v načinu AP in nastavite ime domene, tako da se lahko povežete s CW01 po imenu gostitelja, namesto da bi našli pravilen naslov IP. To bo delovalo le, če:
- V načinu AP odklopite WiFi, kot to počnemo spodaj.
- Uporabite Mac ali namestite Bonjour na računalnik z operacijskim sistemom Windows.
bin/mos pokličite Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'
bin/mos pokličite Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos pokličite Config. Set '{"config": {"dns_sd": {"host- name ":" xinabox_switch "}}}
In končno morate znova zagnati CW02, da lahko konfiguracija deluje
bin/mos pokličite Config. Save '{"reboot": true}'
Zelo hitro po tem bi morali imeti možnost ping xinabox_switch.local
5. korak: Namestitev
Odklopite IP01 iz računalnika in sestavite vezje, kot je prikazano na zgornji sliki.
Priključite PU01 (ali če ste se odločili držati IP01) v vir napajanja USB. Priključite žice vzporedno z obstoječim stikalom (za vsak slučaj pustite to) na OC03 (polarnost ni pomembna). Glejte risbo Fritzing.
Ko vklopite napajanje in vidite, da se pravzaprav pogovarjate s svojim xCW02, kaj pa skeniranje BUS -a, imenovanega vodilo I2C:
bin/mos --port ws: //xinabox_switch.local/rpc klic I2C. Scan
Če vse deluje in je vaš xOC03 pravilno nameščen, boste morali prikazati številko '56'. To je naslov I2C OC03 v decimalni obliki (v šestnajstiški vrednosti je 0x38).
6. korak: Programiranje
- Zdaj odprite Mongoose v načinu konzole, glejte zgoraj. Odpreti se mora z oknom, kjer zahteva številko vrat, vnesite: ws: //xinabox_switch.local/rpc
- Komuniciral bo s CW02 in spoznal, da je enota že utripala in povezana z WiFi, zato bo dala samo 3 kljukice. Zaprite okno in osvežite seznam datotek
- Kopirajte in prilepite spodnjo kodo v init.js in kliknite shrani+znova zaženi
- Vaše vezje je zdaj programirano.
7. korak: Preizkusite
Zdaj ste izvedli še en klic RPC, tako da lahko s svojega terminala vnesete:
bin/mos --port ws: //xinabox_switch.local/rpc Stikalo za klic
… in vaš zvočni signal naj traja 2 sekundi. To lahko storite tudi v skoraj vsakem brskalniku:
xinabox_switch.local/rpc/Switch
… z enakim učinkom.
8. korak: Naslednji korak
Uporabite lahko katero koli orodje, ki lahko sproži URL. To počnem iz aplikacije Apple, imenovane Workflow, ki mi omogoča, da to storim iz telefona ali kot zaplet iz ure Apple Watch, vendar obstaja veliko drugih možnosti. Tukaj je moj skript delovnega toka, vendar s trdo kodiranim naslovom IP: Uživajte!
Apple App: Potek dela - tukaj s trdo kodiranim naslovom IP
9. korak: Sheme
Zvočniški krog Namestite OC03 vzporedno z obstoječim gumbom.
Prenesite ga tukaj.
OC03 vezje OC03 namestite vzporedno z obstoječim gumbom.
Prenesite ga tukaj.
10. korak: Koda
init.js JavaScript Vaša glavna in edina koda za ta projekt.
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'); naj bo adr = 0x38; naj vodi = I2C.get (); I2C.writeRegB (vodilo, adr, 3, 0); I2C.writeRegB (vodilo, adr, 1, 0); / * izključite samo zato, da se prepričate */ let delay = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', funkcija (args) {GPIO.toggle (led); I2C.writeRegB (vodilo, adr, 3, 0); / * v primeru, da se OC03 ponovno poveže * / I2C.writeRegB (vodilo, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});