Innholdsfortegnelse:

Agricultural Sensor Array: 6 trinn
Agricultural Sensor Array: 6 trinn

Video: Agricultural Sensor Array: 6 trinn

Video: Agricultural Sensor Array: 6 trinn
Video: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, Juli
Anonim
Agricultural Sensor Array
Agricultural Sensor Array

Et prosjekt av Jackson Breakell, Tyler McCubbins og Jakob Thaler for EF 230

Landbruk er en viktig produksjonsfaktor i USA. Avlinger kan brukes til en rekke forskjellige formål, alt fra råvarer til produksjon av klær, legemidler og tilsetningsstoffer til direkte forbruk av delene av avlingen, oftest den spirende frukten. Flertallet av avlingene i USA dyrkes utendørs, der værforhold eller temperatur ikke kan kontrolleres i stor skala. Gitt hvor drastisk ugunstige værforhold kan påvirke veksten av avlinger, som igjen påvirker USAs økonomi, blir det viktig å overvåke forholdene i et avlingsfelt.

Vår enhet, Agricultural Sensor Array, lar bønder overvåke tilstanden til forhåndsvalgte deler av feltet ved hjelp av 4 sensorer: en regnvannsensor, en jordfuktighetssensor, en temperatursensor og en fotoelektrisk sensor. Kombinasjonen av disse sensorene lar en bonde tilstrekkelig planlegge sesongens avlingsproduksjon, justere for for lite eller for mye regn, bedre håndtere katastrofer som kan drepe avlinger og spare tid og problemer ved å ta jordprøver og bruke dyrere sensorutstyr. I denne instruksen vil vi lede deg gjennom ledningene og kodingen bak vårt Agricultural Sensor Array, slik at du også kan lage din egen.

Trinn 1: Saml nødvendige materialer

Samle nødvendig materiale
Samle nødvendig materiale

Nedenfor er en liste over nødvendig materiale du trenger for å komme i gang"

1. Arduino Board, gjerne Arduino Uno

2. Grunnleggende brødbrett

3. 1x 220 ohm motstand

4. Assorterte ledninger i forskjellige farger

5. Micro USB til USB -kabel

6. Høyttaler som kan monteres på brettet

7. Fotoelektrisk sensor

8. Temperatursensor

9. Regnvannsensor

10. Jordfuktighetssensor

11. Datamaskin med Matlab 2017 og Arduino Support Package installert (Support-pakken finner du under tillegg)

Trinn 2: Koble kortet og koble til

Koble brettet og koble til
Koble brettet og koble til

Begynn med å enten koble brettet som vist ovenfor, eller på den måten som passer deg best. Det er bokstavelig talt ubegrensede måter brettet kan kobles til, så den nøyaktige konfigurasjonen er virkelig opp til deg. Etter at kortet er kablet, begynner du å feste sensorene dine. Regnvannet, jordfuktigheten og fotoelektriske sensorer er alle analoge utganger, så sørg for at de er koblet til analog-inn-delen av Arduino. Temperatursensoren, derimot, er en digital utgang, så sørg for at den er koblet til en tilgjengelig digital inngang på Arduino. Arduino skal ha utganger for 3.3v og 5v, så vær sikker på at sensorene er koblet til spenninger som de er kompatible med.

Etter at du er sikker på at kortet er riktig koblet til, kobler du Micro USB til USB -kabelen fra datamaskinen til Micro USB -porten på datamaskinen og slår på Arduino. Åpne Matlab, og sørg for at du har installert Arduino Support Package under tilleggsprogrammer, kjør kommandoen "fopen (serial ('nada'))", uten ". Det skal dukke opp en feil, og feilen skal fortelle du det er en tilgjengelig komport med et nummer. Kjør kommandoen "a = arduino ('comx', 'uno')", der x er nummeret på din komport, for å kartlegge Arduino til et objekt. LED -lampen på Arduino bør blinke raskt for å indikere at den er tilkoblet.

Trinn 3: Kode de fotoelektriske og temperatursensorene

Kode de fotoelektriske og temperatursensorene
Kode de fotoelektriske og temperatursensorene

Før du begynner å kode, noter du hvor sensorene dine er koblet til Arduino, da dette vil være viktig for readVoltage -kommandoen. Begynn koden din med å sette variabelen sollys lik kommandoen "readVoltage (a, 'X#') ', der X# er porten du er koblet til, og a ringer ganske enkelt Arduinoen du har kartlagt til den variabelen. Start en if -setning, og angi den første betingelsen for sollys <3. Sett utgangen som "info. TOD = 'night'" for å skrive ut tiden på dagen som en struktur, og legg deretter til en annen setning med utgangen som "info. TOD = ' day '". Siden dette er en else -setning, trenger vi ikke en betingelse, ettersom den vil fungere for alle andre verdier som ikke er definert i if -setningen. Sørg for å fullføre if -setningen med en slutt, og gå videre til programmering temperatursensoren.

Sett variabelen termo lik en annen readVoltage -kommando, kommandoen er "readVoltage (a, 'X#')". I vårt tilfelle måtte temperaturen konverteres fra spenningsenheter til Celsius, så ligningen "tempC = (termo-.5).*100" for å konvertere fra spenningen til Celsius. For enkelhets skyld konverterte vi temperaturen i Celsius til Fahrenheit, men dette er rent valgfritt.

Kode for liming

sollys = readVoltage (a, 'A1') hvis sollys <3

info. TOD = 'natt'

ellers

info. TOD = 'dag'

slutt

termo = readVoltage (a, 'A3');

tempC = (termo-.5).*100;

info.tempF = (9/5.*tempC) +32

Trinn 4: Kode for regnvanns- og jordfuktighetssensorer

Kode for regnvanns- og jordfuktighetssensorer
Kode for regnvanns- og jordfuktighetssensorer

Som nevnt i det siste trinnet, sørg for at du vet hvilke porter sensorene dine er koblet til på Arduino -kortet, da det vil gjøre dette trinnet mye mindre frustrerende. Begynn med regnvannsensoren, og start en if -setning. Sett den første betingelsen for "readVoltage (a, 'X#')> 4", og sett utgangen til "info. Rain = 'ingen nedbør'. Legg til en elseif, og sett den betinget til readVoltage -kommandoen før, men sett den til> 2. Legg til en "&&" for å angi en annen betingelse som må være oppfylt, og sett den til en readVoltage -kommando som før, og sett den til <= 4. Utgangen vil være "info. Rain = 'misting'". Til slutt legger du til en annen og setter utgangen til "info. Rain = 'downpour'". Du må kanskje justere verdiene for forholdene basert på luftfuktigheten i rommet du jobber i.

Deretter starter du koden for jordfuktighetssensoren, og starter med en if -setning. Sett betingelsen for if -setningen til "readVoltage (a, 'X#')> 4, og legg til output" info.soil = 'dry' ". Legg til en elseif -setning, og bruk readVoltage -kommandoen ovenfor, sett den til> 2. Legg til en "&&", og angi en annen readVoltage -kommando for <= 4. Sett utgangen til "info.soil = 'optimal metning'". Legg til en else -setning og sett utgangen til "info.soil = 'flood' ", og ikke glem å legge til en slutt.

Kode for liming

if readVoltage (a, 'A0')> 4 info. Rain = 'ingen nedbør'

elseif readVoltage (a, 'A0')> 2 && readVoltage (a, 'A0') <= 4

info. Rain = 'misting'

ellers

info. Rain = 'nedbør'

slutt

hvis readVoltage (a, 'A2')> 4

info.soil = 'tørr'

elseif readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4

info.soil = 'optimal metning'

ellers

info.soil = 'flom'

slutt

Trinn 5: Utgangskoding for høyttaler og meldingsboks

Høyttaler- og meldingsboksutgangskoding
Høyttaler- og meldingsboksutgangskoding

Utgangene for denne enheten kan variere mye, men i dette tilfellet vil vi lede deg gjennom en høyttalerutgang som er montert direkte på en enhet og en meldingsboksutgang som kan vises på en ekstern datamaskin. Høyttaleren vår er designet for å sende forskjellige frekvenser, lavere, verre, for optimal avlingstemperatur, sollys, jordfuktighet og nedbør. Start høyttalerutgangskoden med en if -setning, og sett tilstanden til kommandoen "readVoltage (a, 'X#')> 4 || info.tempF = 3 || readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4 ". Legg til den samme playTone -kommandoen som vist ovenfor, men endre 200 til 1000 for å gi en høyere og mer positiv tone. Deretter legger du til en annen og legger til den samme playTone -kommandoen igjen, men endrer 1000 til 1500. Disse varierende tonene indikerer alvorlighetsgraden av feltets situasjon. Sørg for at du legger til en slutt for å fullføre if -setningen.

Vår siste del av koden vil være en utgang som produserer en meldingsboks. Lag en streng ved å bruke 'merker i parentes, og konvertere delene av strukturen din til strenger ved å bruke kommandoen "num2str (info.x)", der x er et understrukturnavn i infostrukturen. Bruk "streng ny linje" for å legge til nye linjer i meldingsboksen, og skriv meldingen i tekst ved hjelp av anførselstegnet, og legg til den faktiske verdien av feltet i strengen ved hjelp av den nevnte kommandoen num2str. Til slutt, med strengen definert, brukte du kommandoen "msgbox (streng)" for å vise dataene som en meldingsboks på skjermen.

Kode for liming

hvis readVoltage (a, 'A2')> 4 || info.tempF <32 playTone (a, 'D9', 200, 1)

annet hvis sollys> = 3 || readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4

playTone (a, 'D9', 1000, 3)

ellers

playTone (a, 'D9', 1500, 5)

slutt

string = ['Temp er (deg F)', num2str (info.tempF)]

string = [string newline 'The earth is', num2str (info.soil)]

string = [string newline 'Utenfor nedbør er', num2str (info. Rain)]

string = [string newline 'Tiden på dagen er', num2str (info. TOD)]

msgbox (streng)

Trinn 6: Konklusjon

Konklusjon
Konklusjon

Mens verden fortsetter å stole mer og mer på syntetiske alternativer til varer som tidligere er høstet fra avlinger, vil landbruket sikkert forbli en relevant og viktig faktor for økonomien i lang tid. Tilstrekkelig overvåking av jordbruksareal er avgjørende for at en bonde får mest mulig ut av høsten, og med enheten vår er det ikke bare mulig å overvåke hele jordbruksarealet eksternt, men det er mulig å gjøre det på en billig, lett å installere og pålitelig måte. Vi håper denne veiledningen har vist seg informativ og enkel å følge, og vi håper at enheten viser seg nyttig for uansett hvordan du ønsker å implementere eller eksperimentere med den.

God koding, Agricultural Sensor Array Team

Anbefalt: