Modules ESP8266

En cours

Ces modules sont apparus en 2014 comportent un microcontrôleur et permettent de communiquer par Wifi pour un prix modeste et un encombrement quasi ridicule.

Pins

Nom IO Index
GPIO0 3
GPIO1 10
GPIO2 4
GPIO3 9
GPIO4 2
GPIO5 1
GPIO6 N/A
GPIO7 N/A
GPIO8 N/A
GPIO9 11
GPIO10 12
GPIO11 N/A
GPIO12 6
GPIO13 7
GPIO14 5
GPIO15 8
GPIO16 0

Firmware

NodeMCU

Ce firmware permet d'executer des scripts Lua sur le module. Ce système est très confortable, en contrepartie il limite très fortement la mémoire utilisable sur le module.

Modules

ESP-01

J'ai pu flasher un module ESP-01 après avoir changer de convertisseur USB->RS232. J'ai retenté l'opération depuis, plus moyen. GRRR !!!! Flashage réussi avec le premier convertisseur considéré comme fautif ; le flashage est très aléatoire.

Board NodeMCU

Il s'agit d'une carte intégrant un module ESP-07.

Pinout de la carte de dev NodeMCU v2 :

pinout devboard nodemcu

La programmation de l'EEPROM de la board NodeMCU doit se faire en mode DIO. Dans le cas contraire la carte semble briquée.

Dev Board ESP8266

La carte chinoise comportant un MCU STC15W408AS, un convertisseur CH340 USB <–> UART . Pas de documentation

DIP SW Fonction
DC_R_ON RX du MCU vers TX ESP
DC_T_ON TX du MCU vers RX ESP
ESP_T_ON TX ESP connecté au CH340
MCU_T_ON TX MCU connecté au CH340
ESP_R_ON RX ESP connecté au CH340
MCU_R_ON RX MCU connecté au CH340
GPIO14
DL_MCU ?
CH_PD_H Met CH_PD à l'état logique haut
GPIO0_H
GPIO15_H
GPIO2_H

Programme :

Code

Sur Pikacode

Programme pour le capteur PIR (NodeMCU)

function detected()
    gpio.mode(4, gpio.OUTPUT) -- LED
    gpio.write(4, 0)
    tmr.alarm(0, 1000, 0, function()
            gpio.write(4, 1)
    end )
end

gpio.mode(1, gpio.INT) -- pin 1
gpio.trig(1, "up", detected)

Un effet « bougie »

local current_step = 512
local pin = 1

tmr.alarm(1, 300, 1, function()
        current_step = current_step + (256 - math.random(256))
        if current_step < 0 then
                current_step = 0
        else if current_step > 1024 then
                        current_step = 1024
                end
        end
        pwm.setup(pin, 30, current_step)
        pwm.start(pin)
end)