Commencé à travailler sur le capteur d'humidité HTU21D pour Bolo. Ne marche pas du tout encore :-(

This commit is contained in:
Christian Zufferey
2019-12-14 13:39:36 +01:00
parent e2c4ec9966
commit 0699933487
6 changed files with 73 additions and 60 deletions

View File

@@ -1,62 +1,28 @@
-- Lit le convertisseur ADC connecté sur le transformateur de courant
-- pour mesurer le courant électrique de l'installation PV
print("\n 0_get_data.lua zf191024.1037 \n")
-- Lit le capteur I2C HTU21D de mesure d'humidité et de température
print("\n 0_get_data.lua zf191214.1337 \n")
-- Astuce de mesure:
-- On converti le courant en tension avec la résistance de charge du
-- transformateur de courant 1/800 et le mesure avec l'ADC
-- Au lieu de découper la sinusoïde en 100 parties, c'est à dire toutes
-- les 0.2ms (5'000x /s), pour en faire l'intégrale. On lit l'adc toutes
-- les 11ms (91x /s) donc beaucoup plus lentement.
-- Comme la sinusoïde fait 20ms et est répétitive, on balaye (par décalage)
-- statistiquement la sinusoïde.
-- On redresse l'alternance par rapport à la masse fictive (env 0.5),
-- ce qui nous permet d'estimer une valeur RMS du courant
-- quelque soit sa forme et on le somme sur 2.1 secondes
-- Les mesures min et max ne sont là juste pour vérifier que nous sommes
-- bien dans la plage de mesure avec le choix de la résistance de conversion
-- la conversion courant/tension/puissance est faite avec une simple régle de 3
-- https://cdn-shop.adafruit.com/datasheets/1899_HTU21D.pdf
-- Comparaison DHT22, AM2302, AM2320, AM2321, SHT71, HTU21D, Si7021, BME280
-- http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html
-- Il est compatible avec le capteur SI7021 mais pas avec la lib SI7021 du NodeMCU Lua :-(
-- source: https://github.com/famzah/nodemcu/tree/master/HTU21D-TLS
-- source2: https://github.com/tebben/NodeMCU
-- source3: https://github.com/codywon/NodeMCU-2
zpow_cal=401 --puissance mesurée de la charge étalon
zadc_cal=189 --valeur de l'adc pour zpow_cal
zadc_offset=548
zadc_sum=0 zadc_offset_sum=0 znb_mes=0
zadc_min=zadc_offset zadc_max=zadc_offset
if adc.force_init_mode(adc.INIT_ADC)
then
node.restart()
return
function read_mesure()
local sda, scl = 6, 5
i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
si7021.setup()
fwrev = si7021.firmware()
print(string.format("FW: %X\r\n", fwrev))
end
tmr_read_adc=tmr.create()
tmr_read_adc:alarm(11, tmr.ALARM_AUTO, function()
read_adc()
end)
tmr_calc_rms=tmr.create()
tmr_calc_rms:alarm(2.1*1000, tmr.ALARM_AUTO, function()
calc_rms()
end)
function read_adc()
zadc=adc.read(0)
if zadc<=zadc_min then zadc_min=zadc end
if zadc>=zadc_max then zadc_max=zadc end
zadc_offset_sum=zadc_offset_sum+zadc
zadc=zadc-zadc_offset if zadc<=0 then zadc=zadc*-1 end
zadc_sum=zadc_sum+zadc znb_mes=znb_mes+1
end
function calc_rms()
zadc_rms=math.floor(zadc_sum/znb_mes)
if zadc_rms<=8 then zadc_rms=0 end
zadc_offset=math.floor(zadc_offset_sum/znb_mes)
zpower=math.floor(zadc_rms*zpow_cal/zadc_cal)
if verbose then print(zadc_min,zadc_max,zadc_max-zadc_min,zadc_offset,zadc_rms,zpower.."W") end
zadc_min=zadc_offset zadc_max=zadc_offset
zadc_sum=0 zadc_offset_sum=0 znb_mes=0
zadc_min=zadc_offset zadc_max=zadc_offset
end
read_mesure()

View File

@@ -1,5 +1,5 @@
# Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom
# zf191201.2334
# zf191214.1235
# si luatool ne marche pas sur le MAC, il faut lire ceci:
# https://docs.google.com/document/d/1q64uK3IMOgEDdKaIAttbYuFt4GuLQ06k3FLeyfCsWLg/edit#heading=h.bmefcu67uwj0
@@ -12,11 +12,12 @@
# définitions à faire AVANT !
cd /Users/zuzu/Desktop/NodeMCU/NodeMCU_Lua/WIFI_sniffer/cret_project
export luatool_tty="/dev/cu.wchusbserial1410"
export zIP="192.168.0.200"
export zIP="192.168.0.113"
#export zIP="192.168.0.137"
export zport="23"
cd '/Users/zuzu/Google Drive/FamilleZ Share/FamilleZ/Papa/LUA/NodeMCU ESP8266/NodeMCU_Lua/WIFI_sniffer/cret_project'
cd '/Users/zuzu/Google Drive/FamilleZ Share/FamilleZ/Papa/LUA/NodeMCU ESP8266/NodeMCU_Lua/Mesures/humidity/bolo
'
export zIP="localhost"
export zport="2323"
ATTENTION: voir les tunnels tout à la fin !
@@ -33,7 +34,6 @@ for k,v in pairs(_G) do print(k,v) end
# commandes lua pour ce projet
telnet -rN $zIP $zport
wifi.eventmon.unregister(wifi.eventmon.AP_PROBEREQRECVED)
dofile("dir2.lua")
filec('dir2.lua')
dirc()

Binary file not shown.

View File

@@ -13,6 +13,8 @@
cd /Users/zuzu/Desktop/NodeMCU/NodeMCU_Lua/WIFI_sniffer/cret_project
export luatool_tty="/dev/cu.wchusbserial1410"
export zIP="192.168.0.200"
export zIP="192.168.1.122"
#export zIP="192.168.0.137"
export zport="23"
@@ -32,14 +34,40 @@ for k,v in pairs(_G) do print(k,v) end
# commandes lua pour ce projet
~.
export zIP="192.168.1.122"
./luatool.py --ip $zIP:$zport -f boot2.lua
export zIP="192.168.1.123"
./luatool.py --ip $zIP:$zport -f boot2.lua
export zIP="192.168.1.124"
./luatool.py --ip $zIP:$zport -f boot2.lua
telnet -rN $zIP $zport
node.restart()
telnet -rN $zIP $zport
wifi.eventmon.unregister(wifi.eventmon.AP_PROBEREQRECVED)
dofile("dir2.lua")
filec('dir2.lua')
filec('a1.lua')
dirc()
~.
zLED=0
gpio.mode(zLED, gpio.OUTPUT)
gpio.write(zLED, gpio.HIGH)
gpio.write(zLED, gpio.LOW)
print(3*4)
a=4
b=5
print(a*b)
print(a+b)
verbose=true
verbose=false

18
Mesures/temp/mario/b.lua Normal file
View File

@@ -0,0 +1,18 @@
-- Scripts pour tester du code lua
--[[
Commandes à envoyer via un terminal:
~.
./luatool.py --ip $zIP:$zport -f b.lua
telnet -rN $zIP $zport
dofile("b.lua")
]]
print("\n b.lua zf191203.2206 \n")
print(3*4)
a=44
b=555
print(a*b)
print(a+b)
print("toto")

View File

@@ -1,6 +1,6 @@
-- Scripts à charger après le boot pour démarrer son projet
print("\n boot2.lua zf191124.1922 \n")
print("\n boot2.lua zf191203.2214 \n")
function boot2()
second_chance=nil initz=nil boot=nil
@@ -29,6 +29,7 @@ function boot2()
collectgarbage()
--- f= "b.lua" if file.exists(f) then dofile(f) end
f= "web_srv2.lua" if file.exists(f) then dofile(f) end
f= "web_ide2.lua" if file.exists(f) then dofile(f) end
f=nil