copyright 1998-2017 by Mark Verboom
ipv6 ready RSS Feed Switch to English

Ga terug naar Nieuws

Wifi kerstboom code

Naar blog index

Wednesday, 21 December, 2016

Wifi kerstboom code

Sinds de laatste post heb ik de kerstboom verbonden met de esp8266. Ik heb hiervoor een Wemos D1 mini gebruikt, en erg fijn bord om mee te ontwikkelen.

Voor meer informatie, zie de Wemos website.

Ik heb de basis Arduino omgeving gebruikt met de Arduino esp8266 uitbreiding voor het schrijven van de code. Er is veel informatie te vinden op het internet hoe dit opgezet kan worden, ik ga daar verder niet hier op in.

De volgende punten wil ik proberen werkend te krijgen:

  • Configureren van de wifi instellingen via de webbrowser
  • Webinterface voor het zetten van de instellingen en het weergeven van een "virtuele" kestboom in de browser
  • Mogelijkheid om verschillende patronen te kiezen
  • Mogelijkheid om een specifieke of random kleur te kiezen
  • Mogelijkheid om ene specfieke of random animatie snelheid te kiezen
Bibliotheken

Om het e.e.a. werkend te krijgen heb ik gebruik gemaakt van verschillende bibliotheken.

WifiManager

Deze bibliotheek maakt het erg simpel om de wifi instellingen te configureren. Wanneer de controller voor de eerste keer gestart wordt, zal deze zichzelf configureren als accesspoint. Wanneer een computer verbinden is met dit accesspoint kunnen de wifi instellingen worden gezet waar de esp op moet verbinden. Bij de volgende start van de esp zal deze automatisch verbinden met het juiste netwerk.

Adafruit Neopixel bibliotheek

Deze bibliotheek maakt het heel simple om verschillende RGB leds aan te sturen, waaronder ook de PL9823's die ik heb gebruikt in de kerstboom.

ESP8266 Webserver

Dit is onderdeel van de standaard bibliotheek. Deze maakt het mogelijk om zeer eenvoudig een webpagina te kunnen serveren vanaf de esp. Ik gebruik deze bilbiotheek voor het serveren van een basis webpagina waarin alle code zit die in de browser moet draaien.

WebSockets

Deze bibliotheek maakt het makkelijk om een websocket verbinding te maken tussen de browser en de esp voor het snel uitwisselen van data.

Ontwerp

In het ontwerp heb ik de code gesplists in twee delen:

  • Webbrowser code
  • esp code
De webbrowser code wordt geserveerd door de esp en zit in de esp sketch. De webbrowser code bevat wat simpele HTML en javascript voor communicatie met de esp.

De basis van de communicatie tussen de browser en de esp wordt uitgevoerd met een websocket. Dit maakt het mogelijk om snel gegevens te kunnen uitwisselen. In de code wordt dit gebruikt voor het updaten van de browser m.b.t. de huidige status en kleur van de leds, instellen van kleuren, patronen etc.

Naast het afhandelen van de websocket en de webpagina verzoeken, bestuurt de esp ook de leds. Ik heb hiervoor een aantal patronen geimplementeerd om te zien of dit een beetje werkt. En het lijkt te doen wat ik wil.

Bron code

De code is beschikbaar op github, zie de link hieronder. Hou er rekening mee dat de code niet is opgeschoond en niet erg robuust en leesbaar is. Maar het zou een redelijke basis moeten vormen voor mensen die iets vergelijkbaars willen doen.

GitHub link

Video's

Hieronder zijn twee video's te vinden van de kerstboom met de huidige versie van de software. In de eerste video is het sterrenpatroon te vinden met een fade instelling op de leds op willekeurige plekken. Zoals op de achtergrond te horen is, is Maika (mijn kat) het er niet mee eens dat ik met de code voor de kerstboom bezig ben ;)


De tweede vidoe is een dubbele lus patroon.


De laatste video is de webinterface waarmee de boom kan worden bestuurd. Deze laat de beschikbare effecten zien en een aantal andere instellingen.


Kosten

De totalke kosten van dit project (afgezien van de uren voor het bouwen en coderen): with the esp8266):

  • Kwantum kerstboom : EUR 4,00
  • Wemos mini D1: EUR 3,00
  • 10 PL9823 F8 8mm LED's: EUR 5,14
De totale kosten zijn dus ongeveer EUR 12,14. Niet slecht :)