Od dziecka intrygowało mnie to "dziwne kółeczko" z czarnym paskiem w liczniku, które kręciło się szybciej wtedy, gdy wzrastał w domu pobór energii elektrycznej. Wraz ze zwiększaniem się mojej świadomości technicznej, tajemnica "kółeczka" (a później czerwonej diody) stawała się bardziej oczywista i mniej tajemnicza, by wreszcie wraz z nastaniem epoki IoT, posłużyć mi do przygotowania zabawki, która skutecznie pomoże zwizualizować pobór energii w moim domu.
Przedstawiony przeze mnie projekt ma charakter 'proof of concept'. Chciałem dzięki niemu zweryfikować, czy z wykorzystaniem łatwo dostępnych podzespołów, można stworzyć urządzenie, które będzie w sposób stabilny zliczało impulsy, i wykorzystując dobrodziejstwa SoC wysyłało je w świat w celu dalszej obróbki.
Zasada działania
Większość liczników energii elektrycznej (i nie tylko), posiada element pozwalający na łatwe zliczanie zużytego medium. I tak:
- w elektromechanicznych licznikach energii elektrycznej jest to zazwyczaj ruchome kółko z czarnym paskiem
- w elektronicznych licznikach energii elektrycznej jest to najczęściej czerwona dioda
- w licznikach gazu sprawa ma się podobnie
- w licznikach wody, również jest kółko, choć zainstalowane w innej płaszczyźnie, niż ma to miejsce w pozostałych przypadkach.
Bez względu na formę "kontrolki", każdy z liczników określa ile obrotów/impulsów odpowiada ilości zużytej energii. W przypadku mojego licznika energii elektrycznej, 6400 impulsów diody sygnalizacyjnej odpowiada zużyciu 1kWh. Informacja na ten temat jest zazwyczaj w dokumentacji licznika, i/lub na obudowie samego urządzenia.
Konstrukcja
Sercem urządzenia jest, a jakże, ESP8266. Tym razem w wersji ESP01 (bo akurat taki miałem pod ręką). W samym module wgrany firmware z NodeMCU, i prosty skrypt napisany w lua, odpowiedzialny za zliczanie impulsów, oraz wysyłanie ich przez MQTT do Cayenne (cayenne.mydevices.com).
Na jakiś czas, na potrzeby tej prezentacji udostępniłem na Cayenne dashboard, na którym można obserwować aktualne zużycie energii w moim miekszaniu: https://cayenne.mydevices.com/shared/59d9f247.../project/aac0daeb-cd30-416a-93b5-436d718e9416.
Oczywiście nic nie stoi na przeszkodzie, by wysyłać dane do dowolnego innego storage'a (w pierwszej wersji, dane pompowałem w domowy serwer HTTP postawiony na RPi)
Układ zasilany jest małym zasilaczem impulsowym 5V wydobytym z niepotrzebnej ładowarki. Za obniżenie napięcia do 3,3V odpowiada AMS1117.
Dlaczego LUA, a nie C++? Podoba mi się pomysł przełożenia rozwiązań znanych choćby z NodeJS na warunki uC. Jest to dla mnie nowość i postanowiłem dać LUA szansę. Jeśli okaże się, że nie jest to stabilne rozwiązanie, rozważę zmianę platformy. Ponadto, w skrypcie zaimplementowałem prosty mechanizm umożliwiający aktualizację oprogramowania OTA, dzięki czemu wszelkie zmiany w firmware mogę wprowadzać bez konieczności wyjmowania układu ze skrzynki licznikowej
Ze względu na banalność samego układu, darowałem sobie udostępnianie schematów i kodu źródłowego. Niemniej, jeśli będzie ktoś zainteresowany, mogę udostępnić link do repozytorium.
Sensor
Jako sensor wykorzystałem gotowy moduł fotorezystora z komparatorem, oraz regulowanym napięciem odniesienia. Dzięki regulacji udało mi się ustawić czułość układu na poziomie, który rejestruje rozbłyski diody, a zarazem nie jest zakłócany przez światło zewnętrzne spoza licznika. Sygnał podawany jest na GPIO0 w ESP8266.
Instalacja
Zasilacz, ESP, oraz moduł komparatora, są zamknięte w obudowie starego zasilacza do laptopa. Sensor osadzony jest w plastikowej obudowie, którą z kolei przymocowałem do obudowy licznika energii na samoprzylepnym rzepie.
Rozwój
Jak wspomniałem na początku - układ jest obecnie w fazie testów. Docelowo planuję wprowadzić kilka usprawnień.
- przygotowanie dedykowanego PCB,
- zamknięcie wszystkiego w obudowie umożliwiającej montaż na szynie DIN w skrzynce licznika
- przygotowanie sensora, który mógłby współpracować z innymi rodzajami liczników (zintegrowanie nadajnika, oraz ew. odpowiednia obróbka sygnału sensora, by był on "zjadalny" dla wejścia cyfrowego)

Przedstawiony przeze mnie projekt ma charakter 'proof of concept'. Chciałem dzięki niemu zweryfikować, czy z wykorzystaniem łatwo dostępnych podzespołów, można stworzyć urządzenie, które będzie w sposób stabilny zliczało impulsy, i wykorzystując dobrodziejstwa SoC wysyłało je w świat w celu dalszej obróbki.
Zasada działania
Większość liczników energii elektrycznej (i nie tylko), posiada element pozwalający na łatwe zliczanie zużytego medium. I tak:
- w elektromechanicznych licznikach energii elektrycznej jest to zazwyczaj ruchome kółko z czarnym paskiem
- w elektronicznych licznikach energii elektrycznej jest to najczęściej czerwona dioda
- w licznikach gazu sprawa ma się podobnie
- w licznikach wody, również jest kółko, choć zainstalowane w innej płaszczyźnie, niż ma to miejsce w pozostałych przypadkach.
Bez względu na formę "kontrolki", każdy z liczników określa ile obrotów/impulsów odpowiada ilości zużytej energii. W przypadku mojego licznika energii elektrycznej, 6400 impulsów diody sygnalizacyjnej odpowiada zużyciu 1kWh. Informacja na ten temat jest zazwyczaj w dokumentacji licznika, i/lub na obudowie samego urządzenia.
Konstrukcja
Sercem urządzenia jest, a jakże, ESP8266. Tym razem w wersji ESP01 (bo akurat taki miałem pod ręką). W samym module wgrany firmware z NodeMCU, i prosty skrypt napisany w lua, odpowiedzialny za zliczanie impulsów, oraz wysyłanie ich przez MQTT do Cayenne (cayenne.mydevices.com).
Na jakiś czas, na potrzeby tej prezentacji udostępniłem na Cayenne dashboard, na którym można obserwować aktualne zużycie energii w moim miekszaniu: https://cayenne.mydevices.com/shared/59d9f247.../project/aac0daeb-cd30-416a-93b5-436d718e9416.
Oczywiście nic nie stoi na przeszkodzie, by wysyłać dane do dowolnego innego storage'a (w pierwszej wersji, dane pompowałem w domowy serwer HTTP postawiony na RPi)
Układ zasilany jest małym zasilaczem impulsowym 5V wydobytym z niepotrzebnej ładowarki. Za obniżenie napięcia do 3,3V odpowiada AMS1117.
Dlaczego LUA, a nie C++? Podoba mi się pomysł przełożenia rozwiązań znanych choćby z NodeJS na warunki uC. Jest to dla mnie nowość i postanowiłem dać LUA szansę. Jeśli okaże się, że nie jest to stabilne rozwiązanie, rozważę zmianę platformy. Ponadto, w skrypcie zaimplementowałem prosty mechanizm umożliwiający aktualizację oprogramowania OTA, dzięki czemu wszelkie zmiany w firmware mogę wprowadzać bez konieczności wyjmowania układu ze skrzynki licznikowej
Ze względu na banalność samego układu, darowałem sobie udostępnianie schematów i kodu źródłowego. Niemniej, jeśli będzie ktoś zainteresowany, mogę udostępnić link do repozytorium.
Sensor
Jako sensor wykorzystałem gotowy moduł fotorezystora z komparatorem, oraz regulowanym napięciem odniesienia. Dzięki regulacji udało mi się ustawić czułość układu na poziomie, który rejestruje rozbłyski diody, a zarazem nie jest zakłócany przez światło zewnętrzne spoza licznika. Sygnał podawany jest na GPIO0 w ESP8266.
Instalacja
Zasilacz, ESP, oraz moduł komparatora, są zamknięte w obudowie starego zasilacza do laptopa. Sensor osadzony jest w plastikowej obudowie, którą z kolei przymocowałem do obudowy licznika energii na samoprzylepnym rzepie.
Rozwój
Jak wspomniałem na początku - układ jest obecnie w fazie testów. Docelowo planuję wprowadzić kilka usprawnień.
- przygotowanie dedykowanego PCB,
- zamknięcie wszystkiego w obudowie umożliwiającej montaż na szynie DIN w skrzynce licznika
- przygotowanie sensora, który mógłby współpracować z innymi rodzajami liczników (zintegrowanie nadajnika, oraz ew. odpowiednia obróbka sygnału sensora, by był on "zjadalny" dla wejścia cyfrowego)




Cool? Ranking DIY