Sommario:

TinyLiDAR nel tuo garage!: 10 passaggi
TinyLiDAR nel tuo garage!: 10 passaggi

Video: TinyLiDAR nel tuo garage!: 10 passaggi

Video: TinyLiDAR nel tuo garage!: 10 passaggi
Video: Hackaday Supercon - Дженнифер Ванг: Создание системы распознавания жестов на основе IMU 2024, Novembre
Anonim
TinyLiDAR nel tuo garage!
TinyLiDAR nel tuo garage!

Progetto di apertura della porta del garage WiFi fai-da-te

Il mondo IoT sta appena iniziando a esplodere: ogni azienda tecnologica in tutto il mondo sta cercando di capire come si adatteranno a questo nuovo mondo. È solo una grande opportunità! Quindi, per questo tutorial, in linea con questo tema IoT, esamineremo come creare il tuo dimostratore IoT personale che è in realtà piuttosto utile;)

Riepilogo TL;DR

  • impostare un flusso di lavoro affidabile per la codifica del modulo WiFi ESP32
  • lampeggia
  • assemblalo sulla tua breadboard
  • scarica il codice dell'applicazione e decomprimilo
  • aggiungi le tue credenziali WiFi e IP statico
  • collegalo alla tua rete WiFi
  • modifica le soglie e montalo nel tuo garage
  • collegalo ai contatti dell'apriporta del garage
  • e clicca via!
  • NESSUNA SALDATURA RICHIESTA (eccetto per i perni alle schede breakout se necessario)

Parti richieste

  • modulo sensore tempo di volo minuscolo LiDAR
  • Wipy3.0 o scheda WiFi basata su ESP32 simile
  • Relè a stato solido otticamente isolato (Omron G3VM-201AY1) per controllare l'apriporta del garage
  • Resistore da 470 ohm (5% 1/8 watt o superiore va bene)
  • Interruttore a pulsante momentaneo per il pin BOOT (GPIO0) per aggiornare il firmware sulla scheda ESP32
  • Chiavetta da USB a seriale per caricare il codice e interagire con REPL su ESP32 (usare la versione I/O 3.3v)
  • Tagliere + fili
  • Alimentazione: da 3,3 V a 5 V a 500 mA o superiore. È possibile utilizzare un caricatore per cellulare microUSB per l'alimentatore e la breakout board microUSB da collegare alla breadboard.

Passaggio 1: IoT Cosa?

IoT Cosa?
IoT Cosa?

Indubbiamente avrete sentito parlare del termine IoT ormai su tutti i media, ma cosa significa?

In parole povere significa connettere a Internet ogni sorta di sensori e cose controllabili. Al giorno d'oggi, Internet è sinonimo di wireless e quindi tutto ciò che è elettronico diventa improvvisamente wireless connesso tramite una sorta di collegamento wireless come WiFi/BT/LoRa/SigFox ecc. Una volta connessi a Internet, possiamo rilevare e/o controllare queste cose dal nostro controller mobile preferito come il nostro cellulare o automatizzarle tramite qualche app in esecuzione in un server da qualche parte (cioè il cloud).

Sebbene le aziende più grandi abbiano commercializzato più controllo vocale, intelligenza artificiale e connettività cloud ultimamente; le basi per realizzare tutto questo sono sempre le stesse. Devi connettere la tua "cosa" a un collegamento wireless prima che uno di questi concetti sia possibile. Quindi iniziamo con le basi e impariamo come collegare il minuscolo sensore del tempo di volo LiDAR a un modulo WiFi a basso costo e poi mostrare come inviare dati avanti e indietro attraverso la rete. Alla fine di questa istruzione avrai il tuo telecomando per porta del garage abilitato per il WiFi funzionante con un monitor in tempo reale per verificare se la porta è aperta o chiusa.

Tecnicamente parlando, come mostrato nel diagramma a blocchi sopra, questo progetto implementa un server web micropython in esecuzione su un modulo WiFi ESP32 utilizzando il protocollo di comunicazione "websockets" per passare i dati avanti e indietro da qualsiasi browser web mobile. In aggiunta a ciò, abbiamo il minuscolo sensore di distanza del tempo di volo LiDAR che effettua misurazioni su richiesta in modo da poter verificare se la porta del garage è stata lasciata aperta.

Passaggio 2: provalo - No davvero, provalo ora

Provalo - No davvero, provalo ora
Provalo - No davvero, provalo ora

Questo è un campo relativamente nuovo nell'elettronica, quindi sarà necessaria molta sperimentazione per far funzionare le cose nel modo giusto. La nostra speranza è che tu possa costruire su questa base di codice e realizzare alcuni progetti IoT più interessanti.

Tutto il codice utilizzato in questo articolo ha funzionato bene al momento della stesura di questo articolo. Tuttavia, poiché il tasso di innovazione nello spazio IoT è in aumento, le cose potrebbero essere cambiate nel momento in cui leggerete questo articolo. In ogni caso, risolvere i problemi e adattarlo per il tuo uso ti farà almeno entrare in questo nuovo ed entusiasmante spazio e iniziare a pensare come un ingegnere IoT!

Pronto? Iniziamo con il primo passo per configurare il tuo ambiente di sviluppo stabile.

Passaggio 3: Micropython ed ESP32

Micropython & ESP32
Micropython & ESP32

I moduli WiFi ESP32 sono stati creati da Espressif e sono migliorati molto rispetto ai moduli ESP8266 di prima generazione di pochi anni fa. Queste nuove versioni hanno molta più memoria, un processore più potente e più funzionalità rispetto ai moduli originali e sono ancora a basso costo. Il diagramma sopra ti dà un'idea di quanto sono stati in grado di racchiudere in questo piccolo chip ESP32. Lo stesso ESP32 IC è un microcontrollore dual core con una radio WiFi 802.11b/g/n e anche una radio Bluetooth 4.2 integrata. I moduli basati su ESP32 in genere aggiungono un'antenna, memoria FLASH extra e regolatori di potenza.

Nota che quando diciamo modulo ESP32 in questa istruzione, ci riferiamo alle schede Pycom Wipy3.0 che si basano sul chip/modulo ESP32. Nella nostra esperienza, le schede Pycom sembrano essere di qualità costruttiva superiore rispetto ai tipici moduli ESP32 a basso costo disponibili. Durante lo sviluppo, è sempre utile ridurre il maggior numero possibile di variabili, quindi abbiamo optato per le schede Pycom invece dei generici a basso costo.

Per le applicazioni OEM, la codifica ESP32 viene in genere eseguita in linguaggio C, ma per fortuna ci sono anche molte opzioni tra cui scegliere, quindi non dovrai scendere a questo livello basso se non lo desideri. Abbiamo scelto di utilizzare micropython per tutta la nostra codifica in questo istruibile.

Micropython, come avrai supposto, è un sottoinsieme del linguaggio di programmazione Python completo che alimenta alcuni motori di ricerca e siti Web meno conosciuti come Google, YouTube e Instagram;)

Micropython-logo
Micropython-logo

Micropython è iniziato come progetto kickstarter originariamente per il processore STM32, ma ora è diventato molto popolare per molti microcontrollori diversi. Stiamo usando l'ultima porta ufficiale Pycom ESP32 di micropython qui.

Passaggio 4: il modo più veloce

Il modo più veloce
Il modo più veloce

Il codice micropython ha una semplice GUI front-end chiamata REPL che sta per "Read–Eval–Print Loop". REPL di ESP32 funziona normalmente a 115,2 Kbaud dal momento in cui si accede tramite la porta seriale. L'immagine sopra mostra questo prompt REPL indicato dalle sue tre frecce in attesa di comandi diretti. È un modo semplice per provare i nostri semplici comandi e la maggior parte dei programmatori lo usa per sviluppare il proprio software, ma abbiamo scoperto che è un modo dolorosamente lento da percorrere. Quindi abbiamo deciso di farlo in un modo diverso per questo istruibile…

Poiché i moduli ESP32 hanno una connettività WiFi veloce, dobbiamo solo accedere al modulo tramite WiFi tramite un server FTP che è già incorporato nel codice micropython standard. Questo ci consentirà quindi di utilizzare client FTP come FileZilla per trascinare e rilasciare semplicemente il nostro codice su ESP32.

Quindi, per fare ciò, dobbiamo prima ottenere il modulo ESP32 sulla tua rete WiFi. I moduli Wipy3.0 eseguono per impostazione predefinita un piccolo punto di accesso all'accensione in modo da poterti connettere direttamente da un laptop a 192.168.4.1. Scopri maggiori dettagli qui se ti piace questo metodo.

Lavoriamo su desktop nel nostro laboratorio, quindi volevamo che i moduli ESP32 si collegassero invece alla nostra rete. Per fare ciò, dobbiamo solo fornire al modulo un indirizzo IP statico e le informazioni sulla nostra password per accedere alla nostra rete WiFi.

