Orodha ya maudhui:

Ufuatiliaji wako wa Muswada wa Nishati: Hatua 4
Ufuatiliaji wako wa Muswada wa Nishati: Hatua 4

Video: Ufuatiliaji wako wa Muswada wa Nishati: Hatua 4

Video: Ufuatiliaji wako wa Muswada wa Nishati: Hatua 4
Video: UKIZIONA DALILI HIZI MAMA MJAMZITO BASI UTAJIFUNGUA MTOTO WA KIUME 2024, Julai
Anonim
Mfuatiliaji wako wa Muswada wa Nishati
Mfuatiliaji wako wa Muswada wa Nishati

KUHUSU MRADI HUU

Ikiwa kweli unataka kuifanya nyumba yako iwe nadhifu, labda utataka kuanza kutoka kwa bili zako za kila mwezi (yaani nishati, gesi, nk…). Kama wengine wanasema, Nzuri kwa Sayari, Mkoba na The Bottom Line. Vifaa vya chanzo wazi ni njia yetu ya kufikia uendelevu katika mazingira ya nyumbani! Wazo hili lilituleta kujenga suluhisho rahisi na salama, rahisi kujumuisha na programu yoyote ya kiotomatiki ya nyumbani kwani inadhihirisha data juu ya MQTT (kwa upande wetu tutakuonyesha jinsi ya kuiunganisha kwa Msaidizi wa Nyumbani).

Maelezo ya jumla

Ili kupima matumizi ya nishati ya umeme, tulichagua kutumia mita ya Nishati ya Finder, kwani imeundwa kwa matumizi ya reli ya DIN na inafaa kabisa katika baraza kuu la mawaziri la nyumba yetu. Jambo la kupendeza juu ya bidhaa hii ni kwamba ina interface ya RS485 Modbus, itifaki ya mawasiliano ya kiwango ya viwanda ambayo inafanya kuongea na Arduino iwe rahisi sana. Kwa kweli, Arduino ametoa ngao rasmi, MKR485 na maktaba mawili kuamua itifaki hiyo. Kama ubao kuu, tulichagua Arduino MKR WiFi 1010, kwani inashiriki sababu ya fomu ya MKR na ina unganisho la WiFi.

Kuweka Onyo! Angalia kanuni za nchi yako juu ya kushughulika na mfumo wa umeme wa nyumba yako na uwe mwangalifu sana kwa sababu inaweza kuwa mbaya! Ikiwa hujui jinsi, piga fundi umeme. Hatua ya kwanza ni kufunga mita kwenye kabati lako la umeme. Ili kuhakikisha unafanya kazi katika mazingira salama, zima umeme kutoka kwa kituo cha umeme mbele ya mfumo wako na angalia mara mbili na multimeter kuwa hakuna voltage kati ya vituo. Kisha weka mita ya nishati ndani ya baraza lako la mawaziri na unganisha waya za moja kwa moja na zisizo na waya kutoka kwa bomba kuu hadi pembejeo ya mita, kumbuka kutumia mkutano wa rangi (bluu kwa upande wowote na kahawia / nyeusi / kijivu kwa kuishi katika EU). Pato lazima liunganishwe na mfumo wote.

Uunganisho kuu wa voltage. Waya hapo juu ni pembejeo, waya zaidi ni matokeo.

Hatua ya 1: Sehemu Zinazohitajika

Sehemu Zinazohitajika
Sehemu Zinazohitajika

Hatua ya 2: Mahitaji ya Programu

Mahitaji ya Programu
Mahitaji ya Programu

Programu

Anza kompyuta yako na ufungue IDE yako. Unaweza kutumia IDE ya Arduino au Arduino Unda Mhariri. Nambari hii inakidhi maombi yafuatayo: Modbus mawasiliano, usimamizi wa WiFi Modbus ya itifaki ya MQTT ni itifaki ya chanzo wazi kwa sensorer na mashine za viwandani. Ili kufanya Arduino azungumze Modbus, tutatumia maktaba ya Arduino Modbus. Maktaba hii hubeba washughulikiaji wote na hufanya kushikamana na kifaa chochote cha Modbus haraka sana. Kwa kuwa tutasoma rejista, kufuata data ya mita, tunaweza kupata habari zote tunazohitaji kama nambari za kazi, anwani ya sajili na saizi ya rejista kwa maneno. Lakini kuifanya iwe wazi zaidi, wacha tueleze jinsi Modbus inavyofanya kazi: Ujumbe wa Modbus unafuata muundo rahisi: 01 03 04 00 16 00 02 25 C7 0x01ni Anwani ya Kifaa 0x03 ndio Kanuni ya Kazi inayoambia kifaa ikiwa tunataka kusoma au kuandika data *, katika kesi hii, soma rejista za kushikilia 0x04 kwa Byte Count00 16 - Tunatuma ka 4 za anwani ya rejista (00 16) ambayo inaambia kifaa kile tunachotaka kusoma 00 02- basi saizi ya rejista (00 02) kwa maneno (kila neno lina ka 2 kwa muda mrefu) Baiti 4 za mwisho ni nambari ya CRC. Nambari hii imetengenezwa kutoka kwa kazi ya hesabu juu ya ka zilizopita, hii inahakikisha ujumbe umepokelewa kwa usahihi.

Kuongeza mita kwa Msaidizi wa Nyumbani ni sawa kabisa. Kwa kudhani una broker ya MQTT iliyosanidiwa (Hapa kuna mwongozo), unachohitaji kufanya ni kuongeza ufafanuzi mpya chini ya faili ya Configuration.yaml. sensor: - jukwaa: jina la mqtt: "Voltage kuu" state_topic: "energy / main / voltage" unit_of_measurement: "V" Hapa lazima uweke jina la kipimo, mada ya MQTT kusoma na kitengo cha kipimo cha wingi. Hifadhi faili, angalia usanidi na upakie tena Msaidizi wa Nyumbani, sasa vipimo vitaonekana kwenye ukurasa kuu.

Paneli ya matumizi ya Msaidizi wa Nyumba inayoonyesha usomaji wa sasa

Msaidizi wa Nyumba atatunza uundaji wa grafu na otomatiki michakato inayosababishwa na usomaji wako. Mafunzo haya yamekamilika, sasa ni juu yako kuongeza huduma na kuibadilisha kwa madhumuni yako mwenyewe!

Hatua ya 3: Kusanyika

Kusanyika
Kusanyika
Kusanyika
Kusanyika

Imefanywa? Ni wakati wa kukwama kwenye unganisho la RS485! Tutatumia kebo iliyosokotwa ya jozi moja na ardhi, kawaida hutumiwa kwa laini za simu. Kwa kebo hii, unaweza kupitisha umbali mrefu (kilomita 1.2). Walakini, tunatumia tu kebo ndefu ya kutosha kutoka kwa baraza la mawaziri na kuweka Arduino mahali pa kupatikana.

Mtaftaji uhusiano wa RS485

Kiolesura cha RS485 kinataja vituo vyake A, B na COM. Kiwango cha kawaida cha de-facto ni matumizi ya TX + / RX + au D + kama njia mbadala ya B (juu kwa MARK yaani wavivu), TX- / RX- au D- kama mbadala wa A (chini ya MARK yaani wavivu) Tangu Ngao ya MKR inasaidia pia Duplex Kamili, utaona vituo vingine viwili, Y na Z. Hapa tutazunguka mwisho mwingine wa kebo kwani tunajua kutoka kwa data kwamba mawasiliano ya nusu-duplex hufanyika tu kwenye vituo vya Y na Z. Kituo cha COM kinapaswa kushikamana na ISOGND. Kwa kuwa tunatumia unganisho la nusu-duplex na kwa kuwa kukodisha ni rika-kwa-rika, lazima tuweke swichi kwenye ngao ya MKR485 ili kuendana na usanidi wetu: tuliweka HALF (2 kuzima) na kukomesha kwa YZ (3 hadi ON); ya kwanza haijalishi. Kukomesha ni upinzani unaounganisha vituo viwili vya data, kwa upunguzaji wa unyevu.

Hii ndio. Sasa unaweza kufunga baraza la mawaziri na uzingatia upande wa programu!

Hatua ya 4: Kanuni

Kanuni
Kanuni

# pamoja

#jumuisha # pamoja na # pamoja na // stakabadhi zako za wifi const char ssid = "**********"; const char pass = "**********";

Wavu wa Wateja wa WiFi; Mteja wa MQTTClient; kiwango cha muda mrefu kisichosainiwa = 60000; // kiwango cha kusasisha chaguo-msingi katika ms unsigned long lastMillis = 0;

// unganisha kazi batili unganisha () {Serial.print ("kuangalia wifi…"); wakati (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kuchelewesha (1000); } Serial.print ("\ uunganishaji…"); wakati (! client.connect ("device_name", "user_name", "user_pw")) {// BADILISHA KUFANYA SETUP YAKO Serial.print ("."); kuchelewesha (1000); } Serial.println ("\ nconnected!"); mteja.jisajili ("nishati / kuu / onyesha upya"); // mada kuweka kiwango cha kuburudisha kwa mbali} // mqtt kupokea kazi ya kurudisha ujumbe batili Imepokelewa (Kamba na mada, Kamba na upakiaji malipo) {Serial.println ("inayoingia:" + mada + "-" + payload); ikiwa (mada == "nishati / kuu / onyesha upya") {// kiwango cha kushughulikia kiwango cha msimamizi = payload.toInt () * 1000; Serial.println ("kiwango kipya" + Kamba (kiwango)); }}

kuanzisha batili () {Serial.begin (115200); Anza WiFi (ssid, pass); wakati (! Serial); mteja.anza ("broker_ip", wavu); // BADILIKA ILI Ulinganishe mteja wako wa SETUP. kwenyeMessage (ujumbe Umepokelewa); // anza Modbus RTU mteja ikiwa (! ModbusRTUClient.begin (9600)) {Serial.println ("Imeshindwa kuanzisha Mteja wa Modbus RTU!"); wakati (1); }}

kitanzi batili () {client.loop (); ikiwa (! mteja. imeunganishwa ()) {// angalia unganisho la mtandao unganisha (); } // kuchapisha ujumbe baada ya kupita upya (utaratibu usiozuia) ikiwa (millis () - mwishoMillis> kiwango) {lastMillis = millis (); // fanya simu zote zilizosomwa kuelea volt = somaVoltage (); kuchelewesha (100); kuelea amp = somaCurrent (); kuchelewesha (100); mara mbili watt = kusomaPower (); kuchelewesha (100); kuelea hz = somaFreq (); kuchelewesha (100); mara mbili wh = soma Nguvu (); // chapisha matokeo chini ya mada zinazohusiana mteja.chapisha ("nishati / kuu / voltage", Kamba (volt, 3)); mteja.chapisha ("nishati / kuu / ya sasa", Kamba (amp, 3)); mteja.chapisha ("nishati / kuu / nguvu", Kamba (watt, 3)); mteja.chapisha ("nishati / kuu / masafa", Kamba (hz, 3)); mteja.chapisha ("nishati / kuu / nishati", Kamba (wh, 3)); Serial.print (Kamba (volt, 3) + "V" + Kamba (amp, 3) + "A" + Kamba (watt, 3) + "W"); Serial.println (Kamba (hz, 3) + "Hz" + Kamba (wh, 3) + "kWh"); kuchelewesha (100); }}

/ * Kazi za kusoma sajili za mita za Nishati ya Kitafuta * * Angalia mwongozo wa itifaki ya modbus kuelewa nambari * https://gfinder.findernet.com/public/attachments/7E/EN/PRT_Modbus_7E_64_68_78_86EN.pdf * / kuelea readVoltage () {kuelea volt = 0.; ikiwa (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x000C, 2)) {// piga simu kwenye usajili Serial.print ("imeshindwa kusoma voltage!"); Serial.println (ModbusRTUClient.lastError ()); // mshughulikia makosa} mwingine {uint16_t word1 = ModbusRTUClient.read (); // soma data kutoka kwa bafa uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = neno1 << 16 | neno2; // bit math volt = millivolt / 1000.0; } kurudi volt; } kusoma kueleaSasa () {kuelea ampere = 0.; ikiwa (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("imeshindwa kusoma sasa!"); Serial.println (ModbusRTUClient.lastError ()); } mwingine {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = neno1 << 16 | neno2; ampere = milliamp / 1000.0; } kurudi ampere; }

kusoma mara mbiliPower () {double watt = 0.; ikiwa (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("imeshindwa kusoma nguvu!"); Serial.println (ModbusRTUClient.lastError ()); } mwingine {uint16_t word1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t milliwatt; ikiwa (neno1 >> 7 == 0) {milliwatt = neno1

Ilipendekeza: