Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Projekt Jacksona Breakella, Tylera McCubbinsa i Jakoba Thalera za EF 230
Poljoprivreda je vitalni faktor proizvodnje u Sjedinjenim Državama. Usjevi se mogu koristiti u različite svrhe, od sirovina za proizvodnju odjeće, lijekova i aditiva za hranu do izravne potrošnje dijelova usjeva, najčešće klijavog voća. Većina usjeva u Sjedinjenim Državama uzgaja se na otvorenom, gdje se vremenski uvjeti niti temperatura ne mogu kontrolirati u velikoj mjeri. S obzirom na to koliko drastično nepovoljni vremenski uslovi mogu uticati na rast usjeva, a opet na ekonomiju Sjedinjenih Država, praćenje uslova na poljima postaje vitalno.
Naš uređaj, Poljoprivredni senzorski niz, omogućava poljoprivrednicima da prate stanje unaprijed odabranih dijelova polja koristeći 4 senzora: senzor za kišnicu, senzor vlažnosti tla, temperaturni senzor i fotoelektrični senzor. Kombinacija ovih senzora omogućava poljoprivrednicima da na odgovarajući način planiraju sezonsku proizvodnju usjeva, prilagode premalo ili previše kiše, bolje se nose s katastrofama koje mogu ubiti usjeve i uštedjeti vrijeme i probleme pri uzimanju uzoraka tla i korištenju skuplje senzorske opreme. U ovom Instructableu provest ćemo vas kroz ožičenje i kodiranje iza našeg polja za poljoprivredne senzore, tako da i vi možete sami napraviti.
Korak 1: Prikupite potrebne materijale
Ispod je lista potrebnih materijala koji će vam trebati za početak"
1. Arduino ploča, po mogućnosti Arduino Uno
2. Osnovna osnova
3. 1x 220 ohmski otpornik
4. Razne žice različitih boja
5. Mikro USB na USB kabel
6. Zvučnik koji se može montirati na ploču
7. Fotoelektrični senzor
8. Senzor temperature
9. Senzor kišnice
10. Senzor vlažnosti tla
11. Računar sa instaliranim Matlab 2017 i Arduino paketom podrške (paket podrške možete pronaći pod Dodaci)
Korak 2: Ožičite ploču i povežite je
Počnite ožičenjem ploče kao što je prikazano gore, ili na bilo koji drugi način koji vam najbolje odgovara. Postoje doslovno neograničeni načini na koje se ploča može ožičiti, pa točna konfiguracija zaista ovisi o vama. Nakon što je ploča ožičena, počnite s pričvršćivanjem senzora. Senzori za kišnicu, vlagu u tlu i fotoelektrični senzori su svi analogni izlazi, pa se pobrinite da su spojeni na analogni dio Arduina. Senzor temperature je, s druge strane, digitalni izlaz, pa se pobrinite da je spojen na dostupan digitalni ulaz na vašem Arduinu. Arduino bi trebao imati izlaze za 3.3v i 5v, stoga provjerite jesu li senzori spojeni na napone s kojima su kompatibilni.
Nakon što budete sigurni da je ploča pravilno ožičena, priključite mikro USB na USB kabel s računara u mikro USB priključak na računaru i uključite Arduino. Otvorite Matlab i, provjerivši da ste instalirali Arduino paket za podršku pod Dodaci, pokrenite naredbu "fopen (serial ('nada'))", bez ". Greška bi se trebala pojaviti, a greška bi trebala reći imate raspoloživo usporedbu s brojem. Pokrenite naredbu "a = arduino ('comx', 'uno')", gdje je x broj vašeg komport, za mapiranje vašeg Arduina na objekt. LED na Arduinu bi trebao brzo treptati da bi pokazao da je povezan.
Korak 3: Kodirajte fotoelektrične i temperaturne senzore
Prije nego započnete kodiranje, zabilježite gdje su vam senzori povezani na Arduinu, jer će to biti važno za naredbu readVoltage. Započnite svoj kôd postavljanjem varijable sunčeve svjetlosti jednake naredbi "readVoltage (a, 'X#')", gdje je X# port na koji ste spojeni, a a jednostavno poziva Arduino koji ste mapirali na tu varijablu. Pokrenite if naredbu, i postavite prvi uslov za sunčevu svjetlost <3. Postavite izlaz kao "info. TOD = 'noć" "da prikaže doba dana kao strukturu, a zatim dodajte još jednu naredbu sa izlazom kao" info. TOD =' day '". Budući da je ovo drugi izraz, ne trebamo uvjet jer će raditi za sve ostale vrijednosti koje nisu definirane u if naredbi. Obavezno dovršite if naredbu s krajem i prijeđite na programiranje senzor temperature.
Postavite varijablu thermo jednaku drugoj naredbi readVoltage, naredba je "readVoltage (a, 'X#')". U našem slučaju, temperatura je morala biti pretvorena iz jedinica napona u Celzijuse, pa je jednadžba "tempC = (termo-.5).*100" pretvorena iz napona u Celzijuse. Radi jednostavnosti, pretvorili smo temperaturu u Celzijusima u Fahrenheit, ali to je potpuno neobavezno.
Kôd za svrhe lijepljenja
sunčeva svjetlost = očitani napon (a, 'A1') ako je sunčeva svjetlost <3
info. TOD = 'noć'
else
info. TOD = 'dan'
kraj
thermo = readVoltage (a, 'A3');
tempC = (termo-.5).*100;
info.tempF = (9/5.*tempC) +32
Korak 4: Kodirajte senzore za kišnicu i vlagu tla
Kao što je navedeno u posljednjem koraku, pobrinite se da znate u koje su portove vaši senzori priključeni na Arduino ploču jer će ovaj korak učiniti manje frustrirajućim. Počnite sa senzorom za kišnicu i pokrenite if naredbu. Postavite prvi uvjet za "readVoltage (a, 'X#')> 4", a izlaz postavite na "info. Rain = 'bez padavina". Dodajte elseif i postavite uvjet na naredbu readVoltage prije, ali postavite je> 2. Dodajte "&&" da označite još jedan uvjet koji mora biti ispunjen i postavite ga na naredbu readVoltage kao i prije te ga postavite na <= 4. Izlaz će biti "info. Rain = 'magljenje" ". Na kraju, dodajte još jedno i postavite izlaz na "info. Rain = 'downpour'". Možda ćete morati prilagoditi vrijednosti za uslove na osnovu vlažnosti okoline prostorije u kojoj radite.
Zatim započnite kôd senzora vlažnosti tla i počnite s if naredbom. Postavite uslov if naredbe na "readVoltage (a, 'X#')> 4 i dodajte izlaz" info.soil = 'dry' ". Dodajte elseif naredbu i koristeći gornju naredbu readVoltage postavite je za> 2. Dodajte "&&" i postavite drugu naredbu readVoltage za <= 4. Postavite njen izlaz na "info.soil = 'optimalno zasićenje". Dodajte još jednu naredbu i postavite njen izlaz na "info.soil =' flood" ", i ne zaboravite dodati kraj.
Kôd za svrhe lijepljenja
ako je pročitanoVoltage (a, 'A0')> 4 info. Rain = 'bez padavina'
elseif readVoltage (a, 'A0')> 2 && readVoltage (a, 'A0') <= 4
info. Rain = 'zamagljivanje'
else
info. Rain = 'pljusak'
kraj
ako je readVoltage (a, 'A2')> 4
info.soil = 'suho'
elseif readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4
info.soil = 'optimalna zasićenost'
else
info.soil = 'poplava'
kraj
Korak 5: Kodiranje izlaza zvučnika i okvira za poruke
Izlazi za ovaj uređaj mogu se jako razlikovati, ali u ovom slučaju provest ćemo vas kroz izlaz zvučnika montiran direktno na uređaj i izlaz okvira za poruke koji se može vidjeti na udaljenom računaru. Naš zvučnik je dizajniran za emitovanje različitih frekvencija, što je lošije, za optimalnu temperaturu usjeva, sunčevu svjetlost, vlažnost tla i padavine. Započnite izlazni kôd zvučnika s if naredbom i postavite njeno stanje na naredbu "readVoltage (a, 'X#')> 4 || info.tempF = 3 || readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4 ". Dodajte istu naredbu playTone kao što je prikazano gore, ali promijenite 200 na 1000 da biste proizveli viši, pozitivniji ton. Zatim dodajte još jedno i ponovo dodajte istu naredbu playTone, ali promijenite 1000 u 1500. Ovi različiti tonovi ukazuju na ozbiljnost situacije na terenu. Obavezno dodajte kraj kako biste dovršili if naredbu.
Naš posljednji odjeljak koda bit će izlaz koji proizvodi okvir za poruku. Kreirajte niz pomoću 'oznaka u zagradama i pretvorite dijelove svoje strukture u nizove pomoću naredbe "num2str (info.x)", gdje je x naziv podstrukture u info strukturi. Koristite "string newline" za dodavanje novih redova u okvir za poruku i upišite svoju poruku u tekst koristeći navodnike, dodajući stvarnu vrijednost polja u niz pomoću gore navedene naredbe num2str. Konačno, s definiranim nizom, upotrijebila je naredbu "msgbox (string)" za prikaz podataka kao okvir za poruku na vašem monitoru.
Kôd za svrhe lijepljenja
ako je readVoltage (a, 'A2')> 4 || info.tempF <32 playTone (a, 'D9', 200, 1)
inače ako je sunčeva svjetlost> = 3 || readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4
playTone (a, 'D9', 1000, 3)
else
playTone (a, 'D9', 1500, 5)
kraj
string = ['Temp je (deg F)', num2str (info.tempF)]
string = [string newline 'Tlo je', num2str (info.soil)]
string = [string newline 'Vanjske padavine su', num2str (info. Kiša)]
string = [string newline 'Vrijeme dana je', num2str (info. TOD)]
msgbox (string)
Korak 6: Zaključak
Dok se svijet i dalje sve više oslanja na sintetičke alternative proizvodima koji su prethodno ubrani iz usjeva, poljoprivreda će zasigurno dugo ostati relevantan i važan faktor ekonomije. Adekvatno nadziranje obradivog zemljišta ključno je za poljoprivrednika da maksimalno iskoristi svoju žetvu, a pomoću našeg uređaja nije moguće samo daljinsko nadzirati cijelo poljoprivredno zemljište, već je to moguće učiniti na jeftin i jednostavan način instalaciju i pouzdan način. Nadamo se da se ovaj vodič pokazao informativnim i lakim za praćenje, te se nadamo da će se uređaj pokazati korisnim za sve ono što želite implementirati ili eksperimentirati s njim.
Sretno kodiranje, Tim za niz poljoprivrednih senzora