İçindekiler:
Video: Enerji Faturası Monitörünüz: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
BU PROJE HAKKINDA
Evinizi gerçekten daha akıllı hale getirmek istiyorsanız, muhtemelen aylık faturalarınızdan (yani enerji, gaz vb.) başlamak isteyeceksiniz. Bazılarının dediği gibi, Good for Planet, The Wallet ve The Bottom Line. Açık kaynaklı donanım, ev ortamında sürdürülebilirliğe ulaşmanın yolu! Bu fikir bizi, MQTT üzerinden veri gösterdiği için herhangi bir ev otomasyon yazılımıyla entegrasyonu kolay, basit ve güvenli bir çözüm oluşturmamızı sağladı (bizim durumumuzda size bunu Home Assistant'a nasıl entegre edeceğinizi göstereceğiz).
genel bakış
Elektrik enerjisi tüketimini ölçmek için DIN rayı kullanımına uygun olarak tasarlandığından ve evimizin ana dolabına mükemmel şekilde oturduğundan Finder Energy Meter'ı kullanmayı tercih ettik. Bu ürünle ilgili harika olan şey, Arduino ile konuşmayı gerçekten kolaylaştıran endüstriyel standart bir iletişim protokolü olan RS485 Modbus arayüzüne sahip olmasıdır. Aslında Arduino, protokolün kodunu çözmek için resmi bir kalkan, MKR485 ve iki kitaplık yayınladı. Anakart olarak, MKR form faktörünü paylaştığı ve WiFi bağlantısına sahip olduğu için Arduino MKR WiFi 1010'u seçtik.
KurulumUyarı! Evinizin elektrik sistemiyle ilgili olarak ülkenizdeki düzenlemeleri kontrol edin ve ölümcül olabileceğinden son derece dikkatli olun! Bilmiyorsanız bir elektrikçi çağırın. İlk adım, sayacı elektrik dolabınıza monte etmektir. Güvenli bir ortamda çalıştığınızdan emin olmak için sisteminizin önündeki elektrik terminalinden gelen gücü kapatın ve multimetre ile terminaller arasında voltaj olmadığını iki kez kontrol edin. Ardından enerji sayacını kabininizin içine yerleştirin ve ana kesiciden gelen canlı ve nötr kabloları sayacın girişine bağlayın, renk kuralını kullanmayı unutmayın (nötr için mavi ve AB'de canlı için kahverengi/siyah/gri). Çıkış, sistemin geri kalanına bağlanmalıdır.
Ana voltaj bağlantıları. Yukarıdaki teller giriş, ötesindeki teller çıkışlardır.
Adım 1: Gerekli Parçalar
2. Adım: Yazılım İhtiyaçları
Yazılım
Bilgisayarınızı başlatın ve IDE'nizi açın. Arduino IDE veya Arduino Oluşturma Düzenleyicisini kullanabilirsiniz. Kod aşağıdaki istekleri karşılamaktadır: Modbus iletişimi, WiFi yönetimiMQTT protokolü Modbus, endüstriyel sensörler ve makineler için açık kaynaklı bir protokoldür. Arduino'yu Modbus'u konuşturmak için Arduino Modbus kütüphanesini kullanacağız. Bu kitaplık, tüm işleyicileri bir araya getirir ve herhangi bir Modbus cihazının gerçekten hızlı bir şekilde bağlanmasını sağlar. Kayıtları okuyacağımız için sayacın datasheetini takip ederek fonksiyon kodları, register adresi ve register boyutu gibi ihtiyacımız olan tüm bilgileri kelimelerle bulabiliriz. Ancak daha açık hale getirmek için Modbus'un nasıl çalıştığını açıklayalım: Modbus mesajları basit bir yapı izler: 01 03 04 00 16 00 02 25 C7 0x01 Cihaz Adresi 0x03, cihaza veri okumak veya yazmak isteyip istemediğimizi söyleyen Fonksiyon Kodudur. *, bu durumda, Byte Count00 16 için 0x04 tutma kayıtlarını oku - Cihaza ne okumak istediğimizi söyleyen 4 baytlık kayıt adresi (00 16) gönderiyoruz 00 02- ardından kaydın boyutunu (00 02) kelimelerle (her kelime 2 bayt uzunluğundadır) Son 4 bayt CRC kodudur. Bu kod, bir matematik işlevinden önceki baytlar üzerinden oluşturulur, bu, mesajın doğru bir şekilde alınmasını sağlar.
Home Assistant EntegrasyonuSayacı Home Assistant'a eklemek oldukça basittir. Konfigüre edilmiş bir MQTT aracınız olduğunu varsayarsak (İşte kılavuz), tek yapmanız gereken configuration.yaml dosyası altına yeni tanımlar eklemektir. sensör: - platform: mqtt adı: "Ana Gerilim" state_topic: "enerji/ana/gerilim" ölçü_birimi: "V" Burada ölçümün adını, okunacak MQTT konusunu ve miktarın ölçü birimini girmelisiniz. Dosyayı kaydedin, konfigürasyonu kontrol edin ve Home Assistant'ı yeniden yükleyin, şimdi ölçümler ana sayfada görünecektir.
Mevcut okumaları gösteren Ev Asistanı tüketim paneli
Home Assistant, grafikler oluşturmaya özen gösterecek ve okumalarınız tarafından tetiklenen süreçleri otomatikleştirecektir. Bu eğitim sona erdi, şimdi özellikler eklemek ve kendi amaçlarınız için özelleştirmek size kalmış!
Adım 3: Birleştirin
Tamamlandı? RS485 bağlantısını vidalamanın zamanı geldi! Genellikle telefon hatları için kullanılan, topraklamalı bükümlü tek çift kablo kullanacağız. Bu kablo ile uzun mesafelerde (1,2 km) iletim yapabilirsiniz. Ancak biz sadece kabinden çıkıp Arduino'yu erişilebilir bir yere yerleştirmek için yeterince uzun bir kablo kullanıyoruz.
Bulucu RS485 bağlantısı
RS485 arabirimi A, B ve COM terminallerini adlandırır. Yaygın bir fiili standart, B'ye alternatif olarak TX+/RX+ veya D+'nın (MARK yani boşta için yüksek), A'ya alternatif olarak TX-/RX- veya D-'nin (MARK yani boşta için düşük) kullanılmasıdır. MKR kalkanı ayrıca Tam Dubleks'i de destekler, diğer iki terminali göreceksiniz, Y ve Z. Burada kablonun diğer ucunu vidalayacağız, çünkü veri sayfasından yarı dubleks iletişimin sadece Y ve Z terminallerinde gerçekleştiğini biliyoruz. COM terminali ISOGND'ye bağlanmalıdır. Yarım çift yönlü bağlantı kullandığımız ve kablolama eşler arası olduğu için, MKR485 kalkanındaki anahtarları kurulumumuza uyacak şekilde ayarlamamız gerekiyor: YZ'de YARIM (2'yi kapalı) ve sonlandırmayı (3 ila 3'ü) ayarladık. ÜZERİNDE); ilki farketmez. Sonlandırma, parazitleri azaltmak için iki veri terminalini birbirine bağlayan bir dirençtir.
Budur. Artık kabini kapatabilir ve yazılım tarafına odaklanabilirsiniz!
4. Adım: Kod
#Dahil etmek
#include #include #include //wifi kimlik bilgileriniz const char ssid = "**********"; const karakter geçişi = "**********";
WiFiClient ağı; MQTTClient istemcisi; imzasız uzun oran = 60000; // ms cinsinden varsayılan yenileme hızı unsigned long lastMillis = 0;
//connect function void connect() { Serial.print("wifi kontrol ediliyor…"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); gecikme(1000); } Serial.print("\nbağlanıyor…"); while (!client.connect("aygıt_adı", "kullanıcı_adı", "kullanıcı_pw")) { //AYARINIZA UYMAK İÇİN DEĞİŞTİRİN Serial.print("."); gecikme(1000); } Serial.println("\nbağlandı!"); client.subscribe("enerji/ana/yenileme hızı"); //yenileme hızını uzaktan ayarlamak için konu } //mqtt geri arama alma işlevi void messageReceived(Dize &konu, Dize &payload) { Serial.println("gelen: " + konu + " - " + payload); if(konu == "enerji/ana/yenileme hızı"){ //yenileme hızı işleyici hızı = payload.toInt()*1000; Serial.println("yeni oran"+String(oran)); } }
geçersiz kurulum() { Serial.begin(115200); WiFi.begin(ssid, pass); while (!Seri); client.begin("broker_ip", net); // KURULUMUNUZU EŞLEŞTİRMEK İÇİN DEĞİŞTİRİN client.onMessage(messageReceived); // Modbus RTU istemcisini başlat if (!ModbusRTUClient.begin(9600)) { Serial.println("Modbus RTU İstemcisi başlatılamadı!"); iken (1); } }
geçersiz döngü() { client.loop(); if (!client.connected()) { //ağ bağlantısını kontrol edin connect(); } // yenileme geçtikten sonra bir mesaj yayınla (engellemeyen rutin) if (millis() - lastMillis > oran) { lastMillis = millis(); //tüm okuma çağrılarını float volt = readVoltage(); gecikme(100); float amp = readCurrent(); gecikme(100); çift watt = readPower(); gecikme(100); float hz = readFreq(); gecikme(100); double wh = readEnergy(); //sonuçları ilgili başlıklar altında yayınla client.publish("enerji/ana/gerilim", String(volt, 3)); client.publish("enerji/ana/akım", String(amp, 3)); client.publish("enerji/ana/güç", String(watt, 3)); client.publish("enerji/ana/frekans", String(hz, 3)); client.publish("enerji/ana/enerji", String(wh, 3)); Serial.print(Dize(volt, 3)+"V "+Dize(amp, 3)+"A "+Dize(watt, 3)+"W "); Serial.println(Dize(hz, 3)+"Hz "+Dize(wh, 3)+"kWh"); gecikme(100); } }
/* Finder Energy Meter kayıtlarını okuma fonksiyonları * * Kodu anlamak için modbus protokol kılavuzunu kontrol edin * https://gfinder.findernet.com/public/attachments/7E/EN/PRT_Modbus_7E_64_68_78_86EN.pdf */ float readVoltage(){ float volt = 0.; if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x000C, 2)) { // Serial.print("voltaj okunamadı! "); Serial.println(ModbusRTUClient.lastError()); //hata işleyici }else{ uint16_t word1 = ModbusRTUClient.read(); // arabellekteki verileri oku uint16_t word2 = ModbusRTUClient.read(); uint32_t millivolt = kelime1 << 16 | kelime2; //bit matematik volt = milivolt/1000.0; } dönüş voltajı; } float readCurrent(){ float amper = 0.; if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0016, 2)) { Serial.print("akım okunamadı! "); Serial.println(ModbusRTUClient.lastError()); }else{ uint16_t word1 = ModbusRTUClient.read(); uint16_t word2 = ModbusRTUClient.read(); int32_t miliamper = kelime1 << 16 | kelime2; amper = miliamper/1000.0; } dönüş amperi; }
double readPower(){ double watt = 0.; if (!ModbusRTUClient.requestFrom(0x01, HOLDING_REGISTERS, 0x0025, 3)) { Serial.print("güç okunamadı! "); Serial.println(ModbusRTUClient.lastError()); }else{ uint16_t word1 = ModbusRTUClient.read(); uint16_t word2 = ModbusRTUClient.read(); uint16_t word3 = ModbusRTUClient.read(); uint64_t miliwatt; if(kelime1 >> 7 == 0){ miliwatt = kelime1
Önerilen:
DIY Çok İşlevli Enerji Ölçer V2.0: 12 Adım (Resimlerle)
DIY Çok İşlevli Enerji Ölçer V2.0: Bu Eğitilebilir Kitapta, size nasıl Wemos (ESP8266) tabanlı Çok İşlevli Enerji Ölçer yapacağınızı göstereceğim. Bu küçük Metre, voltaj, akım, güç, enerji ve kapasiteyi izleyen çok kullanışlı bir cihazdır. Bunların dışında ambiyansı da izler
DIY Arduino Çok Fonksiyonlu Enerji Ölçer V1.0: 13 Adım (Resimlerle)
DIY Arduino Çok İşlevli Enerji Ölçer V1.0: Bu Eğitilebilir Kitapta, size Arduino tabanlı Çok İşlevli Enerji Ölçer'in nasıl yapıldığını göstereceğim. Bu küçük Metre, elektrik parametreleri hakkında önemli bilgiler gösteren çok kullanışlı bir cihazdır. Cihaz 6 faydalı elektrik parametresini ölçebilir
15 Dakikada Enerji Monitörü: 3 Adım
15 Dakikada Enerji Monitörü: Bu, elektrik sayacınızdaki flaşöre bantlamak için bir wifi sensörüdür. LDR ile flaşları algılar ve OLED ekranında gücü görüntüler. Verileri Thingsboard Dashboard'a gönderir, burada canlı örnek. Ücretsiz bir demo hesabı için kaydolun: https://thingsboard.io.
Yük Kontrollü Kablosuz Enerji Ölçer: 5 Adım
Yük Kontrollü Kablosuz Enerji Ölçer: GİRİŞ Youtube Kanalı:::: https://www.youtube.com/channel/UC6ck0xanIUl14Oor…Bu Proje, hesaplama için ana beyin olarak Atmel'in Atmega16 Mikrodenetleyicisine dayanmaktadır. Kablosuz iletişim için NRF24L01+ Kablosuz iletişim modülü kullanılmaktadır
ITea - Kişisel Çay Monitörünüz: 8 Adım
ITea | Kişisel Çay Monitörünüz: Merhaba sevgili okuyucular ve iTea projesine hoş geldiniz! Bu projeye başlamadan önce, evimde bulunan ortak robotik ve elektronik bileşenleri kullanarak hayatımda geliştirebileceğim bir şey düşündüm. Bu yazıyı yazmadan birkaç hafta önce