Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Ved å bruke Mongoose og noen xChips laget vi en virtuell dørknapp. I stedet for en fysisk knapp for å surre ansatte i, kan de nå gjøre det selv.
Trinn 1: Ting som brukes i dette prosjektet
Maskinvarekomponenter
- XinaBox CW02 x 1 Du kan bruke CW01 i stedet
- XinaBox IP01 x 1
- XinaBox PU01 x 1 Du kan bare bruke IP01 for strøm, hvis du ikke har tenkt å programmere flere moduler.
- XinaBox OC03 x 1
- XinaBox XC10 x 1 "Limet" som får det hele til å fungere!
Programvare -apper og online -tjenester
Mongoose OS Virkelig fantastisk og enkelt IoT -utviklingsverktøy … og gratis
Trinn 2: Historie
I vår resepsjon måtte personalet vårt buzzes inn, så vi bestemte oss for å ta vår egen medisin og lage en virtuell knapp. Denne koden lar deg sende en RPC (Remote Procedure Call), som ser ut som et vanlig HTTP -anrop fra hvilken som helst nettleser. Vi brukte Mongoose, siden det er veldig enkelt og raskt å jobbe med, og det er innebygd OTA (Over The Air) oppdatering av kode, betyr at vi kan installere teknologien vår og fremdeles over tid oppgradere fastvaren, uten å demontere den for omprogrammering.
Trinn 3: Forberedelse
- Installer Mongoose-OS: Rett frem, bare følg disse enkle trinnene for operativsystemet ditt her:
- Klikk på IP01 og CW02 sammen med en XC10 -kontakt. Se bildet under:
- Sett IP01 inn i USB -porten
- Kontroller at IP01 -bryterne er i posisjon B og DCE.
- Flash Mongoose-OS til CW02 fra kommandolinjen. Som dette:
cd
eksport MOS_PORT = bin/mos flash esp32
Du kan også bare gå inn på konsollen og gjøre det meste derfra, men her gjør vi det fra kommandolinjen, så arbeidet blir raskt gjort. Slik går du inn på konsollen:
cd
bin/mos
Trinn 4: Konfigurasjon
Selv om disse trinnene kan utføres i en lang uttalelse, bestemte vi oss for å dele dem opp, og siden du uansett ville kopiere og lime dem inn, kan vi gjøre det enkelt:
Sett I2C -pinnene til xChips -standarden:
bin/mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2
Koble CW02 til WiFi -enheten din:
bin/mos wifi
Koble fra WiFi i AP -modus og konfigurer et domenenavn, slik at du kan koble deg til CW01 etter vertsnavn i stedet for å finne riktig IP -adresse. Dette fungerer bare hvis:
- Du kobler fra WiFi i AP -modus som vi gjør nedenfor.
- Bruk enten en Mac eller installer Bonjour på din Windows -maskin.
bin/mos call Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'
bin/mos call Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos call Config. Set '{"config": {"dns_sd": {"host- name ":" xinabox_switch "}}}
Og til slutt må du starte CW02 på nytt for at konfigurasjonen skal fungere
bin/mos call Config. Save '{"reboot": true}'
Veldig raskt etter dette bør du kunne pinge xinabox_switch.local
Trinn 5: Installere
Koble IP01 fra datamaskinen og sett sammen en krets i henhold til toppbildet.
Koble PU01 (eller hvis du bestemte deg for å holde deg til IP01) til en USB -strømkilde. Koble ledninger parallelt fra den eksisterende bryteren (la det være, i tilfelle) til OC03 (polaritet spiller ingen rolle). Se Fritzing -tegning.
Når den er slått på og for å se at du faktisk snakker med xCW02, hva med å skanne BUS, også kjent som I2C -bussen:
bin/mos --port ws: //xinabox_switch.local/rpc call I2C. Scan
Hvis alt fungerer og xOC03 er riktig installert, bør du se nummeret '56' returneres. Det er I2C -adressen til OC03 i desimal (i hex er det 0x38).
Trinn 6: Programmering
- Åpne nå Mongoose i konsollmodus, se ovenfor. Den skal åpne med et vindu der den ber om et portnummer, skriv inn: ws: //xinabox_switch.local/rpc
- Den vil kommunisere med CW02, og innse at enheten allerede er blinket og koblet til WiFi, så den vil bare gi 3 haker. Lukk vinduet og oppdater fillisten
- Kopier og lim inn koden nedenfor i init.js, og klikk på lagre+omstart
- Kretsen din er nå programmert.
Trinn 7: Test
Du har nå implementert et nytt RPC -anrop, så fra terminalen kan du angi:
bin/mos --port ws: //xinabox_switch.local/rpc call Switch
… og summeren din skal gå i 2 sekunder. Du kan også bare gjøre det fra - nesten - hvilken som helst nettleser:
xinabox_switch.local/rpc/Switch
… med samme effekt.
Trinn 8: Neste trinn
Du kan bruke et hvilket som helst verktøy som kan slå av en URL. Jeg gjør det fra en Apple -app som heter Workflow, som lar meg gjøre det fra telefonen eller som en komplikasjon fra Apple Watch, men det er mange andre alternativer der ute. Her er Workflow -skriptet mitt, men med hardkodet IP -adresse: Enjoy!
Apple App: Workflow - her med hardkodet IP -adresse
Trinn 9: Skjemaer
Summerkrets Installer OC03 parallelt med den eksisterende trykknappen.
Last den ned her.
OC03 -krets Installer OC03 parallelt med den eksisterende trykknappen.
Last den ned her.
Trinn 10: Kode
init.js JavaScript Din viktigste og eneste kode for dette prosjektet.
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"); la led = Cfg.get ('pins.led'); la adr = 0x38; la buss = I2C.get (); I2C.writeRegB (buss, adr, 3, 0); I2C.writeRegB (buss, adr, 1, 0); / * slå av bare for å være sikker */ la forsinkelse = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', funksjon (args) {GPIO.toggle (led); I2C.writeRegB (buss, adr, 3, 0); / * i tilfelle OC03 blir koblet til igjen * / I2C.writeRegB (buss, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});