basic nodemcu stuff in lua/

This commit is contained in:
cqc
2021-07-24 00:53:12 -05:00
commit 9b342a7f34
10 changed files with 199 additions and 0 deletions

2
lua/Makefile Normal file
View File

@ -0,0 +1,2 @@
upload: init.lua
luatool.py --ip 192.168.1.174:2323 -vd -f init.lua

25
lua/adc.lua Normal file
View File

@ -0,0 +1,25 @@
function init()
adc.setup(adc.ADC1, 0, adc.ATTEN_11db)
adc.setwidth(adc.ADC1, 12)
end
function read(ch)
adc.setwidth(adc.ADC1, 12)
read = adc.read(adc.ADC1, ch)
end
function readall()
for i=0, 8 do
print("ADC1 read ch", i, "returned:", read(i));
end
end

1
lua/display.lua Normal file
View File

@ -0,0 +1 @@
dofile('lcd.lua')

12
lua/init.lua Normal file
View File

@ -0,0 +1,12 @@
spimaster = spi.master(spi.HSPI, {sclk = 18, mosi = 23, miso = 19}) -- HSPI (LCD/TF Card)
function tryfile(f)
if file.exists(f) then s,err=pcall(function() dofile(f) end) if not s then print(err) end
else print('ERR: "'..f..'" does not exist...') end
end
tryfile('display.lua')
tryfile('wifi.lua')
function ls() print(sjson.encode(file.list())) end

21
lua/lcd.lua Normal file
View File

@ -0,0 +1,21 @@
-- lcd
-- MOSI=GPIO23
-- SCK=GPIO18
-- CS=GPIO14
-- #RST=GPIO33
-- R/S=GPIO27
-- BL=GPIO32
-- enable backlight
gpio.config({gpio=32, dir=gpio.OUT, opendrain=0, pull=gpio.FLOATING})
gpio.write(32, 1)
disp=ucg.ili9341_18x240x320_hw_spi(spimaster, 14, 27, 33)
disp:begin(ucg.FONT_MODE_TRANSPARENT)
disp:clearScreen()
disp:setFont(ucg.font_ncenR12_tr);
disp:setColor(255, 255, 255);
disp:setColor(1, 255, 0,0);
disp:setPrintPos(0, 25)
disp:print("Hello World!")

4
lua/print.lua Normal file
View File

@ -0,0 +1,4 @@
function table_print(t)
return sjson.encode(t)
end

50
lua/telnet.lua Normal file
View File

@ -0,0 +1,50 @@
-- implement:
-- quit/ctrl-d disconnect
-- security?????
-- multiclient?
-- ssh????
-- environment??????????
-- a simple telnet server
-- restart server if needed
if telnet_srv ~= nil then
telnet_srv:close()
end
telnet_srv = net.createServer(net.TCP, 180)
telnet_srv:listen(23, function(socket)
local fifo = {}
local fifo_drained = true
local function sender(c)
if #fifo > 0 then
c:send(table.remove(fifo, 1))
else
fifo_drained = true
end
end
local function s_output(str)
table.insert(fifo, str)
if socket ~= nil and fifo_drained then
fifo_drained = false
sender(socket)
end
end
node.output(s_output, 1) -- re-direct output to function s_ouput.
socket:on("receive", function(c, l)
node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
end)
socket:on("disconnection", function(c)
node.output(nil) -- un-regist the redirect output function, output goes to serial
end)
socket:on("sent", sender)
print("Welcome to NodeMCU world.")
end)
print("Telnet server running...")

48
lua/wifi.lua Normal file
View File

@ -0,0 +1,48 @@
--local M, module = {}, ...
--_G[module] = M
hostname="doi-kontrol-m5core1"
--function M.init()
function sta_init()
--wifi.mode(wifi.STATION, true)
wifi.sta.on("start", function(ev, a) print("NodeMCU WiFi Start") end)
wifi.sta.on("start", function(ev, a) print("NodeMCU WiFi Stop") end)
wifi.sta.on("connected", function(ev, a) print("NodeMCU wifi connected! ssid:", a.ssid, "bssid:", a.bssid,
"channel:", a.channel, "auth:", a.auth) end)
wifi.sta.on("disconnected", function(ev, a) print("NodeMCU wifi disconnected! ssid:", a.ssid, "bssid:", a.bssid,
"reason:", a.reason) end)
wifi.sta.on("authmode_changed", function(ev, a) print("NodeMCU authmode_changed! old_mode:", a.old_mode,
"new_mode:", new_mode) end)
wifi.sta.on("got_ip", function(ev, info)
dofile('telnet.lua') -- TKTK TODO XXX security risk lol
print("NodeMCU got_ip! ip:", info.ip, "netmask", info.netmask,
"gw", info.gw) end)
wifi.start()
wifi.sta.sethostname("doi-kontrol-m5core1")
wifi.sta.config({ssid="departmentofinter.net", pwd="baguette2175bagel", auto=true}, true)
print("wifi_init done")
end
sta_list = [
{ssid="departmentofinter.net", pwd="baguette2175bagel", auto=true}
]
function staionap_init()
wifi.mode(wifi.STATIONAP, true)
wifi.sta.config({ssid="departmentofinter.net", pwd="baguette2175bagel", auto=true})
wifi.ap.config({ssid="cyberkontrol", pwd="baguette2175bagel", auth=wifi.AUTH_WPA2_PSK,
channel=11, hidden=false, max=4, becaon=100}, true)
wifi.ap.setip({ip=192.168.0.1, netmask=255.255.255.0, gateway=192.168.0.1, dns=1.1.1.1})
wifi.ap.sethostname(hostname)
end
init()
return init