creativecommons

Introductie Wemos D1 mini

Features van de Wemos D1:

smily smiley Een uitgebreid artikel over de Wemos staat op de pagina:  diyi0t.com: ESP8266 WeMos D1 Mini Tutorial

diyi0t

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:

Op de Wemos site staan ook: Tutorials: get started... MicroPython en Arduino

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!

smily

Het eerste project: ESP-1, de Wemos met BME280 sensor en LCD-display

Alternatief: Starting Electronics.org: Arduino Programming Course ... 19 hoofdstukken!

Hardware

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.

Afbeelding van de Wemos D1 Mini V2 (versie 2!):

Wemos

De Wemos wordt met een USB kabel verbonden met de Raspberry Pi 4, voor de ontwikkeling van de software.
Vrijwel alle arduino boards hebben een led. Een van de eeste oefen projecten is om deze led te laten knipperen.
Deze led is is bij de Wemos aangesloten op GPIO pin 2.
naar: WayBackMachine
Zie voorbeelden ... met dank aan de archive.org: Wayback Machine!

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!

Arduino

smily In augustus 2024 ontdekte ik, dat de eerste versie van ESP-NOW werd aangekondigd in 2022, zie:
github.com/espressif: ESP-NOW Release v1.0 [Mar 14, 2022]

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]

Het is tijd om om te schakelen naar een nieuwe Arduino 2.x versie voor de ESP-NOW support!

Stappen "Legacy IDE": Aanbevolen introductie:
github.com: Getting Started D1 Mini (ESP8266)


Download

Zie voor download: Docs.Arduino: IDE 1 Installation (Linux)
Resultaat:
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
top


Installatie

Zie voor installatie: Linuxhint.com: Installing Arduino IDE on Debian 10
Resultaat voorbeeld:
$ sudo tar xvJf arduino-1.8.9-linux64.tar.xz -C /opt
Uitgevoerd:
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 google
Resultaat voorbeeld:
$ sudo usermod -aG dialout $(whoami)
$ sudo usermod -aG tty $(whoami)
$ sudo usermod -aG uucp $(whoami)
$ sudo usermod -aG plugdev $(whoami)
$ sudo reboot
Uitgevoerd:
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 reboot
Resultaat voorbeeld:
$ sudo -E /opt/arduino-1.8.9/install.sh
Uitgevoerd:
fritsvleeuwen@penguin:~/Downloads$ sudo -E /opt/arduino-1.8.13/install.sh
Adding desktop shortcut, menu item and file associations for Arduino IDE...

 done!
top


Opstarten

Resultaat:
fritsvleeuwen@penguin:~$ arduino
Picked up JAVA_TOOL_OPTIONS: 
Set log4j store directory /home/fritsvleeuwen/.arduino15

Hier na start de Arduino IDE grafische desktop.

top


Configuratie

YouTube

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.

Zie voor configuratie: Desertbot.io: HOW TO BLINK A D1 MINI ONBOARD LED
De tekst is voor een setup op een MAC, de eerste stappen worden overgeslagen!

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

Blink

Step 5: Run the example Blink sketch
Select File > Examples > 01. Basics > Blink
The code should look something like this: ... volgende hoofdstuk!

top


Asus-Chromebook

Opmerking: met de nieuwe versie 91 van het ChromeOS [mei/juni 2021] is de Linux (Debian) officieel, en geen "bèta" (test) versie meer!

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

CB Voor het opstarten van de Asus was de Wemos mini aangesloten.
De Chromebook detecteert een nieuw apparaat.

Melding:

USB

Een eerste test met de Arduino IDE is het "blink" programma, waarbij de standaard ingebouwde led gaat knipperen.
Om het programma te up-loaden naar de Wemos wordt de USB kabel gebruikt.

De Chromebook komt met de melding:

serial-port

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

Blink: programma om ingebouwde led van de WEMOS aan te sturen

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.

Blink

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!

Netwerk

Door het gebruik van "libraries" is de setup van een wifi netwerk eenvoudig!
Voorbeeld, zie website: averagemaker.com: How To Set Up WiFi On A Wemos
Here’s the code you add to your sketch to enable WiFi in this very basic fashion.
You need to update lines 4 and 5 with your SSID (WiFi name) and password.
De libraries worden geladen met de statement:   #include <ESP8266WiFi.h>  
#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  

  }

Epiloog

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:

github.com: esptool 2.6 binaries errors
...
Hello, I can't have a working ESP device since esp2.6 (provided by ESP on arduino IDE by community package 2.5.1 and later  ...
ESP8266 Arduino project switched from esptool-ck flasher tool in 2.5.0 to using esptool.py in release 2.5.1
So 2.5.0 is using a totally different tool, different command line arguments, etc.

Veel van de voorbeelden op internet zullen waarschijnlijk de oude versie gebruiken!

Dus de versie 2.5.0 gebruiken!

esp8266

W3Ccss valid-html401

top