Inhoudsopgave:
- Stap 1: IoT Wat?
- Stap 2: Probeer het - Nee echt, probeer het nu uit
- Stap 3: Micropython & ESP32
- Stap 4: De snellere manier
- Stap 5: Nu downloaden
- Stap 6: Hardwaretijd
- Stap 7: Nog steeds bij ons?
- Stap 8: Hacktips
- Stap 9: webpagina's
- Stap 10: En dat is het
Video: TinyLiDAR in uw garage!: 10 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
DIY WiFi Garagedeuropener Project
De IoT-wereld begint net te exploderen - elk technologiebedrijf over de hele wereld probeert erachter te komen hoe ze in deze nieuwe wereld passen. Het is gewoon zo'n grote kans! Dus voor deze instructable, in overeenstemming met dit IoT-thema, zullen we bespreken hoe je je eigen IoT-demonstrator kunt maken die eigenlijk best handig is;)
TL;DR samenvatting
- stel een betrouwbare workflow in voor het coderen van de ESP32 WiFi-module
- flits het
- monteer het op je breadboard
- download onze applicatiecode en pak deze uit
- voeg uw wifi-inloggegevens en statische IP toe
- verbind hem met je wifi-netwerk
- bewerk drempels en monteer het in uw garage
- sluit het aan op uw garagedeuropenercontacten
- en klik weg!
- GEEN SOLDEREN VEREIST (behalve de pinnen voor de uitbreekborden indien nodig)
Benodigde onderdelen
- tinyLiDAR tijd van vlucht afstandssensor module
- Wipy3.0 of vergelijkbaar op ESP32 gebaseerd wifi-bord
- Optisch geïsoleerd solid-state relais (Omron G3VM-201AY1) om de garagedeuropener te bedienen
- 470ohm weerstand (5% 1/8watt of groter is oké)
- Tijdelijke drukknopschakelaar voor de BOOT (GPIO0)-pin om de firmware op het ESP32-bord te upgraden;
- USB naar seriële dongle om code te uploaden en te communiceren met REPL op de ESP32 (gebruik de 3.3v I/O-versie)
- Breadboard + draden
- Voeding: 3,3 V tot 5 V bij 500 mA of hoger. U kunt een microUSB-oplader voor mobiele telefoons gebruiken voor de voeding en een microUSB-breakoutboard om op uw breadboard aan te sluiten.
Stap 1: IoT Wat?
Ongetwijfeld heb je de term IoT inmiddels in alle media gehoord, maar wat betekent het?
Losjes gesproken betekent het allerlei sensoren en regelbare dingen op het internet aansluiten. Tegenwoordig is internet synoniem met draadloos en dus hebben we alles wat elektronisch is ineens draadloos verbonden via een soort draadloze verbinding zoals WiFi/BT/LoRa/SigFox enz. Eenmaal verbonden met internet, kunnen we voelen en/of controleren deze dingen van onze favoriete mobiele controller zoals onze mobiele telefoon of automatiseer ze via een app die ergens op een server draait (dwz de cloud).
Hoewel de grotere bedrijven de laatste tijd meer spraakbesturing, AI en cloudconnectiviteit op de markt hebben gebracht; de basis om dit allemaal mogelijk te maken is nog steeds hetzelfde. Je moet je "ding" verbinden met een draadloze link voordat een van deze concepten mogelijk is. Dus laten we beginnen met de basis en leren hoe u de tinyLiDAR-tijd van de vluchtafstandssensor kunt aansluiten op een goedkope WiFi-module en vervolgens laten zien hoe u gegevens heen en weer over het netwerk kunt sturen. Aan het einde van deze instructable heb je je eigen werkende wifi-compatibele garagedeurafstandsbediening met een realtime monitor om te controleren of de deur open of gesloten is.
Technisch gezien, zoals weergegeven in het blokdiagram hierboven, implementeert dit project een micropython-webserver die draait op een ESP32 WiFi-module met behulp van het 'websockets'-communicatieprotocol om gegevens heen en weer door te geven vanuit elke mobiele webbrowser. Daarnaast hebben we de tinyLiDAR time of flight afstandssensor die op verzoek metingen doet, zodat u kunt controleren of de garagedeur open is gelaten.
Stap 2: Probeer het - Nee echt, probeer het nu uit
Dit is allemaal een relatief nieuw gebied in de elektronica, dus er zal veel geëxperimenteerd moeten worden om de zaken precies goed te laten werken. We hopen dat je op deze codebasis kunt voortbouwen en zelf nog meer interessante IoT-projecten kunt maken.
Alle code die in dit artikel wordt gebruikt, werkte goed op het moment van schrijven. Aangezien de snelheid van innovatie in de IoT-ruimte echter toeneemt, kan het zijn dat er dingen zijn veranderd tegen de tijd dat u dit leest. In ieder geval zal het oplossen van problemen en het aanpassen ervan voor eigen gebruik je hoofd in deze opwindende nieuwe ruimte brengen en beginnen te denken als een IoT-ingenieur!
Klaar? Laten we beginnen met de eerste stap van het opzetten van uw eigen stabiele ontwikkelomgeving.
Stap 3: Micropython & ESP32
De ESP32 WiFi-modules zijn gemaakt door Espressif en ze zijn veel verbeterd sinds hun eerste generatie ESP8266-modules van slechts een paar jaar geleden. Deze nieuwe versies hebben veel meer geheugen, een sterkere processor en meer functies dan de originele modules en zijn nog steeds goedkoop. Het bovenstaande diagram geeft je een idee van hoeveel ze in deze kleine ESP32-chip konden stoppen. De ESP32 IC zelf is een dual core microcontroller met een 802.11b/g/n WiFi-radio en ook een Bluetooth 4.2-radio geïntegreerd. De op ESP32 gebaseerde modules voegen meestal een antenne, extra FLASH-geheugen en stroomregelaars toe.
Merk op dat wanneer we de ESP32-module in deze instructable zeggen, we verwijzen naar de Pycom Wipy3.0-kaarten die zijn gebaseerd op de ESP32-chip/module. In onze ervaring lijken de Pycom-kaarten van hogere bouwkwaliteit te zijn dan de typische goedkope ESP32-modules die beschikbaar zijn. Bij het ontwikkelen is het altijd handig om zoveel mogelijk variabelen te verminderen, dus gingen we voor de Pycom-borden in plaats van goedkope generieke geneesmiddelen.
Voor OEM-toepassingen wordt de ESP32-codering meestal in C-taal gedaan, maar gelukkig zijn er ook veel opties waaruit we kunnen kiezen, zodat u niet naar dit lage niveau hoeft te gaan als u dat niet wilt. We hebben ervoor gekozen om micropython te gebruiken voor al onze codering in deze instructable.
Micropython is, zoals je misschien al vermoedde, een subset van de volledige Python-programmeertaal die sommige minder bekende zoekmachines en websites zoals Google, YouTube en Instagram aandrijft;)
Micropython begon oorspronkelijk als een kickstarter-project voor de STM32-processor, maar is nu erg populair geworden voor veel verschillende microcontrollers. We gebruiken hier de nieuwste officiële Pycom ESP32-poort van micropython.
Stap 4: De snellere manier
De micropython-code heeft een eenvoudige front-end GUI die REPL wordt genoemd, wat staat voor "Read–Eval–Print Loop". De REPL van ESP32 werkt normaal gesproken op 115,2 Kbaud sinds het toegankelijk is via de seriële poort. De afbeelding hierboven toont deze REPL-prompt, aangeduid door de drie pijlen die wachten op directe opdrachten. Het is een gemakkelijke manier om onze eenvoudige commando's uit te proberen en de meeste programmeurs gebruiken het voor het ontwikkelen van hun software, maar we vonden het een pijnlijk langzame manier om te gaan. Daarom hebben we besloten om het op een andere manier te doen voor deze instructable …
Omdat de ESP32-modules een snelle wifi-verbinding hebben, hoeven we alleen maar toegang tot de module te krijgen via wifi via een FTP-server die al is ingebouwd in de standaard micropython-code. Hierdoor kunnen we FTP-clients zoals FileZilla gebruiken om onze code eenvoudig naar de ESP32 te slepen en neer te zetten.
Om dit te doen, moeten we eerst de ESP32-module op uw wifi-netwerk krijgen. De Wipy3.0-modules hebben standaard een klein toegangspunt bij het opstarten, zodat u er rechtstreeks verbinding mee kunt maken vanaf een laptop op 192.168.4.1. Bekijk hier meer details als je van deze methode houdt.
We werken op desktops in ons lab, dus we wilden dat de ESP32-modules in plaats daarvan verbinding zouden maken met ons netwerk. Om dit te doen, hoeven we de module alleen een statisch IP-adres en onze wachtwoordinformatie te geven om in te loggen op ons WiFi-netwerk.
Stap 5: Nu downloaden
Download nu de applicatiecode en pak de bestanden uit in een tijdelijke map op uw computer. Begin vervolgens met het bewerken van mywifi.txt- en boot.py-scriptbestanden met uw eigen WiFi-netwerkreferenties.
Trouwens - onze favoriete teksteditor is nog steeds SublimeText. Het kan hier worden gedownload.
Je moet nu ook de TeraTerm-terminalsoftware en FileZilla FTP-software downloaden als je deze nog niet op je computer hebt staan.
U moet FileZilla instellen zoals weergegeven in de bovenstaande afbeeldingen. Ook in de sitemanager moet je "nieuwe site toevoegen" voor de ESP32-login met behulp van het statische IP-adres dat je hebt gekozen zoals hierboven weergegeven. Gebruiker is "micro" en wachtwoord is "python". Het is belangrijk om passieve FTP te gebruiken en dit te beperken tot enkelvoudige verbindingen. We ontdekten dat het beperken van de uploadsnelheid ook hielp om het vastlopen van de upload te voorkomen. Hoewel niet getoond in de afbeeldingen, zou het handig zijn om het SublimeText-programma te koppelen aan de bestandstypen, zodat u de code kunt bewerken door te dubbelklikken aan de linkerkant van het FTP-scherm. Om dit te doen, gaat u gewoon naar het menu Instellingen en voert u bij Bestandsbewerking/Bestandstypeassociaties de locatie van uw SublimeText exe-bestand voor elke associatie in. De onze was bijvoorbeeld:
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"
Kopieer de uitgepakte applicatiebestanden voor deze instructable naar een nieuwe map met de naam "FTP" op uw computer zoals wij deden. Het zal later gemakkelijker zijn om vanaf hier in FileZilla te slepen.
Het is normaal gesproken een goed idee om de allernieuwste firmware op de ESP32 te laten draaien. Het upgraden van de Pycom-modules om de nieuwste micropython te gebruiken is heel eenvoudig en kan in ongeveer 3 minuten worden gedaan met hun firmware-updatetool.
Zorg er wel voor dat u de COM-poort voor uw USB-naar-seriële dongle instelt en de selectie van de hogesnelheidsmodus deselecteert, zoals weergegeven in de afbeelding "Communicatie" hierboven. Die van ons was COM-poort 2. Merk op dat om de ESP32-modules in deze upgrademodus te krijgen, u op de GPIO0/Boot-knop (op P2-pin) moet drukken terwijl u de Reset-knop ingedrukt houdt.
Stap 6: Hardwaretijd
Dit zou een goed moment zijn om de hardware op een breadboard aan te sluiten, zoals weergegeven in het bovenstaande schematische diagram.
Nadat dit allemaal is voltooid. Start de terminalsoftware op met de juiste COM-poort voor uw USB-naar-serieel-dongle en stel deze in op 115.2Kbaud.
Bij het opstarten zou de module de bekende REPL-prompt moeten tonen die drie pijlen ">>>" geeft.
Ga nu naar je bewerkte mywifi.txt-bestand en kopieer alle inhoud (CTRL+C). Ga dan naar het REPL-terminalscherm en druk op CTRL+E om in de knip- en plakmodus te komen. U klikt vervolgens met de rechtermuisknop om de inhoud in het REPL-scherm te plakken en drukt vervolgens op de CTRL+D-toetsen om uit te voeren wat u hebt geplakt.
Het zou meteen moeten aftellen om te zeggen dat het verbinding probeert te maken met uw wifi-netwerk. De schermafbeelding hierboven toont een bericht over een geslaagde verbinding.
Eenmaal verbonden, kun je FileZilla gebruiken om verbinding te maken met de FTP-server in de modules op het statische IP-adres dat je al hebt gekozen in je mywifi.txt- en boot.py-bestanden.
Stap 7: Nog steeds bij ons?
Als het tot nu toe goed is gegaan, dan is het goed voor je! Het harde werk is gedaan:) Nu zal het van een leien dakje gaan - slechts een hoop knippen en plakken en je kunt aan de slag, zodat je hem in je garage kunt monteren.
Om een van de code te bewerken, kunt u dubbelklikken aan de linkerkant van het FTP-venster in FileZilla en het zal SublimeText starten. Sla uw wijzigingen op en sleep deze vervolgens naar de rechterkant, het ESP32-venster.
Voor nu, sleep de bestanden gewoon van de linkerkant naar de rechterkant van FileZilla om elk bestand afzonderlijk naar de ESP32-module te uploaden. Dit duurt slechts een paar seconden in plaats van minuten zoals de normale REPL-methode doet. Houd er rekening mee dat alle bestanden zich in de hoofdmap "flash" op het Pycom-bord moeten bevinden. Je kunt een bladwijzer maken in FileZilla om het makkelijker te maken om hier een volgende keer terug te komen.
Als je ooit een probleem krijgt waarbij FileZilla vastloopt en een time-out heeft voor de upload, zul je een bestand opmerken aan de ESP32-kant met 0 bytes. Proberen erover te schrijven kan je gek maken omdat het nooit klaar is, wat je ook probeert! Het is een zeer vreemde toestand en gebeurt zeer zelden. De beste oplossing hiervoor is om het 0 byte-bestand te verwijderen en de module uit te schakelen. Haal dan een VERSE kopie van het bronbestand op om opnieuw te uploaden naar de ESP32-module. Merk op dat een nieuwe kopie hier de sleutel is. Op de een of andere manier kan het bronbestand niet goed worden geüpload als het ook maar één keer zo blijft hangen.
We ontdekten dat het helpt om elk bestand afzonderlijk naar de ESP32-module te slepen, te beginnen met boot.py. Dit eerste bestand is verantwoordelijk voor het op het netwerk krijgen van uw module, zodat u niet meer hoeft te knippen en plakken in REPL. U kunt echter de www-map pakken en deze in één keer naar u toe slepen. Dit heeft altijd gewerkt voor ons in onze ontwikkeling. Al deze bestanden worden opgeslagen in de ingebouwde niet-vluchtige flash-opslag in de ESP32-module, zodat ze daar zijn nadat de stroom is uitgeschakeld. Gewoon fyi - de main.py wordt uitgevoerd na boot.py elke keer dat de module wordt opgestart.
Stap 8: Hacktips
Bekijk alle code en probeer te googlen op trefwoorden die u niet herkent. Als alles eenmaal werkt, kun je proberen te veranderen wat je maar wilt om te zien wat het doet.
Als er iets misgaat, kunt u de code altijd wissen en/of de module opnieuw flashen in ongeveer 3 minuten, zoals u al eerder hebt gedaan.
Om de flitser opnieuw te formatteren en al uw code in één keer te wissen, typt u het volgende in REPL:
importeer os
os.mkfs('/flash')
Voer vervolgens een power cycle uit of druk op de resetknop op het Wipy-bord.
Merk op dat er ook een andere manier is om de boot.py & main.py te omzeilen als het je even niet lukt. Sluit gewoon tijdelijk pin P12 aan op de 3.3V-uitgangspin en druk op de Reset-knop zoals hierboven weergegeven. Het zal al je code omzeilen en één keer rechtstreeks naar REPL gaan, zodat je dingen kunt uitzoeken zonder al je code uit flash te verwijderen.
Als u klaar bent met het uploaden van alle bestanden, drukt u op de Reset-knop op de ESP32-module om deze opnieuw op te starten.
U ziet het bekende aftellen op het scherm van de REPL-terminal als het weer inlogt op uw WiFi-netwerk. Het verschil is dat deze code nu wordt uitgevoerd vanuit het bestand boot.py.
Stap 9: webpagina's
De microwebserver zou nu moeten werken op de ESP32, dus probeer het uit met uw desktopbrowser of uw mobiele apparaat.
Ga gewoon naar uw statische IP-adres en u zou een scherm moeten zien dat lijkt op dat hierboven.
Er worden twee webpagina's bediend vanaf onze microwebserver die draait op de ESP32.
De eerste is de standaard index.html-pagina die u een eenvoudige OPEN/CLOSE-knop geeft om het clickertype van de garagedeuropener die u heeft te simuleren. Terwijl u erop drukt in uw webbrowser, ziet u een groot blauw tandwielpictogram verschijnen. Dit is een bevestiging dat de websocket-verbinding met succes is gemaakt en dat u een bevestiging van de server hebt ontvangen dat uw "press"-opdracht correct is ontvangen. U zou ook een felgroene LED op het Pycom-bord moeten zien oplichten wanneer u op deze knop drukt. De websockets-verbinding verzendt de status van de knop door eenvoudige tekstberichten te verzenden van "druk" wanneer u erop drukt en "druk op" wanneer u deze loslaat. Ter bevestiging stuurt de microwebserver deze tekst terug, maar voegt er "_OK" aan toe om aan te geven dat hij deze correct heeft ontvangen.
Nadat u de optisch geïsoleerde solid-state relais (SSR)-aansluitingen op uw garagedeuropener hebt aangesloten (raadpleeg het schematische diagram), drukt u op de knop om de deur ook fysiek te openen/sluiten.
Geef het een paar seconden en probeer het opnieuw als je het blauwe tandwielpictogram niet ziet verschijnen, omdat het misschien opnieuw opstart of zoiets. Houd er rekening mee dat de websocket na ongeveer 20 seconden automatisch sluit als u deze niet gebruikt om vastlopen te voorkomen. Houd er ook rekening mee dat websockets verbindingsgericht zijn, dus u moet de websocket stoppen om van pagina te wisselen, anders kunt u mogelijk niet opnieuw verbinding maken totdat u op de reset op de ESP32-module drukt. Voor onze voorbeeldcode hebben we een paar manieren om de websocket te stoppen: tik op de statustekst, draaiende stippen of de hyperlink om naar de volgende pagina te gaan.
De tweede webpagina is voor het lezen van afstandsmetingen van de tinyLiDAR time of flight distance sensor. Druk gewoon één keer op de knop en het zal de afstandsmetingen ongeveer 20 seconden naar uw mobiele apparaat streamen. Terwijl u naar beneden drukt, gaat er een rode LED op het Pycom-bord branden, zodat u kunt zien dat het de opdracht voor het indrukken van een knop van deze pagina ontvangt.
Beide pagina's geven een indicatie of de deur open of gesloten is door de afstand van tinyLiDAR af te lezen. De doorThreshold-variabele moet worden ingesteld in beide html-bestanden in de scriptsectie, zoals hier wordt weergegeven:
//--------------------------
//**** Pas zo nodig aan **** var doorThreshold = 100; // afstand in cm var ws_timeout = 20000; // max tijd in ms om deur te openen/sluiten standaard is 20sec //-------------------------- //--- -----------------------
U zult deze drempel voor uw garageopstelling moeten aanpassen, zodat deze kan detecteren wanneer de garagedeur opgerold en dus OPEN of naar beneden gerold en dus DICHT is. Nadat u de bewerkingen voor uw drempel in beide html-bestanden hebt gemaakt, uploadt u deze html-bestanden opnieuw en start u deze opnieuw op om te controleren of alles nog goed werkt.
Als alles goed is, kun je nu doorgaan en het bord ondersteboven in je garage monteren, zoals op de afbeelding hierboven. Sluit pinnen 3 en 4 van de SSR ook aan op uw garagedeuropener. Polariteit is niet belangrijk, aangezien we een MOSFET-versie van de SSR gebruiken - hij hoeft alleen de contacten kort te sluiten om een klik op een knop op de basiseenheid van uw garagedeur te simuleren.
Stap 10: En dat is het
Gefeliciteerd! Het openen van uw garagedeur is nu net zo eenvoudig als op uw telefoon tikken en u kunt controleren of deze open is gelaten of niet door realtime metingen te doen met tinyLiDAR:)
Je kunt ESP32 nu ook gebruiken met websockets via wifi voor zo ongeveer alles wat je maar wilt. Lees meer over "websockets" als u er niet bekend mee bent - ze zijn echt heel snel en gemakkelijk te gebruiken.
Het implementeren van tinyLiDAR met de ESP32 was ook supergemakkelijk, hoewel de sensor oorspronkelijk was ontworpen om op een Arduino UNO te draaien. We hebben een meer uitgebreide bètaversie van de Terminal GUI die de meeste tinyLiDAR-opdrachten in micropython op de ESP32 uitvoert - zie afbeelding hierboven. Het is beschikbaar in onze downloadsectie, samen met de referentiehandleiding, enz.
Bekijk al onze code om te begrijpen hoe alles samenkomt en probeer dingen te veranderen, zodat u erop kunt voortbouwen om te doen wat u maar wilt.
Houd er rekening mee dat hier geen melding werd gemaakt van beveiliging. Beveiliging is een enorm gebied in IoT en moet serieus worden genomen. Als u dit project in uw garage wilt gebruiken, moet u uw wifi-netwerkwachtwoorden sterk en veilig houden. Er is veel informatie op internet over beveiliging, dus lees het laatste nieuws en blijf op de hoogte.
Bedankt voor het lezen en veel plezier met hacken! Proost.
Aanbevolen:
Hoe MIDI-bestanden te gebruiken in Garage Band: 23 stappen
Hoe MIDI-bestanden te gebruiken in Garage Band: In deze tutorial leer je hoe je een "Marry Had A Little Lamb" maakt. met MIDI in GarageBand. Deze tutorial vereist toegang tot GarageBand en enige voorkennis in muziek (zoals pianonoten en de mogelijkheid om muziek in co
Slimme garage: 5 stappen
Slimme garage: Hallo allemaal! Dit is een smart garage IoT-project. Smart garage heeft beveiligingsfuncties zoals livestreaming, gezichtsherkenning. Daarnaast heeft Smart Garage een bewegingssensor om auto's te detecteren zodat de garagedeur open kan. Detectie van het obstakel is
CircuitPython en TinyLiDAR: eenvoudig voorbeeld: 3 stappen
CircuitPython en TinyLiDAR: eenvoudig voorbeeld: de MicroElectronicDesign tinyLiDAR is een op ST VL53L0X gebaseerde time-of-flight (ToF) variërende module met een i2c-busverbinding. De Adafruit-microcontrollerborden kunnen eenvoudig op deze sensor worden aangesloten, omdat ze het i2c-protocol via hun datapin kunnen uitspreken
TinyLiDAR voor IoT: 3 stappen
TinyLiDAR voor IoT: als je om je heen kijkt, zie je dat er in het dagelijks leven veel slimme kleine apparaten worden gebruikt. Ze werken meestal op batterijen en zijn meestal op de een of andere manier verbonden met internet (ook wel de 'cloud' genoemd). Dit zijn allemaal wat we 'IoT'-apparaten noemen en ze
Garage Monitor 3001: 8 stappen (met afbeeldingen)
Garage Monitor 3001: Probleem: Mijn garage staat los van mijn huis, moeilijk te zien of de deuren van het huis open zijn. Of misschien heb ik haast om naar mijn werk te rijden en ben ik vergeten de deur te sluiten. Oplossing: op Parallax BS2 gebaseerde monitor. Ik kan de status van mijn garagedeur controleren