ESP8266 EN ESP32 experimenten

Nadat we de Arduino en Raspberry al serieus hebben uitgetest, is het nu tijd om ook de ESP familie eens aan de tand te voelen. Wat kunnen we daarmee aanvangen? Je leest het hier.

Weerstation gemaakt met ESP32

Ik had mij een tijd geleden heel wat ESP materiaal aangeschaft. Ik voelde ook dat het tijd werd om er eens iets mee te doen. Iedereen in mijn vakwereld had het er wel eens over. Het woord IOT en ESP samen in 1 zin veel genoemd. Tijd dus voor wat experimenten.

Ik ben eerst op zoek gegaan wat er nu zo anders is aan deze familie microcontrollers. Conclusie: zie het als een Arduino, met of zonder een vaste WIFI module aan boord, dan zijn we er al. Uiteraard weer een andere microcontroller met andere snelheden, geheugen en IO, maar tot slot komt er enkel de WIFI functie bij.

Ik heb al eerder een experiment gedaan met de losse ESP8266 die gekoppeld werd met een Arduino UNO. Hiermee kwam ik in IOT land al een heel eind ver. Je kan deze experimenten terug vinden op de documentatie site in het downloadbare document “ARDUINO GEVORDERDEN deel 2“.

Hier probeer ik een LED aan te sturen via een knop op een website en tekst terug te sturen. Zowat de eerste basic oefening gelijk een “hello world”.

De ESP8266 wordt vooraf geprogrammeerd via een speciale 3V3 USB to UART programmer.

Ik ben daarna de ESP nog eens tegen gekomen in een project voor fijnstof metingen. De stad Hasselt heeft namelijk samengewerkt met de Universiteit van Hasselt om fijnstof info te verzamelen. Alle data wordt verzameld op een grote server. Zie zeker eens op deze website van “maak je eigen zelfbouwsensor”.

Fijnstofsensor met ESP

Als je dit project in je eigen klas wil uitvoeren kan je best eens een workshop gaan volgen bij Brightlab in Leuven (educatieve afdeling van IMEC). Via een e-class room kunnen de studenten zelf de fijnstofsensor ontdekken en uittesten. Ik heb mijn studenten ook nog een 3D behuizing laten printen. Zo kunnen we op verschillende plaatsen op school de waardes opslaan of verzamelen en deze data achteraf dan verwerken.

3D geprinte behuizing voor een fijnstofsensor

Na al deze experimenten, voorgesteld door anderen, werd het tijd om de ESP technisch zelf eens uit te pluizen.

Ik heb me vooral laten inspireren door de ESP elektor boeken. Met de nodige aanpassingen (soms zitten er belangrijke fouten in) in de boeken kan je de projecten 1 voor 1 uittesten op jouw ESP. Zo heb ik de nodige basis kennis kunnen opdoen om uiteindelijk dan mijn eigen weerstation te kunnen bouwen en de resultaten zichtbaar te maken op thingsspeak.

Thingsspeak maakt het mogelijk om aan IOT te doen
Zowel een lichtmeting, druk, temperatuur als luchtvochtigheid zijn af te lezen op een OLED schermpje, gestuurd via I2C. De data wordt ook naar de Thingsspeak website gestuurd.
De ganse weerstation opstelling met ESP

Buiten de ESP32 heb ik ook de ESP8266 wifi D1 mini uitgetest. Deze is handig omdat hij kleiner is en handiger in te bouwen in een project. Je hebt dan wel minder IO pinnen maar toch nog voldoende voor een gemiddeld IOT project. Deze blijft programmeerbaar via een USB connectie.

ESP8266 wifi D1 mini

Met dit project kan je bijvoorbeeld een STEM project bouwen rond een klimaat kamer, gestuurd met IOT. Deze inspiratie heb ik opgedaan tijdens een STEM inspiratie dag van de Universiteit Hasselt. Meer info hierover kan je vinden op de ECOTRON website.

IOT gestuurde klimaatkamer

Robotwar project met ESP D1 mini

De ESP D1 mini, die we in het bovenstaande ecotron project hebben gebruikt, gaan we nu inzetten om een robotje aan te sturen via wifi. Doel is om de robot snel te kunnen aansturen zodat hij tegen een andere robot kan botsen. Dit kan leiden tot een leuk project zoals een wedstrijd tussen scholen te organiseren 🙂

Merk op dat de robot maar 500 gram mag wegen in onze categorie!!!

We zijn begonnen met het ontwerpen van een 3D model in Fusion 360. Dit is een gratis 3D tekenpakket voor studenten en leerkrachten. Je kan er heel snel resultaten mee bereiken. Het is een laagdrempelig tekenpakket. Er zijn veel voorbeelden van te vinden op de Fusion 360 website. Een cursus volgen helpt uiteraard ook 🙂

3D geprint chassis met 3D geprinte banden (merk op dat het grijze materiaal PLA is en het oranje print materiaal Polyflex). Uiteindelijk zullen de banden geprint worden met Ninjatek materiaal. Dit printmateriaal is nog zachter en zorgt voor meer grip op de wedstrijdbaan. Het wiel kan je vinden op Thingiverse als voorgemaakte 3D tekening, direct in de STL file. Zoek maar eens op offroad TT motor wheel.

Deze figuur geeft het totale 3D ontwerp aan in Fusion 360. Er zijn o.a. gaten voorzien om de deksel op te lichten, leds en schakelaars te monteren en zelfs een LED display waarop de spanning van de Li-ion batterijen af te lezen valt. Deze mogen niet te diep ontladen, dus dat moet goed in de gaten gehouden worden. Ik heb ook een robot met Lipo batterijen gemaakt (zie verder). Deze batterijen hebben meer capaciteit (kunnen hogere stromen leveren). Dat scheelt als je kort en krachtig moet botsen op een andere robot.

Deze figuur toont hoe de elektronica in elkaar zit. De Li-ion batterijen achterin voeden de motoren die via de motorshield worden aangestuurd. De 9V batterij dient om via een USB kabel het ESP bordje te voeden. Aangesloten op de USB connector moet je er wel een DC DC converter op aansluiten (van 9V naar 5V). Nooit de controller op dezelfde spanning zetten als die van de motoren. Veel info kan je vinden over motorshield gebruik op howtomechatronics.

De motorshield is via een ESP D1 mini gestuurd. De code om het bordje met een GSM via wifi aan te sturen kan je makkelijk aanmaken via de website RemoteXY. Op deze website kies je de nodige instellingen opdat straks de ESP kan communiceren met de GSM via wifi. Je kan ook een code instellen. Daarna teken je enkele knoppen (maximum 5 knoppen gratis) en klik je op “get source code“. Deze code laad je in jouw ESP via de vertrouwde Arduino IDE omgeving.

Stel de properties in RemoteXY correct in!

Bestudeer nu de source code en kijk ook eens naar een voorbeeld van de RemoteXY website. Dan kan je makkelijk achterhalen hoe ze te werk gaan in de Arduino code. Elke knop heeft een naam die jezelf kan aanpassen (vb button_1). In de Arduino code verschijnt deze als RemoteXY.button_1 . Deze kan je nu afvragen in de code. Als deze bijvoorbeeld ingedrukt wordt op de GSM wordt er een “1” doorgestuurd naar deze variabele. Via een if then else kan je deze makkelijk onderscheppen en kan je bijvoorbeeld een LED aansturen. Ook analoge waardes worden verstuurd bij de sliders. Via een map functie van Arduino kan je de waardes op schaal aanpassen en zo jouw PWM pulsen regelen voor de motoren. Merk op dat de code van RemoteXY ook al de code bevat over hoe het GSM scherm er zal uitzien. Deze code dus niet zomaar aanpassen of verwijderen. Enkel in de loop werken.

De bovenstaande robot is i.p.v. een scheprobot eerder een stormrobot. Alles elektronica is goed beschermd. De robot werkt op een Lipo van 1000mAh. Er zitten 2 Lipo’s in serie in van 3.7V. Samen goed voor 7.4V waarmee dan de motoren rechtstreeks aangestuurd kunnen worden. De aansturing is in dit geval met een Arduino Micro. Ook hier gebruiken we een 9V batterij voor de voeding van de controller. Er zit weer een DC DC converter in de robot om de spanning om te zetten van 9V naar 5V. We hebben nu een PS2 controller gebruikt om de draadloze communicatie te doen. Deze controller ligt handig in de hand en je kan elke stuurknuppel makkelijk aansturen.

Je kan veel info vinden over de PS2 controller , gestuurd met Arduino.

Laad steeds gecontroleerd, door een speciaal daarvoor aangekochte lader, de Lipo’s op! Er moet een BMS (battery management system) aan boord zijn! Ik heb een goede lader bij Conrad van Voltcraft gevonden.

Deze robots gaan ingezet worden in een robotwar wedstrijd. Het leuke is dat de STEM studenten zich creatief kunnen inzetten om een robot te ontwerpen, om daarna de strijd aan te gaan met andere leerlingen. Ik heb voor deze wedstrijd een trofee ontworpen in de vorm van een robotje 🙂

Moge de beste winnen 🙂