Inhoudsopgave:

DIY-lichtwekker - Ajarnpa
DIY-lichtwekker - Ajarnpa

Video: DIY-lichtwekker - Ajarnpa

Video: DIY-lichtwekker - Ajarnpa
Video: Home Assistant практика - Световой будильник, рассвет и закат, сработка по времени и дням недели 2024, Juli-
Anonim
DIY Lichte Wekker
DIY Lichte Wekker
DIY Lichte Wekker
DIY Lichte Wekker
DIY Lichte Wekker
DIY Lichte Wekker

Heb je ooit een van die mooie wekkers willen proberen die de zonsopgang nabootst om je wakker te maken? Wil je wat gekleurde lampen toevoegen aan je kamer? Wil je het allemaal bedienen vanaf elk apparaat met een internetbrowser? Bekijk dan deze wekker die ik heb gemaakt met behulp van wat ik heb geleerd bij het bouwen van mijn automatische visvoeder.

Het belangrijkste doel van de Light Alarm is ervoor te zorgen dat er licht in mijn kamer is als ik wakker word, vooral in de winter, wanneer het buiten meestal nog donker is. Het licht dooft voor een vooraf bepaalde tijdsduur en eindigt in volle helderheid op de ingestelde wektijd. Maar dat is pas de eerste modus, er zijn nog 7 andere verlichtingsmodi om mee te spelen!

Het lichtalarm wordt bestuurd via een HTML-pagina die wordt gehost op het ESP-8266-12e-bord. Het is toegankelijk vanaf uw thuisnetwerk of kan worden geconfigureerd om overal op internet toegankelijk te zijn met port forwarding.

Stap 1: Materialen:

  • ESP-8266-12e (NodeMCU) bord
  • Nieuwste Arduino IDE
  • Bibliotheken die nodig zijn voor de geïnstalleerde code
  • Notepad++ (voor het bewerken van de HTML als je wilt)
  • Browser (ik heb chrome gebruikt, maar elke zou moeten werken, vooral als je de html-code kunt zien werken)
  • 3D-printer met een bouwoppervlak van minimaal 150 mm x 150 mm
  • Wit of doorzichtig plastic filament (voor de kap kan de houder elke gewenste kleur hebben)
  • 4-cijferig 7-segments display met TM1637-chip, ik heb er een van gebruikt
  • Adresseerbare RGBW LED-strip van 1 meter, sk6812. Mijn strip heeft 60LEDs/meter, maar wordt niet meer verkocht. De arduino-code is ingesteld voor de RGBW, dus je zult deze moeten herschrijven als je een RGB-strip wilt gebruiken. Ik zou een strip aanraden met minimaal 60LED's.
  • ALS de strip geen zelfklevende achterkant heeft: plakband en superlijm
  • Protoboard om het bord te monteren
  • 24AWG draad (ik raad meerdere kleuren aan)
  • Minstens 1,80 meter draad voor stroom. Ik raad aan om wat uw plaatselijke ijzerhandel verkoopt voor tafellampen te gebruiken.
  • 5V voeding, ik heb deze gebruikt
  • Vergeet adapters voor de voeding niet
  • Soldeerbout
  • USB-kabel om het bord te programmeren
  • hete lijm
  • Header pinnen (mannelijk en vrouwelijk)
  • Geduld

Stap 2: Programmeren van het bord

Het bord zal twee sets code bevatten, de gewone arduino-code die wordt uitgevoerd en de HTML-code die het naar uw browser stuurt. Je uploadt de Arduino-code zoals je zou doen met elk ander bord. De HTML vereist echter een plug-in om te uploaden naar het SPIFF-geheugen op het bord.

Voor een tutorial over het gebruik van SPIFF's, zie

Voor het uploaden van de HTML-code, zie https://www.esp8266.com/viewtopic.php?f=32&t=10081, je moet hiervoor een plug-in op arduino installeren.

De HTML moet worden opgeslagen in een map in de arduino-projectmap die eenvoudig 'data' wordt genoemd.

Het uploaden van de HTML duurt een paar minuten, ik kon een of twee online races spelen in Mario Kart 8 terwijl ik wachtte. Daarom, als u wijzigingen aanbrengt in de HTML, gebruikt u notepad++ om het bestand te bewerken en neer te zetten in een browser zoals Chrome om het te testen.

Stap 3: Hoe de code werkt

Hoe de code werkt
Hoe de code werkt
Hoe de code werkt
Hoe de code werkt

De code in dit project is opgedeeld in twee bestanden: de code die door het bord wordt uitgevoerd en de HTML die is opgeslagen in het geheugen van het bord en die het naar de browser stuurt wanneer u naar de webpagina navigeert.

Wanneer je het bord op de stroom aansluit, start de code van het bord, zoals elke arduino. Het maakt verbinding met uw wifi-thuisnetwerk en maakt vervolgens contact met een NIST-server om de huidige tijd te krijgen om de interne klok in te stellen. Nadat de klok is ingesteld, start de webserver en kunt u verbinding maken via uw favoriete browser.

Je moet verbinding maken via het IP-adres van het bord, dus zorg ervoor dat je een statisch IP reserveert op je router. Ik heb ook de poort op mijn lamp gewijzigd, dus om verbinding te maken navigeer ik naar 192.168.0.170:301/. Wil je overal ter wereld verbinding maken met je lamp, dan zul je port forwarding op je router moeten instellen. U moet dan verbinding maken met het IP-adres dat u ziet wanneer u verbinding maakt met https://www.whatsmyip.org/ en met de poort waarop u het lokale IP-adres van de lamp hebt ingesteld.

Zodra je verbinding hebt gemaakt, stuurt het bord het HTML-bestand naar je browser, die het decodeert en de pagina weergeeft. De wijzigingen die u aanbrengt, hebben geen invloed op het bord totdat u op een van de knoppen drukt. op de webpagina. Wanneer u op een knop drukt, stuurt uw browser een html-formulier naar het bord met de huidige instellingen en het bord neemt die instellingen over en stelt de displays in.

De instellingen zijn redelijk rechttoe rechtaan. De pagina schaalt mee met de breedte van je browser en ziet er op mobiel wat beter uit. Om het uiterlijk van de instellingenpagina te wijzigen, moet je de HTML bewerken, en daarvoor zijn er genoeg andere tutorials online. Aangezien dit de eerste keer was dat ik HTML gebruikte, leerde ik vooral het gebruik van

Wanneer de pagina wordt geladen, ziet u vier knoppen, een schuifregelaar en een vervolgkeuzemenu. De bovenste knop is de belangrijkste "enter"- of "engage"-knop. De volgende twee knoppen schakelen tussen de digitale tijdweergave en of deze de tijd in 12 uur of 24 uur formaat weergeeft. De schuifregelaar regelt de helderheid van de digitale klok en die wordt bijgewerkt wanneer u de weergavemodus inschakelt of de klok inschakelt. De laatste knop zou alle lichten uit moeten doen, maar om de een of andere reden werkt dat niet met deze versie van de code. Als u in plaats daarvan op de knop "Engage" drukt zonder geselecteerde instellingen, worden de lichten uitgeschakeld.

Het vervolgkeuzemenu bevat 7 systeemmodi, als u er een selecteert, worden de benodigde instellingen hieronder weergegeven.

  • Modus 1: Alarm. Voer de tijd in waarop u wilt dat het licht de volledige helderheid bereikt en hoe lang u wilt dat de fade-in in gehele minuten is. Standaard is 6:00:00AM en 15 minuten. Het licht blijft op volledige helderheid gedurende dezelfde tijd als het langzaam inschakelt voordat het automatisch wordt uitgeschakeld. Standaard kan worden gewijzigd in HTML-code.
  • Modus 2: analoge klok. Kies drie kleuren om de uur-, minuten- en secondewijzer op een analoge klok weer te geven. Een schuifregelaar boven de drie kleurkiezers zal automatisch de vooraf ingestelde koele of warme kleuren plaatsen als ze respectievelijk links of rechts zijn ingesteld. Als de schuifregelaar naar links of naar rechts wordt gezet en vervolgens terugkeert naar het midden, worden de kleurkiezers allemaal op zwart (0, 0, 0, 0) [R, G, B, W] gezet. Wanneer een kleur die helemaal nul is, naar het bord wordt gestuurd, wordt deze willekeurig verdeeld. *Dit kan ervoor zorgen dat de lampjes overmatig gaan knipperen.* Als u wilt dat een lampje uit blijft, zal het instellen van een waarde op 1 resulteren in 'zwart' (alle waarden zijn standaard ingesteld op 1 (01, 01, 01, 01) wanneer de kleurkiezers zijn begonnen). De kleurkiezer en RGB-schuifregelaars zijn gekoppeld, terwijl de W-schuifregelaar onafhankelijk is.
  • Modus 3: Kleur. Kies een kleur om de lichten in te stellen. Dit blijft zo totdat het door de gebruiker wordt gewijzigd.
  • Modus 4: Kleurcyclus. Kies drie kleuren om doorheen te bladeren en voer de tijd in om elke kleur vast te houden. Dezelfde methoden zijn van toepassing op het kiezen van de kleuren als in modus 2. Willekeurige kleuren werken het beste met deze modus.
  • Modus 5: Kleur Cilinder. Kies drie kleuren (zelfde als eerder) en het toerental van de cilinder. De lichten worden weergegeven als een patroon van strepen die rond de as draaien. op het door u gekozen toerental. De standaard RPM is 60 of 1 omw/sec. Willekeurige kleuren kunnen knipperende lampjes tot gevolg hebben!
  • Modus 6: Kleur Vortex. Stel drie kleuren en de RPM in. Deze modus is niet perfect, maar het idee is dat de lichten de klok rond draaien. Er is willekeur ingebouwd, dus het is het beste om gewoon de temperatuurschuifregelaar te gebruiken om te kiezen of de vortex warm of koel begint.
  • Modus 7: Regenboog. Stel de Cyclussnelheid in, de RPM is hier vrij nutteloos. Dit was een vooraf gemaakt voorbeeld uit de Neopixel-bibliotheek met enkele bewerkingen om het bord nog steeds te laten reageren op gebruikersinvoer.

Zodra de instellingen zijn gekozen, wordt door op een willekeurige knop te drukken een HTML-formulier naar het bord gestuurd, dat de waarden in het formulier gebruikt om de weergave-instellingen te wijzigen. De "Engage"-knop verzendt alle instellingen, terwijl de twee klokknoppen alleen de klokhelderheid verzenden. De "uit"-knop zou gewoon de LED-strip moeten uitschakelen, maar er is een bug die ervoor zorgt dat dit niet werkt. In plaats daarvan op "Engage" drukken zonder instellingen te wijzigen, lijkt te werken. Zodra het bord de instellingen heeft geparseerd, wordt uw browser omgeleid naar de oorspronkelijke HTML-pagina.

Opmerking: Als u de alarmtijd instelt, verandert de systeemmodus in 1, waardoor elke modus die eerder actief was, wordt gestopt en alle instellingen worden gereset. Het starten van een andere modus na het instellen van de alarmtijd verandert echter niet de tijd die u instelt, dus u kunt uw alarm instellen en vervolgens een nieuwe modus starten. Als de nieuwe modus niet wordt uitgeschakeld voordat het alarm begint te vervagen in het witte licht, kan dit leiden tot knipperen. Om dit te voorkomen, is het bord gecodeerd om alle lichten uit te schakelen en de systeemmodus in te stellen op 1 (alarm) om 2 uur 's nachts zonder de ingestelde alarmtijd te wijzigen. Deze harde cutoff-tijd kan worden gewijzigd in de Arduino-code.

Stap 4: Uw netwerk instellen en verbinding maken

Uw netwerk instellen en verbinding maken
Uw netwerk instellen en verbinding maken

Deze stap is een beetje vaag omdat elke router anders is. Google uw specifieke routermodel om de instellingen te vinden die u moet wijzigen.

U moet inloggen op uw router en waarschijnlijk de geavanceerde modus inschakelen. Op mijn router moet ik naar DHCP Server gaan om een IP-adres te reserveren. Zoek het MAC-adres van uw ESP8266; het is degene op de DHCP-clientlijst (of het equivalent van uw router) die verdwijnt wanneer u de ESP loskoppelt.

Gebruik het MAC-adres om het IP-adres van de lamp te reserveren. Zorg ervoor dat de invoer is ingeschakeld als uw router die instelling heeft.

Als u verbinding wilt maken van buiten uw persoonlijke netwerk, moet u uw router googlen om erachter te komen hoe u port forwarding instelt.

Stap 5: 3D-geprinte onderdelen

De geprinte delen zouden op de meeste printers moeten passen. Er zijn twee delen: de houder en de kap.

De houder is waar de LED-strip omheen is gewikkeld, in een spiraalpatroon, en de diameter is zodanig dat een 60-LED-strip van 1 meter 3 keer rond moet wikkelen en alle LED's axiaal moeten worden uitgelijnd. Als u een strip gebruikt waarvan de LED's anders zijn geplaatst en niet op de houder zijn uitgelijnd zoals zou moeten, wijzigt u de diameter met de meegeleverde modellen. De diameter is C/pi, waarbij C de omtrek is en 1/3 van de lengte van de strip. De halfronde openingen aan de muurzijde van de houder zorgen ervoor dat de stroomkabel en de luchtstroom erdoor kunnen. De dwarsschoren zorgen voor stijfheid en een oppervlak om commandostrips op aan te brengen voor montage.

De kap heeft een wrijvingspassing met de houder en er is een inkeping om de kap uit te lijnen met de houder. De inkeping moet op de 12- of 6-uurpositie staan wanneer deze aan de muur wordt gemonteerd, en de 7-segmentsklokweergave moet worden uitgelijnd met de inkeping. De kap fungeert als diffuser voor de lampen en is daardoor erg dun. Ik heb het afgedrukt met een mondstuk van 0,5 mm en de meeste commerciële printers worden geleverd met mondstukken van 0,4 mm, dus er zouden weinig problemen moeten zijn, maar controleer uw snijmachine om er zeker van te zijn dat de schaduw goed wordt afgedrukt. Gebruik ook een wit of anderszins doorschijnend plastic voor de schaduw. Andere kleuren vervormen de kleuren van de lampen of blokkeren te veel licht.

Zorg ervoor dat u controleert of het digitale klokdisplay dat u gebruikt in de schaduw past. Het is ontworpen om met wrijving op zijn plaats te passen met voldoende ruimte voor de draden van de klok. Gebruik de modellen om de klokhouder te verwisselen. Zorg er bij het veranderen van het model van de kap voor dat de dikte van de voorkant minder dan 1 mm is, zodat de klok er met weinig diffusie doorheen zichtbaar is.

Stap 6: Bedrading en Board Assembly

Bedrading en printplaatmontage
Bedrading en printplaatmontage
Bedrading en printplaatmontage
Bedrading en printplaatmontage
Bedrading en printplaatmontage
Bedrading en printplaatmontage

Het bord en de bedrading is veel minder ingewikkeld dan mijn visvoeder. Soldeer eenvoudig een paar rijen vrouwelijke koppennen op een protoboard zodat de ESP-8266-12e erin kan zitten, evenals twee rijen mannelijke koppennen om stroom aan te sluiten. Ik heb de twee klokgegevensdraden en de LED-stripgegevensdraad aan hun respectieve pinnen op het protoboard gesoldeerd, en alle stroom- en aardedraden werden gesoldeerd aan de respectieve stroomrails die ik aan de achterkant van het bord had gemaakt.

De andere kant van deze draden moeten vrouwelijke headers zijn voor de klok en de LED-stripconnector voor de LED-strip. Mogelijk moet u mannelijke pinnen aan de klok solderen en ik raad hiervoor schuine pinnen aan. De LED-stripdraden en stroomdraden moeten naar de muurzijde van het bord worden geleid (de kant met de ESP) en de klokdraden naar de voorkant (waar alle soldeerverbindingen zijn).

Voor een hoogspanningslijn gebruikte ik 6ft 16-26 gevlochten koperdraad. Het was een beetje dik, dus ik splitste elke draad tussen drie vrouwelijke pinnen om verbinding te maken met de stroom- en grondrails. De andere kant moet de connector zijn die je voor je voeding hebt.

Heet lijm alle blootgestelde soldeerverbindingen (vooral op de stroomkabel, en VOORAL als er zichtbaar koper is zoals het mijne) om alles te isoleren van onbedoelde kortsluitingen. Je kunt de klok ook heet op het bord lijmen (achterkant van de klok om de kant van het bord te solderen), maar ik ontdekte dat dit een zwakke verbinding was en niet zo nodig was toen alles eenmaal was gemonteerd.

Rol de LED-strip om de buitenkant van de houder. ZORG ERVOOR dat u de strip in modus 2 test om te controleren of de analoge klok in de goede richting gaat. Zorg ervoor dat u een opening van ~ 5 mm vanaf de voorkant vrijlaat voor de kap. De eerste LED van de strip (de LED waarop de kleur van de seconden verschijnt bovenaan elke minuut, aan het ene uiteinde van de strip) gaat op 12 uur staan. wanneer de lamp aan de muur is bevestigd. Als je een LED-strip op zijn plaats hebt, gebruik dan de zelfklevende achterkant (als die er is) of lijm om hem op de houder te plakken. Superlijm werkt het beste als de strip geen zelfklevende achterkant heeft. Gebruik plakband om de strip op zijn plaats te houden tijdens het testen en terwijl de lijm opdroogt.

Leid de LED-draden door de halfronde gaten in de houder om verbinding te maken met het bord. De stroomkabel is hier ook doorheen geregen, zorg ervoor dat je een gat kiest waar de kabel niet aan trekt vanwege de zwaartekracht of per ongeluk trekken.

Stap 7: Montage

Om aan de muur te bevestigen, gebruikt u gewoon 3-4 3M-commandostrips, of zoveel als u wilt. Gebruik de inkeping in de houder om te controleren of deze waterpas staat. Nadat de houder is gemonteerd, sluit u de voedingskabel en LED-draden aan op het bord en plaatst u de klok in de kap. Plaats vervolgens de kap eenvoudig op de houder en steek de voedingskabel in de voeding!

Aanbevolen: