IOT -basert DOL -startkontroller for vanningspumpe: 6 trinn
IOT -basert DOL -startkontroller for vanningspumpe: 6 trinn
Anonim
IOT -basert DOL -startkontroller for vanningspumpe
IOT -basert DOL -startkontroller for vanningspumpe
IOT -basert DOL -startkontroller for vanningspumpe
IOT -basert DOL -startkontroller for vanningspumpe

Hei venner

Denne instruksen handler om hvordan du fjernovervåker og kontrollerer en vanningspumpe som er satt over internett.

Historie: På gården min får jeg bare strøm fra det lokale nettet i omtrent 6 timer om dagen. Tidspunkter er ikke vanlige, strømtilgjengelighet kan være tidlig på morgenen eller sent på kveldene eller til og med midnatt. Hver gang du gikk til borehullet for å sjekke strømtilgjengeligheten, var start eller stopp av motoren veldig smertefull prosess. Jeg måtte også sørge for at motoren går minst 2-3 timer hver dag for å levere tilstrekkelig vann til dryppsystemet. Ganske lenge undersøkte jeg alternativer for å løse dette problemet ved å styre motoren eksternt og også vite statusen. Det er enheter tilgjengelig på markedet som starter motoren så snart det er strømforsyning, men de har ikke funksjonen til å stoppe motoren når vi vil. Og det er ingen måte å vite motorens status PÅ/AV når som helst. Dette fører vanligvis til over vanning, noe som fører til tap av jordens fruktbarhet og sløsing med strøm. Til slutt bygde jeg en løsning selv hvor jeg kan starte og stoppe motoren eksternt fra mobil/nettbrett/PC når som helst hvor som helst… !!. Jeg kan også overvåke tilgjengeligheten av strømforsyning fra beltet samt motorstatus (PÅ/AV) hele tiden. Håper det vil hjelpe gårdeiere på landet å administrere vanningssystemene sine uten å måtte gå til startstedet hele tiden.

Rekvisita

Forutsetninger:

Plasseringen der du vil installere denne enheten må ha internettilgjengelighet (bredbånd med wifi/mobilt internett)

Ting du trenger:

  1. NodeMCU /ESP12
  2. To -kanals relé
  3. WCS1700 - Strømføler
  4. TP4056 batterilademodul
  5. LD313, kondensator - 1000uF Register - To registre på 5k ohm
  6. Enhver (gammel) smarttelefon med hotspot /internett.

Hvordan det fungerer:

Det er en enkel skybasert IOT -løsning som bruker NodeMCU/ESP12 og ekstern MQTT -megler. NodeMCU fungerer som en IOT -gateway, styrer også DOL -starteren. Den kobles til ekstern MQTT -megler over internett. En app som kjører på en Android -mobil, kobles til megleren, der vi hele tiden kan overvåke og kontrollere vanningspumpesettet. Jeg brukte gratis tilgjengelig MQTT -megler fra Adafruit IO. Det er mange gratis meglere som mosquitto, cloudmqtt etc. Du kan velge megler forutsatt at du endrer serveren og portnummeret i koden. NodeMCU kobler seg til internett ved hjelp av WiFi fra mobilnettstedet. Yon kan bruke hvilken som helst gammel eller rimelig mobil for å tilby wifi -tilgang via hotspot eller andre midler for å tilby internett via wifi. Mobilen skal kobles til laderen slik den skal være på 24X7.

NodeMCU er koblet til to reléer for å kontrollere start og stopp av motoren. For å kjenne strømmen i motoren brukte jeg WCS1700 nåværende sensor. Den analoge utgangen fra sensoren brukes til å vite at motoren er PÅ eller AV. Den registrerer også strømtilgjengeligheten fra nettet og publiserer den for megleren slik at vi når som helst kan kjenne nettstatusen. Enheten abonnerer på to strømmer for å motta forespørselen om motor PÅ og motor AV. Ved å sende spesifikke verdier til disse feedene kan vi styre motoren til START eller STOPP.

Til slutt installerte jeg MQTT Dash -appen på min Android -telefon og konfigurerte den til å koble til MQTT -megleren og bruke feeds på dashbordet/gui. Appen har veldig gode ikoner med knapper, måler, bryter osv. For å lage et attraktivt dashbord. Du kan imidlertid bruke hvilken som helst IOT hjemmeautomatisering -mobilapp som støtter mqtt -protokoll.

Slik fungerer WCS1700:

WCS1700 er i utgangspunktet en Hall -effektføler som vil produsere utgangsspenning som er proporsjonal med magnetfeltet som oppstår når strømmen strømmer gjennom spolen. Spolen her er en strømforsyningsledning som skal kobles til motoren. Den kan måle vekselstrøm opptil 70 ampere. Driftsspenning er mellom 3,3 og 12 V. Se databladet for mer informasjon. Siden jeg bruker ESP12 brukte jeg samme strømforsyning på 3,3V som driftsspenning for WCS1700. Som angitt i databladet på 3,3 V skal enheten produsere en differensialspenning på omtrent 32 til 38 mV per ampere strøm gjennom spolen. Men det kan variere basert på spolestørrelse / luftgap og variasjoner i enheten. Derfor måtte jeg kalibrere den ved å teste den med Ampere Meter. Jeg er ikke fornøyd med nøyaktigheten til enheten, men den er god nok til å bestemme statusen til motoren som PÅ/AV. Utgangspinnen til WCS1700 er koblet til A0 på ESP12. Når det ikke er noen strøm, bør ESP12 lese verdien rundt 556. Siden strømøkningen i spolen kan spenningen være på begge sider basert på hvordan kabelen passerer gjennom sensoren. I koden tok jeg differansen mellom verdiene som absolutt verdi på (x - 556). Ved å dele resultatet med 15 fikk jeg omtrentlig strøm som strømmer gjennom sensoren. Du må eksperimentere med dette for å få det riktige nummeret for deg. Enhver strømmåling av enheten over 5 ampere anser jeg som motor PÅ og under 5 ampere da motoren er AV. Du kan bruke riktig nummer for enheten din ved å eksperimentere. Du må endre WCS1700_CONST og MIN_CURRENT i koden tilsvarende.

Trinn 1: Enhetskonstruksjon

Enhetskonstruksjon
Enhetskonstruksjon
Enhetskonstruksjon
Enhetskonstruksjon

Diagrammet ovenfor gir fullstendige detaljer om hvordan du skal koble alle komponentene.

Strømforsyning: Jeg brukte TP4056 til å lade batteriene og LM313 for å regulere 3,7V - 4,2V batteriutgang til 3,3V for å drive NodeMCU. Brukte 1000mF kondensator mellom Vin og bakken til LM313 for å få stabil forsyning på 3,3V. Du kan bruke vanlig USB -mobillader til å drive TP4056. Den har batteribeskyttelseskrets for å beskytte batteriet mot overlading.

Rutenett Strømforsyningsregistrering: 5k ohm spenningsdeleren reduserer 5 V til 2,5 V. Pin D5 på NodeMCU vil føle spenningen.

Utgangsstiften på WCS1700 er koblet til A0 for å lese den analoge spenningen fra sensoren. Strømledningen må passere gjennom hullet for å måle strømmen. Jeg brukte 0,01 uF kondensator for å få den stabile leseformen WCS1700.

D1 og D2 til NodeMCU som skal kobles til IN0 og IN1 på reléinngangspinnene.

Trinn 2: DOL starttilkoblinger

DOL starttilkoblinger
DOL starttilkoblinger
DOL starttilkoblinger
DOL starttilkoblinger

Jeg justerte kontrollkretsen til DOL -starteren for å introdusere et annet sett med START og STOP -bryter. Denne endringen vil ikke påvirke den manuelle start/stopp -operasjonen, og de fortsetter å fungere som de er.

Forsiktig !!!! Siden DOL -starter er en høyspenningsenhet, må du sørge for at hovedbryteren er slått av før du åpner esken. Direkte kontakt med strømførende ledning kan være farlig. Hvis du ikke er sikker, ta hjelp av elektriker for å lage tilkoblinger

Jeg brukte 2 -kanalers 5 V -relemodul som START- og STOPP -bryter. Disse reléene vil bli kontrollert av ESP12.

Relé - 0 fungerer som START -bryter - kablet som NO (normalt åpent).

Relé -1 fungerer som STOP -bryter - kablet som NC (normalt lukket). Starteren vil allerede ha en ledning som kobler seg fra toppkontaktor til NVC. Du må fjerne den og erstatte den med relé -1 -ledninger som vist.

Sørg for at tilkoblingene mellom startmotoren og relemodulene er fullstendig isolert for sikkerhet. Jeg programmerte ESP til å holde begge reléene i 2 sekunder for å etterligne trykk på START/STOP -knappen.

Trinn 3: Opprett en konto med Adafruit IO (io.adafruit.com)

Jeg brukte Adafruit io mqtt megler som er gratis å bruke med få begrensninger, men det er OK for vår bruk. Jeg foretrekker dette fordi jeg også brukte det i andre prosjekter og fant ganske pålitelig og har også mange andre funksjoner som Dashboard med fin GUI, og selv vi kan bruke utløsere. For å bruke Adafruit io må du opprette en konto og notere brukernavn og aktiv nøkkel.

Trinn 4: Bygg og installer programvaren

Fullstendig kode er tilgjengelig i skissen. Du må åpne dette i Arduino IDE og gjøre noen endringer før du kompilerer og laster opp fastvaren. Velg brettetype som NodeMCU 1.0. Installasjon av IDE og relaterte biblioteker er ikke omfattet av denne dokumentasjonen.

Endre følgende linjer i koden som brakker.

#define WLAN_SSID "xxx" // Din mobile hotspot WiFi SSID

#define WLAN_PASS "……" //

/************************* Adafruit.io Setup ********************* **************/

#define AIO_SERVER "io.adafruit.com"

#define AIO_SERVERPORT 1883 // bruk 8883 for SSL

#define AIO_USERNAME "xyz" // Brukernavnet til din adafruit -konto

#define AIO_KEY "abcd ……" // din aktive nøkkel …

Om MQTT -feeder: Enheten og klienten (mobilappen) utveksler informasjon gjennom meldingsfeeder ved å bruke pub -submodell gjennom MQTT -megler. Enhver klient eller enhet for å motta en melding, må den abonnere på en forhåndsdefinert feed og må bruke publiseringsmetode for å sende en melding til en feed. For prosjektet vårt krever vi omtrent 5 feeds. Nedenfor er forklaringen på hver av feedene som du ser i koden og hvordan de fungerer.

Rutenettstatus: Tilgjengelighet av strømforsyning fra nettet er publisert på feed /feeds/grid. Adafruit_MQTT_Publish grid_stat = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/feeds/grid");

0 indikerer at strømforsyningen ikke er tilgjengelig og 1 for strømforsyningen er tilgjengelig.

Motorstatus: Enheten vil publisere motorens status på feedet …/feeds/grid.

Adafruit_MQTT_Publish motor_status = Adafruit_MQTT_Publish (& mqtt, AIO_USERNAME "/feeds/motor")

Verdien 0 for OFF og 1 for ON

Motor ON -knapp: Denne feed brukes til å motta motorstartforespørsel. Enheten vil abonnere på at fôret mottar motorstartforespørsel med verdi = 1 og bruker samme feed for å publisere bekreftelsesmelding som 0. På den måten kan vi bekrefte at startforespørselsmeldingen faktisk ble mottatt av enheten.

Adafruit_MQTT_Subscribe motoronbutton = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/feeds/motor_on");

Motor AV -knapp:

I likhet med Start -forespørsel brukes denne feed for å motta motorstoppforespørsel. Enheten vil abonnere på at strømmen mottar stoppforespørselen med verdi = 1 og bruker den samme strømmen til å publisere en bekreftelsesmelding som 0.

Adafruit_MQTT_Subscribe motoroffbutton = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/feeds/motor_off");

Forbindelse:

Dette er en spesiell feed med alternativet "siste vilje" aktivert. Når enheten fungerer fint for hvert faste intervall, vil den publisere tilkobling = 1 for å fortelle brukeren at alt er bra. Hvis systemet gikk ned eller tilkoblingen ble tapt, vil enheten ikke kunne kommunisere med megleren. I slike tilfeller vil MQTT -megleren selv publisere til feedet som tilkobling = 0 for å gi brukeren beskjed om at noe gikk galt og enheten ikke kan nås over internett. Vi må fysisk gå og sjekke enheten. Koden er veldig enkel. Se MQTT -dokumentasjonen for mer informasjon om hvordan "Last Will" fungerer.

hvis (itr <= 0)

{

mqtt.publish (AIO_USERNAME "/feeds/connection", "1", 1);

itr = CON_LIVE_ITR;

}

Resten av koden er selvforklarende og krever ingen endringer. Kommenter gjerne hvis du trenger mer informasjon.

Trinn 5: Installer og konfigurer MQTT Dash APP på mobilen

Installer og konfigurer MQTT Dash APP på mobilen
Installer og konfigurer MQTT Dash APP på mobilen
Installer og konfigurer MQTT Dash APP på mobilen
Installer og konfigurer MQTT Dash APP på mobilen
Installer og konfigurer MQTT Dash APP på mobilen
Installer og konfigurer MQTT Dash APP på mobilen
  1. Installer MQTT Dash på din Android -telefon og åpne appen
  2. Klikk på + -ikonet øverst til høyre for å legge til en enhet.
  3. Som vist på det første bildet ovenfor, gi enheten et navn, si "MyFarm-IPSet". Adressefelt som io.adafruit.com og port som 1883, brukernavn bør være ditt adafruit brukernavn og passord skal være din aktive nøkkel fra adafruit. La resten av feltene være som de er. Klikk til slutt på lagre.
  4. Du har opprettet enheten din. Klikk nå på den for å legge dashbordet til den.
  5. Klikk på + og velg type som bryter/knapp. Som vist ovenfor, skriv inn sys i navnefeltet. og skriv inn feednavnet i emnefeltet. hver feed bør starte med brukernavn/feeds/. for dette vi /feeds /tilkobling. Sørg for at Aktiver publisering er deaktivert. Ved å klikke på ikonet for å vise kan du velge hvilken type ikon du vil se ut på dashbordet. For verdi 1 velg en av fargene (si grønn) og for verdi 0 velg farge som grå eller rød. Til slutt klikker du på lagre øverst til høyre. På samme måte kan du lage ytterligere to ikoner ett for rutenett med brukernavn/feeds/rutenett som emne og motor med brukernavn/feeds/motor. Sørg for at Aktiver publisering er deaktivert.
  6. Opprett til slutt Motor ON -knappen. Det er igjen det samme som typen som bryter/knapp. Temaet skal være /feeds /motor_on og sikre at Aktiver publisering er aktivert denne gangen og QOS = 1. På samme måte kan du lage en annen knapp for Motor OFF. Temaet skal være /feeeds /motor_off.

Trinn 6: Siste trinn:-) Testing og finjustering

  1. For å være trygg må du først teste enheten for START- og STOPP -operasjoner før reléene kobles til DOL -starter. Aktiver hotspot på mobilen med internett aktivert. Koble den bærbare datamaskinen med utviklingsmiljø direkte til NodeMCU USB -port med en annen lader koblet til TP4056 samtidig. Hvis enheten er koblet til internett, bør du se 1 enhet koblet til hotspot på smarttelefonen.
  2. På den andre smarttelefonen der du har installert MQTT Dash, åpner du appens dashbord. Du bør se at NET -ikonet i grønt og Rutenett -ikonet også er grønt med verdiene som 1. Motorikonet skal vises som motor av med verdien som 0.
  3. Når du klikker på motoren PÅ -knappen, bør startreléet lage to klikklyder med et intervall på to sekunder. På samme måte er også motorens AV -knapp.
  4. Av sikkerhetsmessige årsaker må du slå av hovedtilførselen til DOL-starter og koble reléene til DOL-starteren som vist over trinn 2. Sørg for at motoren er slått av. Trykk på tilbakestillingsknappen på NodeMCU. Fra seriell monitorutgang kan du se feilsøkingsutsagn som skriver ut verdier fra WC1700 -sensor, delta og den beregnede strømmen i spolen. Med motoren i av -tilstand og "#define WCS1700_CONST 15" bør maxCur være mindre enn 2 konsekvent. Hvis den viser større enn 2, prøv med høyere verdier av WCS1700_CONST. Hver gang må du kompilere koden og laste fastvaren.
  5. Slå nå på motoren og se etter gjeldende målinger igjen. La motoren være PÅ i ca. 10 -15 minutter, og noter den stabile strømavlesningen. Strømmen kan variere mellom 10 og 20 ampere omtrent og trenger ikke å være nøyaktig.
  6. Gå tilbake til koden og angi "#define MIN_CURRENT X. Hvor X er 40 prosent av maksimal strøm tilnærmet til numerisk verdi. I mitt tilfelle satte jeg MIN_CURRENT til 5. Kompiler og last inn fastvaren til NodeMCU igjen.
  7. Fjern USB -kabelen fra NodeMCU. Slå AV og slå på enheten med USB -lader koblet til TP4056. Hvis du klikker på Motor ON -knappen på mobilappen, bør motoren starte. Når motoren er på, skal motorens status reflektere på appens dashbord som PÅ. Hvis du klikker på stoppknappen, bør motoren stoppe.

Nyt !!!!

Anbefalt: