creativecommons

Introductie ESP-NOW

De winter 2023/2024 ligt achter ons, het project "PLAN-C" voor de regeling van de radiator-ventilatoren met ESP Easy wordt uitgesteld tot het najaar.
De zomer komt er aan. Het oude ESP-2 project om een extra deurbel signaal in de tuin te horen wordt weer actueel! smiley

In Blog: september 2022 was ik begonnen met het project ESP-2.

De ESP-2 is de tweede "peripheral" met ESP Easy software.
Deze is voorzien van een 5 volt passive piëzoelectric beeper.
Het doel van de beeper is om een signaal af te geven als de voordeurbel gaat.

Helaas vond ik weinig voorbeelden om met Domoticz een rtttl melodie af te spelen op ESP Easy.
Dit project heeft nog wat extra studie nodig!
Een andere optie is om ESP-NOW te gebruiken.

Met het ESP-NOW protocol kunnen twee Wemos mini/esp8266 boards direct met elkaar communiceren.
Deze techniek gebruikt de hardware "mac" adressen voor de onderlinge draadloze wifi verbinding.
Het is niet nodig om het lokale wifi netwerk te gebruiken!

YouTube
Voor een introductie van ESP-NOW:

Een paar jaar geleden was ik met de Arduino IDE begonnen, zie: Wemos: Arduino.
Na korte tijd was ik overgestapt naar ESPEasy.
Voor ESP-NOW moet ik weer in de Arduino duiken!

DFPlayer mini MP3 speler

De DFPlayer Mini is een kleine mp3- modulespeler met een vereenvoudigde output rechtstreeks naar de luidspreker. De module kan worden gebruikt als een stand-alone module met aangesloten batterij, luidspreker en drukknoppen of in combinatie met een Arduino UNO of een andere met RX / TX-mogelijkheden.

Voor de opslag van de MP3 bestanden is een MicroSD card-slot aanwezig.

Afbeelding: DFPlayer mini: afmetingen ca 2 x 2 cm

DFPlayer

Aansluitingen: DFPlayer

DFPlayer

Details:

Specificaties:

Aansluit schema: DFPlayer

mini-configuration

Het eenvoudigste circuit met de DFPlayer is om met een schakelaar naar aarde het eerste MP3 nummer af te spelen van de MicroSD geheugen chip.
Zie: alainsprojects.com: DF Player mini configuration When you make a connection between Gnd and ADKEY_1, the Led on the player should light up.
When you have a speaker connected between SPK_+ and SPK_-, you should also hear the sound file.

Dit voldoet uitstekend in mijn geval!

Een uitgebreid circuit met de Wemos kan ook als een echte MP3 speler werken, zie epiloog: DFPlayer: MP3.

Wemos

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 Asus C434TA Chromebook of de Raspberry Pi 4, voor de ontwikkeling van de software.
Vrijwel alle ESP8266/ESP32 boards hebben een led. Een van de eerste oefen projecten is om deze led te laten knipperen.
Deze led is bij de Wemos mini aangesloten op GPIO pin 2.

BelDetector

De beldetector bestaat uit drie delen:

Beldetector

De beldetector heeft drie aansluitingen op de bestaande schakeling:
"LOW" knooppunt trafo en deurbel, "AC" tussen trafo en bel-schakelaar en "BEL" tussen de schakelaar en deurbel.

Details onderdelen keuze: Detector circuit: Even googelen "bereken buffer elco" levert op: circuitsonline.net: Buffer condensator uitrekenen

MAC Adres

Voor de communicatie tussen twee Wemos chips wordt het "ESP-NOW" protocol gebruikt.
Hier voor is het nodig om het nl.wikipedia: MAC-adres van de Wemos chip achterhalen:
Een MAC-adres ("Media Access Control address") is een vrijwel uniek identificatienummer dat aan een apparaat in een ethernetnetwerk is toegekend.
Dit staat beschreven in RandomNerdTutorials.com: Getting Started with ESP-NOW (ESP32 with Arduino IDE)

Gebruikte code:

/* Rui Santos & Sara Santos - Random Nerd Tutorials
  Complete project details at https://RandomNerdTutorials.com/get-change-esp32-esp8266-mac-address-arduino/
*/
#include <ESP8266WiFi.h>

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("ESP8266 Board MAC Address:  ");
  Serial.println(WiFi.macAddress());
}
 
void loop(){

}

Resultaat:

Linking everything together...
/home/fritsvleeuwen/.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/xtensa-lx106-elf-gcc -CC -E -P -DVTABLES_IN_FLASH /home/fritsvleeuwen/.arduino15/packages/esp8266/hardware/esp8266/2.5.0/tools/sdk/ld/eagle.app.v6.common.ld.h -o /tmp/arduino_build_360796/local.eagle.app.v6.common.ld
...
Using library ESP8266WiFi at version 1.0 in folder: /home/fritsvleeuwen/.arduino15/packages/esp8266/hardware/esp8266/2.5.0/libraries/ESP8266WiFi 
/home/fritsvleeuwen/.arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/2.5.0-3-20ed2b9/bin/xtensa-lx106-elf-size -A /tmp/arduino_build_360796/MAC-Address.ino.elf
Sketch uses 264108 bytes (25%) of program storage space. Maximum is 1044464 bytes.
Global variables use 26912 bytes (32%) of dynamic memory, leaving 55008 bytes for local variables. Maximum is 81920 bytes.

Uploading 268256 bytes from /tmp/arduino_build_360796/MAC-Address.ino.bin to flash at 0x00000000
	erasing flash
	size: 0417e0 address: 000000
	first_sector_index: 0
	total_sector_count: 66
	head_sector_count: 16
	adjusted_sector_count: 50
	erase_size: 032000
	espcomm_send_command: sending command header
	espcomm_send_command: sending command payload
	setting timeout 15000
	setting timeout 1000
	espcomm_send_command: receiving 2 bytes of data
	writing flash
................................................................................ [ 30% ]
................................................................................ [ 61% ]
................................................................................ [ 91% ]
......................                                                           [ 100% ]
starting app without reboot
	espcomm_send_command: sending command header
	espcomm_send_command: sending command payload
	espcomm_send_command: receiving 2 bytes of data
closing bootloader

After uploading the code, open the Serial Monitor at a baud rate of 115200 and press the ESP8266 RESET button.
The MAC address should be printed as follows:

Voordeur beldetector schakeling Wemos:

ESP8266 Board MAC Address: 2C:3A:E8:4B:A0:90

ESP-NOW

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!

Een goede site voor de introductie is: DronebotWorkshop.com: ESP NOW – Peer to Peer ESP32 Communications
dronebotworkshop Today we will be working with ESP-NOW, a connectionless protocol developed by Espressif for the ESP32 and ESP08266 microcontrollers.
With ESP-NOW we can build a private network without WiFi or a Router!

Enkele details met programma code en uitgebreide uitleg: Testing it Out:
Ideally, you’ll want to observe both of the boards’ output on a serial monitor. Instead of using two computers, you can just open two instances of the Arduino IDE on your computer and run them with different COM ports selected. That way, you can open up two serial monitors.

Op de site van het arduino-forum vond ik precies wat ik nodig had, zie: Forum.Arduino: Basic peer-to-peer sketch - ESP-NOW WeMos D1 Mini
A sketch for WeMos D1 Mini that: connects two WeMos D1 Minis peer-to-peer using ESP-NOW

De benodigde code staat op de site: Github.com: ESP-NOW using WEMOS D1 mini Pro
Here are the programs for the CONTROLLER and SLAVE:
 Master01.ino:
//==========================================//
// MASTER                                   //
// Board : LOLIN (WEMOS) D1 MINI PRO        //
// Up++load speed : 92160                   //
// CPU frequency : 80 Mhz                   //
// Flash size : 16MB                        //
//------------------------------------------//
#include <ESP8266WiFi.h>
extern "C" {
#include <espnow.h>
}
 uint8_t mac[] = {0xF4, 0xCF, 0xA2, 0x6D, 0x20, 0x2C}; //AP MAC MASTER'S ADDRESS
...
 Slave01.ino:
//==========================================//
// SLAVE                                    //
// Board : LOLIN (WEMOS) D1 MINI PRO        //
// Upload speed : 92160                     //
// CPU frequency : 80 Mhz                   //
// Flash size : 16MB (FS:14MB OTA:~1019KB   //
//==========================================//

#include <ESP8266WiFi.h>
extern "C" {
#include <espnow.h>
#include <user_interface.h>
}
...

Opmerking: het programma voor de mini "Pro" werkt ook op de standaard WEMOS D1 mini.
Zie: BensElectronics.nl: WEMOS D1 Mini Pro
De D1 Mini Pro is een betere versie van de D1 Mini.
Dit board heeft een ESP8266 chip met 16MB flash geheugen en de D1 Mini heeft maar 4MB flash geheugen.

Epiloog

Een paar opmerkingen


Boardmanager

Dit probleem had ik ook een paar jaar geleden, zie: Wemos Epiloog.
Dit probleem kwam tevoorschijn, toen ik het blink programma startte.
Dit is een standaard programma om de hardware en software configuratie te controleren.
Het probleem is waarschijnlijk de het configuratie script in Arduino: "Additional boards manager URLs" setting
 http://arduino.esp8266.com/stable/package_esp8266com_index.json 

Deze link laadt automatisch de laatste versie van de 8266 chip.

top


DFPlayer

De DFPlayer kan ook gebruikt worden als MP3 speler. Op het internet en YouTube zijn veel voorbeelden te vinden.

Aansluit schema: Wemos, DFPlayer en speaker

mini-schematic

 Bedrading:
SignaalOmschrijvingKleur
 Tx UART output  Geel 
 Rx UART input  Groen 
 Vcc Voedings spanning   Rood  5 Volt 
 GND Ground  Zwart 

Opmerking: een "UART" is een wikipedia: universal asynchronous receiver-transmitter signaal.

W3Ccss valid-html401

top