Innehållsförteckning:

TinyLiDAR i ditt garage !: 10 steg
TinyLiDAR i ditt garage !: 10 steg

Video: TinyLiDAR i ditt garage !: 10 steg

Video: TinyLiDAR i ditt garage !: 10 steg
Video: Как использовать 2 или более лазерных датчиков расстояния VL53L0X 2024, November
Anonim
TinyLiDAR i ditt garage!
TinyLiDAR i ditt garage!

DIY WiFi Garage Door Opener Project

IoT -världen börjar bara explodera - varje teknikföretag runt om i världen försöker ta reda på hur de kommer att passa in i den nya världen. Det är bara en stor möjlighet! Så för denna instruerbara, i linje med detta IoT -tema, kommer vi att gå igenom hur du kan göra din egen IoT -demonstrator som faktiskt är användbar;)

TL; DR sammanfattning

  • skapa ett tillförlitligt arbetsflöde för kodning av ESP32 WiFi -modulen
  • blinka det
  • montera upp det på din brödbräda
  • ladda ner vår ansökningskod och packa upp den
  • lägg till dina WiFi -uppgifter och statisk IP
  • anslut den till ditt WiFi -nätverk
  • redigera trösklar och montera det i ditt garage
  • anslut den till dina garageportöppnarkontakter
  • och klicka bort!
  • INGEN SÄLJNING KRÄVS (med undantag för stiften till utbrottskort om det behövs)

Delar krävs

  • tinyLiDAR tid för flygdistanssensormodul
  • Wipy3.0 eller liknande ESP32 -baserat WiFi -kort
  • Optiskt isolerat halvledarrelä (Omron G3VM-201AY1) för att styra garageportöppnaren
  • 470ohm motstånd (5% 1/8 watt eller större är okej)
  • Kortvarig tryckknappsbrytare för BOOT -stiftet (GPIO0) för att uppgradera firmware på ESP32 -kortet
  • USB till seriell dongel för att ladda upp kod och interagera med REPL på ESP32 (använd 3.3v I/O -versionen)
  • Brödbräda + trådar
  • Strömförsörjning: 3,3V till 5V vid 500mA eller högre. Du kan använda en microUSB -mobiltelefonladdare för strömförsörjningen och microUSB -brytkortet för att ansluta till din brödbräda.

Steg 1: IoT Vad?

IoT vad?
IoT vad?

Utan tvekan har du hört talas om termen IoT nu i alla medier, men vad betyder det?

Löst talat betyder det att få alla typer av sensorer och kontrollerbara saker anslutna till Internet. Idag är Internet synonymt med trådlöst och därmed har vi allt elektroniskt plötsligt blivit trådlöst anslutet över någon slags trådlös länk som WiFi/BT/LoRa/SigFox etc. När vi väl är anslutna till Internet kan vi känna och/eller styra dessa saker från vår favoritmobilkontroller som vår mobiltelefon eller automatisera dem via någon app som körs på en server någonstans (dvs molnet).

Även om de större företagen har marknadsfört mer röststyrning, AI och molnanslutning på sistone; grunderna för att få allt att hända är fortfarande desamma. Du måste ansluta din "sak" till en trådlös länk innan något av dessa begrepp är möjligt. Så låt oss börja med grunderna och lära oss hur du ansluter den lillaLiDAR -tiden för flygdistanssensor till en lågpris -WiFi -modul och sedan visar för att skicka data fram och tillbaka över nätverket. I slutet av denna instruerbara kommer du att ha din egen fungerande WiFi -aktiverade garageports fjärrkontroll med en realtidsmonitor för att kontrollera om dörren är öppen eller stängd.

Tekniskt sett, som visas i blockdiagrammet ovan, implementerar detta projekt en mikropyton -webbserver som körs på en ESP32 WiFi -modul som använder kommunikationsprotokollet "websockets" för att skicka data fram och tillbaka från alla mobila webbläsare. Till detta har vi den lillaLiDAR -tiden för flygdistanssensor som tar mätningar på begäran så att du kan kontrollera om garageporten stod öppen.

Steg 2: Prova - Nej, testa nu

Prova det - Nej verkligen, prova det nu
Prova det - Nej verkligen, prova det nu

Detta är allt ett relativt nytt område inom elektronik så det kommer att krävas mycket experiment för att få saker att fungera precis. Vår förhoppning är att du kommer att kunna bygga vidare på denna kodbas och göra några mer intressanta egna IoT -projekt.

All kod som används i den här artikeln fungerade bra vid skrivandet. Eftersom innovationshastigheten i IoT -rummet ökar kan saker ha förändrats när du läser detta. I vilket fall som helst kommer du åtminstone att få huvudet in i detta spännande nya utrymme och börja tänka som en IoT -ingenjör!

Redo? Låt oss börja med det första steget med att skapa din egen stabila utvecklingsmiljö.

Steg 3: Micropython och ESP32

Micropython och ESP32
Micropython och ESP32

ESP32 WiFi -modulerna skapades av Espressif och de har förbättrats mycket sedan deras första generationens ESP8266 -moduler från bara några år sedan. Dessa nya versioner har mycket mer minne, starkare processor och fler funktioner än de ursprungliga modulerna och är fortfarande billiga. Diagrammet ovan ger dig en känsla av hur mycket de kunde packa in i detta lilla ESP32 -chip. Själva ESP32 IC är en dubbelkärnig mikrokontroller med en 802.11b/g/n WiFi -radio och även en Bluetooth 4.2 -radio integrerad. De ESP32 -baserade modulerna lägger vanligtvis till en antenn, extra FLASH -minne och effektregulatorer.

Observera att när vi säger ESP32 -modul i denna instruerbara, hänvisar vi till Pycom Wipy3.0 -korten som är baserade på ESP32 -chipet/modulen. Enligt vår erfarenhet verkar Pycom -brädorna vara av högre byggkvalitet än de typiska billiga ESP32 -modulerna som finns. När vi utvecklar är det alltid bra att minska så många variabler som möjligt så vi valde Pycom -korten istället för lågprisgeneriker.

För OEM -applikationer utförs ESP32 -kodningen vanligtvis på C -språk men tack och lov finns det också många alternativ för oss att välja mellan så att du inte behöver komma ner till denna låga nivå om du inte vill. Vi valde att använda mikropyton för all vår kodning i denna instruerbara.

Micropython som du kanske anade är en delmängd av hela Python -programmeringsspråket som driver några mindre kända sökmotorer och webbplatser som Google, YouTube och Instagram;)

Micropython-logotyp
Micropython-logotyp

Micropython började som ett kickstarter -projekt ursprungligen för STM32 -processorn men har blivit mycket populärt för många olika mikrokontroller nu. Vi använder den senaste officiella Pycom ESP32 -porten för mikropyton här.

Steg 4: Det snabbare sättet

Det snabbare sättet
Det snabbare sättet

Mikropytonkoden har en enkel gränssnittsgränssnitt som kallas REPL som står för "Read – Eval – Print Loop". ESP32: s REPL körs normalt på 115,2 Kbaud sedan dess åtkomst via serieporten. Bilden ovan visar denna REPL -prompt som markeras med dess tre pilar som väntar på direkta kommandon. Det är ett enkelt sätt att prova våra enkla kommandon och de flesta kodare använder det för att utveckla sin programvara men vi fann att det var en smärtsamt långsam väg att gå. Därför bestämde vi oss för att göra det på ett annat sätt för denna instruerbara …

Eftersom ESP32 -modulerna har snabb WiFi -anslutning behöver vi bara komma åt modulen via WiFi via en FTP -server som redan är inbäddad i den vanliga mikropytonkoden. Detta gör att vi sedan kan använda FTP -klienter som FileZilla för att helt enkelt dra och släppa vår kod till ESP32.

Så för att göra detta måste vi först få ESP32 -modulen till ditt WiFi -nätverk. Wipy3.0 -modulerna har som standard en liten åtkomstpunkt vid uppstart så att du kan ansluta direkt till dem från en bärbar dator på 192.168.4.1. Kolla in mer information här om du gillar den här metoden.

Vi arbetar på stationära datorer i vårt labb så vi ville att ESP32 -modulerna skulle ansluta till vårt nätverk istället. För att göra detta behöver vi bara ge modulen en statisk IP -adress och vår lösenordsinformation för att logga in på vårt WiFi -nätverk.

Steg 5: Ladda ner nu

Ladda ner nu
Ladda ner nu
Ladda ner nu
Ladda ner nu
Ladda ner nu
Ladda ner nu
Ladda ner nu
Ladda ner nu

Ladda ner programkoden nu och packa upp filerna till en tillfällig mapp på din dator. Börja sedan redigera skriptfilerna mywifi.txt och boot.py med dina egna WiFi -nätverksuppgifter.

Btw - vår favorittextredigerare är fortfarande SublimeText. Den kan laddas ner här.

Du bör också ladda ner TeraTerm -terminalprogramvaran och FileZilla FTP -programvaran nu om du inte redan har dessa på din dator.

Du måste konfigurera FileZilla som visas på bilderna ovan. Även i platshanteraren måste du "lägga till ny webbplats" för ESP32 -inloggningen med den statiska IP -adress du valde som visas ovan. Användaren är "micro" och lösenordet är "python". Det är viktigt att använda passiv FTP och begränsa den till enstaka anslutningar. Vi fann att begränsning av uppladdningshastigheten också hjälpte till att förhindra uppladdningshängningar. Även om det inte visas på bilderna skulle det vara bra att koppla SublimeText -programmet till filtyperna så att du kan redigera koden genom att dubbelklicka på vänster sida av FTP -skärmen. För att göra detta, gå bara till menyn Inställningar och i filredigerings-/filtypföreningarna anger du platsen för din SublimeText exe -fil för varje förening. Vårt var till exempel:

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

Kopiera de extraherade programfilerna för detta instruerbara till en ny mapp som heter "FTP" på din dator som vi gjorde. Det blir lättare att dra härifrån inuti FileZilla senare.

Det är normalt en bra idé att ha den senaste firmware som körs på ESP32. Att uppgradera Pycom -modulerna för att använda den senaste mikropyton är mycket enkelt och kan göras på cirka 3 minuter med deras uppdateringsverktyg för firmware.

Var noga med att ställa in COM-porten för din USB på Seriell dongel och avmarkera höghastighetsläget enligt bilden "Kommunikation" ovan. Vår var COM -port 2. Observera att för att få ESP32 -modulerna till detta uppgraderingsläge måste du trycka på GPIO0/Boot -knappen (på P2 -stift) medan du trycker på och släpper Reset -knappen.

Steg 6: Hårdvarutid

Hårdvarutid
Hårdvarutid
Hårdvarutid
Hårdvarutid

Nu skulle det vara en bra tid att koppla in hårdvaran på en brödbräda som visas i bildschemat ovan.

Efter detta är allt klart. Starta terminalprogramvaran med rätt COM -port för din USB till Serial dongle, ställ in den på 115,2 Kbaud.

Vid uppstart bör modulen visa den välbekanta REPL -prompten som ger tre pilar ">>>".

Gå nu till din redigerade mywifi.txt -fil och kopiera allt innehåll (CTRL+C). Gå sedan till REPL -terminalskärmen och tryck på CTRL+E för att komma till klipp -och klistra -läge. Du högerklickar sedan för att klistra in innehållet i REPL -skärmen och trycker sedan på CTRL+D -tangenterna för att utföra det du klistrade in.

Det bör starta en nedräkning direkt för att säga att den försöker ansluta till ditt WiFi -nätverk. Skärmbilden ovan visar ett lyckat anslutningsmeddelande.

När du är ansluten kan du använda FileZilla för att ansluta till FTP -servern i modulerna på den statiska IP -adress du valde redan i mywifi.txt- och boot.py -filerna.

Steg 7: Fortfarande hos oss?

Fortfarande hos oss?
Fortfarande hos oss?
Fortfarande hos oss?
Fortfarande hos oss?

Om det har gått bra hittills så bra för dig! Det hårda arbetet är gjort:) Nu blir det smidigt - bara ett gäng klipp och klistra så är du igång så att du sedan kan montera den i ditt garage.

För att redigera någon av koden kan du dubbelklicka på vänster sida av FTP -fönstret i FileZilla så startas SublimeText. Spara dina ändringar och dra det sedan över till höger som är ESP32 -fönstret.

För tillfället drar du bara filerna från vänster till höger om FileZilla för att ladda upp varje fil separat till ESP32 -modulen. Detta tar bara några få sekunder istället för minuter som den vanliga REPL -metoden gör. Observera att alla filer ska finnas under rotkatalogen som kallas "flash" inuti Pycom -kortet. Du kan skapa ett bokmärke i FileZilla för att göra det lättare att komma tillbaka hit för nästa gång.

Om du någonsin får ett problem där FileZilla hänger och timeout för uppladdningen kommer du att märka en fil på ESP32 -sidan som har 0 byte. Att försöka skriva över det kan göra dig galen eftersom det aldrig slutar oavsett vad du försöker! Det är ett mycket konstigt tillstånd och händer väldigt ofta. Den bästa lösningen för detta är att radera 0 -byte -filen och slå på modulen. Hämta sedan en FRISK kopia av källfilen för att ladda upp igen till ESP32 -modulen. Observera att en ny kopia är nyckeln här. På något sätt laddas inte källfilen upp ordentligt om den hänger så här ens en enda gång.

Vi fann att det hjälper att dra varje fil individuellt över till ESP32 -modulen som börjar med boot.py. Denna första fil är ansvarig för att få din modul till nätverket så att du inte behöver klippa och klistra in REPL längre. Du kan dock ta tag i www -mappen och dra den över i ett skott. Detta har alltid fungerat för oss i vår utveckling. Alla dessa filer lagras i det inbyggda icke-flyktiga flashminnet i ESP32-modulen så att de finns där när strömmen har tagits bort. Bara fyi - main.py körs efter boot.py varje gång modulen startas.

Steg 8: Hackningstips

Hackningstips
Hackningstips

Ta en titt på all kod och försök att söka efter sökord som du inte känner igen. När allt är igång kan du försöka ändra vad du vill för att se vad det gör.

Om något går fel kan du alltid rensa ut koden och/eller blinka om modulen på ungefär 3 minuter som du redan har gjort tidigare.

För att formatera blixten och rensa ut all din kod i ett skott kan du skriva följande i REPL:

importera os

os.mkfs ('/flash')

Gör sedan en strömcykel eller tryck på återställningsknappen på Wipy -kortet.

Observera att det också finns ett annat sätt att kringgå boot.py & main.py om saker och ting går på dig. Anslut bara stift P12 tillfälligt till 3,3V utgångsstift och tryck på knappen Återställ som visas ovan. Det kommer att kringgå all din kod och gå direkt till REPL en gång så att du kan ta reda på saker utan att radera all din kod från blixt.

När du har laddat upp alla filer trycker du bara på Återställ -knappen på ESP32 -modulen för att starta om den.

Du kommer att se den välbekanta nedräkningen på REPL -terminalskärmen när den loggar in på ditt WiFi -nätverk igen. Skillnaden är att denna kod nu körs från filen boot.py den här gången.

Steg 9: Webbsidor

Webbsidor
Webbsidor
Webbsidor
Webbsidor
Webbsidor
Webbsidor
Webbsidor
Webbsidor

Mikroservern ska vara igång nu på ESP32, så testa det med din stationära webbläsare eller din mobila enhet.

Gå bara till din statiska IP -adress och du bör se en skärm som liknar den ovan.

Det finns två webbsidor som serveras från vår mikrobaserade server som körs på ESP32.

Den första är standard index.html -sidan som ger dig en enkel ÖPPNA/STÄNG -knapp för att simulera den klickartyp av garageportöppnare du har. När du trycker på den i din webbläsare ser du en stor blå kugghjulsikon. Detta är en bekräftelse på att webbsocket -anslutningen lyckades och att du har fått ett kvitto från servern att ditt "tryck" -kommando mottogs korrekt. Du bör också se en ljusgrön LED lysa på Pycom -kortet när du trycker på den här knappen. Webbkontaktanslutningen överför knappens tillstånd genom att skicka enkla textmeddelanden med "tryck" när du trycker på den och "trycker på" när du släpper den. För bekräftelse skickar mikroservern tillbaka den här texten men lägger till "_OK" för att säga att den mottog den korrekt.

När du har anslutit de optiskt isolerade solid state reläterminalerna (SSR) till din garageportöppnare (se bildschematiskt diagram) kommer ett tryck genom att också öppna och stänga dörren fysiskt.

Ge det några sekunder och försök igen om du inte ser den blå kugghjulsikonen eftersom den kanske startar om eller något. Observera att websocket stängs automatiskt om cirka 20 sekunder om du inte använder det för att förhindra låsning. Observera också att webbuttag är anslutningsorienterade, så du måste stoppa webbuttaget för att byta sida, annars kan du kanske inte ansluta igen förrän du trycker på återställningen på ESP32 -modulen. För vår exempelkod har vi några sätt för att stoppa websocket: tryck på statustexten, snurrande prickar eller hyperlänken för att gå till nästa sida.

Den andra webbsidan är för avläsning av avståndsmätningar från den lillaLiDAR -tiden för flygdistanssensor. Tryck bara på knappen en gång så börjar strömmningen av avläsningarna till din mobila enhet i cirka 20 sekunder. När du trycker ner, tänds en röd lysdiod på Pycom -kortet så att du kan se att den tar emot knapptryckningskommandot från den här sidan.

Båda sidorna ger en indikation på att dörren är öppen eller stängd genom läsavstånd från tinyLiDAR. DoorThreshold -variabeln måste ställas in i båda html -filerna i skriptavsnittet som visas här:

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

// **** Justera efter behov **** var doorThreshold = 100; // avstånd i cm var ws_timeout = 20000; // max tid i ms för att tillåta dörren att öppna/stänga standard är 20sek // -------------------------- // --- -----------------------

Du måste redigera denna tröskel för din garageuppställning så att den kan upptäcka när garageporten rullas upp och därför ÖPPNA eller rullas ner och därför STÄNGD. När du har gjort ändringarna för din tröskel i båda html -filerna, ladda upp dessa html -filer igen och starta om det för att kontrollera att allt fortfarande fungerar.

Om allt är bra kan du nu montera brädan upp och ner i ditt garage som visas på bilden ovan. Anslut också stift 3 och 4 på SSR till din garageportöppnare. Polaritet är inte viktigt eftersom vi använder en MOSFET -version av SSR - det behöver bara stängas av kontakterna för att simulera ett knapptryck på din garageports basenhet.

Steg 10: Och det är det

Och det är allt!
Och det är allt!

Grattis! Att öppna din garageport är nu lika enkelt som att knacka på din telefon och du kan kontrollera om den var öppen eller inte genom att ta realtidsmätningar med tinyLiDAR:)

Du kan nu också använda ESP32 med webbuttag över WiFi för nästan vad du vill. Läs mer om "websockets" om du inte är bekant med dem - de är verkligen ganska snabba och enkla att använda.

Att implementera tinyLiDAR med ESP32 var också superenkelt även om sensorn ursprungligen var utformad för att köras på en Arduino UNO. Vi har en mer genomarbetad betaversion av Terminal GUI som kör de flesta av tinyLiDAR -kommandona i mikropyton på ESP32 - se bilden ovan. Den är tillgänglig i vårt nedladdningsavsnitt tillsammans med referenshandboken etc.

Ta en titt i hela vår kod för att förstå hur allt går ihop och försök förändra saker och ting så att du kan bygga vidare på det för att göra vad du vill.

Tänk på att det inte nämndes om säkerhet här. Säkerhet är ett stort område i IoT och bör tas på allvar. Om du vill använda detta projekt i ditt garage bör du hålla dina WiFi -nätverkslösenord starka och säkra. Det finns mycket information på nätet om säkerhet så var noga med att läsa om det senaste och hålla koll på det.

Tack för att du läste och lyckades hacka! Skål.

Rekommenderad: