Innholdsfortegnelse:

TinyLiDAR i garasjen din !: 10 trinn
TinyLiDAR i garasjen din !: 10 trinn

Video: TinyLiDAR i garasjen din !: 10 trinn

Video: TinyLiDAR i garasjen din !: 10 trinn
Video: ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! 2024, November
Anonim
TinyLiDAR i garasjen din!
TinyLiDAR i garasjen din!

DIY WiFi Garage Door Opener Project

IoT -verden begynner å eksplodere - hvert teknologiselskap rundt om i verden prøver å finne ut hvordan de vil passe inn i denne nye verdenen. Det er bare en stor mulighet! Så for dette instruerbare, i tråd med dette IoT -temaet, går vi over hvordan du kan lage din egen IoT -demonstrator som faktisk er nyttig;)

TL; DR oppsummering

  • sette opp en pålitelig arbeidsflyt for koding av ESP32 WiFi -modulen
  • blinke den
  • sett det sammen på brødbrettet
  • last ned søknadskoden vår og pakk den ut
  • legg til Wi -Fi -legitimasjon og statisk IP
  • koble den til ditt WiFi -nettverk
  • rediger terskler og monter dem i garasjen din
  • koble den til kontaktene til garasjeportåpneren
  • og klikk unna!
  • INGEN SOLDERING KREVES (bortsett fra pinnene til utbruddstavler om nødvendig)

Deler påkrevd

  • tinyLiDAR tid for flyavstands sensormodul
  • Wipy3.0 eller lignende ESP32 -basert WiFi -kort
  • Optisk isolert solid state relé (Omron G3VM-201AY1) for å styre garasjeportåpneren
  • 470ohm motstand (5% 1/8 watt eller større er greit)
  • Kortvarig trykknappbryter for BOOT (GPIO0) -pinnen for å oppgradere fastvaren på ESP32 -kortet
  • USB til seriell dongle for å laste opp kode og samhandle med REPL på ESP32 (bruk 3.3v I/O -versjonen)
  • Brødbrett + ledninger
  • Strømforsyning: 3,3V til 5V ved 500mA eller mer. Du kan bruke en microUSB mobiltelefonlader for strømforsyningen og et microUSB -bryterbrett for å koble til brødbrettet.

Trinn 1: IoT Hva?

IoT Hva?
IoT Hva?

Utvilsomt har du hørt om begrepet IoT nå i alle media, men hva betyr det?

Løst sagt betyr det å få alle slags sensorer og kontrollerbare ting koblet til Internett. I disse dager er Internett synonymt med trådløst, og dermed har vi alt elektronisk plutselig blitt trådløst tilkoblet over en slags trådløs lenke som WiFi/BT/LoRa/SigFox etc. Når vi er koblet til Internett, kan vi føle og/eller kontrollere disse tingene fra vår favoritt mobilkontroller som mobiltelefonen vår, eller automatiser dem via en app som kjører på en server et sted (dvs. skyen).

Selv om de større selskapene har markedsført mer stemmekontroll, AI og nettilkobling i det siste; det grunnleggende for å få alt dette til å skje er fortsatt det samme. Du må koble "tingen din" til en trådløs lenke før noen av disse konseptene er mulige. Så la oss begynne med det grunnleggende og lære hvordan du kobler opp den lilleLiDAR flyavstandssensoren til en rimelig WiFi -modul og deretter viser for å sende data frem og tilbake over nettverket. Ved slutten av denne instruksen vil du ha din egen fungerende WiFi -aktiverte garasjeport -fjernkontroll med en sanntidsmonitor for å sjekke om døren er åpen eller lukket.

Teknisk sett, som vist i blokkdiagrammet ovenfor, implementerer dette prosjektet en mikropyton -webserver som kjører på en ESP32 WiFi -modul som bruker 'websockets' kommunikasjonsprotokoll for å sende data frem og tilbake fra en hvilken som helst mobil nettleser. I tillegg til dette har vi den lilleLiDAR -tiden for flyavstandssensor som tar målinger på forespørsel, slik at du kan sjekke om garasjeporten sto åpen.

Trinn 2: Prøv det - Nei, prøv det nå

Prøv det - Nei, prøv det nå
Prøv det - Nei, prøv det nå

Dette er alt et relativt nytt felt innen elektronikk, så det vil være mye eksperimentering som kreves for å få ting til å fungere akkurat. Vi håper at du vil kunne bygge videre på denne kodebasen og lage noen flere interessante IoT -prosjekter.

All koden som ble brukt i denne artikkelen fungerte bra i skrivende stund. Siden innovasjonshastigheten i IoT -rommet øker, kan imidlertid ting ha endret seg når du leser dette. Uansett vil det å jobbe gjennom problemer og tilpasse det til eget bruk i det minste få hodet inn i dette spennende nye rommet og begynne å tenke som en IoT -ingeniør!

Klar? La oss starte med det første trinnet med å sette opp ditt eget stabile utviklingsmiljø.

Trinn 3: Micropython og ESP32

Micropython og ESP32
Micropython og ESP32

ESP32 WiFi -modulene ble opprettet av Espressif, og de har forbedret seg mye siden deres første generasjon ESP8266 -moduler fra bare noen få år siden. Disse nye versjonene har mye mer minne, sterkere prosessor og flere funksjoner enn de originale modulene og er fortsatt lave kostnader. Diagrammet ovenfor gir deg en følelse av hvor mye de klarte å pakke inn i denne lille ESP32 -brikken. Selve ESP32 IC er en dual -core mikrokontroller med en 802.11b/g/n WiFi -radio og også en Bluetooth 4.2 -radio integrert. De ESP32 -baserte modulene vil vanligvis legge til en antenne, ekstra FLASH -minne og effektregulatorer.

Vær oppmerksom på at når vi sier ESP32 -modul i denne instruksjonsboken, refererer vi til Pycom Wipy3.0 -kortene som er basert på ESP32 -brikken/modulen. Etter vår erfaring ser det ut til at Pycom -platene har høyere byggekvalitet enn de typiske lavpris ESP32 -modulene som er tilgjengelige. Når du utvikler, er det alltid nyttig å redusere så mange variabler som mulig, så vi gikk for Pycom -brettene i stedet for rimelige generiske.

For OEM -applikasjoner utføres ESP32 -kodingen vanligvis på C -språk, men heldigvis er det også mange alternativer for oss å velge mellom, slik at du ikke trenger å komme ned til dette lave nivået hvis du ikke vil. Vi valgte å bruke mikropyton for all vår koding i denne instruerbare.

Micropython, som du kanskje har antatt, er en delmengde av hele Python -programmeringsspråket som driver noen mindre kjente søkemotorer og nettsteder som Google, YouTube og Instagram;)

Micropython-logo
Micropython-logo

Micropython startet som et kickstarter -prosjekt opprinnelig for STM32 -prosessoren, men har blitt veldig populært for mange forskjellige mikrokontrollere nå. Vi bruker den siste offisielle Pycom ESP32 -porten til mikropyton her.

Trinn 4: Den raskere måten

Den raskere måten
Den raskere måten

Micropython -koden har en enkel front -end GUI som kalles REPL som står for "Read – Eval – Print Loop". ESP32s REPL kjører normalt på 115,2 Kbaud siden den er tilgjengelig via serieporten. Bildet ovenfor viser denne REPL -ledeteksten som er angitt med de tre pilene som venter på direkte kommandoer. Det er en enkel måte å prøve våre enkle kommandoer, og de fleste kodere bruker den for å utvikle programvaren, men vi syntes det var en smertefull sakte vei å gå. Derfor bestemte vi oss for å gjøre det på en annen måte for denne instruerbare …

Siden ESP32 -modulene har rask WiFi -tilkobling, trenger vi bare å få tilgang til modulen via WiFi via en FTP -server som allerede er innebygd i den vanlige mikropytonkoden. Dette vil da gjøre oss i stand til å bruke FTP -klienter som FileZilla til å dra og slippe koden vår på ESP32.

Så for å gjøre dette må vi først få ESP32 -modulen til WiFi -nettverket ditt. Wipy3.0 -modulene kjører et lite tilgangspunkt som standard ved oppstart, slik at du kan koble deg direkte til dem fra en bærbar datamaskin på 192.168.4.1. Sjekk ut flere detaljer her hvis du liker denne metoden.

Vi jobber på skrivebord i laboratoriet vårt, så vi ønsket at ESP32 -modulene skulle koble seg til nettverket vårt i stedet. For å gjøre dette trenger vi bare å gi modulen en statisk IP -adresse og passordinformasjon for å logge på WiFi -nettverket vårt.

Trinn 5: Last ned nå

Last ned nå
Last ned nå
Last ned nå
Last ned nå
Last ned nå
Last ned nå
Last ned nå
Last ned nå

Last ned applikasjonskoden nå og pakk ut filene til en midlertidig mappe på datamaskinen. Start deretter redigering av mywifi.txt- og boot.py -skriptfiler med dine egne Wi -Fi -nettverksopplysninger.

Btw - vår favoritt tekstredigerer er fremdeles SublimeText. Den kan lastes ned her.

Du bør også laste ned TeraTerm -terminalprogramvaren og FileZilla FTP -programvaren nå hvis du ikke allerede har disse på datamaskinen.

Du må konfigurere FileZilla som vist på bildene ovenfor. Også i nettstedssjefen må du "legge til nytt nettsted" for ESP32 -påloggingen ved hjelp av den statiske IP -adressen du valgte som vist ovenfor. Brukeren er "mikro" og passordet er "python". Det er viktig å bruke passiv FTP og begrense den til bare enkeltforbindelser. Vi fant også å begrense opplastingshastigheten for å forhindre opplasting. Selv om det ikke vises på bildene, ville det være nyttig å knytte SublimeText -programmet til filtypene, slik at du kan redigere koden ved å dobbeltklikke på venstre side av FTP -skjermen. For å gjøre dette, bare gå til Innstillinger -menyen og i filredigering/filtype -foreninger angi plasseringen av din SublimeText exe -fil for hver forening. Vårt var for eksempel:

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 Tekst Build 3065 x64 / sublime_text.exe "css" C: / Sublime Text Build 3065 x64 / sublime_text.exe"

Kopier de utpakkede applikasjonsfilene for dette instruerbare til en ny mappe kalt "FTP" på datamaskinen din som vi gjorde. Det blir lettere å dra herfra inne i FileZilla senere.

Det er vanligvis en god idé å ha den nyeste fastvaren på ESP32. Oppgradering av Pycom -modulene for å bruke den nyeste mikropyton er veldig enkelt og kan gjøres på omtrent 3 minutter med fastvareoppdateringsverktøyet.

Bare vær sikker på å sette COM-porten for USB-en til Seriell dongle og avvelg høyhastighetsmodusen som vist på "Kommunikasjon" -bildet ovenfor. Vår var COM -port 2. Merk at for å få ESP32 -modulene til denne oppgraderingsmodusen må du trykke på GPIO0/Boot -knappen (på P2 -pinne) mens du trykker og slipper Reset -knappen.

Trinn 6: Maskinvaretid

Maskinvare tid
Maskinvare tid
Maskinvare tid
Maskinvare tid

Det ville være et godt tidspunkt å koble til maskinvaren på et brødbrett som vist i det diagrammatiske diagrammet ovenfor.

Etter at dette er fullført. Start terminalprogramvaren med riktig COM -port for USB til Serial dongle, sett den til 115,2 Kbaud.

Ved oppstart bør modulen vise den kjente REPL -ledeteksten som gir tre piler ">>>".

Gå nå til den redigerte mywifi.txt -filen og kopier alt innholdet (CTRL+C). Gå deretter til REPL -terminalskjermen og trykk CTRL+E for å komme inn i klipp og lim -modus. Du høyreklikker deretter for å lime innholdet i REPL -skjermbildet og deretter trykke CTRL+D -tastene for å utføre det du limte inn.

Det bør starte en nedtelling med en gang for å si at den prøver å koble til WiFi -nettverket ditt. Skjermbildet ovenfor viser en vellykket tilkoblingsmelding.

Når du er tilkoblet, kan du bruke FileZilla til å koble til FTP -serveren i modulene på den statiske IP -adressen du valgte allerede i mywifi.txt- og boot.py -filene.

Trinn 7: Fortsatt hos oss?

Fortsatt hos oss?
Fortsatt hos oss?
Fortsatt hos oss?
Fortsatt hos oss?

Hvis det gjorde det bra så langt, så bra for deg! Det harde arbeidet er gjort:) Nå blir det glatt seiling - bare en haug med klipp og lim, så er du i gang, så du kan montere den i garasjen din.

For å redigere hvilken som helst av koden, kan du dobbeltklikke på venstre side av FTP -vinduet i FileZilla, og den starter SublimeText. Lagre endringene og dra det over til høyre side som er ESP32 -vinduet.

For nå, bare dra filene fra venstre side til høyre side av FileZilla for å laste opp hver fil separat til ESP32 -modulen. Dette tar bare noen få korte sekunder i stedet for minutter som den vanlige REPL -metoden gjør. Vær oppmerksom på at alle filene skal være under rotkatalogen kalt "flash" inne i Pycom -kortet. Du kan lage et bokmerke i FileZilla for å gjøre det lettere å komme tilbake hit til neste gang.

Hvis du noen gang får et problem der FileZilla henger og timeout for opplasting, vil du legge merke til en fil på ESP32 -siden som har 0 byte. Å prøve å skrive over det kan gjøre deg gal da det aldri blir ferdig uansett hva du prøver! Det er en veldig merkelig tilstand og skjer veldig ofte. Den beste løsningen for dette er å slette 0 byte -filen og slå av modulen. Få deretter en FRISK kopi av kildefilen for å laste opp igjen til ESP32 -modulen. Vær oppmerksom på at en ny kopi er nøkkelen her. På en eller annen måte vil ikke kildefilen lastes opp ordentlig hvis den henger slik en gang.

Vi fant ut at det hjelper å dra hver fil individuelt over til ESP32 -modulen som starter med boot.py. Denne første filen er ansvarlig for å få modulen din til nettverket, slik at du ikke trenger å klippe ut og lime inn REPL lenger. Du kan imidlertid ta www -mappen og dra den over i ett skudd. Dette har alltid fungert for oss i utviklingen. Alle disse filene er lagret i innebygd ikke-flyktig flash-lagring i ESP32-modulen, så de vil være der etter at strømmen er fjernet. Bare fyi - main.py vil bli utført etter boot.py hver gang modulen slås på.

Trinn 8: Hacketips

Tips for hacking
Tips for hacking

Ta en titt på all koden, og prøv å søke etter søkeord du ikke kjenner til Google. Når alt er i gang kan du prøve å endre det du har lyst til å se hva det gjør.

Hvis noe går galt, kan du alltid slette koden og/eller blinke modulen på nytt på omtrent 3 minutter som du allerede har gjort tidligere.

For å formatere blitsen og fjerne all koden din i ett skudd, kan du skrive følgende i REPL:

import os

os.mkfs ('/flash')

Gjør deretter en strømsyklus eller trykk på tilbakestillingsknappen på Wipy -kortet.

Vær oppmerksom på at det også er en annen måte å omgå boot.py og main.py hvis det går deg an. Bare koble pin P12 midlertidig til 3.3V utgangspinnen og trykk på Reset -knappen som vist ovenfor. Det vil omgå all koden din og gå rett til REPL én gang, slik at du kan finne ut av ting uten å slette all koden fra flash.

Når du er ferdig med å laste opp alle filene, klikker du bare på Reset -knappen på ESP32 -modulen for å starte den på nytt.

Du vil se den kjente nedtellingen på REPL -terminalskjermen når den logger seg på WiFi -nettverket igjen. Forskjellen er at denne koden nå kjører fra boot.py -filen denne gangen.

Trinn 9: Nettsider

Nettsider
Nettsider
Nettsider
Nettsider
Nettsider
Nettsider
Nettsider
Nettsider

Mikroserveren skal være i gang nå på ESP32, så prøv den med din stasjonære nettleser eller mobilenhet.

Bare gå til din statiske IP -adresse, og du bør se en skjerm som ligner den ovenfor.

Det er to websider som serveres fra vår mikrobaserte server som kjører på ESP32.

Den første er standard index.html -siden som gir deg en enkel ÅPEN/STENG -knapp for å simulere klikkertypen garasjeportåpner du har. Når du trykker på den i nettleseren din, ser du et stort blå tannhjulikon. Dette er en bekreftelse på at websocket -tilkoblingen ble opprettet, og at du har mottatt en bekreftelse fra serveren om at "trykk" -kommandoen din ble mottatt riktig. Du bør også se en lys grønn LED på Pycom -kortet når du trykker på denne knappen. Nettstikkforbindelsen overfører tilstandene til knappen ved å sende enkle tekstmeldinger med "trykk" når du trykker på den og "trykk" når du slipper den. For bekreftelse sender mikroserveren denne teksten tilbake, men legger til "_OK" for å si at den mottok den riktig.

Når du har koblet de optisk isolerte solid state reléterminalene (SSR) til garasjeportåpneren (se diagrammet), vil et trykk på knappen også åpne/lukke døren fysisk.

Gi det noen sekunder, og prøv igjen hvis du ikke ser det blå tannhjulikonet som viser seg å starte på nytt eller noe. Vær oppmerksom på at websocket stenges automatisk om 20 sekunder hvis du ikke bruker det for å forhindre låsing. Vær også oppmerksom på at nettstikkene er koblingsorienterte, så du må stoppe nettstikkontakten for å endre sider, ellers kan du ikke koble til igjen før du trykker på tilbakestillingen på ESP32 -modulen. For eksempelkoden vår, har vi noen måter for å stoppe websocket: trykk på statusteksten, spinnende prikker eller hyperkoblingen for å gå til neste side.

Den andre websiden er for avlesning av avstandsmålinger fra tinyLiDAR tid for flyavstandssensor. Bare trykk på knappen én gang, så begynner avstandsmålingene å streame til din mobile enhet i omtrent 20 sekunder. Når du trykker ned, lyser den en rød LED på Pycom -kortet, slik at du kan se at den mottar knappetrykkommandoen fra denne siden.

Begge sidene gir en indikasjon på at døren er åpen eller lukket ved leseavstand fra tinyLiDAR. DoorThreshold -variabelen må angis i begge html -filene i skriptdelen som vist her:

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

// **** Juster etter behov **** var doorThreshold = 100; // avstand i cm var ws_timeout = 20000; // maks tid i ms for å tillate dør å åpne/lukke standard er 20 sekunder // -------------------------- // --- -----------------------

Du må redigere denne terskelen for garasjeoppsettet ditt slik at det kan oppdage når garasjeporten er rullet opp og derfor ÅPEN eller rullet ned og derfor STENGT. Etter at du har redigert terskelen i begge HTML -filene, laster du opp disse HTML -filene igjen og starter den på nytt for å kontrollere at alt fortsatt fungerer som det skal.

Hvis alt er bra, kan du nå montere brettet opp ned i garasjen din som vist på bildet ovenfor. Fest pinnene 3 og 4 på SSR også til garasjeportåpneren. Polaritet er ikke viktig siden vi bruker en MOSFET -versjon av SSR - den trenger bare å kutte ut kontaktene for å simulere et knappetrykk på garasjeporten.

Trinn 10: Og det er det

Og det er det!
Og det er det!

Gratulerer! Å åpne garasjeporten din er nå like enkelt som å trykke på telefonen, og du kan sjekke om den var åpen eller ikke ved å ta sanntidsmålinger med tinyLiDAR:)

Du kan også nå bruke ESP32 med websockets over WiFi for omtrent alt du ønsker. Les mer om "websockets" hvis du ikke er kjent med dem - de er egentlig ganske raske og enkle å bruke.

Å implementere tinyLiDAR med ESP32 var også veldig enkelt, selv om sensoren opprinnelig var designet for å kjøre på en Arduino UNO. Vi har en mer forseggjort betaversjon av Terminal GUI som kjører de fleste av tinyLiDAR -kommandoene i micropython på ESP32 - se bildet ovenfor. Den er tilgjengelig i nedlastingsdelen sammen med ref -manualen, etc.

Se gjennom hele koden vår for å forstå hvordan alt går sammen, og prøv å endre ting rundt, slik at du kan bygge videre på det for å gjøre hva du vil.

Vær oppmerksom på at det ikke ble nevnt sikkerhet her. Sikkerhet er et stort område i IoT og bør tas på alvor. Hvis du vil bruke dette prosjektet i garasjen din, bør du holde passordene for WiFi -nettverket sterke og sikre. Det er mye informasjon på nettet om sikkerhet, så sørg for å lese deg opp på det siste og holde deg oppdatert.

Takk for at du leser og fornøyd med hacking! Jubel.

Anbefalt: