Indholdsfortegnelse:

TinyLiDAR i din garage !: 10 trin
TinyLiDAR i din garage !: 10 trin

Video: TinyLiDAR i din garage !: 10 trin

Video: TinyLiDAR i din garage !: 10 trin
Video: Small Buicks Drive Big Sales - Autoline After Hours 211 2024, November
Anonim
TinyLiDAR i din garage!
TinyLiDAR i din garage!

DIY WiFi Garage Door Opener Project

IoT -verdenen er lige begyndt at eksplodere - alle teknologivirksomheder rundt om i verden forsøger at finde ud af, hvordan de vil passe ind i denne nye verden. Det er bare en stor mulighed! Så for denne instruktive, i overensstemmelse med dette IoT -tema, vil vi gå over, hvordan du kan lave din helt egen IoT -demonstrator, der faktisk er lidt nyttig;)

TL; DR opsummering

  • opsæt en pålidelig arbejdsgang til kodning af ESP32 WiFi -modulet
  • flash det
  • saml det på dit brødbræt
  • download vores applikationskode, og pak den ud
  • tilføj dine WiFi -legitimationsoplysninger og statisk IP
  • slut den til dit WiFi -netværk
  • rediger tærskler og monter det i din garage
  • led det op til dine garageportåbnerkontakter
  • og klik væk!
  • INGEN SÆLGNING KRÆVES (bortset fra benene til breakout boards, hvis det kræves)

Dele påkrævet

  • tinyLiDAR tid til flydeafstandssensormodul
  • Wipy3.0 eller lignende ESP32 -baseret WiFi -kort
  • Optisk isoleret solid state relæ (Omron G3VM-201AY1) til styring af garageportåbneren
  • 470ohm modstand (5% 1/8 watt eller større er i orden)
  • Kortvarig trykknapkontakt til BOOT (GPIO0) pin for at opgradere firmwaren på ESP32 -kortet
  • USB til seriel dongle for at uploade kode og interagere med REPL på ESP32 (brug 3.3v I/O -versionen)
  • Brødbræt + ledninger
  • Strømforsyning: 3,3V til 5V ved 500mA eller mere. Du kan bruge en microUSB mobiltelefon oplader til strømforsyningen og microUSB breakout board til at slutte til dit brødbræt.

Trin 1: IoT Hvad?

IoT Hvad?
IoT Hvad?

Du har utvivlsomt hørt om udtrykket IoT nu i alle medierne, men hvad betyder det?

Løst sagt betyder det at få alle slags sensorer og kontrollerbare ting forbundet til Internettet. I disse dage er Internettet synonymt med trådløs, og derfor har vi alt elektronisk pludselig trådløst forbundet over en slags trådløst link som WiFi/BT/LoRa/SigFox osv. Når vi først er forbundet til internettet, kan vi fornemme og/eller kontrollere disse ting fra vores foretrukne mobilcontroller som vores mobiltelefon eller automatiser dem via en app, der kører på en server et eller andet sted (dvs. skyen).

Selvom de større virksomheder har markedsført mere stemmestyring, AI og cloud -forbindelse på det seneste; det grundlæggende for at få alt dette til at ske er stadig det samme. Du skal forbinde din "ting" til et trådløst link, før nogen af disse begreber er mulige. Så lad os starte med det grundlæggende og lære at tilslutte den lilleLiDAR tid for flyvedistandsensor til et lavpris WiFi -modul og derefter vise for at sende data frem og tilbage på tværs af netværket. Ved afslutningen af denne instruktive vil du have din egen fungerende WiFi -aktiverede garageport -fjernbetjening med en realtidsmonitor for at kontrollere, om døren er åben eller lukket.

Teknisk set, som vist i blokdiagrammet ovenfor, implementerer dette projekt en mikropython webserver, der kører på et ESP32 WiFi -modul ved hjælp af 'websockets' kommunikationsprotokol til at videregive data frem og tilbage fra enhver mobil webbrowser. Hertil kommer, at vi har den lilleLiDAR tid for flyvedistandsensor, der tager målinger på forespørgsel, så du kan kontrollere, om garageporten stod åben.

Trin 2: Prøv det - Nej, prøv det nu

Prøv det - Nej virkelig, prøv det nu
Prøv det - Nej virkelig, prøv det nu

Dette er alt sammen et relativt nyt felt inden for elektronik, så der vil kræves mange eksperimenter for at få tingene til at fungere rigtigt. Vores håb er, at du vil være i stand til at bygge videre på denne kodebase og lave nogle flere interessante IoT -projekter.

Al den kode, der blev brugt i denne artikel, fungerede godt på tidspunktet for denne skrivning. Da innovationshastigheden i IoT -rummet stiger, kan tingene dog have ændret sig, da du læste dette. Under alle omstændigheder vil arbejdet med problemer og tilpasning til eget brug i det mindste få hovedet ind i dette spændende nye rum og begynde at tænke som en IoT Engineer!

Parat? Lad os starte med det første trin i at oprette dit eget stabile udviklingsmiljø.

Trin 3: Micropython og ESP32

Micropython og ESP32
Micropython og ESP32

ESP32 WiFi -modulerne blev skabt af Espressif, og de er forbedret meget siden deres første generation af ESP8266 -moduler fra bare et par år siden. Disse nye versioner har meget mere hukommelse, stærkere processor og flere funktioner end de originale moduler og er stadig billige. Diagrammet ovenfor giver dig en fornemmelse af, hvor meget de var i stand til at pakke ind i denne lille ESP32 -chip. Selve ESP32 IC er en dual -core mikrokontroller med en 802.11b/g/n WiFi -radio og også en Bluetooth 4.2 -radio integreret. De ESP32 -baserede moduler tilføjer typisk en antenne, ekstra FLASH -hukommelse og effektregulatorer.

Bemærk, at når vi siger ESP32 -modul i denne instruktive, refererer vi til Pycom Wipy3.0 -kortene, der er baseret på ESP32 -chip/modul. Efter vores erfaring ser det ud til, at Pycom -pladerne er af højere byggekvalitet end de typiske billige ESP32 -moduler, der er tilgængelige. Når man udvikler, er det altid nyttigt at reducere så mange variabler som muligt, så vi gik efter Pycom -tavlerne i stedet for billige generics.

For OEM -applikationer udføres ESP32 -kodningen typisk på C -sprog, men heldigvis er der også mange muligheder for os at vælge imellem, så du ikke behøver at komme ned til dette lave niveau, hvis du ikke vil. Vi valgte at bruge mikropython til al vores kodning i denne instruerbare.

Micropython, som du måske har formodet, er en delmængde af det fulde Python -programmeringssprog, der driver nogle mindre kendte søgemaskiner og websteder som Google, YouTube og Instagram;)

Micropython-logo
Micropython-logo

Micropython startede som et kickstarter -projekt oprindeligt for STM32 -processoren, men er blevet meget populært for mange forskellige mikrokontrollere nu. Vi bruger den seneste officielle Pycom ESP32 -port til mikropython her.

Trin 4: Den hurtigere måde

Den hurtigere måde
Den hurtigere måde

Micropython -koden har en simpel front -end GUI, der kaldes REPL, som står for "Read – Eval – Print Loop". ESP32's REPL kører normalt på 115,2 Kbaud, siden den er tilgængelig via den serielle port. Billedet ovenfor viser denne REPL -prompt angivet med dens tre pile, der venter på direkte kommandoer. Det er en nem måde at prøve vores enkle kommandoer på, og de fleste kodere bruger det til at udvikle deres software, men vi fandt det en smerteligt langsom vej at gå. Derfor besluttede vi at gøre det på en anden måde for denne instruerbare …

Da ESP32 -modulerne har hurtig WiFi -forbindelse, har vi bare brug for at få adgang til modulet via WiFi via en FTP -server, der allerede er integreret inde i standardmikropython -koden. Dette vil derefter gøre det muligt for os at bruge FTP -klienter som FileZilla til simpelthen at trække og slippe vores kode på ESP32.

Så for at gøre dette skal vi først få ESP32 -modulet til dit WiFi -netværk. Wipy3.0 -modulerne kører som standard et lille adgangspunkt ved opstart, så du kan oprette forbindelse direkte til dem fra en bærbar computer på 192.168.4.1. Se flere detaljer her, hvis du kan lide denne metode.

Vi arbejder på stationære computere i vores laboratorium, så vi ønskede, at ESP32 -modulerne i stedet sluttede til vores netværk. For at gøre dette skal vi bare give modulet en statisk IP -adresse og vores adgangskodeoplysninger for at logge ind på vores WiFi -netværk.

Trin 5: Download nu

Hent nu
Hent nu
Hent nu
Hent nu
Hent nu
Hent nu
Hent nu
Hent nu

Download applikationskoden nu, og pak filerne ud til en midlertidig mappe på din computer. Start derefter med at redigere mywifi.txt og boot.py scriptfiler med dine egne WiFi -netværksoplysninger.

Btw - vores foretrukne teksteditor er stadig SublimeText. Det kan downloades her.

Du bør også downloade TeraTerm -terminalsoftwaren og FileZilla FTP -softwaren nu, hvis du ikke allerede har disse på din computer.

Du bliver nødt til at konfigurere FileZilla som vist på billederne ovenfor. Også i site manager skal du "tilføje nyt websted" til ESP32 -login ved hjælp af den statiske IP -adresse, du valgte som vist ovenfor. Brugeren er "mikro" og adgangskoden er "python". Det er vigtigt at bruge passiv FTP og kun begrænse den til enkeltforbindelser. Vi fandt også en begrænsning af uploadhastigheden til at forhindre upload -hængninger. Selvom det ikke er vist på billederne, ville det være nyttigt at knytte SublimeText -programmet til filtyperne, så du kan redigere koden ved at dobbeltklikke på venstre side af FTP -skærmen. For at gøre dette skal du bare gå til menuen Indstillinger og i filredigerings-/filtypeforeningerne indtaste placeringen af din SublimeText exe -fil for hver forening. Vores 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 udpakkede applikationsfiler til dette instruerbare til en ny mappe kaldet "FTP" på din computer, som vi gjorde. Det bliver lettere at trække herfra inde i FileZilla senere.

Det er normalt en god idé at have den allernyeste firmware kørende på ESP32. Opgradering af Pycom -modulerne til at bruge den nyeste mikropython er meget enkel og kan udføres på cirka 3 minutter med deres firmwareopdateringsværktøj.

Bare sørg for at indstille COM-porten til din USB til Seriel dongle og fravælge højhastighedstilstanden som vist på billedet "Kommunikation" ovenfor. Vores var COM -port 2. Bemærk, at for at få ESP32 -modulerne i denne opgraderingstilstand skal du trykke på knappen GPIO0/Boot (på P2 -pin), mens du trykker på og slipper Reset -knappen.

Trin 6: Hardwaretid

Hardware tid
Hardware tid
Hardware tid
Hardware tid

Nu ville det være et godt tidspunkt at tilslutte hardwaren på et brødbræt som vist i det skematiske diagram ovenfor.

Efter at dette er fuldført. Start terminalsoftwaren med den korrekte COM -port til din USB til Serial dongle, indstil den til 115,2Kbaud.

Ved opstart skal modulet vise den velkendte REPL -prompt, der giver tre pile ">>>".

Gå nu til din redigerede mywifi.txt -fil og kopier alt indholdet (CTRL+C). Gå derefter til REPL -terminalskærmen, og tryk på CTRL+E for at komme til klip og indsæt tilstand. Du højreklikker derefter for at indsætte indholdet i REPL -skærmen og derefter trykke på CTRL+D -tasterne for at udføre det, du har indsat.

Det bør starte en nedtælling med det samme for at sige, at det forsøger at oprette forbindelse til dit WiFi -netværk. Skærmbilledet ovenfor viser en vellykket forbindelsesmeddelelse.

Når du er tilsluttet, kan du bruge FileZilla til at oprette forbindelse til FTP -serveren i modulerne på den statiske IP -adresse, du allerede har valgt i dine mywifi.txt- og boot.py -filer.

Trin 7: Stadig hos os?

Stadig hos os?
Stadig hos os?
Stadig hos os?
Stadig hos os?

Hvis det har været ok indtil videre, så godt for dig! Det hårde arbejde er udført:) Nu vil det være glat sejlads - bare en flok klip og klist, og du er i gang, så du derefter kan montere det i din garage.

For at redigere en hvilken som helst af koden kan du dobbeltklikke på venstre side af FTP -vinduet i FileZilla, og den starter SublimeText. Gem dine ændringer, og træk det derefter over til højre side, som er ESP32 -vinduet.

For nu skal du bare trække filerne fra venstre side til højre side af FileZilla for at uploade hver fil separat til ESP32 -modulet. Dette tager kun et par korte sekunder i stedet for minutter som den normale REPL -metode gør. Bemærk, at alle filer skal være under rodmappen kaldet "flash" inde i Pycom -kortet. Du kan lave et bogmærke i FileZilla for at gøre det lettere at komme tilbage her til næste gang.

Hvis du nogensinde får et problem, hvor FileZilla hænger og timeout til upload, vil du bemærke en fil på ESP32 -siden, der har 0 bytes. Hvis du prøver at skrive over det, kan du blive vanvittig, da det aldrig slutter, uanset hvad du prøver! Det er en meget mærkelig tilstand og sker meget ofte. Den bedste løsning til dette er at slette 0 byte -filen og tænde for modulet. Hent derefter en FRISK kopi af kildefilen for at uploade igen til ESP32 -modulet. Bemærk, at en ny kopi er nøglen her. På en eller anden måde uploades kildefilen bare ikke korrekt, hvis den hænger sådan en gang.

Vi fandt ud af, at det hjælper at trække hver fil individuelt over til ESP32 -modulet, der starter med boot.py. Denne første fil er ansvarlig for at få dit modul på netværket, så du ikke længere behøver at klippe og indsætte REPL længere. Du kan dog få fat i www -mappen og trække den over i ét skud. Dette har altid fungeret for os i vores udvikling. Alle disse filer gemmes i det indbyggede ikke-flygtige flashlager i ESP32-modulet, så de vil være der, når strømmen er fjernet. Bare fyi - main.py udføres efter boot.py hver gang modulet tændes.

Trin 8: Tips til hacking

Tips til hacking
Tips til hacking

Se på hele koden, og prøv at søge efter Google efter søgeord, du ikke genkender. Når alt er i gang, kan du prøve at ændre, hvad du har lyst til, for at se, hvad det gør.

Hvis noget går galt, kan du altid slette koden og/eller flashe modulet igen på cirka 3 minutter, som du allerede har gjort tidligere.

For at omformatere flashen og slette al din kode i ét skud, kan du skrive følgende i REPL:

import os

os.mkfs ('/flash')

Lav derefter en strømcyklus eller tryk på reset -knappen på Wipy -kortet.

Bemærk, at der også er en anden måde at omgå boot.py & main.py, hvis det går dig i øjnene. Tilslut bare pin P12 midlertidigt til 3.3V output pin og tryk på Reset knappen som vist ovenfor. Det vil omgå al din kode og gå direkte til REPL én gang, så du kan finde ud af tingene uden at slette al din kode fra flash.

Når du er færdig med at uploade alle filerne, skal du bare trykke på knappen Nulstil på ESP32 -modulet for at genstarte det.

Du vil se den velkendte nedtælling på REPL -terminalskærmen, når den logger på dit WiFi -netværk igen. Forskellen er, at denne kode nu kører fra boot.py -filen denne gang.

Trin 9: Websider

Web sider
Web sider
Web sider
Web sider
Web sider
Web sider
Web sider
Web sider

Mikroserveren skal være i gang nu på ESP32, så prøv det ved hjælp af din desktopbrowser eller din mobilenhed.

Bare gå til din statiske IP -adresse, og du skulle se en skærm, der ligner den ovenfor.

Der er to websider, der serveres fra vores mikrobserver, der kører på ESP32.

Den første er standardindeksen.html -side, som giver dig en simpel ÅBEN/LUKKE -knap for at simulere klikketypen af garageportåbnere, du har. Når du trykker på den i din webbrowser, vil du se et stort blåt tandhjulsikon dukke op. Dette er en bekræftelse på, at websocket -forbindelsen blev oprettet, og du har modtaget en bekræftelse fra serveren om, at din "tryk" -kommando blev modtaget korrekt. Du bør også se en lysegrøn LED lyser på Pycom -kortet, når du trykker på denne knap. Webstikforbindelsen overfører knaptilstandene ved at sende enkle tekstbeskeder med "tryk", når du trykker på den og "tryk på", når du slipper den. Til bekræftelse sender mikroserveren denne tekst tilbage, men tilføjer "_OK" til den for at sige, at den har modtaget den korrekt.

Når du har tilsluttet de optisk isolerede solid state relæ -terminaler (SSR) til din garageportåbner (se billedskematisk diagram), vil tryk på knappen også fysisk åbne/lukke døren.

Giv det et par sekunder, og prøv igen, hvis du ikke kan se det blå tandhjulsikon, da det måske genstarter eller noget. Bemærk, at websocket lukker automatisk om cirka 20 sekunder, hvis du ikke bruger det til at forhindre låsning. Bemærk også, at websockets er forbindelsesorienterede, så du skal stoppe websocket for at skifte side, ellers kan du muligvis ikke oprette forbindelse igen, før du rammer nulstillingen på ESP32 -modulet. For vores eksempelkode har vi et par måder for at stoppe websocket: tryk på statusteksten, roterende prikker eller hyperlinket for at gå til den næste side.

Den anden webside er til aflæsning af afstandsmålinger fra den lilleLiDAR tid for flyvedistandsensor. Bare tryk på knappen en gang, og det vil begynde at streame afstandsmålingerne til din mobilenhed i cirka 20 sekunder. Når du trykker ned, lyser den en rød LED på Pycom -kortet, så du kan se, at den modtager knappen tryk på kommandoen fra denne side.

Begge sider angiver, at døren er åben eller lukket ved læseafstand fra tinyLiDAR. Variablen doorThreshold skal indstilles i begge html -filer i scriptafsnittet som vist her:

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

// **** Juster efter behov **** var doorThreshold = 100; // afstand i cm var ws_timeout = 20000; // maks. tid i ms for at give dør mulighed for at åbne/lukke standard er 20 sekunder // -------------------------- // --- -----------------------

Du bliver nødt til at redigere denne tærskel for din garageopsætning, så den kan registrere, hvornår garageporten rulles op og derfor ÅBEN eller rulles ned og derfor LUKKET. Når du har foretaget redigeringerne for din tærskelværdi i begge html -filer, skal du uploade disse html -filer igen og genstarte den for at kontrollere, at alt stadig fungerer.

Hvis alt er godt, kan du nu gå videre og montere brættet på hovedet i din garage som vist på billedet ovenfor. Led også stifter 3 og 4 på SSR til din garageportåbner. Polaritet er ikke vigtigt, da vi bruger en MOSFET -version af SSR - det skal kun afbryde kontakterne for at simulere et knap klik på din garageportbase.

Trin 10: Og det er det

Og det er det!
Og det er det!

Tillykke! Det er nu lige så let at åbne din garageport som at trykke på din telefon, og du kan kontrollere, om den stod åben eller ej, ved at tage realtidsmålinger med tinyLiDAR:)

Du kan også nu bruge ESP32 med websockets over WiFi til næsten alt, hvad du vil. Læs mere om "websockets", hvis du ikke kender dem - de er virkelig ret hurtige og lette at bruge.

Implementering af tinyLiDAR med ESP32 var også super let, selvom sensoren oprindeligt var designet til at køre på en Arduino UNO. Vi har en mere detaljeret betaversion af Terminal GUI, der kører de fleste af de tinyLiDAR -kommandoer i micropython på ESP32 - se billedet ovenfor. Den er tilgængelig i vores downloadsektion sammen med ref -manualen osv.

Kig igennem hele vores kode for at forstå, hvordan alt hænger sammen, og prøv at ændre tingene rundt, så du kan bygge videre på det til at gøre, hvad du vil.

Husk, at der ikke blev nævnt sikkerhed her. Sikkerhed er et stort område i IoT og bør tages alvorligt. Hvis du vil bruge dette projekt i din garage, skal du holde dine WiFi -netværksadgangskoder stærke og sikre. Der er mange oplysninger om internettet om sikkerhed, så sørg for at læse om det nyeste og holde øje med det.

Tak fordi du læste og glad hacking! Skål.

Anbefalede: