Satura rādītājs:
- 1. darbība. Nepieciešamās detaļas
- 2. darbība. Nepieciešamā programmatūra
- 3. solis: salieciet
- 4. solis: kods
Video: Jūsu enerģijas rēķinu monitors: 4 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
PAR ŠO PROJEKTU
Ja jūs patiešām vēlaties padarīt savu māju gudrāku, jūs, iespējams, vēlēsities sākt ar ikmēneša rēķiniem (ti, enerģiju, gāzi utt.). Kā daži saka, Labi planētai, seifam un būtībai. Atvērtā pirmkoda aparatūra ir mūsu veids, kā sasniegt ilgtspējību mājas vidē! Šī ideja lika mums izveidot vienkāršu un drošu risinājumu, ko ir viegli integrēt ar jebkuru mājas automatizācijas programmatūru, jo tā atklāj datus, izmantojot MQTT (mūsu gadījumā mēs jums parādīsim, kā tos integrēt mājas palīgā).
Pārskats
Lai izmērītu elektroenerģijas patēriņu, mēs izvēlējāmies izmantot Finder enerģijas mērītāju, jo tas ir paredzēts DIN sliedēm un lieliski iederas mūsu mājas galvenajā skapī. Šī produkta foršā lieta ir tā, ka tam ir RS485 Modbus saskarne, rūpnieciski standarta sakaru protokols, kas padara sarunu ar Arduino patiešām vieglu. Faktiski Arduino ir izlaidis oficiālu vairogu, MKR485 un divas bibliotēkas, lai atšifrētu protokolu. Kā galveno plati mēs izvēlējāmies Arduino MKR WiFi 1010, jo tam ir MKR formas faktors un WiFi savienojums.
UzstādīšanaBrīdinājums! Pārbaudiet savas valsts noteikumus par mājas elektriskās sistēmas izmantošanu un esiet īpaši piesardzīgs, jo tas var būt nāvējošs! Ja jūs nezināt, zvaniet elektriķim. Pirmais solis ir uzstādīt skaitītāju elektrības skapī. Lai pārliecinātos, ka strādājat drošā vidē, izslēdziet strāvu no elektrotermināļa pirms sistēmas un vēlreiz pārbaudiet ar multimetru, vai nav sprieguma starp spailēm. Pēc tam ievietojiet enerģijas skaitītāju savā skapī un pievienojiet strāvas un neitrālos vadus no galvenā slēdža līdz skaitītāja ieejai, neaizmirstiet izmantot krāsu kombināciju (zila neitrālai un brūna/melna/pelēka tiešraidē ES). Izejai jābūt savienotai ar pārējo sistēmu.
Galvenie sprieguma savienojumi. Iepriekš minētie vadi ir ieeja, bet tālāk esošie vadi ir izejas.
1. darbība. Nepieciešamās detaļas
2. darbība. Nepieciešamā programmatūra
Programmatūra
Palaidiet datoru un atveriet IDE. Varat izmantot Arduino IDE vai Arduino Create Editor. Kods atbilst šādiem pieprasījumiem: Modbus sakari, WiFi pārvaldība MQTT protokols Modbus ir un atvērtā koda protokols rūpnieciskiem sensoriem un mašīnām. Lai Arduino runātu par Modbus, mēs izmantosim Arduino Modbus bibliotēku. Šī bibliotēka iesaiņo visus apstrādātājus un padara jebkuras Modbus ierīces pieslēgšanu patiešām ātru. Tā kā mēs lasīsim reģistrus, pēc skaitītāja datu lapas mēs varam atrast visu nepieciešamo informāciju, piemēram, funkciju kodus, reģistra adresi un reģistra lielumu vārdos. Bet, lai tas būtu skaidrāks, izskaidrosim, kā darbojas Modbus: Modbus ziņojumiem ir vienkārša struktūra: 01 03 04 00 16 00 02 25 C7 0x01ir ierīces adrese 0x03 ir funkcijas kods, kas norāda ierīcei, vai mēs vēlamies lasīt vai rakstīt datus *, šajā gadījumā baitu skaitam 00 16 lasiet turēšanas reģistrus 0x04 - mēs nosūtām 4 baitus reģistra adreses (00 16), kas ierīcei norāda, ko mēs vēlamies lasīt 00 02- tad reģistra lielumu (00 02) vārdos (katrs vārds ir 2 baitus garš) Pēdējie 4 baiti ir CRC kods. Šis kods tiek ģenerēts no matemātiskās funkcijas salīdzinājumā ar iepriekšējiem baitiem, tādējādi nodrošinot, ka ziņojums ir saņemts pareizi.
Mērnieka pievienošana mājas palīgam ir diezgan vienkārša. Pieņemot, ka jums ir konfigurēts MQTT brokeris (šeit ir ceļvedis), viss, kas jums jādara, ir pievienot jaunas definīcijas zem konfigurācijas.yaml faila. sensors: - platforma: mqtt name: "Main Voltage" state_topic: "energy/main/spriegums" unit_of_measurement: "V" Šeit jāievieto mērījuma nosaukums, nolasāmā MQTT tēma un daudzuma mērvienība. Saglabājiet failu, pārbaudiet konfigurāciju un atkārtoti ielādējiet mājas palīgu, tagad mērījumi tiks parādīti galvenajā lapā.
Mājas palīga patēriņa panelis, kurā redzami pašreizējie rādījumi
Mājas palīgs parūpēsies par grafiku izveidi un automatizēs jūsu rādījumu izraisītos procesus. Šī apmācība ir pabeigta, tagad jums ir jāpievieno funkcijas un jāpielāgo tā savām vajadzībām!
3. solis: salieciet
Gatavs? Ir pienācis laiks ieskrūvēt RS485 savienojumu! Mēs izmantosim vītā viena pāra kabeli ar zemi, ko parasti izmanto tālruņa līnijām. Izmantojot šo kabeli, varat pārraidīt lielos attālumos (1,2 km). Tomēr mēs vienkārši izmantojam pietiekami ilgu kabeli, lai izietu no skapja un novietotu Arduino pieejamā vietā.
Finder RS485 savienojums
RS485 saskarne nosauc savus termināļus A, B un COM. Kopīgs de facto standarts ir TX+/RX+ vai D+ izmantošana kā alternatīva B (augsts MARK, ti, dīkstāvē), TX-/RX- vai D- kā alternatīva A (zems MARK, ti, dīkstāvē). MKR vairogs atbalsta arī Full Duplex, jūs redzēsit divus citus termināļus-Y un Z. Šeit mēs ieskrūvējam kabeļa otru galu, jo no datu lapas mēs zinām, ka pussupleksā komunikācija notiek tikai Y un Z termināļos. COM terminālim jābūt savienotam ar ISOGND. Tā kā mēs izmantojam pusdupleksu savienojumu un kabeļi ir vienādranga, mums ir jāiestata MKR485 vairoga slēdži, lai tie atbilstu mūsu iestatījumiem: mēs iestatījām HALF (2 izslēgts) un pārtraukšanu YZ (3 līdz IESLĒGTS); pirmajam nav nozīmes. Izbeigšana ir pretestība, kas savieno abus datu termināļus, lai mazinātu traucējumus.
Tas būs īstais. Tagad jūs varat aizvērt skapi un koncentrēties uz programmatūras pusi!
4. solis: kods
#iekļaut
#include #include #include // jūsu wifi akreditācijas dati const char ssid = "**********"; const char pass = "**********";
WiFiClient tīkls; MQTTClient klients; neparakstīts garais kurss = 60000; // noklusējuma atsvaidzes intensitāte ms neparakstīts ilgi lastMillis = 0;
// connect function void connect () {Serial.print ("wifi pārbaude …"); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kavēšanās (1000); } Serial.print ("\ nizveido savienojumu …"); while (! client.connect ("device_name", "user_name", "user_pw"))) {// MAINĪT, KAS ATBILST SAVIEM IESTATĪJUMIEM Serial.print ("."); kavēšanās (1000); } Serial.println ("\ nsaistīts!"); client.subscribe ("enerģija/galvenais/atsvaidzināt"); // tēma, lai atsvaidzināšanas biežumu iestatītu attālināti} // mqtt saņemt atzvanīšanas funkciju void messageReceived (String & topic, String & payload) {Serial.println ("ienākošais:" + tēma + " -" + lietderīgā slodze); if (topic == "energy/main/refreshrate") {// atsvaidzes intensitātes apstrādātāja likme = payload.toInt ()*1000; Serial.println ("jauna likme"+virkne (likme)); }}
void setup () {Serial.begin (115200); WiFi.begin (ssid, pass); kamēr (! Seriāls); client.begin ("broker_ip", neto); // MAINĪT SAVIENOJUMU SETUP klientam.onMessage (messageReceived); // startējiet Modbus RTU klientu, ja (! ModbusRTUClient.begin (9600)) {Serial.println ("Neizdevās palaist Modbus RTU klientu!"); kamēr (1); }}
void loop () {client.loop (); if (! client.connected ()) {// pārbaudīt tīkla savienojumu connect (); } // publicēt ziņojumu pēc atsvaidzināšanas (nebloķēšanas rutīnas), ja (millis () - lastMillis> rate) {lastMillis = millis (); // padarīt visus nolasītos zvanus float volt = readVoltage (); kavēšanās (100); pludiņa pastiprinātājs = readCurrent (); kavēšanās (100); dubultvats = readPower (); kavēšanās (100); pludiņš hz = readFreq (); kavēšanās (100); dubultā wh = lasītEnerģija (); // publicēt rezultātus ar saistītām tēmām client.publish ("enerģija/galvenais/spriegums", String (volt, 3)); client.publish ("enerģija/galvenā/strāva", virkne (pastiprinātājs, 3)); client.publish ("enerģija/galvenā/jauda", virkne (vats, 3)); client.publish ("enerģija/galvenā/frekvence", virkne (hz, 3)); client.publish ("enerģija/galvenā/enerģija", virkne (wh, 3)); Serial.print (String (volt, 3)+"V"+String (amp, 3)+"A"+String (watt, 3)+"W"); Serial.println (String (hz, 3)+"Hz"+String (wh, 3)+"kWh"); kavēšanās (100); }}
/ * Funkcijas Finder enerģijas skaitītāju reģistru lasīšanai * * Pārbaudiet modbus protokola rokasgrāmatu, lai saprastu kodu * 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)) {// veikt zvanu reģistram Serial.print ("neizdevās nolasīt spriegumu!"); Serial.println (ModbusRTUClient.lastError ()); // kļūdu apstrādātājs} else {uint16_t word1 = ModbusRTUClient.read (); // lasīt datus no bufera uint16_t word2 = ModbusRTUClient.read (); uint32_t millivolt = vārds1 << 16 | vārds2; // bitu matemātiskais volt = milivolt/1000.0; } atgriešanās volts; } pludiņš readCurrent () {float ampere = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {Serial.print ("neizdevās nolasīt pašreizējo!"); Serial.println (ModbusRTUClient.lastError ()); } cits {uint16_t vārds1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); int32_t milliamp = vārds1 << 16 | vārds2; ampēri = miliampri/1000,0; } atgriešanās ampēri; }
double readPower () {dubultvats = 0.; if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0025, 3)) {Serial.print ("neizdevās nolasīt jaudu!"); Serial.println (ModbusRTUClient.lastError ()); } cits {uint16_t vārds1 = ModbusRTUClient.read (); uint16_t word2 = ModbusRTUClient.read (); uint16_t word3 = ModbusRTUClient.read (); uint64_t milivati; ja (vārds1 >> 7 == 0) {milivats = vārds1
Ieteicams:
Rēķinu norēķinu un krājumu kontroles sistēma: 3 soļi
RĒĶINU RĒĶINU UN KRĀJUMU VADĪBAS SISTĒMA: Izmantojot šo pamācību, es sniegšu jums ideju izveidot rēķinu un inventāra kontroles sistēmu. Izmantojot MS piekļuvi. Tas ir ļoti vienkārši, un jums nav vajadzīgas papildu zināšanas par datoru vai programmēšanu. Ja jums ir pamatzināšanas par kundzi Piekļuve, tabulas. veidlapas un atskaites
Vienkāršs ļoti zems enerģijas patēriņš BLE Arduino 2. daļā - Temperatūras/mitruma monitors - 3. redakcija: 7 soļi
Viegli ļoti zema enerģijas patēriņa BLE Arduino 2. daļā - Temperatūras/mitruma mērītājs - 3. red.: Atjauninājums: 2020. gada 23. novembris - Pirmā 2 x AAA bateriju nomaiņa kopš 2019. gada 15. janvāra, ti, 22 mēneši 2xAAA sārma atjaunināšanai: 2019. gada 7. aprīlis - 3. redakcija lp_BLE_TempHumidity, pievieno datuma/laika grafikus, izmantojot pfodApp V3.0.362+, un automātisko droseli
Saules enerģijas spēkstacijas attālās enerģijas uzraudzības un sadales sistēma: 10 soļi
Saules elektrostacijas attālās enerģijas uzraudzības un sadales sistēma: Šī projekta mērķis ir uzraudzīt un sadalīt enerģiju energosistēmās (saules enerģijas sistēmās). Šīs sistēmas dizains ir abstrakti izskaidrots šādi. Sistēmā ir vairāki režģi ar aptuveni 2 saules paneļiem
Kā pareizi izmērīt bezvadu sakaru moduļu enerģijas patēriņu zema enerģijas patēriņa laikmetā?: 6 soļi
Kā pareizi izmērīt bezvadu sakaru moduļu enerģijas patēriņu zema enerģijas patēriņa laikmetā ?: Zems enerģijas patēriņš ir ārkārtīgi svarīgs jēdziens lietā internetā. Lielākajai daļai IoT mezglu ir jābūt barotiem ar baterijām. Tikai pareizi izmērot bezvadu moduļa enerģijas patēriņu, mēs varam precīzi novērtēt, cik daudz akumulatora
Bezmaksas enerģijas saules enerģijas radio: 4 soļi (ar attēliem)
Bezmaksas enerģijas saules enerģijas radio: bezmaksas enerģijas saules enerģijas radio diy https://www.youtube.com/watch?v=XtP7g… ir vienkāršs projekts, lai pārveidotu veco akumulatoru darbināmu radio ar saules enerģiju darbināmu radio zvaniet bezmaksas enerģijai, jo tā neizmanto baterijas un darbojas saulē