Tania mocna lampa z czujnikiem ruchu (PiR), akumulatorem, fotoogniwem ładnie oświetla ale nie ma komunikacji WiFi więc uzupełniłem ten brak. Wersja druga została wzbogacona o czujnik promieniowania ultrafioletowego.
Taka autonomiczna lampa aż się prosi o ESP, Tasmotę i Home Assistant-a. Przecież czasami trzeba sprawdzić kiedy nastąpiło włączenie, jaki jest stan akumulatora itd.
Więc rozebrałem i uzupełniłem o ESP32 z Tasmotą
Menu główne Tasmota
- Teraz mierzy napięcie akumulatora oraz napięcie z fotoogniw. Jasność i ultra fiolet
- można sterować oświetleniem
- można uaktywnić lub wyłączyć PiR
- można badać kiedy PiR zadziałał
Wykorzystałem trzy istniejące druciki, które łączyły płytkę w lampie z płytką czujnika PiR
Zasilanie (czerwony) podłączyłem bezpośrednio do punktu 3,3 V
Biały sterujący od strony PiR podłączyłem do GPIO19 a od strony Lampy do GPIO18
Ustawienia TASMOTA
- GPIO18 wprost steruje LEDem przewodem białym.
- GPIO19 oczekuje na sygnał z PiR przewodem żółtym
- GPIO20 to wirtualny przekaźnik, który Tasmota automatycznie ustawia według Switch_d a nam nie jest to potrzebne
- Stan GPIO14 (też wirtualny) decyduje o tym, czy PiR włączy LED czy nie.
- GPIO34 mierzy napięcie na baterii przez opornik 3,3M? i do masy też jest podłączone przez opornik 3,3M? (dzielnik 1/2)
- GPIO35 mierzy napięcie na fotoogniwie przez opornik 3,3M? i do masy też jest podłączone przez opornik 3,3M? (dzielnik 1/2)
- ADC Range 3 mierzy jasność z fotodiody i wymaga „odwrotnej” kalibracji bo sygnał się zwiększa kiedy robi się ciemniej
- ADC4 mierzy UV ze specjalnego modułu UV
Pomiary napięcia ESP32 wykonuje dwoma pinami GPIO34 i GPIO35 ale uwaga wybieramy [ ADC range ] nie [ADC input ] dla obydwu kanałów zastosowałem dzielnik napięcia z dwóch jednakowych oporników 3,3 M?. Pomiar jasności jest wprost z fotodiody na pin 33 a ultrafiolet jest mierzony na styku 39 (GPIO39) wprost z modułu pomiaru UV.
240nm-370nm Ultraviolet Intensity Sensor.
Kalibracja woltomierzy: AdcParam1 6,1900,2600,310,413 podobnie kanał drugi: AdcParam2 6,1900,2600,305,409 pomiar jasności: AdcParam3 6,4000,100,0,999 pomiar ultrafioletu UV: AdcParam4 6,0,1000,0,100
Polecenie, które blokuje domyślne powiązanie Switch -> Power SwitchMode1 15 inne ważne: TelePeriod ( nie ustawiaj na 300 ) DeepSleepTime
rule
Sterowanie, które fabrycznie było na sztywno: „PiR wykrył ruch to włączał światło” na ustawiony czas. Teraz PiR daje sygnał ale my decydujemy czy LED się ma włączyć czy nie. To osiągamy definiując za pomocą konsoli Tasmoty dwie reguły [ rule ]
- ON power3#state>=0 DO VAR1 %VALUE% ENDON
- ON POWER2#state>=0 DO IF (VAR1==1) POWER1 %VALUE% ENDIF ENDON
Rules dbające o akumulator 400cV => 4.00V
on tele-Analog#Range1<400 do if (MEM1!=300) MEM1 300; DeepSleepTime 300; POWER2 0 endif endon on tele-Analog#Range1>=400 do if (MEM1!=0) MEM1 0; DeepSleepTime 0 endif endon
Home Assistant
Pulpit sterujący to Homeassistant, ktory komunikuje się z ESP32 w lampie za pomocą MQTT.