Custom NodeMCU Builder
Tasmota
Basic Info
Type | Arduino Uno WiFi | ESP8266 NodeMCU | ESP 32 |
Digital I/O | 13 | 11 | |
Analog I/O | 6 | 1 | |
PWM | 6 | 10 | |
Frequency | 16MHz | 80MHz or 160MHz | 160MHz or 240MHz |
I/O Voltage | 5V | 3,3V | 3,3V |
Flash size | 32kB (-0,5kB bootloader) | 4096kB | |
RAM | 8kB | 96kB | 520kB |
GPIO Current | 40mA | 12mA | |
Power consumption ESP8266
Mode | Current |
Wifi Send | 120mA |
Wifi Receive | 56mA |
Modem Sleep | 15mA |
Deep Sleep | 10μA* |
* Deep sleep ~300s and waking up to connect to the AP (taking about 0.3~1s)
What is possible on ESP8266?
Wifi 2.4 GHz b/g/n WPA2 |
Internal Analog-Digital-Converter (0-1V) |
HX711 - inexpensive 24bit ADC |
Read battery voltage |
AM2320 humidity and temperature sensor - i2c interface |
BME280/BMP280 temperature/air presssure/humidity sensor |
ADXL345 triple axis accelerometer |
L3G4200D three axis digital gyroscope |
BMP085/180 temperature and pressure sensor |
HMC5883L three axis digital compass |
Audio output 16KHz / mono / 8Bit |
Switec X.27 instrument stepper motor |
TSL2561 - check illuminance in lux |
Serial line communication |
ESP8266 NodeMCU Pinout
| PIN | IO | Remark | Function |
| D0 | GPIO16 | May work! Connected to LED | Wake up from sleep |
* | D1 | GPIO5 | OK | |
* | D2 | GPIO4 | OK | |
| D3 | GPIO0 | Don't use! Turn flashing | |
| D4 | GPIO2 | Don't use! Conflict while booting | |
* | D5 | GPIO14 | OK | |
* | D6 | GPIO12 | OK | |
| D7 | GPIO13 | May work! | |
| D8 | GPIO15 | Don't use! Conflict while booting | |
| SDD2 | GPIO9 | May work but… | |
| SDD3 | GPIO10 | May work but… | |
| RX | GPIO3 | Usable, but conflict with USB converter | |
| TX | GPIO1 | Usable, but conflict with USB converter | |
The maximum current that can be drawn from a single GPIO pin is 12mA.
Wifi Deauthentication
Lua Sources
--This file is init.lua
wifi.setmode(wifi.STATION)
wifi.sta.config("janforman.dmz","")
local IDLE_AT_STARTUP_MS = 5000;
tmr.alarm(1,IDLE_AT_STARTUP_MS,0,function()
dofile("status.lua")
end)
--This file is status.lua
tmr.alarm(0, 1000*60*10, tmr.ALARM_AUTO, function ()
-- loop
conn = nil
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload)
success = true
print(payload)
end)
conn:on("connection", function(conn, payload)
print('\nConnected')
conn:send("GET /"..(tmr.time() / 3600)
.." HTTP/1.1\r\n"
.."Host: janforman.com\r\n"
.."Connection: close\r\n"
.."Accept: */*\r\n"
.."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.."\r\n")
end)
conn:on("disconnection", function(conn, payload) print('\nDisconnected') end)
conn:connect(80,'janforman.com')
-- loop
end)
Turn internal LED on/off
gpio.mode(4,gpio.OUTPUT)
gpio.write(4,gpio.LOW)
LED_PIN = 4
gpio.mode(LED_PIN,gpio.OUTPUT)
value = true
tmr.alarm(0,500,tmr.ALARM_AUTO, function()
gpio.write(LED_PIN, value and gpio.HIGH or gpio.LOW)
value = not value
end)
HTTP GET
http.get("http://janforman.com/",nil,function(code,data)
if(code < 0) then print ("Failed")
else print(code,data)
end
end)