Modèle | ESP-01 | ESP-12E NodeMCU | Wemos D1 Mini |
Image | |||
GPIOs | 4 (including TX and RX) | 11 | 11 |
ADC Pins | 1 | 1 | 1 |
Flash Memory | 1MB (upgraded version) | 4MB | 4MB |
USB to Serial Converter | X | ✓ | ✓ |
Taille | 24.75mm x 14.5mm | 48.55mm x 25.6mm | 34.2mm x 25.6mm |
Wire.begin(1, 3); //Wire.begin(sda_pin, scl_pin).
Alimentation | Mode éveillé | Mode veille |
---|---|---|
Broche VCC en 3.3V | 76 mA en fonctionnement standard (avec des pics allant jusqu'a 150mA lors de la connexion au wifi d'une durée allant de 2 secondes à 8 secondes). | 18µA |
Sur l'ESP01 ou l'ESP01s, la broche GPIO16 du microcontrôleur ESP8266 n'a pas été câblée de manière à ce qu'elle soit accessible à l'utilisateur.
De ce fait, il est impossible d'utiliser le réveil logiciel car ce dernier ne fonctionne que si nous pouvons connecter entre eux GPIO16 et RST.
Item | Modem-sleep | Light-sleep | Deep-sleep |
---|---|---|---|
Wi-Fi | OFF | OFF | OFF |
System clock | ON | OFF | OFF |
RTC | ON | ON | ON |
CPU | ON | Pending | OFF |
Substrate current | 15 mA | 0.4 mA | ~20 µA |
Average current DTIM = 1 | 16,2 mA | 1,8 mA | - |
Average current DTIM = 3 | 15,4 mA | 0,9 mA | - |
Average current DTIM = 10 | 15,2 mA | 0,55 mA | - |
Le mode Modem-Sleep est utilisé dans les applications qui nécessitent le fonctionnement du processeur, comme dans les applications PWM ou I2S.
Il est conforme à la norme 802.11 (U-APSD). Le modem Wi-Fi est arrêté tout en maintenant une connexion Wi-Fi sans transmission de données pour optimiser la consommation d’énergie.
Trois modes sont disponibles, DTIM1 à 3. DTIM (Delivery Traffic Indication Message). Par exemple dans le mode DTIM3, le modem est mis en sommeil durant 300 ms puis activé durant 3 ms. Avec ce mode, la consommation est de 15 mA.
En plus de la suspension du modem WiFI, le CPU est mis en attente et réactivé si nécessaire.
C’est le seul mode le plus simple à mettre en oeuvre et le plus économe en énergie pour des projets qui fonctionnent sur batterie.
Seul le RTC (Real-Time Clock) qui est une horloge interne capable de réveiller le microcontrôleur après un temps donné.
On active le mode Deep-sleep en reliant la broche RST à la broche D0, celle-ci n’est donc plus disponible pour un autre usage, il n’est plus possible de téléverser un programme, il faudra déconnecter la broche RST avant de pouvoir téléverser un programme.
Sur certains modules, la broche D0 peut être identifiée par GPIO16.
En reliant les broches D0 et RST, il n’est plus possible de téléverser un programme. Quelque soit votre environnement de développement (IDE Arduino, PlatformIO, ESP Tools), il faudra déconnecter la broche RST avant de pouvoir téléverser un programme.
-- perso_html V2 -- pour android wifi.setmode(wifi.STATION); wifi.sta.config("Livebox###","########################"); tmr.delay(1000000); -- 1 appuis 1s sur le boutton print(wifi.sta.getip()); print("Serveur prêt") -- liste des ports et GPIO -- 4 GPIO2/102 -- 2 GPIO4/104 -- 1 GPIO5/105 -- 6 GPIO12/1012 -- 7 GPIO13/1013 -- 5 GPIO14/1014 -- commande ?pin=N4 appuis sur 4 leds={4,"Lampes Entrée/102",2,"Lampes Jardin/104",1,"Eteindre tout/105",6,"GPIO12/1012",7,"GPIO13/1013",5,"GPIO14/1014"} for i=1,table.getn(leds),2 do gpio.mode(leds[i], gpio.OUTPUT) end srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive", function(client,request) local buf = ""; local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP"); if(method == nil)then _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP"); end local _GET = {} if (vars ~= nil)then for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do _GET[k] = v; -- print(v); end end local _on,_off = "","" x=_GET.pin; if x then if(string.sub(x,1,1)=="N")then gpio.write(tonumber(string.sub(x,2)), gpio.HIGH); tmr.delay(1000000); -- 1 appuis 1s sur le boutton gpio.write(tonumber(string.sub(x,2)), gpio.LOW); elseif(x == "OFF")then -- procedure a realiser gpio.write(1, gpio.HIGH); tmr.delay(1000000); -- 1 appuis 1s sur le boutton gpio.write(1, gpio.LOW); -- 105 -- srv:close(); end end client:send(buf); client:close(); collectgarbage(); end) end)
-- ds18b20 one wire example for NODEMCU (Integer firmware only) -- NODEMCU TEAM -- LICENCE: http://opensource.org/licenses/MIT -- Vowstarpin = 3 -- GPIO0 broche 100. ow.setup(pin) count = 0 repeat count = count + 1 addr = ow.reset_search(pin) addr = ow.search(pin) tmr.wdclr() until((addr ~= nil) or (count > 100)) if (addr == nil) then print("No more addresses.") else print(addr:byte(1,8)) crc = ow.crc8(string.sub(addr,1,7)) if (crc == addr:byte(8)) then if ((addr:byte(1) == 0x10) or (addr:byte(1) == 0x28)) then print("Device is a DS18S20 family device.") repeat ow.reset(pin) ow.select(pin, addr) ow.write(pin, 0x44, 1) tmr.delay(1000000) present = ow.reset(pin) ow.select(pin, addr) ow.write(pin,0xBE,1) print("P="..present) data = nil data = string.char(ow.read(pin)) for i = 1, 8 do data = data .. string.char(ow.read(pin)) end print(data:byte(1,9)) crc = ow.crc8(string.sub(data,1,8)) print("CRC="..crc) if (crc == data:byte(9)) then t = (data:byte(1) + data:byte(2) * 256) -- handle negative temperatures if (t > 0x7fff) then t = t - 0x10000 end if (addr:byte(1) == 0x28) then t = t * 625 -- DS18B20, 4 fractional bits else t = t * 5000 -- DS18S20, 1 fractional bit end local sign = "" if (t < 0) then sign = "-" t = -1 * t end -- Separate integral and decimal portions, for integer firmware only local t1 = string.format("%d", t / 10000) local t2 = string.format("%04u", t % 10000) local temp = sign .. t1 .. "." .. t2 print("Temperature= " .. temp .. " Celsius") end tmr.wdclr() until false else print("Device family is not recognized.") end else print("CRC is not valid!") end end