Inhoudsopgave:
- Stap 1: Onderdelen en gereedschappen
- Stap 2: Het plan
- Stap 3: Circuit
- Stap 4: LED's solderen
- Stap 5: Soldeerbesturingskaart
- Stap 6: WiFi-configuratie
- Stap 7: Microcontrollercode
- Stap 8: Berichtenprotocol openen
- Stap 9: Afstandsbediening
- Stap 10: 3D printen
- Stap 11: Breng het allemaal samen
- Stap 12: De lamp ophangen
- Stap 13: Klaar
Video: DIY IoT-lamp voor domotica -- ESP8266-zelfstudie: 13 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
In deze tutorial gaan we een met internet verbonden slimme lamp maken. Dit gaat diep in het internet der dingen en opent een wereld van domotica!
De lamp is verbonden met wifi en gebouwd om een open berichtenprotocol te hebben. Dit betekent dat u elke gewenste bedieningsmodus kunt selecteren! Het kan worden bediend via een webbrowser, domotica-apps, slimme assistenten zoals Alexa of Google Assistant, en nog veel meer!
Als bonus gaat deze lamp samen met een app om het project te besturen. Hier kunt u verschillende kleurmodi selecteren, vervagen tussen RGB-kleuren en timers instellen.
De lamp bestaat uit een LED board en een control board. Het LED-bord maakt gebruik van drie verschillende soorten LED's voor in totaal vijf LED-kanalen! Dit is RGB samen met zowel warm als koud wit. Doordat al deze kanalen afzonderlijk in te stellen zijn, heb je in totaal 112.3 peta-combinaties!
Laten we beginnen!
[Video afspelen]
Stap 1: Onderdelen en gereedschappen
Onderdelen
- Wemos D1 Mini
- 15 x Warm witte 5050 LED's
- 15 x Koud witte 5050 LED's
- 18 x RGB 5050 LED's
- 6 x 300 ohm 1206 weerstanden
- 42 x 150 ohm 1206 weerstanden
- 5 x 1k ohm weerstanden
-
5 x NTR4501NT1G
MOSFET's
- Lineaire spanningsregelaar, 5V
-
PCB
Download de gerber-bestanden in de circuitstap om uw eigen PCB's te maken
- Voeding 12V 2A
Gereedschap
-
Soldeerbout
- soldeer tin
- Vloeibare soldeervloeistof
- Afplakband
- Dubbelzijdige tape
- 3D-printer
- Draadstrippers
Stap 2: Het plan
Het volledige project bestaat uit vier hoofdonderdelen:
-
Stroomkring
De schakeling is gemaakt op een PCB. Het voltooide circuit zal uit meer dan 100 afzonderlijke componenten bestaan. Het is een enorme opluchting om die niet allemaal met de hand op een perfboard te bedraden
-
Arduino-code
Ik gebruik de Wemos D1 Mini die een ESP8266 gebruikt als een met wifi verbonden microcontroller. De code start een server op de D1. Wanneer u het adres van deze server bezoekt, interpreteert de D1 dit als verschillende opdrachten. De microcontroller reageert vervolgens op dit commando om de lichten dienovereenkomstig in te stellen
-
Afstandsbediening
- Ik heb speciaal voor dit project een app gemaakt om het zo gemakkelijk mogelijk te maken om de lamp naar wens te bedienen
- De slimme lamp kan echt worden bestuurd door alles dat een http GET-verzoek kan verzenden. Dit betekent dat de lamp opdrachten accepteert van bijna een onbeperkt aantal apparaten
-
3d printen
Deze slimme lamp verdient een stoere kast. En zoals zoveel projecten waar je een coole koffer nodig hebt, komt 3D-printen je te hulp
Stap 3: Circuit
Ik heb mijn PCB's besteld bij jlcpcb.com. Volledige openbaarmakingstijd: zij hebben dit project ook gesponsord.
De printplaat bestaat uit twee delen. Het heeft de LED-kaart en de besturingskaart. De print kan uit elkaar worden geklikt om deze twee delen later met een flexibele draad te verbinden. Dit is nodig om zowel de 3D-geprinte lamp slank te houden als om het LED-bord in een hoek te plaatsen om het licht gelijkmatig door de gatenruimte te verspreiden.
De besturingskaart bevat de D1-microcontroller samen met vijf MOSFET's voor het dimmen van de LED's en een spanningsregelaar om de microcontroller een soepele 5V te geven.
Het LED-bord heeft vijf LED-kanalen in drie verschillende soorten LED's. Omdat we een 12V-voedingsbron gebruiken, zijn de LED's geconfigureerd als drie LED's in serie met een weerstand en vervolgens 16 keer parallel herhaald.
Een gewone witte LED trekt gewoonlijk 3,3 V. Op een segment van het bord staan drie van deze LED's in serie, wat betekent dat de spanningsval wordt geaggregeerd in het circuit. Drie LED's die elk 3,3 V trekken, betekent dat één segment LED's 9,9 V trekt. Het circuit wordt gevoed door 12 V, zodat er 2,1 V overblijft.
Als het segment alleen uit de drie LED's zou bestaan, zouden ze meer spanning krijgen dan ze dissiperen. Dit is niet goed voor de LED's en kan deze snel beschadigen. Daarom heeft elk segment ook een weerstand in serie met alle drie de LED's. Deze weerstand is er om de resterende 2,1 V in de serieschakeling te laten vallen.
Dus als elk segment 12 V voor zijn rekening neemt, betekent dit dat elk van de segmenten parallel met elkaar is verbonden. Wanneer circuits parallel zijn aangesloten, krijgen ze allemaal dezelfde spanning en wordt de stroom geaggregeerd. De stroom in een serieschakeling is altijd hetzelfde.
Een gewone LED trekt 20 mA stroom. Dit betekent dat een segment, dat bestaat uit drie LED's en een weerstand in serie, nog steeds 20 mA zal trekken. Wanneer we meerdere segmenten parallel verbinden, tellen we de stroom op. Als je zes LED's uit de strip knipt, heb je twee van deze segmenten parallel. Wat betekent dat je totale circuit nog steeds 12 V trekt, maar dat ze 40 mA stroom trekken.
Stap 4: LED's solderen
Door een paar dingen te proberen, heb ik ontdekt dat eenvoudige plakband gewoon het meest effectief en flexibel is om te voorkomen dat de printplaat beweegt.
Voor onderdelen met meerdere pinnen, zoals de 6-pins op een 5050 LED, begin ik met het plaatsen van soldeer op een van de PCB-pads. Dan is het gewoon een kwestie van dit soldeer gesmolten houden met de soldeerbout terwijl je het onderdeel met een pincet op zijn plaats schuift.
Nu kunnen de andere pads gemakkelijk worden vastgehecht met wat soldeer. Om dit werk echter te versnellen, raad ik aan om wat vloeibaar soldeervloeimiddel op te nemen. Ik kan dit spul echt niet genoeg aanbevelen.
Breng een deel van het vloeimiddel aan op de soldeerpads en smelt vervolgens wat soldeer op de punt van je soldeerbout. Nu is het gewoon een kwestie van het gesmolten soldeer op de pads brengen en alles stroomt op zijn plaats. Lekker simpel.
Als het gaat om de weerstanden en andere componenten met twee pads, is er geen soldeervloeimiddel nodig. Breng soldeer aan op een van de pads en breng de weerstand op zijn plaats. Smelt nu gewoon wat soldeer op pad nummer twee. Makkelijk.
Bekijk de vijfde afbeelding in deze stap. Let op de oriëntatie van de LED's. De warm- en koudwitte LED's hebben hun inkeping in de rechterbovenhoek. De RGB-leds hebben hun inkeping in de linkerbenedenhoek. Dit is een ontwerpfout van mijn kant, omdat ik de datasheet voor de RGB-LED's die in dit project worden gebruikt niet kon vinden. Ach, leef en leer en zo!
Stap 5: Soldeerbesturingskaart
Na het voltooien van de marathon van het LED-bord, is het besturingsbord een fluitje van een cent om te solderen. Ik plaatste de vijf MOSFET's en bijpassende gate-source-weerstanden, voordat ik naar de spanningsregelaar ging.
De spanningsregelaar heeft optionele ruimtes voor het afvlakken van condensatoren. Terwijl ik ze op deze foto soldeerde, heb ik ze uiteindelijk verwijderd omdat ze niet echt nodig waren.
De truc om een slank bedieningspaneel te krijgen, is door de pin-headers aan de bovenkant door de onderkant te steken. Nadat de pinnen op hun plaats zitten, kan de ongebruikte lengte samen met het zwarte plastic van de achterkant worden afgeknipt. Hierdoor wordt de onderkant helemaal glad.
Met alle componenten op hun plaats is het tijd om de twee borden bij elkaar te brengen. Ik heb zojuist zes kleine draden van 7 cm (7 cm) afgeknipt en gestript en de twee PCB's aangesloten.
Stap 6: WiFi-configuratie
Er zijn zes eenvoudige regels in de code die u moet wijzigen.
-
ssid, lijn 3
Uw routernaam. Zorg ervoor dat u de letterkast correct schrijft wanneer u dit schrijft
-
wifiPass, lijn 4
Uw routerwachtwoord. Nogmaals, let op de behuizing
-
ip, lijn 8
Het statische ip-adres van je slimme lamp. Ik koos een willekeurig ip-adres op mijn netwerk en probeerde het in het opdrachtvenster te pingen. Als er geen antwoord is van het adres, kunt u ervan uitgaan dat het beschikbaar is
-
poort, lijn 9
Dit wordt de gateway op uw router. Open een opdrachtvenster en typ "ipconfig". De gateway en het subnet zijn rood omcirkeld in de afbeelding
-
subnet, lijn 10
Net als bij de gateway, is deze informatie omcirkeld in de afbeelding voor deze stap
-
tijdzone, lijn 15
De tijdzone waarin u zich bevindt. Wijzig dit als u de ingebouwde timerfuncties wilt gebruiken om lampen op bepaalde tijden in en uit te schakelen. De variabele is een eenvoudige plus of min GMT
Stap 7: Microcontrollercode
Na het wijzigen van alle relevante instellingen in de vorige stap is het eindelijk tijd om de code te uploaden naar de Wemos D1 Mini!
De Arduino-code vereist een paar bibliotheken en afhankelijkheden. Volg eerst deze handleiding van sparkfun als je nog nooit code van arduino IDE naar een ESP8266 hebt geüpload.
Download nu de Time-bibliotheek en de TimeAlarms-bibliotheek. Pak deze uit en kopieer ze naar de arduino-bibliotheekmap op uw computer. Net als het installeren van andere arduino-bibliotheken.
Let bij deze stap op de uploadinstellingen in de afbeelding. Selecteer dezelfde configuratie, behalve de com-poort. Dit is de com-poort waarop uw microcontroller op uw computer is aangesloten.
Wanneer de code is geüpload, opent u de seriële terminal voor een bericht van een, hopelijk, succesvolle verbinding! U kunt nu uw browser openen en het statische IP-adres bezoeken dat u op de microcontroller hebt opgeslagen. Gefeliciteerd, je hebt zojuist je eigen server gebouwd en host er een webpagina op!
Stap 8: Berichtenprotocol openen
Wanneer je de slimme lamp bedient met de app worden alle berichten automatisch voor je afgehandeld. Hier is een lijst met de berichten die de lamp accepteert, als u uw eigen afstandsbediening wilt bouwen. Ik heb een voorbeeld ip-adres gebruikt om te illustreren hoe de commando's te gebruiken.
-
192.168.0.200/&&R=1023G=0512B=0034C=0500W=0500
- Stelt rode lampjes in op maximale waarde, groene lampjes op halve waarde en blauwe lampjes op 34. Koud en warm wit zijn nauwelijks aan
- Bij het invoeren van waarden kunt u kiezen tussen 0 en 1023. Schrijf de lichtwaarden altijd als vier cijfers in de URL
-
192.168.0.200/&&B=0800
Stelt blauwe lichten in op de waarde 800 en schakelt tegelijkertijd alle andere lichten uit
-
192.168.0.200/LED=UIT
Schakelt alle lichten volledig uit
-
192.168.0.200/LED=FADE
Begint langzaam te vervagen tussen alle mogelijke RGB-kleuren. Perfect voor sfeer
-
192.168.0.200/NOTIFYR=1023-G=0512-B=0000
Knippert de gegeven kleur twee keer om een binnenkomende melding aan te geven. Perfect als je bijvoorbeeld een programma op je computer wilt maken om de lamp rood te laten knipperen wanneer je een nieuwe e-mail ontvangt
-
192.168.0.200/DST=1
- Stelt de klok in op zomertijd. Voegt een uur toe aan de klok
- /DST=0 gebruik dit om terug te gaan van DST, verwijdert een uur van de klok als DST actief is
-
192.168.0.200/TIMER1H=06M=30R=1023G=0512B=0034C=0000W=0000
Slaat de status op voor timer 1. Deze timer zal de gegeven RGB-waarden inschakelen om 06:30 in de ochtend
-
192.168.0.200/TIMER1H=99
Stel het timeruur in op 99 om de timer te deactiveren. De RGB-waarden worden nog steeds opgeslagen, maar de timer zal de lichten niet inschakelen wanneer het uur is ingesteld op 99
- De lamp heeft vier individuele timers. Wijzig "TIMER1" voor "TIMER2", "TIMER3" of "TIMER4" om een van de andere ingebouwde timers aan te passen.
Dit zijn de momenteel ingebouwde commando's. Laat een reactie achter als je leuke ideeën hebt voor nieuwe commando's om in de Arduino-code of de externe app te bouwen!
Stap 9: Afstandsbediening
Klik hier om de app te downloaden. De installatie is supergemakkelijk gemaakt, voer gewoon het ip-adres van je slimme lamp in en selecteer of je alleen RGB-LED's of RGB + warm en koud witte LED's wilt aansturen.
Zoals uitgelegd in de vorige stap, weet u nu welk berichtenprotocol de app gebruikt. Het stuurt een http GET-verzoek met de URL's. Dit betekent dat je ook je eigen microcontroller-circuit kunt maken en toch deze app kunt gebruiken om de functies die je zelf ontwikkelt te besturen.
Omdat we echt diep in het berichtenprotocol hebben gekeken, kun je de slimme lamp ook bedienen met alles dat een http GET-verzoek kan verzenden. Dit betekent elke browser op een telefoon of computer, of smart home-apparaten of assistenten zoals Alexa of de Google Assistent.
Tasker is een app waarmee je in feite voorwaarden kunt creëren om bijna alles te controleren. Ik gebruikte dat om de slimme lamp te laten knipperen met de kleur van een melding wanneer ik deze op mijn telefoon ontvang. Ik heb tasker ook ingesteld om de lichten volledig wit in te schakelen, wanneer de telefoon op een doordeweekse dag na 16:00 uur verbinding maakt met mijn wifi thuis. Dat betekent dat de lichten automatisch aangaan als ik uit school kom. Het is echt gaaf om thuis te komen met de lichten automatisch aan!
Stap 10: 3D printen
De lampbehuizing zelf kan bijna volledig zonder steunen worden bedrukt. De enige onderdelen die echt ondersteuning nodig hebben, zijn de pinnen die bedoeld zijn om op de printplaat te passen. Daarom heb ik de stl zowel met als zonder een kleine steunstructuur beschikbaar gemaakt voor alleen deze haringen. Het voordeel van het gebruik van deze ondersteuning op maat is dat het printen veel sneller gaat! En we krijgen alleen printondersteuning voor de onderdelen die het echt nodig hebben.
U kunt de.stl-bestanden hier downloaden
Stap 11: Breng het allemaal samen
Begin na het 3D-printen met het verwijderen van de printondersteuning. De stroomkabels gaan in aparte kanalen en zijn aan elkaar gebonden. Deze knoop zorgt voor trekontlasting en voorkomt dat de kabels van de printplaat worden gescheurd. Soldeer de stroomkabels op de achterkant van de print en let op de polariteit!
De besturingsprint wordt vervolgens vastgemaakt met een stukje tape om het strak in de behuizing te houden. De LED-printplaat kan eenvoudig op zijn plaats worden gezet waar hij alleen plat tegen de behuizing ligt.
Stap 12: De lamp ophangen
Er zijn veel mogelijkheden om deze lamp aan de muur te hangen. Omdat ik de code continu zou kunnen bijwerken om de lamp te verbeteren, wilde ik een manier om de lamp van tijd tot tijd te verwijderen. Je kunt hete lijm gebruiken, maar ik raad dubbelzijdig plakband aan. Het is het beste om de dikke en schuimige dubbelzijdige tape te gebruiken, omdat deze de lamp het beste tegen een getextureerde muur houdt.
Stap 13: Klaar
Met de lamp aan de muur en klaar om commando's te accepteren, ben je klaar!
Het LED-paneel is zo gehoekt dat het licht gelijkmatig in de kamer wordt verspreid. Het is een mooie toevoeging aan elke werkruimte en de mogelijkheid tot integratie met domotica is een groot pluspunt. Ik hou echt van de mogelijkheid om RGB-kleuren in te stellen en de witbalans tussen koud en warm licht aan te passen. Het ziet er stijlvol uit en is een geweldige hulp bij het instellen van sfeer- of werkverlichting, passend bij alle verlichtingsbehoeften die ik op dit moment heb.
Gefeliciteerd, je hebt nu een grote sprong gemaakt in de wereld van IoT en domotica!