Spisu treści:

Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak: 5 kroków
Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak: 5 kroków

Wideo: Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak: 5 kroków

Wideo: Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak: 5 kroków
Wideo: Suzuki SX4 S-Cross Hybrid to miękka hybryda, przekonaj się czy to jest auto dla ciebie #test #opinia 2024, Lipiec
Anonim
Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak
Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak
Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak
Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak

Jeśli martwisz się o zużycie energii lub jesteś trochę frajerem, prawdopodobnie chcesz zobaczyć dane ze swojego fantazyjnego nowego licznika cyfrowego na swoim smartfonie.

W tym projekcie uzyskamy aktualne dane z belgijskiego lub holenderskiego cyfrowego licznika energii elektrycznej i gazu i prześlemy je do Thingspeak. Dane te obejmują bieżące i dzienne zużycie i wtrysk energii (jeśli masz panele słoneczne), napięcia i prądy oraz zużycie gazu (jeśli cyfrowy licznik gazu jest podłączony do licznika energii elektrycznej). Za pomocą aplikacji wartości te można następnie odczytać w czasie rzeczywistym na smartfonie.

Działa z belgijskimi lub holenderskimi licznikami cyfrowymi, które są zgodne z protokołem DSMR (holenderskimi wymaganiami dotyczącymi inteligentnych liczników), które powinny być wszystkimi najnowszymi licznikami. Jeśli mieszkasz gdzie indziej, Twój glukometr prawdopodobnie użyje innego protokołu. Obawiam się, że ten Instructable jest nieco ograniczony regionalnie.

Wykorzystamy port P1 miernika, który akceptuje kabel RJ11/RJ12, potocznie zwany kablem telefonicznym. Upewnij się, że instalator miernika aktywował port P1. Na przykład dla Fluvius w Belgii postępuj zgodnie z tymi instrukcjami.

Do przetwarzania danych i przesyłania do internetu używamy ESP8266, czyli taniego mikroczipa z wbudowanym Wi-Fi. Kosztuje tylko około 2 dolarów. Ponadto można go programować za pomocą środowiska Arduino IDE. Przechowujemy dane w chmurze na Thingspeak, który jest darmowy dla maksymalnie czterech kanałów. W tym projekcie używamy tylko jednego kanału. Dane można następnie wyświetlić na smartfonie za pomocą aplikacji takiej jak IoT ThingSpeak.

Części:

  • Jeden ESP8266, taki jak nodemcu v2. Zauważ, że nodemcu v3 jest zbyt szeroki dla standardowej płytki prototypowej, więc wolę v2.
  • Kabel micro USB na USB.
  • Ładowarka USB.
  • Jeden tranzystor NPN BC547b.
  • Dwa rezystory 10k i jeden rezystor 1k.
  • Jedno złącze śrubowe RJ12.
  • Deska do krojenia chleba.
  • Przewody połączeniowe.
  • Opcjonalnie: jeden kondensator 1nF.

W sumie kosztuje to około 15 EUR na AliExpress lub podobne. Szacunek bierze pod uwagę, że niektóre elementy, takie jak rezystory, tranzystory i przewody, są dostarczane w znacznie większych ilościach niż potrzebujesz do tego projektu. Więc jeśli masz już zestaw komponentów, będzie taniej.

Krok 1: Zapoznanie się z ESP8266

Wybrałem NodeMCU v2, ponieważ nie jest wymagane lutowanie i ma złącze micro USB, które pozwala na łatwe programowanie. Zaletą NodeMCU v2 nad NodeMCU v3 jest to, że jest wystarczająco mały, aby zmieścić się na płytce stykowej i pozostawić wolne otwory z boku, aby wykonać połączenia. Lepiej więc unikać NodeMCU v3. Jeśli jednak wolisz inną płytę ESP8266, to również jest w porządku.

ESP8266 można łatwo zaprogramować za pomocą Arduino IDE. Istnieją inne instruktaże wyjaśniające to szczegółowo, więc będę tutaj bardzo krótko.

  • Najpierw pobierz Arduino IDE.
  • Druga instalacja wsparcia dla płyty ESP8266. W menu Plik - Preferencje - Ustawienia dodaj adres URL https://arduino.esp8266.com/stable/package_esp8266com_index.json do dodatkowych adresów URL menedżera tablicy. Następnie w menu Tools-Board-Boards Manager zainstaluj esp8266 by esp8266 community.
  • Po trzecie wybierz płytę najbliżej twojego ESP8266. W moim przypadku wybrałem NodeMCU v1.0 (moduł ESP 12-E).
  • Na koniec wybierz w Narzędzia - Rozmiar Flash, rozmiar, który zawiera SPIFFS, na przykład 4M (1M SPIFFS). W tym projekcie używamy SPIFFS (SPI Flash File System) do przechowywania dziennych wartości energii, aby nie zostały utracone, jeśli ESP8266 straci moc, a nawet jeśli zostanie przeprogramowany.

Teraz mamy wszystko do zaprogramowania ESP8266! Omówimy rzeczywisty kod w późniejszym kroku. Najpierw założymy konto Thingspeak.

Krok 2: Utwórz konto i kanał Thingspeak

Wejdź na https://thingspeak.com/ i utwórz konto. Po zalogowaniu kliknij przycisk Nowy kanał, aby utworzyć kanał. W ustawieniach kanału wypełnij nazwę i opis, jak chcesz. Następnie nazywamy pola kanałów i aktywujemy je, klikając pola wyboru po prawej stronie. Jeśli użyjesz mojego kodu bez zmian, pola są następujące:

  • Pole 1: dzisiejsze szczytowe zużycie (kWh)
  • Pole 2: dzisiejsze zużycie poza szczytem (kWh)
  • Pole 3: szczytowy wtrysk dzisiaj (kWh)
  • Pole 4: dzisiaj zastrzyk poza szczytem (kWh)
  • Pole 5: pobór prądu (W)
  • Pole 6: prąd wtrysku (W)
  • Pole 7: dzisiejsze zużycie gazu (m3)

W tym przypadku wartości szczytowe i pozaszczytowe odnoszą się do taryfy za energię elektryczną. W polach 1 i 2 zużycie odnosi się do zużycia energii netto dzisiaj: zużycie energii elektrycznej dzisiaj w okresie taryfowym od północy minus zastrzyk energii elektrycznej (wytworzonej przez panele słoneczne) dzisiaj w okresie taryfowym od północy z minimum zerowym. To ostatnie oznacza, że jeśli dzisiaj było więcej wtrysków niż zużycia to wartość wynosi zero. Podobnie zastrzyk w polach 3 i 4 odnosi się do zastrzyku netto energii elektrycznej. Pola 5 i 6 wskazują zużycie netto i wtrysk w chwili obecnej. Wreszcie pole 7 to zużycie gazu od północy.

W celu późniejszego wykorzystania zapisz identyfikator kanału, klucz API odczytu i klucz API zapisu, które można znaleźć w menu Klucze API.

Krok 3: Budowanie obwodu elektronicznego

Budowanie obwodu elektronicznego
Budowanie obwodu elektronicznego
Budowanie obwodu elektronicznego
Budowanie obwodu elektronicznego

Licznik odczytujemy za pomocą portu P1, do którego podłączamy kabel RJ11 lub RJ12. Różnica polega na tym, że kabel RJ12 ma 6 przewodów, podczas gdy RJ11 ma tylko 4. W tym projekcie nie zasilamy ESP8266 z portu P1, więc tak naprawdę potrzebujemy tylko 4 przewodów, więc wystarczyłby RJ11.

Użyłem wybicia RJ12 pokazanego na zdjęciu. Jest trochę szeroka i nie ma zbyt wiele miejsca wokół portu P1 w moim mierniku. Pasuje, ale jest ciasno. Alternatywnie możesz po prostu użyć kabla RJ11 lub RJ12 i zdjąć nagłówek na jednym końcu.

Jeśli trzymasz wybicie jak na rysunku, szpilki są ponumerowane od prawej do lewej i mają następujące znaczenie:

  • Pin 1: Zasilanie 5 V
  • Pin 2: żądanie danych
  • Pin 3: uziemienie danych
  • Pin 4: nie podłączony
  • Pin 5: linia danych
  • Pin 6: uziemienie zasilania

Pin 1 i Pin 6 mogą być używane do zasilania ESP8266, ale nie testowałem tego. Musiałbyś podłączyć Pin 1 do Vin ESP8266, więc wewnętrzny regulator napięcia płyty służy do obniżenia napięcia z 5V do 3,3V, które akceptuje ESP8266. Więc nie podłączaj go do pinu 3.3V, ponieważ może to uszkodzić ESP8266. Również zasilanie z portu P1 z czasem rozładowałoby baterię miernika cyfrowego.

Ustawienie pinu 2 w stanie wysokim sygnalizuje licznikowi wysyłanie telegramów danych co sekundę. Rzeczywiste dane są przesyłane przez Pin 5 z szybkością transmisji 115200 dla nowoczesnego miernika cyfrowego (DSMR 4 i 5). Sygnał jest odwrócony (niski to 1, a wysoki to 0). W przypadku starszego typu (DSMR 3 i niższe) szybkość wynosi 9600 bodów. Dla takiego miernika musisz zmienić prędkość transmisji w kodzie oprogramowania w kolejnym kroku: zmień linię Serial.begin(115200); w setup().

Rola tranzystora NPN jest dwojaka:

  • Aby odwrócić sygnał, aby ESP8266 mógł go zrozumieć.
  • Aby zmienić poziom logiczny z 5 V portu P1 na 3,3 V oczekiwany przez port RX ESP8266.

Stwórz więc układ elektroniczny na płytce stykowej jak na schemacie. Kondensator zwiększa stabilność, ale działa również bez.

Wstrzymaj podłączanie pinu RX, dopóki nie zaprogramujesz ESP8266 w następnym kroku. Rzeczywiście, pin RX jest również potrzebny do komunikacji przez USB między ESP8266 a komputerem.

Krok 4: Prześlij kod

Kod udostępniłem na GitHubie, to tylko jeden plik: P1-Meter-Reader.ino. Wystarczy go pobrać i otworzyć w Arduino IDE. Możesz też wybrać Plik - Nowy i po prostu skopiuj/wklej kod.

Na początku pliku musisz podać kilka informacji: nazwę i hasło sieci WLAN, której chcesz użyć, oraz identyfikator kanału i klucz API zapisu kanału ThingSpeak.

Kod wykonuje następujące czynności:

  • Czyta telegram danych z licznika co UPDATE_INTERVAL (w milisekundach). Wartość domyślna to co 10 sekund. Zwykle co sekundę z miernika wysyłany jest telegram danych, ale ustawienie wysokiej częstotliwości spowoduje przeciążenie ESP8266, więc nie będzie mógł już obsługiwać serwera WWW.
  • Przesyła dane dotyczące energii elektrycznej do kanału Thingspeak co SEND_INTERVAL (w milisekundach). Wartość domyślna to co minutę. Decydując o tej częstotliwości należy wziąć pod uwagę, że wysyłanie danych zajmuje trochę czasu (zwykle kilka sekund) oraz że istnieje limit częstotliwości aktualizacji na Thingspeak dla darmowego konta. Jest to około 8200 wiadomości dziennie, więc maksymalna częstotliwość będzie wynosić mniej więcej raz na 10 sekund, jeśli nie używasz Thingspeak do niczego innego.
  • Przesyła dane gazu, gdy ulegną zmianie. Zazwyczaj licznik aktualizuje dane o zużyciu gazu tylko co około 4 minuty.
  • Miernik od początku śledzi łączne wartości zużycia i wtrysku. Tak więc, aby uzyskać dzienne zużycie i wtrysk, kod zapisuje łączne wartości każdego dnia o północy. Następnie te wartości są odejmowane od bieżących wartości całkowitych. Wartości o północy są przechowywane w SPIFFS (SPI Flash File System), który utrzymuje się, jeśli ESP8266 utraci zasilanie lub nawet po przeprogramowaniu.
  • ESP8266 obsługuje mini serwer WWW. Jeśli otworzysz jego adres IP w przeglądarce, otrzymasz przegląd wszystkich aktualnych wartości energii elektrycznej i gazu. Pochodzą one z najnowszego telegramu i zawierają informacje, które nie są przesyłane do Thingspeak, takie jak napięcia i prądy na fazę. Domyślnym ustawieniem jest to, że adres IP jest określany dynamicznie przez router. Ale wygodniej jest użyć statycznego adresu IP, który jest zawsze taki sam. W tym przypadku należy w kodzie uzupełnić staticIP, gateway, dns i subnet oraz odkomentować linię WiFi.config(staticIP, dns, gateway, subnet); w funkcji connectWifi().

Po wprowadzeniu tych zmian jesteś gotowy do wgrania oprogramowania układowego do ESP8266. Podłącz ESP8266 przez kabel USB do komputera i naciśnij ikonę ze strzałką w Arduino IDE. Jeśli nie uda Ci się połączyć z ESP8266 spróbuj zmienić port COM w menu Narzędzia - Port. Jeśli nadal nie działa, możliwe, że musisz ręcznie zainstalować sterownik wirtualnego portu COM USB.

Krok 5: Testowanie

Po wgraniu oprogramowania, odłącz USB i podłącz przewód RX ESP8266. Pamiętaj, że potrzebowaliśmy kanału RX ESP8266 do wgrania oprogramowania, więc wcześniej go nie podłączaliśmy. Teraz podłącz breakout RJ12 do miernika cyfrowego i ponownie podłącz ESP8266 do komputera.

W Arduino IDE otwórz Serial Monitor za pomocą menu Narzędzia i upewnij się, że jest ustawiony na 115200 bodów. Jeśli musisz zmienić szybkość transmisji, być może musisz zamknąć i ponownie otworzyć monitor szeregowy, zanim zacznie działać.

Teraz powinieneś zobaczyć wyjście kodu w Monitorze szeregowym. Powinieneś sprawdzić, czy są jakieś komunikaty o błędach. Powinieneś także widzieć telegramy. Dla mnie wyglądają tak:

/FLU5\xxxxxxxxx_x

0-0:96.1.4(50213) 0-0:96.1.1(3153414733313030313434363235) // Numer seryjny licznika w systemie szesnastkowym 0-0:1.0.0(200831181442S) // Znacznik czasu S: czas letni (lato), W: nie czas letni (zima) 1-0:1.8.1(000016.308*kWh) // Całkowite szczytowe zużycie netto 1-0:1.8.2(000029.666*kWh) // Całkowite pozaszczytowe zużycie netto 1-0:2.8.1 (000138.634*kWh) // Całkowity wtrysk netto w szczycie 1-0:2.8.2 (000042.415*kWh) // Całkowity wtrysk netto poza szczytem 0-0:96.14.0(0001) // Taryfa 1: szczyt, 2: pozaszczytowy 1-0:1.7.0(00.000*kW) // Pobór prądu 1-0:2.7.0(00.553*kW) // Prąd wtrysku 1-0:32.7.0(235,8*V) // Faza Napięcie 1 1-0:52.7.0(237,0*V) // Napięcie fazy 2 1-0:72.7.0(237,8*V) // Napięcie fazy 3 1-0:31.7.0(001*A) // Prąd fazy 1 1-0:51.7.0(000*A) // Prąd fazy 2 1-0:71.7.0(004*A) // Prąd fazy 3 0-0:96.3.10(1) 0-0:17.0.0(999.9*kW) // Moc maksymalna 1-0:31.4.0(999*A) // Prąd maksymalny 0-0:96.13.0() // Komunikat 0-1:24.1.0(003) // inne urządzenia na magistrali M-bus 0-1:96.1.1(37464C4F32313230313037393338) // Numer seryjny miernika gazu r szesnastkowy 0-1:24.4.0(1) 0-1:24.2.3(200831181002S)(00005.615*m3) // Całkowite zużycie gazu znacznik czasu !E461 // Suma kontrolna CRC16

Jeśli coś jest nie tak, możesz sprawdzić, czy masz te same tagi i ewentualnie musisz zmienić kod parsujący telegramy w funkcji readTelegram.

Jeśli wszystko działa, możesz teraz zasilać esp8266 z ładowarki USB.

Zainstaluj aplikację IoT ThingSpeak Monitor na swoim smartfonie, wypełnij ID kanału i przeczytaj klucz API i gotowe!

Zalecana: