- essayé de refactorisé la mesure de distance avec le module à ultra-son.
Mais je n'arrive toujours pas à descendre en dessous des 9cm, pourtant j'ai bien essayé de 'cacher' en RAM les points rapides :-(
This commit is contained in:
39
Minid1 OLED/hauteur_eau/station_mesure_new/disp_oled.lua
Normal file
39
Minid1 OLED/hauteur_eau/station_mesure_new/disp_oled.lua
Normal file
@@ -0,0 +1,39 @@
|
||||
-- Affiche plusieurs lignes sur le mini display OLED du MiniD1
|
||||
-- Source: https://wiki.wemos.cc/products:d1_mini_shields:oled_shield
|
||||
-- font_10x20,font_6x10,font_7x13,font_8x13,font_9x15,font_chikita
|
||||
print("\n disp_oled.lua zf180826.1807 \n")
|
||||
|
||||
-- config pour le mini display OLED du Wemos Mini_D1
|
||||
pin_scl = 1
|
||||
pin_sda = 2
|
||||
disp_sla = 0x3c
|
||||
|
||||
function init_OLED(sda, scl)
|
||||
i2c.setup(0, sda, scl, i2c.SLOW)
|
||||
disp = u8g.ssd1306_64x48_i2c(disp_sla)
|
||||
disp:setFontRefHeightExtendedText()
|
||||
disp:setDefaultForegroundColor()
|
||||
end
|
||||
|
||||
-- font_10x20,font_6x10,font_7x13,font_8x13,font_9x15,font_chikita
|
||||
--..string.char(233)..":") -- pour afficher un é !
|
||||
function draw()
|
||||
disp:setFont(u8g.font_10x20)
|
||||
disp:setFontPosTop()
|
||||
disp:drawStr(0,00,oled_line1)
|
||||
disp:setFont(u8g.font_chikita)
|
||||
disp:setFontPosTop()
|
||||
disp:drawStr(0,17,oled_line2)
|
||||
disp:drawStr(0,24,oled_line3)
|
||||
disp:drawStr(0,31,oled_line4)
|
||||
disp:drawStr(0,38,oled_line5)
|
||||
end
|
||||
|
||||
function disp_oled()
|
||||
disp:firstPage()
|
||||
repeat
|
||||
draw()
|
||||
until disp:nextPage() == false
|
||||
end
|
||||
|
||||
init_OLED(pin_sda, pin_scl)
|
||||
19
Minid1 OLED/hauteur_eau/station_mesure_new/initz.lua
Normal file
19
Minid1 OLED/hauteur_eau/station_mesure_new/initz.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
-- super mini bootstrap
|
||||
print("\n init_minizf1.lua zf181024.1922 \n")
|
||||
|
||||
tmr.alarm(0, 7000, tmr.ALARM_SINGLE, function()
|
||||
|
||||
dofile("disp_oled.lua")
|
||||
oled_line1="RESET"
|
||||
oled_line2=""
|
||||
oled_line3=""
|
||||
oled_line4=""
|
||||
oled_line5=""
|
||||
disp_oled()
|
||||
|
||||
--dofile("wifi_ap_start.lua")
|
||||
--dofile("telnet_srv.lua")
|
||||
dofile("start_demo.lua")
|
||||
--dofile("ir_send.lua")
|
||||
|
||||
end)
|
||||
17
Minid1 OLED/hauteur_eau/station_mesure_new/oldies/cat.lua
Normal file
17
Minid1 OLED/hauteur_eau/station_mesure_new/oldies/cat.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
-- fonction cat() pour afficher le contenu d'un fichier dans la flash
|
||||
print("\n cat.lua zf180826.1109 \n")
|
||||
|
||||
function cat(zfile)
|
||||
print("\n"..zfile.."\n-------------------------------")
|
||||
|
||||
zfilei = file.open(zfile, "r")
|
||||
i=1
|
||||
zline=file.readline()
|
||||
repeat
|
||||
print(i..": "..string.sub(zline,1,string.len(zline)-1))
|
||||
i=i+1 zline=file.readline()
|
||||
until zline== nil
|
||||
file.close(zfilei)
|
||||
|
||||
print("-------------------------------")
|
||||
end
|
||||
15
Minid1 OLED/hauteur_eau/station_mesure_new/oldies/dir.lua
Normal file
15
Minid1 OLED/hauteur_eau/station_mesure_new/oldies/dir.lua
Normal file
@@ -0,0 +1,15 @@
|
||||
-- fonction dir() pour afficher les fichiers dans la flash
|
||||
print("\n dir.lua zf180826.1019 \n")
|
||||
|
||||
function dir()
|
||||
print("\n-------------------------------")
|
||||
l=file.list() i=0
|
||||
for k,v in pairs(l) do
|
||||
i=i+v
|
||||
print(k..string.rep(" ",19-string.len(k)).." : "..v.." bytes")
|
||||
end
|
||||
print("-------------------------------")
|
||||
print('\nUsed: '..i..' bytes\nusage: dofile("file.lua")\n')
|
||||
end
|
||||
|
||||
dir()
|
||||
@@ -0,0 +1,44 @@
|
||||
-- Serveur telnet pour connexion en remote WIFI
|
||||
print("\n telnet_srv.lua zf180826.1020 \n")
|
||||
|
||||
-- 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, 0) -- 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...\nUsage: telnet -r ip\n")
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
-- Petit script pour envoyer quelque chose sur un serveur WEB
|
||||
print("\n web_cli.lua zf180828.1849 \n")
|
||||
|
||||
function disp_send()
|
||||
http.get("http://192.168.4.1/?line1="..zlength.."m", nil, function(code, data)
|
||||
if (code < 0) then
|
||||
-- print("HTTP request failed")
|
||||
else
|
||||
-- print(code, data)
|
||||
end
|
||||
end)
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
-- Démarre le WIFI en mode AP
|
||||
print("\n wifi_ap_start.lua zf180824.2000 \n")
|
||||
|
||||
local zmodewifi=wifi.getmode()
|
||||
if zmodewifi == wifi.NULLMODE then
|
||||
print("WIFI mode AP only")
|
||||
wifi.setmode(wifi.SOFTAP)
|
||||
elseif zmodewifi == wifi.STATION then
|
||||
print("WIFI mode AP+CLI")
|
||||
wifi.setmode(wifi.STATIONAP)
|
||||
end
|
||||
wifi.ap.config({ ssid = "NodeMCU "..wifi.ap.getmac(), pwd = "12345678" })
|
||||
dofile("wifi_info.lua")
|
||||
@@ -0,0 +1,10 @@
|
||||
-- Démarre le WIFI en mode AP
|
||||
print("\n wifi_ap_stop.lua zf180824.2000 \n")
|
||||
|
||||
local zmodewifi=wifi.getmode()
|
||||
if zmodewifi == wifi.SOFTAP then
|
||||
wifi.setmode(wifi.NULLMODE)
|
||||
elseif zmodewifi == wifi.STATIONAP then
|
||||
wifi.setmode(wifi.STATION)
|
||||
end
|
||||
print("WIFI AP arrêté")
|
||||
@@ -0,0 +1,4 @@
|
||||
-- Petit script pour configurer le client WIFI du NodeMCU
|
||||
print("\n wifi_cli_conf.lua zf180824.2000 \n")
|
||||
|
||||
wifi.sta.config{ssid="Hugo", pwd="tototutu", save=true}
|
||||
@@ -0,0 +1,14 @@
|
||||
-- Petit script pour connecter le NodeMCU sur un AP Wifi avec l'accompte sauvé en EEPROM
|
||||
print("\n wifi_cli_start.lua zf180824.2000 \n")
|
||||
|
||||
local zmodewifi=wifi.getmode()
|
||||
if zmodewifi == wifi.NULLMODE then
|
||||
print("WIFI mode CLI only")
|
||||
wifi.setmode(wifi.STATION)
|
||||
elseif zmodewifi == wifi.SOFTAP then
|
||||
print("WIFI mode AP+CLI")
|
||||
wifi.setmode(wifi.STATIONAP)
|
||||
end
|
||||
wifi.sta.autoconnect(1)
|
||||
wifi.sta.connect()
|
||||
dofile("wifi_get_ip.lua")
|
||||
@@ -0,0 +1,10 @@
|
||||
-- Démarre le WIFI en mode AP
|
||||
print("\n wifi_cli_stop.lua zf180824.2000 \n")
|
||||
|
||||
local zmodewifi=wifi.getmode()
|
||||
if zmodewifi == wifi.STATION then
|
||||
wifi.setmode(wifi.NULLMODE)
|
||||
elseif zmodewifi == wifi.STATIONAP then
|
||||
wifi.setmode(wifi.SOFTAP)
|
||||
end
|
||||
print("WIFI CLI arrêté")
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Petit script pour démarrer le mode configuration WIFI du NodeMCU
|
||||
print("\n wifi_cnf_start.lua zf180824.2000 \n")
|
||||
|
||||
print("\nwifi config http://192.168.4.1\n")
|
||||
dofile("wifi_get_ip.lua")
|
||||
enduser_setup.start()
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Petit script pour arrêter le mode configuration WIFI du NodeMCU
|
||||
print("\n wifi_cnf_stop.lua zf180824.2000 \n")
|
||||
|
||||
enduser_setup.stop()
|
||||
wifi.sta.autoconnect(1)
|
||||
wifi.sta.connect()
|
||||
@@ -0,0 +1,12 @@
|
||||
-- Petit script pour obtenir l'adresse IP du NodeMCU connecté sur un AP Wifi
|
||||
print("\n wifi_get_ip.lua zf180824.2000 \n")
|
||||
|
||||
wifitimer1=tmr.create()
|
||||
tmr.alarm(wifitimer1, 1000, tmr.ALARM_AUTO , function()
|
||||
if wifi.sta.getip() == nil then
|
||||
print("Connecting to AP...")
|
||||
else
|
||||
tmr.stop(wifitimer1)
|
||||
dofile("wifi_info.lua")
|
||||
end
|
||||
end)
|
||||
@@ -0,0 +1,30 @@
|
||||
-- Petit script pour afficher les infos actuel du WIFI
|
||||
print("\n wifi_info.lua zf180824.2000 \n")
|
||||
|
||||
local zmodewifi=wifi.getmode()
|
||||
|
||||
--wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP
|
||||
|
||||
if zmodewifi == wifi.NULLMODE then
|
||||
print("WIFI OFF")
|
||||
elseif zmodewifi == wifi.STATION then
|
||||
print("WIFI mode CLI")
|
||||
print("Connected IP:\n",wifi.sta.getip())
|
||||
do
|
||||
local sta_config=wifi.sta.getconfig(true)
|
||||
print(string.format("Current client config:\n\tssid:\"%s\"\tpassword:\"%s\"\n\tbssid:\"%s\"\tbssid_set:%s", sta_config.ssid, sta_config.pwd, sta_config.bssid, (sta_config.bssid_set and "true" or "false")))
|
||||
end
|
||||
elseif zmodewifi == wifi.SOFTAP then
|
||||
print("WIFI mode AP")
|
||||
print("AP MAC:\n\t"..wifi.ap.getmac())
|
||||
print("AP IP:\n\t"..wifi.ap.getip())
|
||||
elseif zmodewifi == wifi.STATIONAP then
|
||||
print("WIFI mode CLI+AP")
|
||||
print("Connected IP:\n",wifi.sta.getip())
|
||||
do
|
||||
local sta_config=wifi.sta.getconfig(true)
|
||||
print(string.format("Current client config:\n\tssid:\"%s\"\tpassword:\"%s\"\n\tbssid:\"%s\"\tbssid_set:%s", sta_config.ssid, sta_config.pwd, sta_config.bssid, (sta_config.bssid_set and "true" or "false")))
|
||||
end
|
||||
print("AP MAC: "..wifi.ap.getmac())
|
||||
print("AP IP: "..wifi.ap.getip())
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
-- Déconnecte le WIFI
|
||||
print("\n wifi_off.lua zf180822.0959 \n")
|
||||
|
||||
wifi.setmode(wifi.NULLMODE)
|
||||
|
||||
--[[
|
||||
print(wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP)
|
||||
print(wifi.getmode())
|
||||
]]
|
||||
@@ -0,0 +1,5 @@
|
||||
-- Exemple de petit script pour démarrer le WIFI
|
||||
print("\n wifi_start.lua zf180824.2000 \n")
|
||||
|
||||
dofile("wifi_cli_start.lua")
|
||||
dofile("wifi_ap_start.lua")
|
||||
12
Minid1 OLED/hauteur_eau/station_mesure_new/rm_files.lua
Normal file
12
Minid1 OLED/hauteur_eau/station_mesure_new/rm_files.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
-- pour effacer TOUS les fichiers qui se trouve dans la flash du NodeMCU
|
||||
|
||||
print("\n rm_files.lua zf180907.1511 \n")
|
||||
|
||||
|
||||
l=file.list() i=0
|
||||
for k,v in pairs(l) do
|
||||
i=i+v
|
||||
file.remove(k)
|
||||
end
|
||||
print("-------------------------------")
|
||||
print("\nC'est tout effaced :-) \n")
|
||||
28
Minid1 OLED/hauteur_eau/station_mesure_new/start_demo.lua
Normal file
28
Minid1 OLED/hauteur_eau/station_mesure_new/start_demo.lua
Normal file
@@ -0,0 +1,28 @@
|
||||
-- Permet de démarrer une petite démo simplement via telnet
|
||||
print("\n start_demo1.lua zf181024.1922 \n")
|
||||
|
||||
dofile("disp_oled.lua")
|
||||
|
||||
oled_line1="DEMO"
|
||||
oled_line2=""
|
||||
oled_line3=""
|
||||
oled_line4=""
|
||||
oled_line5=""
|
||||
disp_oled()
|
||||
|
||||
function disp_mesure ()
|
||||
print(zlength)
|
||||
oled_line1=zlength.." m"
|
||||
oled_line2=""
|
||||
oled_line3=""
|
||||
oled_line4=""
|
||||
oled_line5="181024.1922"
|
||||
disp_oled()
|
||||
-- disp_send()
|
||||
end
|
||||
|
||||
--dofile("web_cli.lua")
|
||||
|
||||
dofile("ultra_son.lua")
|
||||
tmr.alarm(detectortimer1, 1000, tmr.ALARM_AUTO, zmesure_pulse)
|
||||
|
||||
26
Minid1 OLED/hauteur_eau/station_mesure_new/test_speed.lua
Normal file
26
Minid1 OLED/hauteur_eau/station_mesure_new/test_speed.lua
Normal file
@@ -0,0 +1,26 @@
|
||||
print("\n test_speed.lua zf181026.1233 \n")
|
||||
|
||||
local pin_ir_send = 8
|
||||
gpio.mode(pin_ir_send,gpio.OUTPUT)
|
||||
local write = gpio.write
|
||||
write(pin_ir_send, 0)
|
||||
|
||||
function pulse_ir()
|
||||
local i,a
|
||||
for i = 1,10 do
|
||||
|
||||
t1=tmr.now()
|
||||
|
||||
write(pin_ir_send, 1)
|
||||
-- a=1 a=1 a=1 a=1
|
||||
write(pin_ir_send, 0)
|
||||
a=1 a=1 a=1
|
||||
|
||||
t2=tmr.now()
|
||||
print("durée: "..t2-t1-294)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
sendir_tmr1=tmr.create()
|
||||
tmr.alarm(sendir_tmr1, 3000, tmr.ALARM_AUTO, pulse_ir)
|
||||
50
Minid1 OLED/hauteur_eau/station_mesure_new/ultra_son.lua
Normal file
50
Minid1 OLED/hauteur_eau/station_mesure_new/ultra_son.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
-- Mesure la distance avec le module ultra-son
|
||||
print("\n ultra_son.lua zf181026.1355 \n")
|
||||
|
||||
--Parametres pour le module ultra son
|
||||
local ztrig=5
|
||||
gpio.mode(ztrig, gpio.OUTPUT)
|
||||
local fast_write = gpio.write
|
||||
fast_write(ztrig, 0)
|
||||
|
||||
local zecho=6
|
||||
gpio.mode(zecho, gpio.INT, gpio.PULLUP)
|
||||
detectortimer1=tmr.create()
|
||||
detectortimer2=tmr.create()
|
||||
local fast_read = gpio.read
|
||||
|
||||
local ultra_son_start=0
|
||||
local ultra_son_stop=0
|
||||
|
||||
--Function pour envoyer la pulse
|
||||
function zmesure_pulse()
|
||||
--t1=tmr.now()
|
||||
fast_write(ztrig, 1)
|
||||
fast_write(ztrig, 0)
|
||||
--t2=tmr.now()
|
||||
--print("durée: "..t2-t1-314)
|
||||
end
|
||||
|
||||
--Fonction pour mesurer la pulse
|
||||
function zmesure()
|
||||
--print("pin: "..gpio.read(zecho))
|
||||
if fast_read(zecho)==1 then
|
||||
ultra_son_start=tmr.now()
|
||||
else
|
||||
ultra_son_stop=tmr.now()
|
||||
print("Delta: "..ultra_son_stop-ultra_son_start)
|
||||
-- zlength=math.floor(480*(ultra_son_stop-ultra_son_start)/2/10000)/100
|
||||
zlength=480*(ultra_son_stop-ultra_son_start)/2/10000
|
||||
-- if zlength>6 then zlength=0 end
|
||||
disp_mesure()
|
||||
end
|
||||
end
|
||||
|
||||
gpio.trig(zecho,"both",zmesure)
|
||||
|
||||
|
||||
|
||||
-- à commenter après les tests de perf
|
||||
function disp_mesure() print(zlength) end
|
||||
tmr.alarm(detectortimer1, 1000, tmr.ALARM_AUTO, zmesure_pulse)
|
||||
|
||||
Reference in New Issue
Block a user