Sommario:

Pulsante porta virtuale utilizzando il sistema operativo Mongoose e XinaBox: 10 passaggi
Pulsante porta virtuale utilizzando il sistema operativo Mongoose e XinaBox: 10 passaggi

Video: Pulsante porta virtuale utilizzando il sistema operativo Mongoose e XinaBox: 10 passaggi

Video: Pulsante porta virtuale utilizzando il sistema operativo Mongoose e XinaBox: 10 passaggi
Video: MONGOOSE OS | ESP32 | INSTALLAZIONE GUIDATA DI MOS E FLASH PRIMO PROGRAMMA (ITALIANO) 2024, Dicembre
Anonim
Pulsante porta virtuale utilizzando il sistema operativo Mongoose e XinaBox
Pulsante porta virtuale utilizzando il sistema operativo Mongoose e XinaBox

Usando Mongoose e alcuni xChips, abbiamo creato un pulsante per la porta virtuale. Invece di un pulsante fisico per attivare il personale, ora possono farlo da soli.

Passaggio 1: cose utilizzate in questo progetto

Componenti hardware

  • XinaBox CW02 x 1 Potresti invece usare il CW01
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Si potrebbe semplicemente usare l'IP01 per l'alimentazione, se non si intende programmare più moduli.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 La "colla" che fa funzionare tutto!

App software e servizi online

Mongoose OS Strumento di sviluppo IoT davvero fantastico e facile… e gratuito

Fase 2: Storia

Nella nostra reception il nostro personale aveva bisogno di essere interpellato, quindi abbiamo deciso di prendere la nostra medicina e creare un pulsante virtuale. Questo codice ti consente di inviare una RPC (Remote Procedure Call), che sembra una normale chiamata HTTP da qualsiasi browser. Abbiamo usato Mongoose, dal momento che è davvero facile e veloce da usare e l'aggiornamento del codice OTA (Over The Air) integrato, significa che potremmo installare la nostra tecnologia e comunque nel tempo aggiornare il firmware, senza dissimularlo per la riprogrammazione.

Passaggio 3: preparazione

  • Installa Mongoose-OS: Semplice, segui questi semplici passaggi per il tuo sistema operativo qui:
  • Fare clic su IP01 e CW02 insieme utilizzando un connettore XC10. Vedi immagine sotto:
Immagine
Immagine
  • Inserisci l'IP01 nella porta USB
  • Assicurarsi che gli interruttori IP01 siano in posizione B e DCE.
  • Aggiorna il sistema operativo Mongoose a CW02 dalla riga di comando. Come questo:

cd

esporta MOS_PORT= bin/mos flash esp32

Potresti anche semplicemente entrare nella console e fare la maggior parte da lì, ma qui lo facciamo dalla riga di comando, quindi il lavoro è fatto rapidamente. Per accedere alla console:

cd

bin/mos

Passaggio 4: configurazione

Sebbene questi passaggi possano essere eseguiti in un'unica lunga istruzione, abbiamo deciso di dividerli e, poiché li avresti copiati e incollati comunque, rendiamolo semplice:

Imposta i pin I2C sullo standard xChips:

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

Collega il tuo CW02 al tuo WiFi:

bin/mos wifi

Disconnetti il WiFi in modalità AP e imposta un nome di dominio, in modo da poterti connettere al CW01 tramite il nome host invece di trovare l'indirizzo IP corretto. Funzionerà solo se:

  • Disconnetti il WiFi in modalità AP come facciamo di seguito.
  • Usa un Mac o installa Bonjour sul tuo computer Windows.

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

bin/mos chiama Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos chiama Config. Set '{"config": {"dns_sd": {"host- nome": "xinabox_switch"}}}

E infine devi riavviare il CW02 affinché la configurazione funzioni

bin/mos chiama Config. Save '{"reboot": true}'

Molto rapidamente dopo questo dovresti essere in grado di eseguire il ping di xinabox_switch.local

Passaggio 5: installazione

Scollegare l'IP01 dal computer e assemblare un circuito come nell'immagine in alto.

Collega il PU01 (o se hai deciso di restare con l'IP01) a una fonte di alimentazione USB. Collega i cavi in parallelo dal tuo interruttore esistente (lascialo, per ogni evenienza) all'OC03 (la polarità non ha importanza). Guarda il disegno di Fritzing.

Una volta acceso e per vedere che stai effettivamente parlando con il tuo xCW02, che ne dici di scansionare il BUS, ovvero il bus I2C:

bin/mos --port ws://xinabox_switch.local/rpc chiama I2C. Scan

Se tutto funziona e il tuo xOC03 è installato correttamente, dovresti vedere un numero '56' essere restituito. Questo è l'indirizzo I2C dell'OC03 in decimale (in esadecimale è 0x38).

Passaggio 6: programmazione

  • Ora apri Mongoose in modalità console, vedi sopra. Dovrebbe aprirsi con una finestra in cui richiede un numero di porta, inserire: ws://xinabox_switch.local/rpc
  • Comunicherà con il CW02 e si renderà conto che l'unità è già lampeggiante e connessa al WiFi, quindi darà solo 3 segni di spunta. Chiudi la finestra e aggiorna l'elenco dei file
  • Copia e incolla il codice qui sotto in init.js e fai clic su save+reboot
  • Il circuito è ora programmato.

Passaggio 7: test

Ora hai implementato un'altra chiamata RPC quindi dal tuo terminale puoi inserire:

bin/mos --port ws://xinabox_switch.local/rpc call Switch

… e il tuo cicalino dovrebbe suonare per 2 sec. Puoi anche farlo da - quasi - qualsiasi browser:

xinabox_switch.local/rpc/Switch

…con lo stesso effetto.

Passaggio 8: passaggio successivo

Puoi utilizzare qualsiasi strumento in grado di attivare un URL. Lo faccio da un'app Apple chiamata Workflow, che mi consente di farlo dal mio telefono o come complicazione dal mio Apple Watch, ma ci sono molte altre opzioni là fuori. Ecco il mio script del flusso di lavoro, ma con indirizzo IP codificato: Buon divertimento!

Immagine
Immagine

App Apple: flusso di lavoro - qui con indirizzo IP codificato

Passaggio 9: schemi

Circuito Buzzer Installare l'OC03 in parallelo con il pulsante esistente.

Scaricalo qui.

Circuito OC03 Installare l'OC03 in parallelo al pulsante esistente.

Scaricalo qui.

Immagine
Immagine

Passaggio 10: codice

init.js JavaScript Il tuo codice principale e unico per questo progetto.

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'); let adr = 0x38; let bus = I2C.get(); I2C.writeRegB(bus, adr, 3, 0); I2C.writeRegB(bus, adr, 1, 0); /* disattiva solo per essere sicuro */ let delay = 2000; GPIO.set_mode(led, GPIO. MODE_OUTPUT); RPC.addHandler('Switch', function(args) { GPIO.toggle(led); I2C.writeRegB(bus, adr, 3, 0); /* nel caso in cui l'OC03 venga riconnesso */ I2C.writeRegB(bus, adr, 1, 1); Timer.set(delay, false, function() { GPIO.toggle(led); I2C.writeRegB(bus, adr, 1, 0); }, null); return true; });

Consigliato: