V.O. 05/07/2021
Rev 28/04/2022

Visual Studio Code & Arduino for ESP8266

Installation Visual Studio Code et Extensions
Test Live Server pour fichier HTML ( mai 2021)

ARDUINO ESP8266 applications

Advanced Web server ESP8266 LOLIN VERT (AM2302, BMP085,ADC,Leds,BP) juillet 2021)
* montage Hardware pour ce test
* Software : Visual Studio Code
* Compilation
* Resultats
* Rajout mini OLED SSD1306 128x32 sur bus I2C
* Rajout MCP23017 2 x 8 I/O sur bus I2C
* Test Javascript dans une page html
* MAJ Schema d'interconnections
* Software : derniere version 18-07-2021(en pur ARDUINO 1.8.15 ,sans VSC)

AsynchroneWeb Server ESP8266 Lolin JAUNE (BP commandes et PWM )

* 3 Boutons à glissiere
* Reglage PWM via glissiere..Hardware et Schema
* Software
* Resultat





VISUAL STUDIO CODE
(for ESP8266)




paths:
C:\Users\Paul\AppData\Local\Arduino15\packages
C:\Users\Paul\Documents\Arduino\libraries
path=C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.0.4-gcc10.3-1757bed
C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2
"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I
C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi
C:\Users\Paul\Documents\Arduino\libraries\Adafruit_Unified_Sensor
esptool.py v3.0

liens utiles :

IUT NANTES, Eric Peronnin
Débuter avec l'ESP8266 : Créer une page Web pour changer l'état d'une LED à distance
https://www.youtube.com/watch?v=7Pnvr6iiGXo
Développer sous Visual Studio Code. Le meilleur IDE pour Arduino (v2)
https://www.youtube.com/c/EricPeronnin/search
https://www.youtube.com/watch?v=iwx_Iotz5PE
Débuter avec l'ESP8266 : Introduction - Configuration de l'IDE Arduino et de VS Code - 1er programme
https://www.youtube.com/watch?v=o2aD2kwinJM

Préalable:
Desintallation arduino 1.8.14
chargement Arduino 1.8.15 (118Mo)

Installation :

installation Visual Studio Code
Downloads\VSCodeUserSetup-x64-1.56.2.exe 78Mo
https://www.youtube.com/watch?v=1Z1JCuwXmiQ


Rajout extensions :
(CTRL SHIFT X)
Visual Studio Code | Installation et Astuces Indispensables
https://www.youtube.com/watch?v=CTz1vpJG68E
5 extensions VS Code pratiques
https://www.youtube.com/watch?v=w65jd0Vyj_w

extension : Visual Studio Code extension for Arduino

ARDUINO 0.4.3
usage de la Palette ( touche F1)
settings :


avec VSC ,
#include <Arduino.h> à mettre en debut de code !




Palette (via touche F1) Extensions installées


extension EMMET :
https://docs.emmet/io/cheat-sheet
terminal CTRL ù
CTL P recherche de fichier
ALT fleche Haut ou Bas deplacer des lignes
ALT MAJ Haut Bas Dupliquer des lignes

extension : LIVE SERVER
affiche un html ouvert dans VSC
Outil performant pour preparer une page HTML et son suivi quasi temps reel.
Affichage des erreurs, auto completion, documentation ...





Exemple d'usage de l'extension Live Server avec un fichier html

Thermostat_consigne_2021-0617.html




extension : PRETTIER formatter
CTRL MAJ P palettes de cdes VSC
setting (JSON)
coller
"editor.formatOnSave": true,
"editor.defaultFormatter": "SimonSiefke.prettier-vscode"


Aide en ligne pour l'usage des fonctions ou librairies
Ex: avec lib DHT11
images/t_Visual_Studio_Code_detail_function_DHT11_202106.gif

Folder
Des images ou autres fichiers peuvent etre contenus dans le Folder
VSC permet aussi de visionner les images ! ou HTML, sans sortir de l'appli VSC




config VSC :

arduino.json
{
"configuration": "xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,eesz=4M2M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=921600",
"board": "esp8266:esp8266:d1",
"sketch": "LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0703.ino",
"port": "COM48"
}

lien sur autre fichier (369 lignes !):
c_ccpproperties.json

Terminal YAT (externe) sur liaison USB module Lolin

Permet de tracer le programme, sortir des infos en temps reel .., debugger ..
ex: COM48 port virtuel à 115200 bauds.
ATTENTION :
le port COM48 ne doit pas etre utilisé par un terminal, lors de la compilation du source *.ino !
sinon blocage compil..:

ATTENTION :
le directory .vscode est detruit en sortie de programme .. perte des chemins librairies ( Path) => erreur de compil .
à verifier si il est bien present en cas de probleme .

exemple de
dossier .vsccode




Webserver avec VSC et ESP8266MOD Lolin NodeMcu V3

Application issue d'un exmple sur le web..
modification via Visual Studio Code , environnement Arduino pour ESP8266

Message signature ESP822 Lolin NodeMCu V3 .. suite appui sur
BP Reset de la carte
le terminal doit etre à
74800 bds pour l'afficher correctement !
...car passe ensuite à 115200bds pour 'application




Montage Hardware :

images/t_TEST_Webserver_Lolin_Vert_NodeMCU_V3_2021-0705.gif

BMP085 Bosh
Le BMP085 offre une gamme de mesure de 300 à 1100 hPa avec une précision absolue
de jusqu'à 0,03 hPa. Il est basé sur la technologie piézo-résistif pour EMC robustesse,
haute précision et linéarité ainsi que la stabilité à long terme.
Ce capteur supporte une alimentation en tension compris entre 1,8 et 3,6 Vcc.
Il est conçu pour être directement connecté à un micro-contrôleur par l'intermédiaire du bus I2C



capteur DHT22=AM2302
Model DHT22
Power supply 3.3-6V DC
Output signal digital signal via single-bus
Sensing element Polymer capacitor
Operating range humidity 0-100%RH; temperature -40~80Celsius
Accuracy humidity +-2%RH(Max +-5%RH); temperature <+-0.5Celsius
Resolution or sensitivity humidity 0.1%RH; temperature 0.1Celsius
Repeatability humidity +-1%RH; temperature +-0.2Celsius
Humidity hysteresis +-0.3%RH
Long-term Stability +-0.5%RH/year
Sensing period Average:
2s
Interchangeability fully interchangeable

Analog input :
analogReference(DEFAULT);
// test avec potar 470 ohms sur alim 3,3V -> mesurée 2,96V (chute un peu car pot=470 ohms seulement )
// pot. mini 40 , pot. maxi 1024 , et 1006 pour input=2.90V
// avec LM35DZ 0.262V -> 90 points
// l'entree A0 est de 1,0V mais incorpore un pont divisuer par 3 => echelle 0 à 3,3V




Hardware Declarations

ATTENTION : le reperage des pins sur le module Lolin ne coorespond pas au repere GPIO !

#define DHTTYPE DHT22 ; // DHT type (DHT11, DHT22)

GPIO Pin

Lolin module

 

#define SCL 5

D1

<--> SCL BMP085

#define SDA 4

D2

<--> SDA BMP085

#define LED_Bleue 2

D4

- >led bleue du module Lolin ( pulled up)

int DHTPIN = 14

D5

<- Broche du capteur AM2302

#define LED_Verte 12

D6

-> led verte externe au module Lolin ( pulled down)

#define BP1 13

D7

<- BP 1 (pulled up)

Analog Pin

A0

<-- Pin 2 du LM35DZ gamme 0-3300mV 0-330°C

PWM

D3 sortie sur GPIO 0




SOFTWARE #1 (environnement VSC)


Librairies :

#include "Arduino.h"
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <DHTesp.h>
#include <Adafruit_BMP085.h>


Application :

"page" contient le fichier html.
si le server rencontre un argument "LED_B" ou "LED_V"
la fonction HandleSubmit permet de faire les actions demandes sur les sorties LED..
ensuite, La "page" réactualisée est renvoyée au serveur

La tache de fond Loop fait :
les acquisitions (via protocole specifique) du capteur AM2302 Humidite et temperature
l'acquisition (via I2C) de la mesure de Pression BMP085
La mesure Analogique sur A0 .. capteur de temperature LM35DZ
la lecture de l'etat du BP1
L'incrementation du "Compteur"
Envoi de toutes ces info sur un terminal virtuel COM48 via la liaison USB au PC
* Liaison USB qui alimente aussi le module ESP8266 Lolin via le +5V USB !
nota: le module Lolin genere le +3,3V local utilisé par les periferiques.
La led bleue est sur le module Lolin.

La mesure moyenne Ana ( cumulée sur 8 samples) donne la valeur exprimée en Degres C

LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0703x.ino

mon serveur DNS (freebox) couvre la plage 192.168.0.100 .. à 112
j'ai en permance la possibilité de connecter la "page" sur ..110, 111,112 ou
autre adresse IP plus basse si je n'ai que mon PC principal actif
J'ai aussi autorisé le module Lolin_Vert coté parrefeu NORTON ...

..Resultat: sur terminal YAT
ATTENTION !
le port COM48 ne doit pas etre utilisé par un terminal, lors de la compilation du source *.ino !
sinon blocage compil..:
error :
serial.serialutil.SerialException: could not open port 'COM48': PermissionError(13, 'Acc?s refus?.', None, 5)
des que la compil est terminée,on peut reactiver le terminal extern YAT

.......
Connected to ON_AIR2020
IP address: 192.168.0.103

HTTP server started
Ana0=85 Compteur= 00000 Pression : 984 Temperat. nan Humidite nan BP= OFF
Ana0=85 Compteur= 00000 Pression : 984 Temperat. 26.40 Humidite 77.2 BP= OFF
Ana0=85 Compteur= 00000 Pression : 984 Temperat. 25.60 Humidite 77.9 BP= OFF
Ana0=85 Compteur= 00000 Pression : 984 Temperat. 25.60 Humidite 78.0 BP= OFF
Ana0=84 Compteur= 00001 Pression : 984 Temperat. nan Humidite nan BP= OFF
Ana0=84 Compteur= 00001 Pression : 984 Temperat. 26.40 Humidite 75.4 BP= OFF
Ana0=90 Compteur= 00001 Pression : 984 Temperat. 25.70 Humidite 76.8 BP= OFF
LM35DZ=27.47 deg C
Compteur= 00002 Pression : 984 Temperat. 25.60 Humidite 76.8 BP= OFF
Ana0=90 Compteur= 00002 Pression : 984 Temperat. 25.60 Humidite 75.2 BP= OFF
Ana0=85 Compteur= 00003 Pression : 984 Temperat. 25.60 Humidite 76.1 BP= OFF
Ana0=90 Compteur= 00003 Pression : 984 Temperat. 25.60 Humidite 76.6 BP= OFF
Ana0=90 Compteur= 00003 Pression : 984 Temperat. 25.60 Humidite 76.1 BP= OFF
Ana0=84 Compteur= 00004 Pression : 984 Temperat. 25.80 Humidite 75.8 BP= OFF
Ana0=90 Compteur= 00004 Pression : 984 Temperat. 25.70 Humidite 76.6 BP= OFF
Ana0=90 Compteur= 00004 Pression : 984 Temperat. 25.70 Humidite 76.4 BP= OFF
LM35DZ=28.36 deg C


...
Autre Probleme: avec mon PC Acer portable : PC adresse Wifi ..103 spoliée par Wifi Lolin
donc modif du code , pour imposer une adresse IP fixe : 192.168.0.110 coté Lolin



Essai d'inclure du Javascript :

String getJavas(){
 String Javas =  "<script type=\"text/javascript\"/>"; 
   Javas += "  var consigneV = 0";    
Javas += "   var target = new XMLHttpRequest()";    
Javas += "   function MoinsVite(){";  
Javas += "  if (consigneV > 0) consigneV = consigneV - 1";    
Javas += "    document.getElementById('ConsigneID').innerHTML = consigneV";    
Javas += "     target.open('POST', '/MoinsVite', true) }";    
Javas += "  function PlusVite()  {";    
Javas += "   consigneV = consigneV + 1";
Javas += "   document.getElementById('ConsigneID').innerHTML = consigneV"; 
Javas += "   target.open('POST', '/PlusVite', true)  }";    
Javas += " </script> <br> ";    
return Javas;  
 };


page + = getJavas();



--------------- COMPILATION
----------------------------------------------

images/t_Compilation_OK_ESP8266_Lolin_Vert_Webserver_DHT11_BMP085_ADC_OLED_MCP23017.gif

[Starting] Uploading sketch 'LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0706.ino'
Using core 'esp8266' from platform in folder: C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0
Detecting libraries used...
"C:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.0-newlib4.0.0-gnu23-48f7b08/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.0/tools/sdk/include" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.0/tools/sdk/lwip2/include" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.0/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_159733/core" -c -w -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10814 -DARDUINO_ESP8266_WEMOS_D1R1 -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_WEMOS_D1R1\"" -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.0\\cores\\esp8266" "-IC:\\Users\\Paul\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.0\\variants\\d1" "C:\\Users\\Paul\\AppData\\Local\\Temp\\arduino_build_159733\\sketch\\LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0706.ino.cpp" -o nul
Alternatives for WiFiClient.h: [ESP8266WiFi@1.0 WiFi@1.2.7]

ResolveLibrary(WiFiClient.h)
-> candidates: [ESP8266WiFi@1.0 WiFi@1.2.7]
-> candidates: [ESP8266WebServer@1.0]
-> candidates: [Wire@1.0]
-> candidates: [DHT_sensor_library_for_ESPx@1.17]
-> candidates: [Adafruit_Unified_Sensor@1.1.3]
-> candidates: [Adafruit_BMP085_Library@1.2.1]
-> candidates: [Adafruit_BusIO@1.7.5]
-> candidates: [SPI@1.0]

Compiling sketch..

Compiling libraries...
Compiling library "ESP8266WiFi"
Compiling library "ESP8266WebServer"
Compiling library "Wire"
Compiling library "DHT_sensor_library_for_ESPx"
Compiling library "Adafruit_Unified_Sensor"
Compiling library "Adafruit_BMP085_Library"
Compiling library "Adafruit_BusIO"
Compiling library "SPI"
Compiling core...

Linking everything together...
Creating BIN file "C:\Users\Paul\AppData\Local\Temp\arduino_build_159733/LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0706.ino.bin" using "C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0/bootloaders/eboot/eboot.elf" and "C:\Users\Paul\AppData\Local\Temp\arduino_build_159733/LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0706.ino.elf"
Executable segment sizes:
ICACHE : 32768 - flash instruction cache
IROM : 277568 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 28089 / 32768 - code in IRAM (IRAM_ATTR, ISRs...)
DATA : 1520 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 2660 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 26696 ) - zeroed variables (global, static) in RAM/HEAP
Multiple libraries were found for "WiFiClient.h"
Used: C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\libraries\ESP8266WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi

Sketch uses 309837 bytes (29%) of program storage space. Maximum is 1044464 bytes.
Global variables use 30876 bytes (37%) of dynamic memory, leaving 51044 bytes for local variables. Maximum is 81920 bytes.

Terminal YAT doit etre déconnecté !

Uploading...
C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\tools\python3\3.7.2-post1/python3 C:\Users\Paul\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0/tools/upload.py --chip esp8266 --port COM48 --baud 921600 --before default_reset --after hard_reset write_flash 0x0 C:\Users\Paul\AppData\Local\Temp\arduino_build_159733/LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0706.ino.bin
esptool.py v3.0
Serial port COM48
Connecting...
.
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: b4:e6:2d:0a:aa:aa

Uploading stub..
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 313984 bytes to 227281...
Writing at 0x00000000... (7 %)
Writing at 0x00004000... (14 %)
Writing at 0x00008000... (21 %)
Writing at 0x0000c000... (28 %)
Writing at 0x00010000... (35 %)
Writing at 0x00014000... (42 %)
Writing at 0x00018000... (50 %)
Writing at 0x0001c000... (57 %)
Writing at 0x00020000... (64 %)
Writing at 0x00024000... (71 %)
Writing at 0x00028000... (78 %)
Writing at 0x0002c000... (85 %)
Writing at 0x00030000... (92 %)
Writing at 0x00034000... (100 %)
Wrote 313984 bytes (227281 compressed) at 0x00000000 in 5.2 seconds (effective 486.9 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin..


en fin de compilation avec VSC , message :
[Done] Uploading sketch 'LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0706.ino'


--------------- RESULTAT ------------------

........
Connected to ON_AIR2020
IP address: 192.168.0.110

Javas :
<script type="text/javascript"/> var consigneV = 0 var target = new XMLHttpRequest() function MoinsVite(){ if (consigneV > 0) consigneV = consigneV - 1 document.getElementById('ConsigneID').innerHTML = consigneV target.open('POST', '/MoinsVite', true) } function PlusVite() { consigneV = consigneV + 1 document.getElementById('ConsigneID').innerHTML = consigneV target.open('POST', '/PlusVite', true) } </script> <br>

HTTP server started
Ana0=85 Compteur= 00000 Pression : 984 Temperat. 26.60 Humidite 62.7 BP= OFF
Ana0=85 Compteur= 00000 Pression : 984 Temperat. 26.60 Humidite 62.8 BP= OFF
Ana0=85 Compteur= 00000 Pression : 984 Temperat. 26.60 Humidite 62.7 BP= OFF
Ana0=84 Compteur= 00000 Pression : 984 Temperat. 26.60 Humidite 62.7 BP= OFF
Ana0=90 Compteur= 00000 Pression : 984 Temperat. 26.60 Humidite 62.7 BP= OFF
Ana0=84 Compteur= 00001 Pression : 984 Temperat. 26.60 Humidite 62.8 BP= OFF
Ana0=85 Compteur= 00001 Pression : 984 Temperat. 26.60 Humidite 62.9 BP= OFF
LM35DZ=27.71 deg C
(19:13:44.963) Compteur= 00087 Pression : 983 Temperat. 26.30 Humidite 62.0 BP= OFF
(19:13:47.443) Ana0=92 Compteur= 00087 Pression : 983 Temperat. 26.30 Humidite 62.0 BP= OFF
(19:13:49.996) Ana0=91 Compteur= 00087 Pression : 983 Temperat. 26.40 Humidite 62.1 BP= OFF
(19:13:52.562) Ana0=85 Compteur= 00088 Pression : 983 Temperat. 26.80 Humidite 62.5 BP= OFF
(19:13:55.093) Ana0=92 Compteur= 00088 Pression : 983 Temperat. 26.30 Humidite 62.1 BP= OFF
(19:13:57.652) Ana0=92 Compteur= 00088 Pression : 983 Temperat. 26.80 Humidite 62.5 BP= OFF
(19:14:00.217) Ana0=86 Compteur= 00089 Pression : 983 Temperat. 26.00 Humidite 61.8 BP= OFF
(19:14:02.760) Ana0=92 Compteur= 00089 Pression : 983 Temperat. 26.80 Humidite 62.5 BP= OFF
(19:14:05.323) LM35DZ=28.84 deg C
(19:14:05.371) Compteur= 00090 Pression : 983 Temperat. 26.70 Humidite 62.3 BP= OFF

57.652-55.093= 2.56 secondes

affichage page web

images/t_Page_ESP8266_Lolin_Vert_Running-2021-0705.gif



version du 10/07:
LOLIN_ESP8266_Vert_Webserver_DHT11_BMP085_ADC_2021-0710.ino





Rajout mini LCD OLED SSD1306 128x32 (i2C)
et MC23017 expander 16 Entrees sorties (I2C)

Profitons de ce bus I2C pour rajouter un LCD (infos locales )
et augmenter le nombres d'entrées (+8) et de sorties (+8). acr trop limitées sur ce modele ESP8266 2x15 pins

Test preliminaire des fonctionalités offerte par la librairie Arduino SSD1306
Le LCD est simplement raccordé sur le bus I2C existant, avec adresse device 0x3C.
Aucun probleme .. le logo Adafruit est affiché par défaut au moment de l'init .

Tous les test sont effectuées ..OK...
résumé ci dessous :
Display pixel 10,10
lignes
rectangles
Rectangles pleins
Cercles
Cercles pleins
Rectangle vides arrondis
Rectangle pleins arrondis
Triangles
Triangles Pleins
characteres simples
characteres styles
Scrolling text
petite image Bitmap
inverse image
re-inverse image
animation LOGO
x: 75 y: -16 dy: 2
x: -9 y: -16 dy: 2
x: 56 y: -16 dy: 3


J' ai rajouté l'affichage d' un BMP 128x32 : Pauljujo.
Fichier defini en memoire Programme.

_ESP8266_Lolin_Vert_Test_Complet_Mini_OLED_128x32_I2C_2021-0715.ino




Rajout du MCP23017 (I2C)

! nouveau schema global



à gauche du schema , la page web correspondante !
Le LCD OLED , 4 lignes de 18 chars , affiche les principales données acquises :
Le capteur de Pression,l'ecran OLED et le MCP23017 sont sur le bus I2C
Le capteur DHT11 est géré par un protocole specifique ,genre SPI
Le capteur de temperature LM35DZ est relié sur la seule entre ANA A0 de l'ESP8266 (gamme 0 à 3,3V)



Le MCP23017 supporte 8 entrees et 8 sorties
La page web contient la trame fixe et les donnees reactualisées.
Possibilité de commander les 2 leds sur le Module ESP8266
La Led Bleue est celle installée sur le module , la led verte est externe.
Un Bouton poussoir est relié à une entree ESP8266

Rajout d'un Icone 32x32 via SVG et compactage de l'image au format Base64 :

String getMyLogo()
{
String MyLogo= "<br> rajout (mylogo_32x32.ico) image en format base64 <br><br>";
MyLogo +="<img alt=\"no image\" src=\"data:image/x-icon;base64,AAABAAEAICAAAAEACACoCAAAFgAAAC...etc .....>";
MyLogo +="<br><br>";
return MyLogo;
}

Injection javascript,

String getJavas()
{
String Javas = "<script type=\"text/javascript\">";
Javas += " var Consigne = 0";
Javas += " var target = new XMLHttpRequest()";
Javas += " function MoinsVite(){";
Javas += " if (Consigne > 0) Consigne = Consigne - 1";
Javas += " document.getElementById('ConsigneID').innerHTML = Consigne";
Javas += " target.open('POST', '/MoinsVite', true) }";
Javas += " function PlusVite() {";
Javas += " Consigne = Consigne + 1";
Javas += " document.getElementById('ConsigneID').innerHTML = Consigne";
Javas += " target.open('POST', '/PlusVite', true) }";
Javas += " </script>";
return Javas;
};

à suivre

* Commande des 8 entrés du MCP
* Affichage distinct des 8 sorties MCP ( actuellement info PORTB seulement en Hexa ou Binaire)
* Passage en Async Web server !




Test séparé du codage javascript avec cette page html :



attention à respecter les ";" et la case des lettres.

le code actuel (18/07/2021)
_ESP8266_Lolin_Vert_DHT11_BMP085_ADC_OLED_MCP23017_2021-0718.ino
Consigne_Vitesse_javascript_2021-0718.html
* test du javascript "consigne"
A suivre ..
recuperer cette info pour sortie PWM ESP8266





AsynchroneWeb Server ESP8266
Lolin JAUNE (BP commandes et PWM )


Boutons à glissiere :
Software:

page Html simple pour test javascipt :
3_boutons_smooth_slider.html
images/t_ESP8266_Lolin_Jaune_AsynWebServer_3_Boutons_2022-0416.gif



Reglage sortie PWM

Hardware :
Sortie 2 correspondant à pin D4 Lolin -> 750 ohms -> Gate MOSFET canal N IRFZ14N
Pin Gnd Module ESP Lolin ---> 0V alim 12VDC
Ampoule 12V 5W entre sortie DRAIN Mosfet et + Alim 12V DC



Rappel hardware :



#define SDA 4 //Lolin D2 fil vert --> SDA BMP085
const int PWM_output = 0; // Lolin Pin D3
#define Led_Verte 12 // Lolin pin D6
#define Led_Rouge 15 // Lolin pin D8
//#define Led_Bleue 0 // Lolin pin D3
#define Led_Bleue_Inbuilt 2 // Lolin pin D4
#define BP1 13 //Lolin D7 = BP at GPIO 13 <-- BP tire au Gnd

DHTesp dht;
#define DHTTYPE DHT22 ; // DHT type (DHT11, DHT22)
int DHTPIN = 14 ; //Lolin Pin D5 = GPIO14 <-- Broche du capteur AM2302
#define SCL 5 //Lolin D1 fil jaune --> SCL BMP085
images/t_ESP8266_Jaune_Lolin_CH340G_NodeMCU_V3_PinOut_b.gif
codage pour definition des I/O pinout ES9266 Lolin


===================================================================
// Hardware raccordements
// ESP ..GPIO.....BMP085 ....OLED Display ......AM2302-Humidity ....Temp sensor
// +3V-------------- 1 VCC ------- 2 OLED SSD1306 ----1 Humidity Vcc------1 LM35DZ Vcc
// Gnd ------------- 2 Gnd --------1 OLED SSD1306 ----4 Humidity Gnd------3 LM35DZ Gnd
// ----------------------------------------------------------------------3 EOC 3 N.C.
//-----------------------------------------------------------------------4 XCLCK
// D1 --- 5 --I2C--5 SCL ------- 3 OLED SSD1306
// D2 --- 4 --I2C--6 SDA--- --- 4 OLED SSD1306
// D5 <- 14 ------------------------------------------------------- 2 Humidity Data
// D3 --- 0 --------------------------------> PWM Output
// D4 --- 2 ----1K----> Led Bleue---Gnd
// D6 -- 12 ----1K----> Led Verte---Gnd
// D8 -- 15 ----1k----> Led Rouge---Gnd
// D7 <- 13 - ----------BP1----750----Gnd
// A0 <---Analog---------------------------------------------------------------------------2 LM35DZ outpn pin D4

=============================================================


Software:

apres mise à jour version VSC et Arduino :
bien vérfier tous les paths ... aruino pack, arduino librairies, compilateur ..etc ..
car
intellisense ne sait pas faire tout seul !
modif manuelle des paths :
voir exemple :
c_cpp_properties.json_OK_20220421.txt .......... attention lignes de >180 caracteres !

D:\_ESP8266MOD_Lolin_2x15_Jaune\ESP8266_Jaune_Button_Slider_PWM_2022-0422_VCS\.vscode
.vscode-2022-0422.zip
arduino.json
c_cpp_properties.json
launch.json

Probleme : impossible d'utilise N majuscule ( via Shif N)
Modif Keyboard shortcut :
images/t_VSCODE_PB_with_Key_shift_N_2022-04.gif

Probleme :sur la valeur par defaut de la carte selectionnée
images/t_PB_config_carte_ESP8266_Lolin_Vert_Exceptions_Enabled_2022-04.gif


dossier de Pré-compilation :
"d:\\_ESP8266MOD_Lolin_2x15_Jaune\\ESP8266_Lolin\\core",

Compilation
Log de la compilation et chargement : Compilation_ESP8266_Jaune_Buttons_Slider_PWM_2022-0422.ino.log

Nota:
*adress IP fixée à 192.168.0.110
*(necessite de modifier le SSID et la clé WEP !)

Chargement du programme (via liaison USB de la carte)

write_flash 0x0 d:\_ESP8266MOD_Lolin_2x15_Jaune\ESP8266_Lolin/ESP8266_Jaune_Buttons_Slider_PWM_2022-0422.ino.bin
esptool.py v3.0
Serial port COM6
Connecting...
.
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 5c:cf:7f:78:71:eb
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 400640 bytes to 249753...
Writing at 0x00000000... (6 %)
Writing at 0x00004000... (12 %)
Writing at 0x00008000... (18 %)
Writing at 0x0000c000... (25 %)
Writing at 0x00010000... (31 %)
Writing at 0x00014000... (37 %)
Writing at 0x00018000... (43 %)
Writing at 0x0001c000... (50 %)
Writing at 0x00020000... (56 %)
Writing at 0x00024000... (62 %)
Writing at 0x00028000... (68 %)
Writing at 0x0002c000... (75 %)
Writing at 0x00030000... (81 %)
Writing at 0x00034000... (87 %)
Writing at 0x00038000... (93 %)
Writing at 0x0003c000... (100 %)
Wrote 400640 bytes (249753 compressed) at 0x00000000
in 5.8 seconds (effective 557.1 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
IntelliSense configuration already up to date. To manually rebuild your IntelliSense configuration run "Ctrl+Alt+I"
[Done] Uploading sketch 'ESP8266_Jaune_Buttons_Slider_PWM_2022-0422.ino'



dossier VCS :
ESP8266_Jaune_Button_Slider_PWM_2022-0424_VCS.zip
Source
: ESP8266_Jaune_Buttons_Slider_PWM_2022-04.ino


Modif AnalogWriteRange -> 1023 ( est par defaut à 255

Modif Frequence PWM -> 2000 Hz au lieu de 1000Hz


Resultat :

24/04/2022

images/t_ESP8266_Lolin_Jaune_2022-0424.gif images/t_ESP8266_Lolin_Jaune_Trace_Terminal_YAT_2022-0424.gif
affichage page Terminal espion sur COM6






A suivre
Rajout DHT11,OLED LCD,BMP 085,LM35DZ,MCP23017







 

 

 

 

 

 

 

 

 




paulfjujo@free.fr


Retour à l'index general