Twitmaslights: gebruik een Arduino Yún om de kleur een led strip via Twitter te veranderen

English version

Nadat het me gelukt was om een led strip met een Arduino Uno en een Wifi schield via Twitter te besturen, wilde ik ook een webcam toevoegen, zodat de Arduino met een foto van de lampjes met de nieuwe kleur terug kan tweeten. Voor dat doel heb ik een  Arduino Yún gekocht.  Net als de andere Arduino's heeft deze ook een ATmega processor. Maar het speciale van de  Yún is that deze ook over een Atheros AR9331 processor beschikt. En daar draait Linux op! Dit bord heeft onder andere wifi, een USB-A poort, een micro-SD kaart slot, digitale input/output pins en een micro USB aansluitiing, die ik allemaal voor dit project nodig heb.

Wat het doet

Elke 30 seconden wordt op Twitter gezocht naar de meest recente openbare tweet met de hashtag #twitmaslights, gevolgd door een dubbele punt en een kleur. Deze kleur kan in hexadecimale notatie zijn gegeven of als een van de 140 officiële html kleurnamen. Wanneer er een tweet wordt gevonden, wordt de tekst na "#twitmaslights:" geparsed en gecontroleerd op een geldige kleurcode of kleurnaam. Als dat lukt, veranderen de kleuren van de led strip en neemt de camera een foto. Die foto wordt aan een reply toegevoegd van @twitmaslights, aan degene die de #twitmaslights tweet verstuurde. Op die manier ben ik tenminste niet de enige die van de kerstverlichting in mijn woonkamer kan genieten. 🙂

Twitmaslights gear

Hoe het werkt - of eigenlijk: hoe het dat niet doet

Het heeft een tijdje geduurd voordat ik doorhad hoe de twee "kanten" - de ATmega (Arduino) en de Atheros (Linux) - moesten worden gebruikt om met elkaar te communiceren. Met de Bridge library kun je dat op verschillende manieren doen, maar hoe, wat, waar, wanneer en waarom was me in het begin niet zo duidelijk.

In eerste instantie gebruikte ik de ATmega om al het zware werk te verrichten, inclusief het zoeken naar tweets, parsen, controleren op geldige kleurcodes en het tweeten van updates. Omdat er hierbij veel bewerkingen met strings (tekst) nodig zijn, bleek de kleine hoeveelheid RAM geheugen (slechts 2,5 KB!) van de Arduino microcontroller al snel niet toereikend te zijn. En ik had op dat moment de camera nog niet eens aangesloten!

Ik maakte ook gebruik van Temboo, een erg slimme en gemakkelijke manier om een Yún te verbinden met verschillende online services (Twitter, Facebook, Google+, Paypal, Instagram, FourSquare... noem maar op!) Hier was ik erg van onder de indruk, totdat ik er achter kwam dat een gebruiker maar een beperkte hoeveelheid (1000 per maand) api verzoeken krijgt. Als je meer wilt, moet je betalen voor een uitgebreid plan. Een ander nadeel van Temboo is het geheugengebruik: in mijn geval snoept het nog eens minstens 10% van het programmeerbaar geheugen af en vertoont onvoorspelbaar gedrag als er nog maar weinig RAM aan de Arduino kant overblijft. Aan de andere kant verdient Temboo wel een groot compliment voor hun support: ze namen zelf het initiatief om contact met me op te nemen toen ze merkten dat ik problemen had met het versturen van tweets vanaf de Yún.

Twitmaslights: purple

Hoe het uiteindelijk wel werkt

Ik bedacht me toen (waarom had ik dat niet eerder gedaan?!) dat ik de Linux kant van de Yún moest gebruiken om al het zware werk te verrichten. Je kunt je eigen Python scripts schrijven, ze op een micro SD kaart opslaan en ze uitvoeren vanaf de Arduino kant. Ook is het eenvoudig om gegevens van de ene naar de andere kant te sturen. Als je eenmaal doorhebt hoe dat werkt, snapt hoe je extra Python modules op de juiste manier kunt installeren, deze methode gebruikt om Twython te installeren en deze aanwijzingen gebruikt om een webcam aan de praat te krijgen, wordt het tweeten van een foto zelfs eenvoudiger en krachtiger dan wanneer je dat met Temboo had gedaan!

 

Share Button

2 gedachten over “Twitmaslights: gebruik een Arduino Yún om de kleur een led strip via Twitter te veranderen”

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.