ESP-01 ADC Extra stift ansluter med NodeMCU Server OLED Display (3 / 3 steg)
Steg 3: Testa klient / Server med OLED-skärm
Följande test är att analog signal av ESP-01 ADC Extra stift till NodeMCU och Visa på OLED
Testa klient / Server med OLED-skärm
Klienten LUA
< p > fungera initADC() < br > om adc.force_init_mode (adc. INIT_VDD33) sedan
Node.restart()
återvända - bry dig inte fortsätter, omstarten är planerad
slutet
--för i = 0, 10 har
--Skriv ut ("systemspänning (mV):", adc.readvdd33(0))
--tmr.delay(1000000)
--slut
avsluta < /p >< p > wifiUp = function()
WiFi.setmode (wifi. STATION)
WiFi.sta.config (conf.wifi.ssid, conf.wifi.pwd)
WiFi.sta.connect()
avsluta < /p >< p > setPin = function()
gpio.mode (0, gpio. INGÅNG)
avsluta < /p >< p > Kontrollera = function()
gpio.mode (2, gpio. OUTPUT)
IP = wifi.sta.getip()
om ip ~ = noll då
Print(IP)
gpio.write (2, gpio. HÖG)
slutet
slutet < /p >< p >--tempStatus = function()
--status, temp, humi, temp_decimial, humi_decimial = dht.read11(conf.pins.temp)
-- t = {
--enkelt = temp,
--hash = crypto.toHex (crypto.hmac ("md5", tostring(temp), conf.secret))
-- }
--återgå cjson.encode(t)
--slut < /p >< p > funktion urlEncode (str)
om (str) sedan
Str = string.gsub (str, "\n", "\r\n")
Str = string.gsub (str, "([^ %w])",
(c) returnera string.format ("%%% 02 X", string.byte(c)) slutet)
Str = string.gsub (str, "", "+")
slutet
returnera str
avsluta < /p >< p > readSensor = function()
återgå adc.readvdd33(0)
avsluta < /p >< p > b = sant
CTR = 0 < /p >< p > nyttolast = funktion (kod)
--lokala t = tempStatus()
--Print(b)
urlstr = ""
om (b == true) sedan
b = false
urlstr = "få /? pin = ON1 &"...
"sensor ="... readSensor()... "&"...
--"namn ="... urlEncode ("Sanki Poon")... "&"...
"värdet ="... TMR.Now()... "&"...
"ctr ="... CTR...
"HTTP/1.1\r\nHost:"... conf.Server.IP... "\r\nConnection: håll-alive\r\nAccept: * / * \r\n\r\n";
--återvända urlstr;
--återvända "få /? pin = ON1 & abc = 101 & namn = Sanki % 20Poon HTTP/1.1\r\nHost: 192.168.0.102\r\nConnection: håll-alive\r\nAccept: * / * \r\n\r\n";
annat
b = sant
--återvända "få /? pin = OFF1 HTTP/1.1\r\nHost: 192.168.0.105\r\nConnection: håll-alive\r\nAccept: * / * \r\n\r\n";
urlstr = "få /? pin = OFF1 &"...
"sensor ="... readSensor()... "&"...
--"namn ="... urlEncode ("Sanki Poon")... "&"...
"värdet ="... TMR.Now()... "&"...
"ctr ="... CTR...
"HTTP/1.1\r\nHost:"... conf.Server.IP... "\r\nConnection: håll-alive\r\nAccept: * / * \r\n\r\n";
slutet
CTR = ctr + 1.
återvända urlstr; < /p >< p >--återvända "POST proxy HTTP/1.1\r\n"
-- .. "Host: localhost\r\n"
-- .. "User-Agent: foo/7.43.0\r\n"
-- .. "Acceptera: * / * \r\n"
-- .. "Content-Type: application/json\r\n"
-- .. "Content-Length:"... string.len(t)... "\r\n\r\n"
-- .. t
avsluta < /p >< p > sendData = function()
sk = net.createConnection (net. TCP, 0) < /p >< p > retStr = payload(1) < /p >< p > sk:on("connection", function()
--sk: send(payload(1))
sk:send(retStr)
avsluta) < /p >< p > sk:on("sent", function()
sk:Close()
avsluta) < /p >< p > sk:connect(conf.server.port, conf.server.ip)
skriva ut ("Skicka..."... retStr)
avsluta < /p >< p > conf = {
WiFi = {ssid = 'Home', pwd = "< lösenord >"},
stift = {styrelsen = 3, temp = 6},
Server = {port = 80, ip ='192.168.0.105 '},
Secret = "hemliga",
} < /p >< p > wifiUp()
setPin() < /p >< p > tmr.alarm (0, 1000, 0, initADC)
TMR.alarm (0, 4000, 0, check)
TMR.alarm (1, 2000, 1, sendData) < /p >
NodeMCU Server LUA
< p >--setup SPI och Anslut displayen < br > funktion init_spi_display()
--Hårdvara SPI CLK = GPIO14
--Hårdvara SPI MOSI = GPIO13
--Hårdvara SPI MISO = GPIO12 (används inte)
--CS, D/C och RES kan tilldelas fritt tillgängliga GPIOs
lokala cs = 8--GPIO15, pull-down 10k till GND
lokala dc = 4--GPIO2
lokala res = 0--GPIO16 < /p >< p > spi.setup (1, spi. MASTER, spi. CPOL_LOW, spi. CPHA_LOW, 8, 8)
Disp = u8g.ssd1306_128x64_hw_spi (cs, dc, res)
slutet < /p >< p >--grafisk test komponenter
funktion förbereda()
Disp:setFont(U8G.font_6x10)
Disp:setFontRefHeightExtendedText()
Disp:setDefaultForegroundColor()
Disp:setFontPosTop()
avsluta < /p >< p >--init_i2c_display()
init_spi_display()
--disp: firstPage() < /p >< p > fungera showOLED (sensor, ctr)
Disp:firstPage()
Upprepa
förbereda()
--SANKI
--disp: setScale2x2()
--
--LINJE ~ + 9
--
Disp:drawStr(36, 3, WiFi.sta.getconfig())
Disp:drawStr(0, 15, "IP:".. WiFi.sta.getip())
Disp:drawStr(0, 24, "Mac:".. WiFi.sta.getmac())
om (wifi.ap.getip() ~ = noll) sedan
Disp:drawStr(0, 33, "AP:")
Disp:drawStr(30,32, WiFi.AP.getip())
slutet
om (ctr ~ = noll) sedan
Disp:drawStr(0, 42, "PWM:".. sensor)
Disp:drawStr(0, 51, "CTR:".. CTR)
slutet
--disp: undoScale()
tills disp:nextPage() == false
avsluta < /p >< p > wifi.setmode (wifi. STATION)
WiFi.sta.config ("Home", "< lösenord >") < /p >< p > led1 = 2
LED2 = 3
gpio.mode (led1, gpio. OUTPUT)
gpio.mode (led2, gpio. OUTPUT)
SRV=net.createServer (net. TCP)
SRV:listen(80,function(Conn)
Conn: on("receive", function(client,request)
lokala buf = "";
lokala _ _, metod, sökväg, vars = string.find (begäran "([A-Z] +) (. +)? (. +) HTTP");
IF(Method == Nil) sedan
_ _, metod, path = string.find (begäran "([A-Z] +) (. +) HTTP");
slutet
lokala _GET = {}
om (vars ~ = noll) sedan
för k, v i string.gmatch (vars, "(%w+)=(%w+) & *") gör
_GET [k] = v
slutet
slutet
BUF = buf.. "
Webbservern ESP8266 för < /p > < p > ";
BUF = buf.. "
< /p >< p > GPIO0 på OFF < /p >< p > ";
BUF = buf.. "
< /p >< p > GPIO2 på OFF < /p >< p > ";
lokala _on, _off = "",""
om (_GET.pin == "ON1") sedan
gpio.write (led1, gpio. HÖGA).
ElseIf (_GET.pin == "OFF1") sedan
gpio.write (led1, gpio. LÅG);
ElseIf (_GET.pin == "ON2") sedan
gpio.write (led2, gpio. HÖGA).
ElseIf (_GET.pin == "OFF2") sedan
gpio.write (led2, gpio. LÅG);
slutet
Skriv ut ("... Start...")
Print(_GET.PIN);
Print(_GET.sensor);
Print(_GET.Value);
--str = "Counter:"... _GET.CTR;
Print(_GET.CTR);
showOLED (_GET.sensor, _GET.ctr);
Skriv ut ("... END ..........");
client:send(BUF);
client:Close();
collectgarbage();
avsluta)
avsluta) < /p >< p > print(wifi.sta.getip()) < /p >
< br >