Passaggio 5: scarica ora

Scarica ora
Scarica ora
Scarica ora
Scarica ora
Scarica ora
Scarica ora
Scarica ora
Scarica ora

Scarica ora il codice dell'applicazione e decomprimi i file in una cartella temporanea sul tuo computer. Quindi inizia a modificare i file di script mywifi.txt e boot.py con le tue credenziali di rete WiFi.

A proposito: il nostro editor di testo preferito è ancora SublimeText. Può essere scaricato qui.

Dovresti anche scaricare il software del terminale TeraTerm e il software FTP FileZilla ora se non li hai già sul tuo computer.

Dovrai configurare FileZilla come mostrato nelle immagini sopra. Inoltre, nel gestore del sito è necessario "aggiungere un nuovo sito" per l'accesso ESP32 utilizzando l'indirizzo IP statico che hai scelto come mostrato sopra. L'utente è "micro" e la password è "python". È importante utilizzare FTP passivo e limitarlo alle sole connessioni singole. Abbiamo scoperto che limitare la velocità di caricamento ha aiutato anche a prevenire i blocchi del caricamento. Sebbene non mostrato nelle immagini, sarebbe utile associare il programma SublimeText per i tipi di file in modo da poter modificare il codice facendo doppio clic sul lato sinistro della schermata FTP. Per fare ciò, vai al menu Impostazioni e in Modifica file/Associazioni tipi di file inserisci la posizione del tuo file exe SublimeText per ogni associazione. Ad esempio il nostro era:

js "C:\Sublime Text Build 3065 x64\sublime_text.exe"

. "C:\Sublime Text Build 3065 x64\sublime_text.exe" htm "C:\Sublime Text Build 3065 x64\sublime_text.exe" html "C:\Sublime Text Build 3065 x64\sublime_text.exe" py "C:\Sublime Testo Build 3065 x64\sublime_text.exe" css "C:\Sublime Text Build 3065 x64\sublime_text.exe"

Copia i file dell'applicazione estratti per questa istruzione in una nuova cartella chiamata "FTP" sul tuo computer come abbiamo fatto noi. Sarà più facile trascinare da qui all'interno di FileZilla in seguito.

Normalmente è una buona idea avere il firmware più recente in esecuzione su ESP32. L'aggiornamento dei moduli Pycom per utilizzare l'ultimo micropython è molto semplice e può essere eseguito in circa 3 minuti con il loro strumento di aggiornamento del firmware.

Assicurati solo di impostare la porta COM per il tuo dongle da USB a seriale e deseleziona la modalità ad alta velocità come mostrato nell'immagine "Comunicazione" sopra. La nostra era la porta COM 2. Nota che per portare i moduli ESP32 in questa modalità di aggiornamento, dovrai premere il pulsante GPIO0/Boot (sul pin P2) mentre premi e rilasci il pulsante Reset.

Passaggio 6: tempo hardware

Tempo hardware
Tempo hardware
Tempo hardware
Tempo hardware

Ora sarebbe un buon momento per cablare l'hardware su una breadboard come mostrato nel diagramma schematico illustrato sopra.

Dopo che tutto questo è stato completato. Avvia il software del terminale con la porta COM corretta per il tuo dongle da USB a seriale impostalo su 115,2 Kbaud.

All'accensione, il modulo dovrebbe mostrare il familiare prompt REPL che fornisce tre frecce ">>>".

Ora vai al file mywifi.txt modificato e copia tutti i contenuti (CTRL+C). Quindi vai alla schermata del terminale REPL e premi CTRL + E per entrare in modalità taglia e incolla. Quindi fai clic con il pulsante destro del mouse per incollare il contenuto nella schermata REPL e quindi premi i tasti CTRL + D per eseguire ciò che hai incollato.

Dovrebbe iniziare subito un conto alla rovescia per dire che sta tentando di connettersi alla rete WiFi. La schermata sopra mostra un messaggio di connessione riuscita.

Una volta connesso, puoi utilizzare FileZilla per connetterti al server FTP nei moduli all'indirizzo IP statico che hai già scelto nei tuoi file mywifi.txt e boot.py.

Passaggio 7: sei ancora con noi?

Ancora con noi?
Ancora con noi?
Ancora con noi?
Ancora con noi?

Se finora è andato tutto bene, allora buon per te! Il duro lavoro è fatto:) Ora andrà tutto bene - basta un po' di copia e incolla e sarai pronto per l'uso in modo da poterlo montare nel tuo garage.

Per modificare qualsiasi codice, puoi fare doppio clic sul lato sinistro della finestra FTP in FileZilla e verrà avviato SublimeText. Salva le tue modifiche e poi trascinalo sul lato destro che è la finestra ESP32.

Per ora, trascina i file dal lato sinistro al lato destro di FileZilla per caricare ciascun file separatamente nel modulo ESP32. Questo richiede solo pochi secondi invece di minuti come fa il normale metodo REPL. Si prega di notare che tutti i file dovrebbero trovarsi nella directory principale chiamata "flash" all'interno della scheda Pycom. Puoi creare un segnalibro in FileZilla per rendere più facile tornare qui per la prossima volta.

Se riscontri un problema in cui FileZilla si blocca e scade per il caricamento, noterai un file nel lato ESP32 che ha 0 byte. Cercare di sovrascriverlo può farti impazzire perché non finisce mai, non importa quello che provi! È uno stato molto strano e accade molto di rado. La soluzione migliore per questo è eliminare il file a 0 byte e spegnere e riaccendere il modulo. Quindi ottieni una copia FRESCA del file sorgente da caricare di nuovo sul modulo ESP32. Nota che una nuova copia è la chiave qui. In qualche modo il file sorgente non verrà caricato correttamente se si blocca in questo modo anche una sola volta.

Abbiamo scoperto che è utile trascinare ogni file individualmente sul modulo ESP32 a partire da boot.py. Questo primo file è responsabile dell'inserimento del modulo in rete, quindi non sarà più necessario eseguire il taglia e incolla in REPL. Puoi comunque prendere la cartella www e trascinarla in un colpo solo. Questo ha sempre funzionato per noi nel nostro sviluppo. Tutti questi file sono archiviati nella memoria flash non volatile integrata nel modulo ESP32 in modo che siano presenti dopo la rimozione dell'alimentazione. Solo fyi: il main.py verrà eseguito dopo boot.py ogni volta che il modulo viene acceso.

Passaggio 8: suggerimenti per l'hacking

Suggerimenti per l'hacking
Suggerimenti per l'hacking

Dai un'occhiata a tutto il codice e prova a cercare su Google le parole chiave che non riconosci. Una volta che tutto è pronto e funzionante, puoi provare a cambiare quello che vuoi per vedere cosa fa.

Se qualcosa va storto, puoi sempre cancellare il codice e/o ricaricare il modulo in circa 3 minuti come hai già fatto in precedenza.

Per riformattare il flash e cancellare tutto il codice in un colpo solo, puoi digitare quanto segue in REPL:

importare il sistema operativo

os.mkfs('/flash')

Quindi esegui un ciclo di alimentazione o premi il pulsante di ripristino sulla scheda Wipy.

Nota che c'è anche un altro modo per aggirare boot.py e main.py se le cose ti vanno male. Basta collegare temporaneamente il pin P12 al pin di uscita a 3,3 V e premere il pulsante Reset come mostrato sopra. Bypasserà tutto il tuo codice e andrà direttamente a REPL una volta in modo da poter capire le cose senza eliminare tutto il tuo codice da flash.

Una volta terminato il caricamento di tutti i file, basta premere il pulsante Ripristina sul modulo ESP32 per riavviarlo.

Vedrai il familiare conto alla rovescia sullo schermo del terminale REPL mentre accede nuovamente alla tua rete WiFi. La differenza è che questa volta questo codice è in esecuzione dal file boot.py.

Passaggio 9: pagine Web

Pagine web
Pagine web
Pagine web
Pagine web
Pagine web
Pagine web
Pagine web
Pagine web

Il microwebserver dovrebbe essere attivo e funzionante ora su ESP32, quindi provalo utilizzando il browser desktop o il tuo dispositivo mobile.

Vai al tuo indirizzo IP statico e dovresti vedere una schermata simile a quella sopra.

Ci sono due pagine web servite dal nostro microwebserver che è in esecuzione su ESP32.

La prima è la pagina index.html predefinita che ti dà un semplice pulsante APRI/CHIUDI per simulare il tipo di clicker dell'apriporta del garage che hai. Quando lo premi sul tuo browser web, vedrai apparire una grande icona a forma di ingranaggio blu. Questa è una conferma che la connessione websocket è stata effettuata con successo e hai ricevuto una conferma dal server che il tuo comando "press" è stato ricevuto correttamente. Dovresti anche vedere un LED verde brillante accendersi sulla scheda Pycom quando premi questo pulsante. La connessione websockets sta trasmettendo gli stati del pulsante inviando semplici messaggi di testo di "press" quando lo si preme e "pressup" quando lo si rilascia. Per conferma, il microwebserver sta inviando questo testo ma aggiungendo "_OK" per dire che lo ha ricevuto correttamente.

Dopo aver collegato i terminali del relè a stato solido (SSR) isolato otticamente all'apriporta del garage (fare riferimento allo schema illustrativo), premendo il pulsante si aprirà/chiuderà anche fisicamente la porta.

Attendi qualche secondo e riprova se non vedi l'icona a forma di ingranaggio blu che potrebbe essere in fase di riavvio o qualcosa del genere. Si noti che il websocket si chiuderà automaticamente in circa 20 secondi se non lo si utilizza per evitare blocchi. Tieni inoltre presente che i websocket sono orientati alla connessione, quindi devi interrompere il websocket per cambiare pagina, altrimenti potresti non essere in grado di riconnetterti di nuovo fino a quando non premi il ripristino sul modulo ESP32. Per il nostro codice di esempio, abbiamo alcuni modi di fermare il websocket: tocca il testo di stato, i puntini rotanti o il collegamento ipertestuale per andare alla pagina successiva.

La seconda pagina web è per la lettura delle misurazioni della distanza dal sensore di distanza del tempo di volo tinyLiDAR. Basta premere il pulsante una volta e inizierà lo streaming delle letture della distanza sul tuo dispositivo mobile per circa 20 secondi. Quando premi verso il basso, si accenderà un LED rosso sulla scheda Pycom in modo che tu possa dire che sta ricevendo il comando di pressione del pulsante da questa pagina.

Entrambe le pagine danno un'indicazione della porta aperta o chiusa leggendo la distanza da tinyLiDAR. La variabile doorThreshold deve essere impostata in entrambi i file html nella sezione dello script come mostrato qui:

//--------------------------

//**** Regola come necessario **** var doorThreshold = 100; // distanza in cm var ws_timeout = 20000; // il tempo massimo in ms per consentire l'apertura/chiusura della porta predefinita è 20 sec //------------ //--- -----------------------

Dovrai modificare questa soglia per la configurazione del tuo garage in modo che possa rilevare quando la porta del garage è arrotolata e quindi APERTA o abbassata e quindi CHIUSA. Dopo aver apportato le modifiche per la soglia in entrambi i file html, carica nuovamente questi file html e riavvialo per verificare che tutto funzioni ancora correttamente.

Se tutto va bene, ora puoi andare avanti e montare la scheda capovolta nel tuo garage come mostrato nell'immagine sopra. Collegare i pin 3 e 4 dell'SSR anche all'apriporta del garage. La polarità non è importante poiché stiamo utilizzando una versione MOSFET dell'SSR: deve solo cortocircuitare i contatti per simulare un clic del pulsante sull'unità base della porta del garage.

Passaggio 10: e questo è tutto

E questo è tutto!
E questo è tutto!

Congratulazioni! Aprire la porta del garage ora è facile come toccare il telefono e puoi verificare se è stato lasciato aperto o meno effettuando misurazioni in tempo reale con tinyLiDAR:)

Ora puoi anche utilizzare ESP32 con websocket tramite WiFi per qualsiasi cosa tu voglia. Leggi di più sui "websocket" se non li conosci: sono davvero abbastanza veloci e facili da usare.

Anche l'implementazione di tinyLiDAR con ESP32 è stata semplicissima, anche se il sensore era stato originariamente progettato per funzionare su un Arduino UNO. Abbiamo una versione beta più elaborata della GUI del terminale che esegue la maggior parte dei comandi tinyLiDAR in micropython su ESP32 - vedi immagine sopra. È disponibile nella nostra sezione download insieme al manuale di riferimento, ecc.

Dai un'occhiata a tutto il nostro codice per capire come tutto si combina e prova a cambiare le cose in modo da poter costruire su di esso per fare quello che vuoi.

Si prega di tenere presente che non si parlava di sicurezza qui. La sicurezza è un'area enorme nell'IoT e dovrebbe essere presa sul serio. Se vuoi utilizzare questo progetto nel tuo garage, dovresti mantenere le password della tua rete WiFi forti e sicure. Ci sono molte informazioni sul web sulla sicurezza, quindi assicurati di leggere le ultime novità e rimanere aggiornato.

Grazie per la lettura e buon hacking! Saluti.

Consigliato: