dec 022017
 

Google heeft weer een geinig nieuw experiment de wereld in gestuurd: Paper Signals. Het principe is heel simpel: je print een vouwmodel op papier, knipt het uit volgens de instructies. Je neemt een ESP8266, een servomoter en 3 kabels. Vouw het geheel samen. Maak een account aan bij Google zodat je via je smartphone en Google Assistent commando’s aan het “signal” door kunt geven. Zet de benodigde code op de ESP8266 (kwestie van wat variabelen in een bestandje aanpassen voor jouw wifi-netwerk, jouw code bij Google etc en dan uploaden). En klaar.

Het resultaat is dan bv een signal met een paraplu er op die open gaat wanneer het gaat regenen. Je geeft dan via de Google Assistent, met stemcommando’s, door dat die bepaalde signal het weer in jouw woonplaats bij moet houden.  Zo hebben ze al een voorbeeld voor een signal voor raketlanceringen, een countdown klok (leuk voor in de klas om af te tellen naar de Kerstvakantie), eentje voor het weer die aangeeft of het korte broeken weer is of niet (voor de meeste leraren is het nooit korte broeken weer in de klas!!). Maar je kunt ook zelf nieuwe sjablonen verzinnen.

Google gebruikt voor hun kit de Adafruit Feather HUZZAH en die is niet heel goedkoop. Maar als ik naar de bijgevoegde code kijk, dan zit daar op het eerste oog niets in dat niet op een willekeurig ESP8266 zou kunnen draaien. Ik heb het nog niet kunnen testen, maar dit zou ook op een Wemos D1 mini van 2 euro uit China moeten kunnen werken. Logisch ook omdat de ESP8266 niet veel hoeft te doen. Hij hoeft alleen via WiFi contact te maken met de Google dienst, te luisteren naar opdrachten die hem vertellen hoe de servo moet draaien en de servo op basis daarvan aansturen.

Let op! Ik ga er vanuit dat dit een experiment is van Google dat met name op de Google Assistant gericht is. Garantie dat de API en de dienst jaren in de lucht blijft heb je bij Google sowieso niet vaak. Maar ja, dan haal je de onderdelen toch weer uit elkaar en gebruik je ze voor wat anders?

 

 

Deel dit bericht:
nov 272017
 

Ondanks alles zijn kinderen nog lang niet zo’n nerd of geek als hun papa is. En hoewel ik natuurlijk sowieso helemaal niet over ze mag klagen, kreeg ik vandaag toch nog wel weer wat meer hoop. Vandaag kwam namelijk weer eens een pakje uit China binnen. Nu met zo’n “bekende” 37-in-1 sensorkit. Een zakje (ik had niet gekozen voor de duurdere versie met doosje) met daarin 27 verschillende sensoren voor aan de Arduino, de ESP8266 of de micro:bit.

Totale kosten zo’n 10 euro, geen geld dus. Ongetwijfeld niet de meest hoogstaande kwaliteit, maar elke sensor zit al op zijn eigen printplaatje met pinnen om meteen een dupont-kabeltje op aan te sluiten.

Wat me positief verraste was de belangstelling en de nieuwsgierigheid die het pakje met sensoren opwekte. Niet omdat ze iets moesten of wilden bouwen. Nee, gewoon nieuwsgierig naar waar al die 27 sensoren voor dienden, wat je er mee kon doen. Sommigen kenden ze al (relais, thermometer etc.) maar andere ook weer niet. Het bijbehorende kaartje bevat niet meer dan alleen een afbeelding van de sensoren en de bijbehorende naam. Ze kunnen er via YouTube dus heel eenvoudig achter komen.

Maar dat moet nog even wachten want komend weekend “moeten” we eerst nog een Sinterklaas surprise in elkaar knutselen op basis van een servo, een ATtiny85, LEDjes, hout, verf,…..
De week erna hebben we wél tijd. Ik ben eens benieuwd hoe ver we komen.

Dat kinderen alleen maar willen gamen en tv kijken is net zoveel onzin als dat hele digital natives verhaal van voorheen. 🙂

Deel dit bericht:
sep 042017
 

Ik heb nog geen tijd gehad om zelf te spelen met Chatfuel, maar ik vond het voorbeeld dat My Electronics Lab gerealiseerd had met Chatfuel interessant genoeg voor een blogpost. Chatfuel is een (gratis) online dienst waarmee je zo te zien relatief eenvoudig een Facebook chatbot kunt bouwen. Die chatbot herkent de teksten die een gebruik intypt en reageert daar dan op. Dat hoeft niet alleen met tekst. In het voorbeeld hierboven verstuurd de chatbot GET-commando’s naar een (andere gratis) online MQTT-server. Een ESP8266 die een verbinding met die server heeft reageert daar dan weer op en schakelt een LED-lampje aan of weer uit. Die LED kan dan ook van alles anders zijn. Omgekeerd kun je je ook voorstellen dat je op deze manier informatie van sensoren opvraagt.

 

Deel dit bericht:
apr 102017
 

Als het in het onderwijs in Nederland over “programmeren” gaat worden eenvoudige vragen al heel snel ingewikkeld. Dus een vraag als “Welke programmeertalen zouden onze leerlingen/studenten moeten kennen?” (bron) is niet helemaal zonder risico. Immers, je moet dan gaan nadenken over het doel dat je daarmee hebt. Wil je ze leren programmeren? Of juist coderen? Of software ontwikkelen? Ik ga niet eens proberen naar bronnen te linken die ze op één hoop of op juist heel verschillende hopen (en dan per bron ook verschillend) gooien.

Dus laat ik het maar even veilig houden in deze blogpost. Zo’n 9 jaar geleden vroeg ik me af welke programmeertalen ik allemaal zou moeten leren. Zoals ik toen beschreef:   Basic was mijn eerste kennismaking met programmeren, maar daar kon je (toen) zo weinig mee dat ik er niet veel interesse voor had. Op de universiteit leerde ik Turbo Pascal om daar vervolgens nooit meer wat mee te doen. Daarna kwam ik in de Windows omgeving en Visual Basic (binnen Office!) en Active Server Pages (ASP) terecht. Mijn eerste kennismaking met JavaScript was in de browser, ASP werd vervangen door PHP toen ik weblogtools ging gebruiken op basis van die taal. En daarna werd het een opeenvolging van “wat heb ik nodig”. Zo kwam er een beetje Python bij, een heel klein beetje .NET en eveneens een klein beetje Java. Dat was toen. Sindsdien zijn er dingen gewijzigd en gelijk gebleven.

Lees verder….

Deel dit bericht:
mrt 112017
 

Toen ik afgelopen week met de micro:bit en de Circuit Playground (CPG) aan de slag ging, lukte het me niet om via serial een verbinding tussen de CPG in de richting van de micro:bit op te zetten in combinatie met de CPG library. Zónder die library kon ik dataverkeer beide kanten op realiseren, zodra ik de library initialiseerde met CircuitPlayground.begin(); ging er geen verkeer meer de kant op van de micro:bit.

De oplossing bleek te liggen in het gebruik van de hardware serial aansluitingen van de CPG in plaats van software serial waarmee ik aan de slag was. Tot nu had ik alleen met de hardware serial gewerkt als het ging om communicatie via de USB-poort van een Arduino. Dat deed ik dan via bv via Serial.println("Setup complete"); waarbij ik dan in de Serial monitor op mijn computer de output kon zien, ideaal voor het debuggen. Als een Arduino board een hardwarematige seriële aansluiting heeft (soms hebben ze er meer dan 1), dan kun je de andere hardwarematige poorten ook gebruiken. Die heten dan achtereenvolgens Serial1, Serial2 etc.
De hardwarematige poorten werken prima samen met de CircuitPlayground code. Ik heb een nieuwe versie van het script op Bitbucket gezet. In CPG_Serial_Slave.ino staat de versie met de softwarematige seriële poort in CPG_Serial_hardware.ino staat het script beter werkt en dan de hardwarematige seriële poorten gebruikt. De code op de micro:bit is nog steeds dezelfde microbit-Serial-Count-Master_and_Slave.hex die je hier kunt vinden.

De werking is als volgt: nadat beide script op respectievelijk de micro:bit en de CPG geladen zijn wachten de boards op een start teken. Door op de B-knop van de micro:bit te klikken begint het script daar. De micro:bit laat een tekst zien op het display waarin aangegeven wordt dat eerst een 0 (nul) naar de CPG gestuurd wordt. De CPG wacht totdat er data via de seriële lijn binnen komt. Is dat het geval, dan wordt de string die ontvangen is omgezet in een getal. Er worden dan evenveel Neopixels aangezet als het getal hoog is. Dan wordt hetzelfde getal terug gestuurd. Dat lijkt zinloos, maar de micro:bit wacht op het terug ontvangen van een getal voordat hij verder gaat, zo blijven beide processen in sync. De micro:bit laat zien dat hij +1 bij het getal optelt voordat hij het terug stuurt. Dat gaat verder totdat het getal groter is dan 10. Er zijn maar 10 Neopixels, dus reset de micro:bit het getal dan naar 0 en stuurt de 0 door zodat ook op de CPG alle Neopixels uitgeschakeld worden.

Ook dit was een test om het communicatiemechanisme beter te begrijpen. Interessant wordt het als ik nu een telefoon via Bluetooth aan de micro:bit koppel en instellingen draadloos door kan geven, of een WeMos D1 ESP8266 chip (kost zo’n 3 euro) om er voor te zorgen dat de CPG alsnog over een Wifi-verbinding kan communiceren. Dat zou via Firmata moeten kunnen, want ook die kan zowel via USB als via de hardwarematige seriële poort aangestuurd worden. Wordt dus later vervolgd.

Deel dit bericht:
nov 292016
 

Nee, ik ben niet bang dat ik komende kerstperiode teveel Glühwein drink en dan van zottigheid tegen mijn kerstboom ga staan lopen kletsen. Het was echter een vraag die toch wel in me op kwam toen ik bovenstaand filmpje van Adafruit bekeek. Daarin koppelen ze een Alexa en een Echo aan een ESP8266. Het resultaat is dat ze met spraakcommando’s in staat zijn om bv een relais te schakelen of om LED’s aan te laten schakelen.

Vorig jaar heb ik voor het eerst de verlichting van onze kerstboom op afstand bestuurbaar gemaakt (de verlichting dan) met mijn smartphone. Sindsdien zijn er meer apparaten in huis op onze OpenHab server aangesloten, en komende kerstperiode zal dat dus in ieder geval geen uitdaging meer zijn. En je weet, dan is er dus ruimte voor nieuwe uitdagingen.

Om meteen maar even de conclusie te verklappen: nee, het zal dit jaar naar verwachting niet gebeuren.

Heel belangrijke praktische reden: de Alexa en Echo Dot zijn nog niet in Nederland te koop. Los daarvan is een apparaat van bijna 200 dollar ook wel heel erg veel geld om tegen mijn kerstboom te kunnen praten.

Maar als ik Amazon Alexa zeg, dan denk ik natuurlijk ook aan de Google Home. Is dat dan wellicht een alternatief?

Lees verder….

Deel dit bericht:
sep 142016
 


Het woord “Mesh-netwerken” in titel is eigenlijk helemaal fout, het zijn eigenlijk “Mesh networks” in het Engels over “Vermaasde netwerken” in goed Nederlands. Maar bij vermaasde netwerken zijn er nóg minder mensen die een idee hebben waar ik het over heb. Dus ook nu eerst even wat achtergrond: normaal gesproken als wij met onze laptop, iPad, smartphone of ander draadloos of zelfs bekabeld apparaat verbinding maken met het / een netwerk, dan is er een duidelijke rolverdeling. De laptop, iPad etc. is een node die verbinding maakt met een ander apparaat dat als belangrijkste taak heeft om toegang te verlenen tot het netwerk, tot internet, tot een server etc.
Dat kan een Wifi router zijn die het signaal van jouw apparaat ontvangt en dan doorgeeft via het bekabelde netwerk naar een ADSL router of een andere aansluiting met het internet etc.
Kenmerkend daarbij is dat er een infrastructuur beschikbaar is die daar specifiek voor aangelegd is. Maar wat nou als je sensoren hebt die op plekken moeten kunnen functioneren waar je geen vaste netwerkaansluiting hebt of waar nog geen WiFi-netwerk ligt of geen netwerk waar jij toegang toe hebt? In het bos of gewoon in een stad zelfs?

Dan kun je kiezen voor een netwerktechnologie die een heel groot bereik heeft, zoals bij een LoraWAN of je kunt betalen om toegang te krijgen tot een WiFi-netwerk van een ander of een mobiel netwerk (via GPRS of 3G/4G).
Maar wat nou als het helemaal niet zo noodzakelijk is dat je verbinding maakt met de buitenwereld. Wat als je eigenlijk vooral wilt kunnen communiceren met andere nodes die bij jou in de buurt zijn? Bijvoorbeeld met andere robots (zoals in dit voorbeeld), of wellicht straks zelfs andere zelfsturende auto’s.

Dan is een mesh-netwerk een oplossing. Daarbij is elke node gelijkwaardig aan elkaar en is er geen specifieke infrastructuur voor de onderlinge communicatie nodig. Vroeger, toen al die netwerken via kabels moesten worden aangelegd, was dat moeilijk schaalbaar (alles met alles verbinden via kabels wordt al snel een warboel), maar tegenwoordig met draadloze netwerken (via WiFi, Bluetooth of wellicht straks via Lora) is dat veel eenvoudiger.

De demo hierboven is leuk, het laat goed een sterke eigenschap zien: valt een node uit, dan werken de anderen gewoon verder, komt er eentje bij, dan wordt hij automatisch in het Mesh-netwerk opgenomen. Maar het gaat hier wel om een heel naïef netwerk waarbij elke node automatisch ook de informatie van de andere nodes vertrouwd. En dat zal niet altijd het geval zijn. Ook moeten de pakketten data die rondgestuurd worden niet té groot worden anders is elke node voornamelijk bezig met het afhandelen van de data van de andere nodes.

De code voor bovenstaand voorbeeld is hier op Github te vinden.

Deel dit bericht:
sep 112016
 

micropythonHet was hier weer even een paar dagen stil. En ook nu nog geen kant en klare “zo moet je nadoen wat ik gedaan heb” blogpost, meer een “dit heb ik zover voor elkaar”.
Het logo hiernaast is van MicroPython, zie het maar als het kleinere broertje of zusje van Python. Waarom kleiner (“micro”)? Kleiner, omdat het daarom mogelijk geworden is om Python zo goed als volledig/volwaardig te draaien op devices waarvan dat voorheen niet mogelijk was. Een voorbeeld daarvan is de micro:bit, maar die zal voorlopig nog erg zeldzaam zijn in Nederland. Met dank aan een succesvolle Kickstarter die onlangs plaats gevonden heeft, is er nu ook een versie voor de ESP8266. En daar heb ik er wel een paar van in huis. Daarnaast zal ook de LoPy, die als het goed is eind deze maand verstuurd wordt, direct ondersteuning hebben voor MicroPython. Tijd dus om er alvast eens in te duiken.

Je kunt best veel lezen over MicroPython, maar ik kan je zeker de videoserie aanraden die Tony DiCola op het moment maakt voor Adafruit. Ze zijn wat langer, soms 45 minuten of iets langer, Maar Tony gaat heel uitgebreid en geduldig op de verschillende aspecten van MicroPython in. De video’s worden als livestream gemaakt, maar daarna toegevoegd aan hun eigen pagina met veel tekstuele toelichting, code-snippets en verwijzingen. Je kunt die op de Adafruit Learn website vinden.

Voor wat betreft “lezen” is deze eerste pagina sowieso een heel goede om te beginnen. Daar kun je o.a. verwijzingen vinden naar:

Lees verder….

Deel dit bericht:
jul 252016
 
overzicht_bron_tessel_io

bron: https://tessel.io/docs/communicationProtocols

Drieletterwoorden hebben normaal gesproken niet veel toelichting nodig. Afkortingen van 3 (of 4) letters vaak wel. Daarom in dit bericht aandacht voor 4 afkortingen die te maken hebben met de communicatie tussen apparaten zoals een Raspberry Pi, een Arduino, de ESP8266, de BBC micro:bit met randapparatuur of sensoren.

Ik moet bekennen dat ik ze vaak gebruikt heb zonder te weten welk van de vier om welke redenen zou moeten kiezen. Meestal was het een kwestie van “wat wordt ondersteund?” en dan koos ik de eerste waarvoor ik code kon vinden.

Op tessel.io staat duidelijke uitleg voor hun eigen hardware. Ik ga de begrippen, verschillen en overeenkomsten generieker en in het Nederlands beschrijven.

Lees verder….

Deel dit bericht:

Getest: Dot Matrix Module

 Gepubliceerd door om 06:00  Arduino, ESP8266, Hardware, noads
jun 202016
 

dot-matrix-moduleAfgelopen weekend heb ik de tijd genomen om uitgebreid aan de slag te gaan met een product waarvan ik vooraf alleen wist dat het een “Dot Matrix Module” heet. Je ziet hiernaast een afbeelding van de module. Op basis van die naam en de afbeelding ben ik daarom op zoek gegaan. Zo kwam ik er al snel achter dat de module gebruik maakt van een MAX7219 van Maxim. En dan niet één, maar vier die aan elkaar gekoppeld zijn. De module heeft echter maar één aansluiting bestaande uit vijf pinnen waarmee je dus alle vier de modules tegelijkertijd aan kunt sturen.

Arduino en ESP8266Je kunt de module in principe rechtstreeks aansluiten op een Arduino of vergelijkbare kloon. Omdat ik ook met een ESP8266 en een WeMos d1 mini (ook op basis van een ESP8266) aan de slag wilde (zie de foto’s hiernaast), was een aparte 5V voeding noodzakelijk. Dat doe ik op basis van een oude USB-kabel waar de stekker aan een kant afgeknipt is met in plaats daarvan aan de zwarte en rode kabel een dupont stekker die ik in een breadboard kan prikken. Wel belangrijk is om dan de ground van die externe voeding ook aan de Arduino of ESP8266 aan te sluiten!

Om meteen even bij het eindresultaat te beginnen, het filmpje hieronder laat een aantal opties zien:

Mocht je vinden dat de matrix niet erg fel is, dat is een combinatie van de hoeveelheid daglicht, de gebruikte camera én het feit dat ik de instellingen meestal redelijk laag heb staan omdat ik anders gek werd van het felle licht. In de demo zit een stukje waarbij verschillende lichtsterktes getoond worden, daar kun je zien dat hij tamelijk fel gezet kan worden.

Je ziet een stand-alone Arduino Uno, dus zonder netwerkverbinding die een van de standaard bij een library bijgeleverde demo van mogelijkheden doorloopt. Daarna zie je de ESP8266 eerst stand-alone, zonder gebruik van het netwerk en daarna de WeMos d1 mét gebruik van het netwerk. In dat geval gebruik de WeMos een wifi-verbinding om via een NTP-server de actuele datum en tijd op  te vragen en laat die dan op het scherm zien. Zoals je op het einde kunt zien, kan de WeMos ook gewoon via de pinnen voorzien worden van 5V, dus je zou dit geheel in een behuizing kunnen stoppen en dan heb je met één kabel naar een USB-stekker het geheel aan het draaien (is een project voor een ander weekend).

Toch ging het niet allemaal zo eenvoudig als het hierboven nou lijkt. Wil je het zelf ook gaan doen, lees dan even verder.

Lees verder….

Deel dit bericht: