ArduinoOp deze paginaDeze pagina gaat over de makkelijke Arduino Nano (8-bits Atmel) 'bouwsteentjes' waarmee je snel simpele besturingen in elkaar kunt setten, en vergelijkbare bordjes als de Wemos D1 mini: een Arduino-compatibel WiFi bordje met de ESP8266, een 32-bits processor. Project-pagina's met complete projecten:
Arduino NanoDe Arduino Nano is een klein bordje met de Atmel ATmega328, gemaakt door Arduino. Heeft meer mogelijkheden en gebruiksgemak dan de ATtiny die ik veel heb gebruikt, en omdat het een kant-en-klare module is zit ik niet met een chip die lastig te solderen is... Bovendien, heeft een USB-aansluiting waardoor er geen aparte programmer nodig is, zoals bij mijn ATtiny, en past mooi op experimenteerbordjes. Bedankt, Arduino! Kleiner dan de gebruikelijke Arduino's als de Uno, en je kan geen 'shields' gebruiken, maar dat had ik voor mijn doel niet nodig. Iets minder low power dan de low-power ATtiny oplossing (door de voeding-LED en zo), maar gebruikt nog steeds minder dan 10 mA bij 5 Volt. Je kan de Nano in C/C++ programmeren, maar je kan beter met behulp van de Arduino IDE zogeheten 'sketches' maken (in een dialect van C++), omdat je dan gebruik kan maken van veel kant-en-klare bibliotheken als voor I2C, LCD's, en zo voort. Zie hieronder bij configuratie wat tips over instellingen. Met behulp van de 'Arduino getting started' gids: bij het doorlopen van de stappen en het uploaden van de Blink sketch (een van de meegeleverde voorbeelden) werkte het in een keer goed: de LED knippert! ATmega328De processor op de Nano is iets zwaarder dan de ATtiny die ik veel gebruikte:
Waarom een ouderwetse 8-bitter, en niet een simpele ARM M0 32-bit als de LPC8xx? Ik wilde snel iets kunnen maken, en dan zijn de grote gebruikersgroep, de eenvoudig gehouden IDE en de beschikbare voorbeelden/libraries van de Arduino-omgeving een voordeel, al is de processor zelf dan niet meer het modernste... Onderstaand LCD/sensor-voorbeeld had ik in een uurtje in elkaar, zonder van te voren de ontwikkelomgeving te kennen. Ondertussen zijn er ook 32-bit processoren met Arduino-support, zie verderop de ESP8266-bordjes. Nano PinoutLet op, de 5V en de 3V3 (3.3 Volt) zijn uitgangen; voeden via de VIN of via USB! ESP8266 WiFi bordjesDe ESP8266 chip van Expressif (en de recentere ESP32) is erg populair op het moment, en hoewel de bordjes met deze chips niet van Arduino komt, is het wel compatibel met de ontwikkelomgeving (Arduino ontwikkelomgeving versie 1.8 of hoger). Je moet wel het juiste 'board support package' geladen hebben: zie de meest recente versie op de ESP8266 Github. Veel bordjes mee verkrijgbaar, met typisch: Blij met Arduino? Doe eens een gift (downloadpage).
Er is overigens al een nieuwere versie uit (waar ik zelf nog geen ervaring mee heb): de ESP32. Deze heeft onder andere ook Bluetooth. WEMOS D1 miniWemos op breadboard, met LED en schakelaar. Links de USB aansluiting/voeding. December 2017: vanavond de Wemos D1 mini binnengekregen, gelijk maar eens proberen. Al met al een leuk bordje voor projecten die wat meer eisen dan een 8-bits Nano. Zie de pin-out hieronder, en/of het schema van de WeMos mini (oude versie). On-board antenne, dus niet vreselijk gevoelig (maar ook niet slecht). De WEMOS D1 mini kan je dus met de Arduino ontwikkelomgeving gebruiken.
Er wordt gezegd dat je ook de driver voor de seriële poort moet
installeren (niet de standaard FTDI, maar die voor de CH340G chip), maar
onder Linux/Ubuntu 16.04 werd de driver automatisch herkend bij het aan de
USB hangen van de D1 mini (bij mij als poort Hier goede documentatie
van
de ESP8266WiFi library, niet alleen van de WiFi maar ook van de
pinout, het Flash file systeem, de I2C/SPI etc.
Volgende stap is natuurlijk WiFi testen... Heb ik gedaan met de code van de ESP8266 tutorial op diyhacking (alleen hoofdstuk "Uploading the ESP8266 Code", en de LED zit al op het bordje). Hiermee wordt op de Wemos een simpele webserver gezet, zodat je via een webpagina op je PC of telefoon de LED op de Wimos aan en uit kunt zetten. Na het invullen in de code van de naam en wachtwoord van mijn Wifi, de zaak compileren, en uploaden: op de seriële monitor van de Arduino omgeving (Tools --> Serial Monitor, snelheid op 115200 zetten) was te zien dat de Wimos netjes een IP adres had gekregen. Helaas, vanaf de browser kon ik dat adres niet benaderen... Maar, na een reset van de Wimos en het nog eens proberen, werkte het wel. Kreeg een simpele webpagina te zien, met daarop twee links, een om de LED aan te doen, en een om hem weer uit te doen. Perfect, goed besteed uurtje. Een foutje: 'LED aan' zette hem uit, en omgedraaid. Vermoedelijk omdat de source bedoeld was voor een ander bordje (ESP-01), waarbij de LED anders is aangesloten dan op de mini. Ach, het werkt, genoeg voor vandaag. Tevreden. Wemos D1 mini V3 pinoutLet op, pin out is net weer wat verschillend vergeleken met sommige andere ESP8266 bordjes...
Serial WiFi met ESP-07Nog een bordje met de ESP8266: de 'Serial WiFi v1.0', een printje met de Ai-Thinker ESP-07 module: met mogelijkheid om een aparte WiFi-antenne op aan te sluiten. Bedoeld om een normale Arduino van WiFi te voorzien (als een soort modem), maar kan dus ook zelfstandig gebruikt worden als een ESP8266 bordje. Probleem is alleen dat er geen headers of zo op zitten, alleen maar twee pinnen voor senden/ontvangen (Tx/Rx) naar een Arduino. Als je het (als een Wemos) zelfstandig wilt gebruiken kan je het niet makkelijk op een breadboard aansluiten maar je moet direct aan de kleine soldeer-eilandjes van de ESP-07 solderen. Dat is voor mij geen probleem. Aan de andere kant, kan wel vanuit 5 Volt gevoed worden, en heeft verder aardig dezelfde mogelijkheden als de Wemos, is alleen goedkoper, en heeft dus de mogelijkheid tot 'echte' WiFi-antenne. Mooi voor als je iets eerst op de Wemos wilt ontwikkelen, en dan in wilt bouwen met dit printje. ConfiguratieIk werk met Ubuntu/Linux en heb de Linux
64-bit
IDE van de Arduino site gehaald. Daarna installeren en als test de
eerste sketch draaien: het laten knipperen van de LED, zie de 'Arduino
getting started' gids voor Linux. Kies voor het bord uiteraard de 'Arduino
Nano' (met de 'ATmega328' processor, in mijn geval de versie
met de oude bootloader). Voor de poort moest ik in mijn geval kiezen voor
Processor-selectiesDe processor-instellingen onder Tools (mijn defaults):
Seriële poort en udev rulesVoor de poort moest ik in mijn geval kiezen voor Aan de hand van die uitleg: mijn Arduino Nano maar eens ingeprikt, en met
dmesg en udevadm gekeken als welk device deze zichtbaar
werd: dmesg ; # en kijk welk device er net
bijgekomen is: ttyUSB0 Minicom commando'sDe basis-commando's: Met deze rule kan je met minicom ook makkelijk de seriële output van de Arduino opvangen. PS: dit werkt allemaal zowel op mijn laptop onder Ubuntu als op de Raspberry. minicom -b 115200 -o -c on -D /dev/ttyArduino ProjectenNano: De eerste software
Februari 2016: Een van de projecten die ik nog wil doen is een thermostaat om 'Sous-Vide' te kunnen koken. Een ATtiny is voldoende, maar op de Nano kan ik sneller een prototype maken. Wat wil ik aansluiten: een LCD display, een temperatuursensor, en een 220V optisch gekoppeld Solid State Relais. En dan een software PID-regelaar voor een mooie constante temperatuur. Eerst het aansluiten van een 16x2 LCD'tje, wat ik uit eerdere experimenten nog had liggen. Ook hier is er een kant-en-klaar software voorbeeld in de Arduino ontwikkelomgeving dat ook nog eens compatibel is met mijn display: 'Hello World' (kijk bij File -> Examples -> LiquidDisplay -> HelloWorld). Alleen, hoe sluit je de pinnen aan? Daarbij heeft het bovenstaand Nano Pinout-diagram geholpen. De pinnummers zoals in de sketches worden gebruikt zijn daar de paarse nummers (staan ook op de print). Ook op LiquidCrystal Library staat uitleg. Van het display had ik documentatie, en dan is het een kwestie van 9 draadjes stuk voor stuk zorgvuldig aansluiten. Volgende stap: de I²C temperatuursensor... Ik heb al eerder op de
Raspberry de LM75BD
temperatuursensor van NXP gebruikt, beviel prima. Op Tutorial:
Arduino and the I2C bus staat heel wat over hoe op de Arduino met de
Na dit eerste spelen is het in februari 2018 (en na andere projecten zoals onderstaande oven-sturing) eindelijk tot een werkend project gekomen, zie mijn Sous-Vide kookapparaat. En zo ziet de ingebouwde oven-controller er uit (teruggeplaatst in mijn oude kastje). Display: "E=10", energieniveau 10 van de 16. Nano: Keramiek-ovenVanwege de grootte van dit projectje is het naar een aparte pagina verhuisd. Zie mijn Arduino Nano Oven-controller pagina (en het plaatje rechts) voor het resultaat. Wemos en MQTTUiteindelijk is het de bedoeling dit in te zetten voor domotica/home automation. Daarvoor wil ik de LED aan en uit kunnen zetten via de mosquitto MQTT broker op mijn Raspberry. Gelukkig is ook hier een goede Arduino library beschikbaar, PubSubClient. Hiermee kon ik vrij snel een twee-richtingen link maken tussen de blauwe LED op de Wemos en de MQTT Dash op mijn tablet, en kan ik de LED nu via een icoontje op de Dash aan en uit schakelen. De LED schakelen gaat ook met een schakelaar aan de Wemos, waarbij dit weer aan de MQTT server doorgegeven wordt, en de status op mijn tablet wordt bijgewerkt. Totaal nog geen 200 regels source; inclusief commentaar en zo. Weer een stap verder! De eerste tests kunnen gewoon met alleen de Wemos aan een USB-kabeltje. Wil je wat meer testen dan is een simpel breadboard handig. Het plaatje verder naar boven toont de 'proefopstelling' waarbij ik naast de schakelaar ook nog een extra rode LED heb aangesloten op D5/GPIO14. Met de PWM-functie kan ik deze via MQTT/internet dimmen. Wel nog een klein puntje: bij de ESP8266 wordt timer1 al gebruikt door de WiFi stack... Dus niet de Arduino TimerOne library gebruiken. Ik gebruik zelf nu de Ticker library van ESP8266, was voor deze toepassing ook voldoende. Sonoff lichtschakelaarAndroid MQTT Dash, met de kerstboom op de Sonoff1 module De tijdschakelklok voor de kerstboom was kapot, wat nu? De Sonoff is een goedkope kant-en-klare module om via Wifi 230V te schakelen. Kost vanuit China rond €5 voor een blokje met schroefaansluitingen, en €8..10 voor de S20 stekker-versie rechts. Intern ook met de ESP8266 (of eigenlijk de ESP8285 met 1 MB Flash), en dus herprogrammeerbaar met de Arduino-omgeving. De standaard geleverde software kan natuurlijk ook, maar die werkt voor zover ik weet alleen met een externe IoT server, en dat heb ik liever in eigen hand: via een mosquitto MQTT server op mijn Raspberry. Had natuurlijk ook voor ESPeasy kunnen gaan (Youtube), maar gezien mijn ervaring met de Wemos leek het me leuker het zelf te doen. Hoe moeilijk kan het zijn ;-) ... Zie mijn SonoffMQTT code op Github. De applicatie die ik al had op de Wemos kon ik vrij snel overzetten, moest alleen de GPIO-nummers aanpassen: het relais zit op GPIO12, de led op GPIO13, en de drukschakelaar op GPIO0. Voor het 'flashen' van de software moet je wel eerst een 5-pins header op de Sonoff solderen (4-polig voor de S20 zoals rechts aangegeven; pas op: de S26 heeft geen makkelijke mogelijkheid voor een header). Dan via een USB-to-serial kabeltje en aanpassing van 5 Volt naar de benodigde 3.3 Volt aansluiten op je computer. De Arduino-omgeving kan vervolgens naar de Flash op de Sonoff uploaden: wel bij aanzetten het knopje ingedrukt houden on in programming mode op te starten (Arduino setting: 'Generic ESP8285 module', geheugen 1 MB Flash met 64 KB SPIFFS, 26 MHz Xtal/80MHz CPU, USBasp programmer). Loskoppelen, Sonoff kastje er weer om heen (gesoldeerde header kan blijven zitten!), en aansluiten op lichtnet/lamp. Nu heb ik een WiFi-bestuurbare schakelaar! FDTI USB-to-serieel; 5 Volt naar 3.3 Volt niveau's, en dan de binnenkant van de Sonoff (schroef-versie) met de daarop gesoldeerde 5-pin header: programmeren! Via bijvoorbeeld MQTT Dash op mijn telefoon en tablet, en een Python-scriptje op de Raspberry, kan ik nu de tijden voor de kerstboomverlichting instellen; zie de interface links (Sonoff1). Kan de kerstboom ook handmatig schakelen door op het lamp-symbool te klikken. Je ziet ook aan het symbool of de verlichting aan of uit staat, wordt via MQTT allemaal real-time aan elkaar gelinkt. En ook het drukknopje op de Sonoff werkt nog als aan/uit schakelaar, en geeft ook real-time de status weer door naar MQTT. IoT EnergieverklikkerOm je bewust te worden van je energiegebruik is het handig gelijk 'feedback' (terugkoppeling) te krijgen: je ziet wat je gebruikt. Ik heb daarom een 'IoT'-lampje gemaakt dat op ieder moment door de kleur weergeeft wat je energiegebruik op dat moment is. Gebruik je veel energie, dan wordt het rood, leveren je zonnepanelen veel op dan wordt'ie blauw-groen, en een heel kleurenpalet daar tussenin. Zie de plaatjes en beschrijving op de Energieverklikker-pagina. Skype4Business Mute knopDigiSpark USB module Ik gebruik op het werk nogal eens Skype for Business, en dan wil ik tijdens een gesprek makkelijk de microfoon aan en uit kunnen zetten (mute). Dit kan via de muis, of met Win-F4. Maar, ik wil gewoon een losse knop met LED, voor op het midden van de vergadertafel. Dat kan met de Digispark: die kan een HID (Human Interface device) nadoen: bijvoorbeeld een keyboard. En kan dus ook een Win-F4 verzenden! En verderLinks naar algemene info
Nuttige libraries etc
ESP8266Wat random links over de ESP8266, integratie in Arduino, en de Wimos D1 mini
|
op mijn site |