Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Jackson Breakell, Tyler McCubbins və Jakob Thaler tərəfindən EF 230 üçün bir layihə
Kənd təsərrüfatı ABŞ -da istehsalın vacib amilidir. Məhsullar, geyim, dərman və qida əlavələrinin istehsalı üçün xammaldan məhsulun hissələrinin, ən çox cücərən meyvələrin birbaşa istehlakına qədər müxtəlif məqsədlər üçün istifadə edilə bilər. ABŞ -da bitkilərin əksəriyyəti hava şəraitinin və temperaturun geniş miqyasda idarə oluna bilmədiyi açıq havada yetişdirilir. Kəskin mənfi hava şəraitinin bitkilərin böyüməsinə necə təsir edə biləcəyini nəzərə alaraq, Birləşmiş Ştatların iqtisadiyyatına təsir göstərərək, əkin sahəsinin vəziyyətini izləmək həyati əhəmiyyət kəsb edir.
Kənd Təsərrüfatı Sensor Array cihazımız, fermerlərə 4 sensordan istifadə edərək tarlalarının əvvəlcədən seçilmiş hissələrinin vəziyyətini izləməyə imkan verir: yağış suyu sensoru, torpaq nəmliyi sensoru, temperatur sensoru və fotoelektrik sensoru. Bu sensorların birləşməsi fermerə mövsümün məhsul istehsalını adekvat planlaşdırmağa, çox az və ya çox yağışa uyğunlaşmağa, bitkiləri öldürə biləcək fəlakətlərlə daha yaxşı mübarizə aparmağa, torpaq nümunələri götürməkdən və daha bahalı sensor avadanlıqlarından istifadə etməkdən vaxta və problemə qənaət etməyə imkan verir. Bu Təlimat kitabında sizi Kənd Təsərrüfatı Sensor Arrayımızın arxasındakı naqillər və kodlaşdırma ilə tanış edəcəyik, belə ki siz də özünüz edə bilərsiniz.
Addım 1: Lazımi materialları toplayın
Başlamaq üçün lazım olan materialların siyahısı aşağıda.
1. Arduino Board, tercihen Arduino Uno
2. Əsas çörək taxtası
3. 1x 220 ohm müqavimət
4. Müxtəlif rəngli müxtəlif tellər
5. Mikro USB -dən USB kabelinə
6. Lövhəyə quraşdırıla bilən dinamik
7. Fotoelektrik Sensor
8. Temperatur Sensoru
9. Yağış suyu sensoru
10. Torpağın Nəm Sensoru
11. Matlab 2017 və Arduino Dəstək Paketi quraşdırılmış kompüter (Dəstək paketini Əlavələr altında tapa bilərsiniz)
Addım 2: Kartı bağlayın və qoşun
Lövhəni yuxarıda göstərildiyi kimi bağlayın və ya sizə ən uyğun olan şəkildə başlayın. Lövhənin kabellərlə bağlanmasının sözün əsl mənasında məhdudiyyətsiz yolları var, buna görə dəqiq konfiqurasiya həqiqətən sizə bağlıdır. Lövhə bağlandıqdan sonra sensorlarınızı bağlamağa başlayın. Yağış suyu, torpaq nəmliyi və fotoelektrik sensorlar hamısı analoqdur, buna görə də Arduinonun analoq hissəsinə qoşulduğundan əmin olun. Digər tərəfdən, temperatur sensoru rəqəmsal bir çıxışdır, buna görə Arduino -da mövcud bir rəqəmsal girişə qoşulduğundan əmin olun. Arduino 3.3v və 5v üçün çıxışlara malik olmalıdır, buna görə də sensorların uyğun olduqları gərginliyə qoşulduğundan əmin olun.
Lövhənin düzgün bağlandığından əmin olduqdan sonra, Micro USB -ni kompüterdən USB kabelinə kompüterinizin Micro USB portuna qoşun və Arduino -nu yandırın. Matlabı açın və Əlavələr altında Arduino Dəstək Paketini qurduğunuzdan əmin olaraq "fopen (serial ('nada'))" "əmrini" olmadan "işlədin. Bir səhv açılmalı və səhv bildirilməlidir bir nömrə ilə əlçatan bir komport var. "a = arduino ('comx', 'uno')" əmrini işlədin, burada x sizin komputerinizin sayıdır, Arduino -nuzu bir obyektlə müqayisə etmək üçün. Arduino -dakı LED bağlı olduğunu göstərmək üçün sürətlə yanıb sönməlidir.
Addım 3: Fotoelektrik və Temperatur Sensorlarını Kodlayın
Kodlamağa başlamazdan əvvəl, sensorlarınızın Arduino -da harada bağlı olduğunu qeyd edin, çünki bu readVoltage əmri üçün vacib olacaq. Kodunuzu dəyişən günəş işığını "readVoltage (a, 'X#') 'əmrinə bərabər qoyaraq başlayın, burada X# bağlandığınız portdur və a sadəcə bu dəyişənlə əlaqələndirdiyiniz Arduino -ya zəng edir. İf ifadəsinə başlayın., və günəş işığı üçün ilk şərti təyin edin <3.. Günün vaxtını bir quruluş olaraq çıxarmaq üçün çıxışı "info. TOD = 'gecə'" olaraq təyin edin və sonra "info. TOD = 'olaraq çıxışı olan başqa bir ifadə əlavə edin. gün '". Bu başqa bir ifadə olduğu üçün, if ifadəsində təyin olunmayan bütün digər dəyərlər üçün işləyəcəyi üçün şərtə ehtiyacımız yoxdur. if ifadənizi bir sonla bitirdiyinizə və proqramlaşdırmaya keçdiyinizə əmin olun. temperatur sensoru.
Termo dəyişənini başqa bir readVoltage əmrinə bərabər qoyun, əmri "readVoltage (a, 'X#')" dir. Bizim vəziyyətimizdə temperatur gərginlik vahidlərindən Selsiyə çevrilməli idi, buna görə də "tempC = (termo-.5).*100" tənliyi gərginlikdən Selsiyə çevrilmək üçün idi. Rahatlıq üçün Selsi temperaturunu Fahrenheitə çevirdik, amma bu sırf isteğe bağlıdır.
Yapışdırmaq üçün kod
günəş işığı = readVoltage (a, 'A1') əgər günəş işığı <3 olarsa
info. TOD = 'gecə'
başqa
info. TOD = 'gün'
bitmək
thermo = readVoltage (a, 'A3');
tempC = (termo-.5).*100;
info.tempF = (9/5.*tempC) +32
Addım 4: Yağış Suyu və Torpaq Nəm Sensorlarını Kodlayın
Son addımda deyildiyi kimi, sensorlarınızın Arduino lövhəsinə hansı portlara qoşulduğunu bildiyinizə əmin olun, çünki bu addımı daha az sinir bozucu edəcək. Yağış suyu sensoru ilə başlayın və if ifadəsinə başlayın. "ReadVoltage (a, 'X#')> 4" üçün ilk şərti təyin edin və çıxışını "info. Rain = 'yağıntı yoxdur" olaraq təyin edin. Elseif əlavə edin və şərtini əvvəl readVoltage əmrinə qoyun, ancaq> 2 olaraq təyin edin. İcra edilməli olan başqa bir şərti ifadə etmək üçün "&&" əlavə edin və əvvəlki kimi readVoltage əmrinə qoyun və <= 4 olaraq təyin edin. Çıxış "info. Rain = 'sisləmə'" olacaq. Nəhayət, başqa bir şey əlavə edin və çıxışını "info. Rain = 'leysan'" olaraq təyin edin. İşlədiyiniz otağın mühit rütubətinə əsaslanaraq şərtlər üçün dəyərləri tənzimləməli ola bilərsiniz.
Sonra, torpaq nəm sensoru üçün kodu başlayın və if ifadəsi ilə başlayın. İf ifadəsinin şərtini "readVoltage (a, 'X#')> 4 olaraq təyin edin və" info.soil = 'dry' "çıxışını əlavə edin. Elseif ifadəsi əlavə edin və yuxarıdakı readVoltage əmrini istifadə edərək onu> üçün təyin edin. 2. "&&" əlavə edin və <= 4. üçün başqa bir readVoltage əmri təyin edin. Çıxışını "info.soil = 'optimal doyma'" olaraq təyin edin. Else ifadəsi əlavə edin və çıxışını "info.soil = 'sel' olaraq təyin edin. "və son əlavə etməyi unutmayın.
Yapışdırmaq üçün kod
readVoltage (a, 'A0')> 4 info. Rain = 'yağıntı yoxdur'
elseif readVoltage (a, 'A0')> 2 && readVoltage (a, 'A0') <= 4
info. Rain = 'sis'
başqa
info. Rain = 'leysan'
bitmək
readVoltage (a, 'A2')> 4 olarsa
info.soil = 'quru'
elseif readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4
info.soil = 'optimal doyma'
başqa
info.soil = 'daşqın'
bitmək
Addım 5: Dinamik və Mesaj Kutusu Çıxış Kodlaşdırması
Bu cihazın çıxışları çox fərqli ola bilər, ancaq bu vəziyyətdə sizi birbaşa cihaza quraşdırılmış dinamikdən və uzaq bir kompüterdə baxıla bilən bir mesaj qutusu çıxışından keçəcəyik. Dinamikimiz, bitkinin optimal temperaturu, günəş işığı, torpağın rütubəti və çöküntüsü üçün fərqli tezliklər çıxarmaq üçün nəzərdə tutulmuşdur. Dinamik çıxış kodunuzu if ifadəsi ilə başlayın və şərtini "readVoltage (a, 'X#')> 4 || info.tempF = 3 || readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4 ". Yuxarıda göstərildiyi kimi eyni playTone əmrini əlavə edin, lakin daha yüksək, daha müsbət bir ton çıxarmaq üçün 200 -dən 1000 -ə dəyişin. Sonra başqa birini əlavə edin və eyni playTone əmrini yenidən əlavə edin, ancaq 1000 -i 1500 -ə dəyişdirin. Bu dəyişən tonlar sahənin vəziyyətinin ciddiliyini göstərir. İf ifadənizi tamamlamaq üçün bir son əlavə etdiyinizə əmin olun.
Kodun son bölməsi mesaj qutusu istehsal edən bir çıxış olacaq. Mötərizədə işarələri istifadə edərək bir simli yaradın və "num2str (info.x)" əmrini istifadə edərək strukturunuzun hissələrini stringsə çevirin, burada x məlumat quruluşundakı bir alt quruluş adıdır. Mesaj qutunuza yeni sətirlər əlavə etmək üçün "string newline" istifadə edin və yuxarıdakı num2str əmrindən istifadə edərək sahənin həqiqi dəyərini sətirə əlavə edərək tırnak işarəsini istifadə edərək mesajınızı mətnə yazın. Nəhayət, müəyyən edilmiş sim ilə məlumatları monitorunuzda mesaj qutusu kimi göstərmək üçün "msgbox (string)" əmrindən istifadə edin.
Yapışdırmaq üçün kod
readVoltage (a, 'A2')> 4 || info.tempF <32 playTone (a, 'D9', 200, 1)
başqa günəş işığı> = 3 || readVoltage (a, 'A2')> 2 && readVoltage (a, 'A0') <= 4
playTone (a, 'D9', 1000, 3)
başqa
playTone (a, 'D9', 1500, 5)
bitmək
string = ['İstilik (dərəcə F)', num2str (info.tempF)]
string = [string newline 'Torpaqdır', num2str (info.soil)]
string = [string newline 'Xaricdə yağıntılar var', num2str (info. Rain)]
string = [string newline 'Günün vaxtıdır', num2str (info. TOD)]
msgbox (simli)
Addım 6: Nəticə
Dünya daha əvvəl məhsullardan əldə edilən məhsullara daha çox sintetik alternativlərə güvənməyə davam edərkən, kənd təsərrüfatı uzun müddət iqtisadiyyatın aktual və vacib amili olaraq qalacaq. Kənd təsərrüfatı sahələrini lazımi qədər izləmək bir fermerin məhsulundan ən çox faydalanması üçün çox vacibdir və bizim cihazla bütün əkin sahələrini uzaqdan izləmək mümkün deyil, həm də ucuz və asan quraşdırma və etibarlı şəkildə. Ümid edirik ki, bu təlimat məlumatlı və izlənməsi asan oldu və ümid edirik ki, tətbiq etmək və ya sınamaq istədiyiniz halda cihaz faydalı olacaqdır.
Xoşbəxt kodlaşdırma, Kənd Təsərrüfatı Sensor Array Team