İçindekiler:

Elektrik ve Gaz Sayacını Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin: 5 Adım
Elektrik ve Gaz Sayacını Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin: 5 Adım

Video: Elektrik ve Gaz Sayacını Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin: 5 Adım

Video: Elektrik ve Gaz Sayacını Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin: 5 Adım
Video: Elektrik ve gaz sayaçlarınızı bugün mutlaka okuyun 2024, Kasım
Anonim
Elektrik ve Gaz Sayacı Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin
Elektrik ve Gaz Sayacı Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin
Elektrik ve Gaz Sayacı Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin
Elektrik ve Gaz Sayacı Okuyun (Belçika/Hollandaca) ve Thingspeak'e Yükleyin

Enerji tüketiminiz veya biraz inek hakkında endişeleriniz varsa, muhtemelen akıllı telefonunuzda şık yeni dijital ölçüm cihazınızdan gelen verileri görmek istersiniz.

Bu projede Belçika veya Hollanda dijital elektrik ve gaz sayacından güncel verileri alıp Thingspeak'e yükleyeceğiz. Bu veriler, mevcut ve günlük güç tüketimini ve enjeksiyonu (güneş panelleriniz varsa), voltajları ve akımları ve gaz tüketimini (elektrik sayacına dijital bir gaz sayacı bağlıysa) içerir. Bir uygulama aracılığıyla bu değerler akıllı telefonunuzda gerçek zamanlı olarak okunabilir.

Tümü yeni sayaçlar olması gereken DSMR (Dutch Smart Meter Requirements) protokolünü izleyen bir Belçikalı veya Hollandalı dijital sayaç için çalışır. Başka bir yerde yaşıyorsanız, maalesef ölçüm cihazınız muhtemelen başka bir protokol kullanacaktır. Bu yüzden korkarım ki bu Eğitilebilirlik biraz bölgesel olarak kısıtlı.

Halk arasında telefon kablosu olarak bilinen RJ11/RJ12 kablosunu kabul eden sayacın P1-portunu kullanacağız. Sayacın kurulumcusunun P1 portunu etkinleştirdiğinden emin olun. Örneğin, Belçika'daki Fluvius için bu talimatları izleyin.

Verileri işlemek ve internete yüklemek için dahili wifi'li ucuz bir mikroçip olan bir ESP8266 kullanıyoruz. Sadece 2 dolar gibi bir maliyeti var. Ayrıca Arduino IDE kullanılarak programlanabilir. Verileri bulutta en fazla dört kanal için ücretsiz olan Thingspeak üzerinde saklıyoruz. Bu proje için sadece bir kanal kullanıyoruz. Veriler daha sonra IoT ThingSpeak gibi bir uygulama kullanılarak akıllı telefonunuzda görüntülenebilir.

Parçalar:

  • Bir nodemcu v2 gibi bir ESP8266. Nodemcu v3'ün standart bir devre tahtası için çok geniş olduğuna dikkat edin, bu yüzden v2'yi tercih ederim.
  • Bir mikro USB'den USB'ye kablo.
  • Bir USB şarj cihazı.
  • Bir BC547b NPN transistör.
  • İki adet 10k direnç ve bir adet 1k direnç.
  • Bir adet RJ12 vidalı terminal konnektörü.
  • Bir ekmek tahtası.
  • Atlama telleri.
  • İsteğe bağlı: bir 1nF kapasitör.

Toplamda, bu AliExpress veya benzerlerinde 15 EUR gibi bir maliyete mal olur. Tahmin, dirençler, transistörler ve teller gibi bazı bileşenlerin bu proje için ihtiyaç duyduğunuzdan çok daha büyük miktarlarda geldiğini hesaba katar. Bu nedenle, zaten bir bileşen kitiniz varsa, daha ucuz olacaktır.

Adım 1: ESP8266'yı Tanımak

NodeMCU v2'yi lehimleme gerekmediğinden ve kolay programlamaya izin veren bir mikro USB bağlantısına sahip olduğundan seçtim. NodeMCU v2'nin NodeMCU v3'e göre avantajı, bir devre tahtasına sığacak kadar küçük olması ve bağlantı yapmak için yanlarda boş delikler bırakmasıdır. Bu nedenle NodeMCU v3'ten kaçınmak daha iyidir. Ancak, başka bir ESP8266 kartı tercih ederseniz, bu da iyidir.

ESP8266, Arduino IDE kullanılarak kolayca programlanabilir. Bunu ayrıntılı olarak açıklayan başka Eğitilebilirler var, bu yüzden burada çok kısa olacağım.

  • İlk önce Arduino IDE'yi indirin.
  • ESP8266 kartı için ikinci kurulum desteği. Dosya - Tercihler - Ayarlar menüsünde, https://arduino.esp8266.com/stable/package_esp8266com_index.json URL'sini Ek Pano Yöneticisi URL'lerine ekleyin. Menüde sonraki Araçlar - Pano - Panolar Yöneticisi esp8266'yı esp8266 topluluğu tarafından kurun.
  • Üçüncü olarak, ESP8266'nıza en yakın olan kartı seçin. Benim durumumda NodeMCU v1.0'ı (ESP 12-E Modülü) seçtim.
  • Son olarak, Araçlar - Flash Boyutu altında, 4M (1M SPIFFS) gibi SPIFFS içeren bir boyut seçin. Bu projede, günlük enerji değerlerini saklamak için SPIFFS'yi (SPI Flash Dosya Sistemi) kullanıyoruz, böylece ESP8266'nın gücü kesildiğinde ve yeniden programlandığında bile kaybolmazlar.

Artık ESP8266'yı programlamak için her şeye sahibiz! Gerçek kodu daha sonraki bir adımda tartışacağız. İlk önce bir Thingspeak hesabı açacağız.

2. Adım: Bir Thingspeak Hesabı ve Kanalı Oluşturun

thingspeak.com/ adresine gidin ve bir hesap oluşturun. Giriş yaptıktan sonra bir kanal oluşturmak için Yeni Kanal düğmesine tıklayın. Kanal Ayarlarında adı ve açıklamayı istediğiniz gibi doldurun. Ardından kanal alanlarını adlandırıyoruz ve sağdaki onay kutularına tıklayarak etkinleştiriyoruz. Kodumu değiştirmeden kullanırsanız, alanlar aşağıdaki gibidir:

  • Alan 1: bugün en yüksek tüketim (kWh)
  • Alan 2: bugün yoğun olmayan tüketim (kWh)
  • Alan 3: bugün pik enjeksiyon (kWh)
  • Alan 4: bugün yoğun olmayan enjeksiyon (kWh)
  • Alan 5: akım tüketimi (W)
  • Alan 6: akım enjeksiyonu (W)
  • Alan 7: bugünkü gaz tüketimi (m3)

Burada, tepe ve yoğun olmayan, elektrik tarifesini ifade eder. Alan 1 ve 2'de tüketim bugün net elektrik tüketimini ifade eder: Tarife döneminde gece yarısından itibaren bugün elektrik tüketimi eksi en az sıfır ile gece yarısından itibaren tarife döneminde bugün elektrik enjeksiyonu (güneş panelleri tarafından üretilir). İkincisi, bugün tüketimden daha fazla enjeksiyon olsaydı, değerin sıfır olduğu anlamına gelir. Benzer şekilde, 3 ve 4 numaralı alanlara enjeksiyon, net elektrik enjeksiyonunu ifade eder. Alan 5 ve 6, mevcut anda net tüketimi ve enjeksiyonu gösterir. Son olarak alan 7, gece yarısından beri gaz tüketimidir.

Gelecekte başvurmak üzere, API anahtarları menüsünde bulunabilecek Kanal Kimliğini, Okuma API Anahtarını ve API Anahtarını Yazma bilgilerini not edin.

Adım 3: Elektronik Devreyi Oluşturma

Elektronik Devrenin Kurulması
Elektronik Devrenin Kurulması
Elektronik Devrenin Kurulması
Elektronik Devrenin Kurulması

RJ11 veya RJ12 kablosu alan P1 portunu kullanarak elektrik sayacını okuruz. Aradaki fark, RJ12 kablosunun 6 telli, RJ11'in ise sadece 4 telli olmasıdır. Bu projede ESP8266'yı P1 portundan beslemiyoruz, yani aslında sadece 4 kabloya ihtiyacımız var, yani bir RJ11 yeterli.

Resimde gösterilen RJ12 koparmasını kullandım. Biraz geniş ve sayacımda P1 portunun etrafında fazla boşluk yok. Uygun, ama sıkı. Alternatif olarak, sadece bir RJ11 veya RJ12 kablosu kullanabilir ve başlığı bir ucundan sıyırabilirsiniz.

Koparmayı resimdeki gibi tutarsanız, pinler sağdan sola doğru numaralandırılmıştır ve şu anlama gelir:

  • Pim 1: 5V Güç kaynağı
  • Pin 2: Veri İsteği
  • Pin 3: Veri Alanı
  • Pin 4: bağlı değil
  • Pin 5: Veri hattı
  • Pim 6: Güç topraklaması

ESP8266'ya güç sağlamak için Pin 1 ve Pin 6 kullanılabilir, ancak bunu test etmedim. ESP8266'nın Pin 1'ini Vin'e bağlamanız gerekir, bu nedenle kartın dahili voltaj regülatörü, voltajı ESP8266'nın kabul ettiği 5V'den 3.3V'a düşürmek için kullanılır. Bu nedenle, ESP8266'ya zarar verebileceğinden, onu 3.3V pinine bağlamayın. Ayrıca P1 bağlantı noktasından güç sağlamak, zamanla dijital sayacın pilini tüketecektir.

Pim 2'nin yüksek olarak ayarlanması, ölçüm cihazına her saniye veri telgrafları göndermesi için sinyal verir. Gerçek veriler, modern bir dijital sayaç (DSMR 4 ve 5) için 115200 baud hızıyla Pin 5 üzerinden gönderilir. Sinyal ters çevrilir (düşük 1 ve yüksek 0). Daha eski bir tür için (DSMR 3 ve altı) hız 9600 baud'dur. Böyle bir sayaç için bir sonraki adımın ürün yazılımı kodundaki baud hızını değiştirmeniz gerekir: Serial.begin(115200) satırını değiştirin; kurulumda().

NPN transistörünün rolü iki yönlüdür:

  • ESP8266'nın anlayabilmesi için sinyali tersine çevirmek için.
  • Mantık seviyesini P1 bağlantı noktasının 5V değerinden ESP8266'nın RX bağlantı noktası tarafından beklenen 3,3V değerine değiştirmek için.

O halde devre tahtası üzerinde elektronik devreyi şemadaki gibi oluşturunuz. Kondansatör kararlılığı arttırır, ancak onsuz da çalışır.

Bir sonraki adımda ESP8266'yı programlayana kadar RX pinini bağlamayı bırakın. Gerçekten de, ESP8266 ve bilgisayarınız arasında USB üzerinden iletişim kurmak için RX pinine de ihtiyaç vardır.

4. Adım: Kodu Yükleyin

Kodu GitHub'da kullanıma sundum, bu sadece bir dosya: P1-Meter-Reader.ino. Sadece indirin ve Arduino IDE'de açın. Veya Dosya - Yeni'yi seçip kodu kopyalayıp yapıştırabilirsiniz.

Dosyanın başında doldurmanız gereken bazı bilgiler vardır: Kullanılacak WLAN'ın adı ve parolası ve ThingSpeak Kanalının Kanal Kimliği ve API Yazma Anahtarı.

Kod şunları yapar:

  • Her UPDATE_INTERVAL'de (milisaniye cinsinden) sayaçtan bir veri telgrafı okur. Varsayılan değer her 10 saniyede birdir. Normalde, sayaçtan her saniye bir veri telgrafı gelir, ancak frekansı yüksek olarak ayarlamak ESP8266'yı aşırı yükleyecek ve böylece artık web sunucusunu çalıştıramaz.
  • Elektrik verilerini her SEND_INTERVAL'de bir (milisaniye olarak) Thingspeak kanalına yükler. Varsayılan değer her dakikadır. Bu sıklık hakkında karar vermek için, verilerin gönderilmesinin biraz zaman aldığını (genellikle birkaç saniye) ve ücretsiz bir hesap için Thingspeak'te güncelleme sıklığının bir sınırı olduğunu dikkate alın. Günde yaklaşık 8200 mesajdır, bu nedenle Thingspeak'i başka bir şey için kullanmazsanız maksimum frekans yaklaşık her 10 saniyede bir olacaktır.
  • Gaz verilerini değiştiğinde yükler. Tipik olarak, sayaç gaz tüketim verilerini yalnızca 4 dakikada bir günceller.
  • Sayaç, başlangıçtan itibaren toplam tüketim ve enjeksiyon değerlerini takip eder. Böylece günlük tüketimi ve enjeksiyonu elde etmek için kod, her gün gece yarısında toplam değerleri kaydeder. Daha sonra bu değerler mevcut toplam değerlerden çıkarılır. Gece yarısındaki değerler, ESP8266'nın gücü kesildiğinde veya yeniden programlandığında bile devam eden SPIFFS'de (SPI Flash Dosya Sistemi) saklanır.
  • ESP8266, mini bir web sunucusu çalıştırır. IP adresini tarayıcınızda açarsanız, mevcut tüm elektrik ve gaz değerlerine genel bir bakış elde edersiniz. Bunlar en son telgraftandır ve faz başına gerilimler ve akımlar gibi Thingspeak'e yüklenmeyen bilgileri içerir. Varsayılan ayar, IP adresinin yönlendiriciniz tarafından dinamik olarak belirlenmesidir. Ancak her zaman aynı olan statik bir IP adresi kullanmak daha uygundur. Bu durumda, kodda staticIP, gateway, dns ve alt ağı doldurmanız ve WiFi.config(staticIP, dns, gateway, subnet) satırının yorumunu kaldırmanız gerekir; connectWifi() işlevinde.

Bu değişiklikleri yaptıktan sonra, bellenimi ESP8266'ya yüklemeye hazırsınız. ESP8266'yı USB kablosu aracılığıyla bilgisayarınıza bağlayın ve Arduino IDE'de oklu simgeye basın. ESP8266'ya bağlanmayı başaramazsanız, Araçlar - Bağlantı Noktası menüsü altındaki COM bağlantı noktasını değiştirmeyi deneyin. Hala çalışmıyorsa, USB sanal COM bağlantı noktası için sürücüyü manuel olarak yüklemeniz gerekebilir.

Adım 5: Test Etme

Bellenimi yükledikten sonra USB'yi çıkarın ve ESP8266'nın RX kablosunu bağlayın. Unutmayın, bellenimi yüklemek için ESP8266'nın RX kanalına ihtiyacımız vardı, bu yüzden daha önce bağlamadık. Şimdi dijital ölçüm cihazına RJ12 çıkışını takın ve ESP8266'yı bilgisayarınıza yeniden bağlayın.

Arduino IDE'de Araçlar menüsünden Seri Monitörü açın ve 115200 baud'a ayarlandığından emin olun. Baud hızını değiştirmeniz gerekiyorsa, belki de çalışmadan önce Seri Monitörü kapatıp yeniden açmanız gerekir.

Şimdi Seri Monitörde kodun çıktısını görmelisiniz. Herhangi bir hata mesajı olup olmadığını kontrol etmelisiniz. Ayrıca, telgrafları görebilmeniz gerekir. Benim için şöyle görünüyorlar:

/FLU5\xxxxxxxxx_x

0-0:96.1.4(50213) 0-0:96.1.1(315341473313030313434363235) // Seri numarası metre onaltılık 0-0:1.0.0(200831181442S) // Zaman Damgası S: yaz saati uygulaması (yaz), W: hayır gün ışığından yararlanma (kış) 1-0:1.8.1(000016.308*kWh) // Toplam tepe net tüketim 1-0:1.8.2(000029.666*kWh) // Toplam yoğun olmayan net tüketim 1-0:2.8.1 (000138.634*kWh) // Toplam tepe net enjeksiyon 1-0:2.8.2(000042.415*kWh) // Toplam yoğun olmayan net enjeksiyon 0-0:96.14.0(0001) // Tarife 1: tepe, 2: off-peak 1-0:1.7.0(00.000*kW) // Akım tüketimi 1-0:2.7.0(00.553*kW) // Akım enjeksiyonu 1-0:32.7.0(235.8*V) // Faz 1 voltaj 1-0:52.7.0(237.0*V) // Faz 2 voltaj 1-0:72.7.0(237.8*V) // Faz 3 voltaj 1-0:31.7.0(001*A) // Faz 1 akımı 1-0:51.7.0(000*A) // Faz 2 akımı 1-0:71.7.0(004*A) // Faz 3 akımı 0-0:96.3.10(1) 0-0:17.0.0(999.9*kW) // Maks güç 1-0:31.4.0(999*A) // Maks akım 0-0:96.13.0() // Mesaj 0-1:24.1.0(003) // M-bus'taki diğer cihazlar 0-1:96.1.1(37464C4F32313230313037393338) // Gaz sayacı seri numarası r onaltılık 0-1:24.4.0(1) 0-1:24.2.3(200831181002S)(00005.615*m3) // Gaz zaman damgası toplam tüketimi !E461 // CRC16 sağlama toplamı

Yanlış bir şey varsa, aynı etiketlere sahip olup olmadığınızı kontrol edebilirsiniz ve muhtemelen readTelegram işlevinde telgrafları ayrıştıran kodu değiştirmeniz gerekebilir.

Her şey çalışıyorsa, artık esp8266'yı USB şarj cihazından çalıştırabilirsiniz.

Akıllı telefonunuza IoT ThingSpeak Monitor uygulamasını yükleyin, Kanal Kimliğini ve Okuma API Anahtarını doldurun ve işiniz bitti!

Önerilen: