Een uitgebreid artikel over de Wemos staat op de pagina: diyi0t.com: ESP8266 WeMos D1 Mini Tutorial
The ESP8266 WeMos D1 Mini is one of my favorite IoT microcontroller when I need a microcontroller for a battery powered project, because the ESP8266 has an integrated WiFi module and an exceptionally low power consumption. Therefore, I want to share my knowledge and experience with the ESP8266 WeMos D1 Mini in this tutorial.
Uitgebreide documentatie:
De nieuwe generatie micro controllers met wifi bestaat in hoofdzaak uit de de ESP8266 en de ESP32 families.
Een goed overzicht van de ESP8266 chips is op de pagina: MakerAdvisor: Best ESP8266 Wi-Fi Development Board – Buying Guide 2020
Een overzicht van de ESP32 familie is: MakerAdvisor: ESP32 Development Boards Review and Comparison
Aanvankelijk was ik begonnen met de Arduino IDE.
Het eerste project was de BME280: temperatuur / luchtdruk / vochtigheid opnemer.
Een probleem bij de Arduino zijn de vele "libraries", de hulp programma's om bij voorbeeld de BME chips aan te sturen.
Zowel Adafruit.com
als Sparkfun.com leveren een uitgebreid assortiment randapparaten voor de Arduino boards.
Deze leveren ook werkende libraries bij de door hun geleverde componenten!
Bij nader inzien ben ik overgestapt op ESP-Easy: geen code ... maar configuratie!
Het eerste project: ESP-1, de Wemos met BME280 sensor en LCD-display
Alternatief: Starting Electronics.org: Arduino Programming Course ... 19 hoofdstukken!
Een voorbeeld van het aansluiten van de Wemos staat op de site: ProtoBoard.nl: Installatie van de Wemos D1 Mini
Opmerking: het is van belang om weten welke pinnen gebruikt worden voor input of output.
Een gedetailleerd overzicht staat op de website:
RandomnerdTutorials: ESP8266 Pinout Reference: Which GPIO pins should you use?
Bepaalde I/O pins worden bijvoorbeeld voor de seriële I2C of SPI gebruikt.
In bovenstaande voorbeelden is de Wemos direct verbonden met de Raspberry.
In de meeste gevallen zijn sensoren vaak op afstand van het ontwikkel systeem.
In dat geval is het nodig om de Wemos via wifi met het huis netwerk te verbinden... zie het netwerk hoofdstuk!
Tot nu toe gebruikte ik de nu "Legacy IDE" op de Raspberry Pi en de Asus Chromebook zie de introductie:
blog.arduino.com: Arduino 1.8.13 has been released [Arduino Team — June 17th, 2020]
fritsvleeuwen@penguin:~$ cd Downloads/ fritsvleeuwen@penguin:~/Downloads$ lt total 126096 ... -rw-r--r-- 1 fritsvleeuwen fritsvleeuwen 128225404 Aug 30 10:14 arduino-1.8.13-linux64.tar.xz
$ sudo tar xvJf arduino-1.8.9-linux64.tar.xz -C /optUitgevoerd:
fritsvleeuwen@penguin:~/Downloads$ sudo tar xvJf arduino-1.8.13-linux64.tar.xz -C /opt arduino-1.8.13/ arduino-1.8.13/arduino-linux-setup.sh arduino-1.8.13/lib/ arduino-1.8.13/lib/version.txt arduino-1.8.13/lib/commons-io-2.6.jar arduino-1.8.13/lib/public.gpg.key arduino-1.8.13/lib/arduino-core.jar ... arduino-1.8.13/tools/WiFi101/tool/firmwares/NINA/1.2.1/NINA_W102.bin arduino-1.8.13/tools/WiFi101/tool/firmwares/NINA/1.2.1/NINA_W102-Uno_WiFi_Rev2.bin arduino-1.8.13/tools/howto.txt fritsvleeuwen@penguin:~/Downloads$ ls -lh /opt total 0 drwxr-xr-x 1 fritsvleeuwen fritsvleeuwen 276 Jun 16 11:44 arduino-1.8.13 drwxr-xr-x 1 root root 30 May 4 16:46 googleResultaat voorbeeld:
$ sudo usermod -aG dialout $(whoami) $ sudo usermod -aG tty $(whoami) $ sudo usermod -aG uucp $(whoami) $ sudo usermod -aG plugdev $(whoami) $ sudo rebootUitgevoerd:
fritsvleeuwen@penguin:~/Downloads$ sudo usermod -aG dialout $(whoami) fritsvleeuwen@penguin:~/Downloads$ sudo usermod -aG tty $(whoami) fritsvleeuwen@penguin:~/Downloads$ sudo usermod -aG uucp $(whoami) fritsvleeuwen@penguin:~/Downloads$ sudo usermod -aG plugdev $(whoami) fritsvleeuwen@penguin:~/Downloads$ sudo rebootResultaat voorbeeld:
$ sudo -E /opt/arduino-1.8.9/install.shUitgevoerd:
fritsvleeuwen@penguin:~/Downloads$ sudo -E /opt/arduino-1.8.13/install.sh Adding desktop shortcut, menu item and file associations for Arduino IDE... done!
fritsvleeuwen@penguin:~$ arduino Picked up JAVA_TOOL_OPTIONS: Set log4j store directory /home/fritsvleeuwen/.arduino15
Hier na start de Arduino IDE grafische desktop.
Een relevante YouTube video is Makers Mad Lab: Wemos D1 Mini, ESP8266 Getting Started Guide With Arduino
This video will take you through the basic set up of the WEMOS D1 ESP8266 Board and the Arduino IDE.
Step 3: Configure the Arduino IDE for D1 Mini boards
toegevoegd: "Aditional Board Manager URLs"
https://arduino.esp8266.com/stable/package_esp8266com_index.json
Step 4: Select your board
Select Tools > Board: *
Select your board (I selected LOLIN(WEMOS) D1 R2 & Mini)
Arduino IDE Setup:
Tools -> Board -> wemos -> install
info -> Github.com: esp8266/Arduino
Boards manager URL link: https://arduino.esp8266.com/stable/package_esp8266com_index.json
Voorbeeld: Arduino IDE configuratie
Step 5: Run the example Blink sketch
Select File > Examples > 01. Basics > Blink
The code should look something like this: ... volgende hoofdstuk!
Ook is de software voor de USB in ChromeOS aangepast, waardoor nu de Arduino IDE verbinding kan maken met een Wemos D1 mini board.
Tot voor kort gebruikte ik hier voor de Raspberry Pi
Melding:
Een eerste test met de Arduino IDE is het "blink" programma, waarbij de standaard ingebouwde led gaat knipperen.De Chromebook komt met de melding:
Arduino starten op de command prompt:
fritsvleeuwen@penguin:~$ arduino Picked up JAVA_TOOL_OPTIONS: Set log4j store directory /home/fritsvleeuwen/.arduino15
Opmerking: Op de Wemos mini is nog een BME280 sensor aangesloten, zie ook: IoT: hardware
Details staan op de site:
Arduino Tutorial: Blink Turn an LED on and off every second.
This example shows the simplest thing you can do with an Arduino to see physical output: it blinks the on-board LED.
Broncode: laat de Wemos on-board led knipperen
// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Opstarten Arduino op de command prompt:
fritsvleeuwen@penguin:~$ arduino Picked up JAVA_TOOL_OPTIONS: Set log4j store directory /home/fritsvleeuwen/.arduino15
Voorbeeld: Arduino IDE grafische desktop, met op de onderste regel de Wemos chip details.
Resultaat van uitvoeren blink programma:
IRAM : 26752 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...) DATA : 1248 ) - initialized variables (global, static) in RAM/HEAP RODATA : 688 ) / 81920 - constants (global, static) in RAM/HEAP BSS : 24880 ) - zeroed variables (global, static) in RAM/HEAP /home/fritsvleeuwen/.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-4-b40a506/bin/xtensa-lx106-elf-size -A /tmp/arduino_build_791575/Blink.ino.elf Sketch uses 257312 bytes (24%) of program storage space. Maximum is 1044464 bytes. Global variables use 26816 bytes (32%) of dynamic memory, leaving 55104 bytes for local variables. Maximum is 81920 bytes. /home/fritsvleeuwen/.arduino15/packages/esp8266/tools/python3/3.7.2-post1/python3 /home/fritsvleeuwen/.arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/upload.py --chip esp8266 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash 0x0 /tmp/arduino_build_791575/Blink.ino.bin esptool.py v2.8 Serial port /dev/ttyUSB0 Connecting.... Chip is ESP8266EX Features: WiFi Crystal is 26MHz MAC: 50:02:91:fd:ae:88 Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 4MB Compressed 261472 bytes to 193129... Wrote 261472 bytes (193129 compressed) at 0x00000000 in 17.2 seconds (effective 121.7 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...
Het resultaat is, dat de on-board led knippert!
#include <ESP8266WiFi.h> // Network SSID const char* ssid = "YOUR-SSID-HERE"; const char* password = "YOUR-PASSWORD-HERE"; void setup() { // Connect WiFi WiFi.hostname("Name"); WiFi.begin(ssid, password); } void loop() { //Add project code here }
Een leermomentje, wat kan er fout gaan!
Bij de installatie van Arduino gebruikte ik vanzelfsprekend de nieuwste versie...
Helaas, werkte het niet, met Google vond ik:
Veel van de voorbeelden op internet zullen waarschijnlijk de oude versie gebruiken!
Dus de versie 2.5.0 gebruiken!