Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Çay əkinlərində tətbiq olunan avtomatik məlumat toplama sistemi. Ağıllı kənd təsərrüfatı məlumatlarının toplanmasının bir hissəsidir.
Addım 1: Bu Layihədə İstifadə Edilən Şeylər
Avadanlıq komponentləri
- Grove - Karbon Dioksid Sensoru (MH -Z16)
- Grove - Rəqəmsal İşıq Sensoru
- Grove - Toz Sensoru (PPD42NS)
- Grove-Oksigen Sensoru (ME2-O2-Ф20)
- Torpaq Nəmliyi və Temperatur Sensoru
- LoRa LoRaWAN Gateway - Raspberry Pi 3 ilə 868MHz dəsti
- Grove - Temp & Humi və Barometr Sensoru (BME280)
Proqram proqramları və onlayn xidmətlər
Microsoft Visual Studio 2015
Addım 2: Hekayə
Ağıllı kənd təsərrüfatı, Əşyaların İnterneti texnologiyasını ənənəvi kənd təsərrüfatına tətbiq etmək, mobil və ya kompüter platformaları vasitəsilə kənd təsərrüfatı istehsalını idarə etmək üçün sensorlar və proqramlardan istifadə etməklə ənənəvi kənd təsərrüfatını daha "ağıllı" hala gətirməkdir.
Sichuan, Yaan'ın şimal -şərqindəki Mengding dağında, dağ silsiləsi yaşıl dənizdə qərbdən şərqə doğru axır. Bu, dəniz səviyyəsindən 1100m yüksəklikdə yerləşən 50mu (= 3.3 hektar) bir əkin sahəsi olan, öz nəslinin çox az sayda Mengding çay istehsalçılarından olan 36 yaşlı Denq üçün ən tanış mənzərədir. Deng çayçı ailəsindən gəlir, lakin ailə mirasını davam etdirmək asan məsələ deyil. "Çaylarımız əla keyfiyyətini təmin etmək üçün üzvi bir mühitdə yüksək yüksəkliklərdə yetişdirilir. Ancaq eyni zamanda, böyümə sıxlığı aşağıdır, dəyəri yüksəkdir və qönçələnmə qeyri -bərabərdir, bu da çayın yığılmasını çətinləşdirir. Bu səbəbdən yüksək dağ çayları adətən kiçik məhsullardır və dəyərləri bazarda əks olunmur. " Son iki ildir, Deng, dəyərini tanıtmaq üçün istehlakçıların yüksək dağ çayları haqqında məlumatlılığını artırmağa çalışır. Və Seeed -in IoTea texnologiyasını tətbiq etmək üçün bir plantasiya axtaran Fanla tanış olanda bir həll üçün mükəmməl bir uyğunluq tapıldı. The Seeed IoTea Solution, çay fermerlərinin ənənəvi çay yetişdirmə təcrübələrini dəyişdirmədən əkin sahələrini daha yaxşı idarə etmələrinə kömək etmək və açıq platformada plantasiyalardan real vaxtda ətraf mühit məlumatlarını təqdim etmək məqsədi daşıyır.
Sensorlardan, qovşaqlardan və şlüzlərdən ibarət olan IoTea, temperatur və rütubət, CO2, O2, PM və işığa məruz qalma da daxil olmaqla əkin və istehsal prosesində çayın keyfiyyətinə təsir edə biləcək faktorların real vaxt məlumatlarını toplayır. Məlumatlar sensorlar tərəfindən toplanır, qovşaqlar tərəfindən ağ geçidinə və nəticədə buluda göndərilir və veb səhifədə son müştərilər üçün əlçatan olur.
Addım 3: Avadanlıq Bağlantısı
Addım 1: Ağ Geçidi Bağlantısı
Gateway ayrı bir qutuda quraşdırılmışdır. İstilik yayılma problemini nəzərə alaraq 2 azarkeş əlavə etdik. Biri Raspberry Pi -nin istilik yayılması üçündür, digəri daxili və xarici hava dövranı üçündür. Gateway qutusu bir fermerin evində yerləşdirilir, buna görə də onun elektrik problemini nəzərə almağa ehtiyac yoxdur.
Addım 2: Node Bağlantısı
Düyün məlumatların terminalıdır və bütün orijinal məlumatlar buradan əldə edilir. Düyünlə əlaqəli 6 sensor var. Torpağın rütubət və temperatur sensörünə əlavə olaraq panjur qutusuna başqa sensorlar da qoyduq.
Düyün su keçirməyən bir qutuya yerləşdirilir. Node ilə daha yaxşı bir əlaqə qurmaq üçün bir adapter kartı hazırlayırıq. Nəhayət, bu lövhənin sxematik yükləmə bağlantısını verəcəyik. Aşağıda göstərildiyi kimi, sensorların kabelləri terminal blokları vasitəsilə adapter lövhəsinə daxil edilir. Sensorların və fanın işə salınmasını və sönməsini idarə etmək üçün keçid sxemləri qurmaq üçün 3 MOS borusundan (SI2301) istifadə edirik. Fan sərinləmək üçün istifadə olunur. Lövhədə quraşdırılmış bir temperatur sensoru (DS18B20) var. Qutunun daxili istiliyini bizə deyə bilər və sonra mikrokontrolör fanı açıb açmayacağına qərar verir. Qurğuşun turşusu batareyasının gərginliyini ölçmək üçün bir gərginlik bölücü dövrə etmək üçün bir neçə rezistordan istifadə edirik. Nəhayət, daha sonra genişləndirmək və düzəltmək üçün lövhədə 3 IIC interfeysi və serial portu saxlayırıq.
Nodun enerji təchizatı problemindən danışaq. Düyün təsadüfi olaraq çay plantasiyasına yerləşdirildiyindən ənənəvi enerji təchizatı üsulu artıq tətbiq olunmur. Günəş enerjisindən istifadə etmək yaxşı bir fikirdir. Hal -hazırda bazarda bir çox həll var. Ehtiyaclarımıza cavab verən birini seçə bilərik. Seçdiyimiz həlldə 3 hissə var: günəş paneli, günəş yükləmə nəzarətçisi və qurğuşun turşusu batareyası. Günəş enerjisini daha yaxşı tutmaq üçün mötərizənin üstünə günəş paneli qoyduq və günəşlə üzbəüz olmasını təmin etmək üçün bucağını tənzimlədik. Günəş şarj nəzarətçisini düyünlü eyni qutuya qoyduq. Qutunun içərisində əlavə yer olmadığı üçün qurğuşun turşusu batareyasını yerləşdirmək üçün suya davamlı yeni bir qutu tapmalı olduq.
Addım 4: Proqram Konfiqurasiyası
Düyün
Bu bölmədə, əsasən proqram təminatı konfiqurasiyasını təqdim edəcəyik.
DataFormat
Node tərəfindən ağ geçidinə yüklənmiş məlumatlar:
imzasız simvol Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Hər bir məlumat bitinin mənası:
Lora_data [0]: Hava istiliyi, ℃
Lora_data [1]: Hava rütubəti, %
Lora_data [2]: Yüksək səkkizlik, m
Lora_data [3]: Aşağı səkkiz yüksəklik
Lora_data [4]: CO2 konsentrasiyası yüksək səkkiz, ppm
Lora_data [5]: CO2 konsentrasiyası aşağı səkkiz
Lora_data [6]: Toz konsentrasiyası yüksək səkkiz, ədəd/0.01cf
Lora_data [7]: Toz konsentrasiyası aşağı səkkiz
Lora_data [8]: İşıq intensivliyi yüksək səkkiz, lüks
Lora_data [9]: İşığın intensivliyi aşağı səkkizdir
Lora_data [10]: O2 konsentrasiyası, % (xam məlumatlar 1000 -ə bölünür)
Lora_data [11]: Torpaq temperaturu, ℃
Lora_data [12]: Torpağın rütubəti, %
Lora_data [13]: Batareya gərginliyi, v
Lora_data [14]: Sensorların səhv kodu
Xəta kodu:
Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Hər bitin mənası:
bit 0: 1 ---- Temp & Humi və Barometr Sensoru (BME280) xətası
bit 1: 1 ---- Karbon Dioksid Sensoru (MH-Z16) xətası
bit 2: 1 ---- Toz Sensoru (PPD42NS) xətası
bit 3: 1 ---- Rəqəmsal İşıq Sensoru xətası
bit 4: 1 ---- Oksigen Sensoru (ME2-O2-Ф20) xətası
bit 5: 1 ---- Torpaq Nəmliyi və Temperatur Sensoru xətası
bit 6: Qorunur
bit 7: qorunur
Bir Error_code_transform.exe etdik, açın və onaltılı olaraq səhv kodu daxil edin, hansı sensorun səhv olduğunu tez bir zamanda biləcəksiniz. Yükləmə linki bu məqalənin sonundadır.
Parametrlərin tənzimlənməsi: a) Məlumat ötürmə dövrü
// Seeedtea.ino
#defineinterval_time 600 // saniyə
Məlumat ötürmə dövrünü dəyişdirmək üçün bu parametr dəyişə bilər. Hər dövrədə məlumatların toplanması təxminən 1 dəqiqə çəkir. Buna görə də bu dəyəri 60 saniyədən az etmək məsləhət görülmür.
b) Toz sensoru istiləşmə vaxtı
//seeedtea.ino
#definePreheat_time 30000 // DustSensorun istiləşmə vaxtı, milliseond //Dust_other.cpp #definesampletime_ms 30000 // sampleling3030s
c) Gərginlik əmsalı
//POWER_Ctrl.cpp
#defineBattery_coefficient 0.159864 // ADC dəyəri × Battery_effefficient = battery_voltage #defineSolar_effefficient 0.22559 // ADC value × Solar_effefficient = solar_voltage
Bu iki parametr, gərginlik bölücü dövrə görə hesablanır.
d) Fanın açılma temperaturu həddi
//POWER_Ctrl.cpp
#defineFan_start_temp 45 // temperaturethreshold #defineFan_start_light 500 // işıq intensivliyi
Həqiqi temperatur həddini keçdikdə fan soyumağa başlayacaq.
e) O2 sensoru işə salınma parametri
// Oxygen.cpp
#defineO2_percentage 208.00 //20.8%
f) Makro keçid
//seeedtea.ino
#defineLORA_RUN // Şərhdən sonra Loranın işə salınması və məlumatların ötürülməsi dayanacaq #defineSENSOR_RUN // Şərhdən sonra xarici sensorlar işləməyəcək //POWER_Ctrl.cpp #defineFAN_ON // Yalnız Fortesting, Praktiki tətbiqin şərh edilməsi lazımdır /**** *** DS18B20 nəzarət rejimi **********************/ #defineSlower_Mode // Yavaş rejim temperaturu birləşdirir. Şərh sürətli rejimdir
g) Pin eşlemesi
D2: LED göstəricisi və xarici sıfırlama mikrokontrolörüIIC: SCL və SDA
//Toz_başqa.h
#defineDust_pin 3 // Toz sensoru //CO2.cpp #defineCO2_serial Serial1 // hardwareserial port (D0 & D1) istifadə edin //seeedtea.ino #definedataPin 6 // Torpaq məlumat pin #defineclockPin 7 // Torpaq saatı pimi // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fan #defineAir_CtrlPin 10 // louverboxa yerləşdirilmiş sensorlar üçün idarəetmə pimi #defineSoil_CtrlPin 11 // Torpaq Nəmliyi və Temperatur Sensoru açarı pimi #defineBatterySpin_Pin /Günəş panelinin gərginliyini ölçün // Oxygen.h #defineO2_pin A1 // O2 sensor
h) Gözətçi taymeri
Nəzarətçi sayğacı sistemin iş vəziyyətini izləmək üçün istifadə olunur. Sistem qeyri -normal işləyərkən, düyün sıfırlanacaq və uzun müddət fasiləsiz işləyə bilər.
İstinad ediləcək kitabxana:
- Adafruit_SleepyDog.h layihəyə əlavə edildi
- Adafruit_ASFcore-master.zip, layihə qovluğunda paketlənir və Arduino IDE-ə əl ilə əlavə edilməlidir.
Əlaqəli funksiyalar:
Gözətçini aktiv edin
int WatchdogSAMD:: aktivləşdir (int maxPeriodMS, bool isForSleep)
Giriş parametrləri:
Int maxPeriodMS: Gözləmə müddəti milisaniyələrdə. Maksimum icazə verilən 16000 millisaniyədir.
qaytarma dəyəri:
Int növü, faktiki gözləmə müddətini qaytarın
Gözətçini sıfırlayın
void WatchdogSAMD:: reset ()
"Köpək bəsləmək" olaraq adlandırılan gözətçi taymeri yenidən qurmaq üçün bu funksiyaya zəng edin. Sıfırlama olmadan gözləmə müddətinin aşılması düyünün yenidən başlamasına səbəb olacaq.
Gözətçini dayandırın
void WatchdogSAMD:: disable ()
Gateway
Bu bölmədə Loriot serverinə necə qoşulacağımızı təqdim edəcəyik.
Addım 1: Loriot Server Ağ Geçidi Qeydiyyatı
a) Yeni istifadəçinin əvvəlcə bir hesab qeydiyyatdan keçməsi lazımdır, qeydiyyat ünvanını vurun. Qeydiyyatdan keçmək üçün İstifadəçi Adı, Şifrə və e -poçt ünvanını daxil edin, qeydiyyatdan sonra sizə bir e -poçt göndəriləcək, aktivləşdirmək üçün e -poçtdakı təlimatı izləyin.
b) Uğurlu aktivləşdirmədən sonra daxil olmaq üçün bura daxil olun. Varsayılan səviyyədə "İcma Şəbəkəsi" var, 1 Gateway (RHF2S001) və 10 qovşaqları dəstəkləyir.
c) Dashboard daxil edin -> Ağ Geçidi, Gateway əlavə etmək üçün Gateway əlavə et düyməsini basın.
d) Raspberry Pi 3 seçin
e) Aşağıdakı kimi təyin edin:
- Radio cəbhəsi -> RHF2S001 868/915 MHz (SX1257)
- BUS -> SPI
f) RHF2S001 -in MAC ünvanını b8: 27: eb: xx: xx: xx formatında doldurun. Həm də Gateway Məkan məlumatlarını daxil edin.
g) Qeydiyyatı başa çatdırmaq üçün "Raspberry Pi ağ geçidini qeyd et" düyməsini basın.
h) Konfiqurasiya səhifəsinə daxil olmaq üçün qeydiyyatdan keçmiş ağ geçidi vurun, "Tezlik Planı" nı əl ilə dəyişdirin, burada planınız RHF2S001 tipinizin növünə görə seçilir, mövcud plan CN470, CN473, CN434, CN780, EU868, seçildikdən sonra səhifəni yeniləyin. dəqiq kanalı əldə etmək üçün. Bu vikidə EU868 -i seçirik.
i) Macunu terminalda əmr edin:
cd /home/rxhf/loriot/1.0.2
sudo systemctl stop pktfwd sudo gwrst wget > -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io
j) Finish gateway registration. You will see the gateway is Connected now. Next is to register node.
Addım 2: Loriot Server Bağlantı Node cihazı
a) Mövcud ağ geçidi kanallarını əldə edin
Mövcud ağ geçidi kanallarını İdarə Paneli -> Ağ Geçidi -> Ağ Geçidinizdən əldə etmək olar, mövcud şəkilləri aşağıdakı şəkildəki kimi görə bilərsiniz.
b) Seeeduino LoRAWAN GPS (RHF3M076) Konfiqurasiyası
ArduinoIDE serial monitorunu açın, aşağıdakı əmrə vurun.
+ch -də
Seeeduino_LoRAWAN GPS -in standart kanalını təsdiqləmək üçün 3 kanal əldə edəcəksiniz. Mövcud kanal yoxdursa, Seeeduino_LoRAWAN kanallarını aşağıdakı komanda ilə dəyişə bilərsiniz.
+ch = 0 -da, 868.1
at+ch = 1, 868.3 at+ch = 2, 868.5
Sonra yenidən yoxlamaq üçün+ch düyməsindən istifadə edə bilərsiniz.
c) Loriot serverində ABP NodeLog olaraq Seeeduino_LoRAWAN GPS əlavə edin, Dash Board -> Proqramlar -> SimpleApp -a basın. Maddələrin altından ABP idxalını daxil edin
- DevAddr: Seeeduino_LoRAWAN GPS "AT+ID" əmrindən keçir (Qeyd: Loriot kolon bağlayıcısını dəstəkləmir, əl ilə çıxarmaq lazımdır)
- FCntUp: Setto 1
- FCntDn: Setto 1
- NWKSKEY: Varsayılan dəyər 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY: Varsayılan dəyər 2B7E151628AED2A6ABF7158809CF4F3C
- EUI: DEVEUI, Seeeduino_LoRAWAN GPS "AT+ID" əmrindən keçir
Cihazın idxalını başa çatdırmaq üçün Cihazı İdxal et düyməsini basın. İndi Dashboard-> Applications -> SampleApp seçin, yeni əlavə etdiyiniz ABP Nodeunu görəcəksiniz.
d) Seeeduino_LoRAWAN -dan məlumat göndərin
DİQQƏT! Bu sadəcə bir sınaqdır.
ArduinoIDE -nin serial monitoruna qayıdın, əmr göndərin:
AT+CMSGHEX = "0a 0b 0c 0d 0e"
Sonra İdarə Paneli -> Proqramlar -> SampleApp -> Cihaz bölməsinə gedin, Node Cihazı EUI və ya DevAddr düyməsini vurun, burada göndərdiyiniz məlumatları tapa bilərsiniz.
Ətraflı məlumat üçün bu vikiyə baxın.
Addım 5: Veb saytın tikintisi
Əlaqəli Alətlər
- virtualenv
- Python3
- Gunicorn
- Nəzarətçi
- Nginx
- MySQL
Test yerləşdirmə mühiti olaraq CentOS7 -dən istifadə edirik
virtualenv
Müstəqil bir python3 istehsal mühiti yaratmaq üçün virtualenv istifadə edin
a) quraşdırın
pip virtualenv quraşdırın
b) python3 virtual mühiti yaratmaq
virtualenv -python3 iotea
c) virtual mühiti işə salın və iotea kataloquna daxil olun
mənbə bin/aktivləşdir
d) mövcud mühit
söndürmək
Python3
a) quraşdırın
yum epel-release qurun
python36 yükləyin
b) PyMySQL, DBUtils, Flask, websocket-client, configparser asılı kitabxanasını quraşdırın
pip pymysql quraşdırın
pip install dbutils pip pip flask pip install websocket-client pip install configparser
Gunicorn
a) quraşdırın (Python3 mühitində)
pip gunicorn quraşdırın
b) balon layihəsini işlədin (iotea layihə kataloqu altında)
gunicorn -w 5 -b 0.0.0.0:5000 app: app
c) loriot məlumatlarını əldə etmək üçün websocket-clint işləyin
gunicorn loriot: tətbiq
d) Gunicorn proses ağacına baxın
pstree -ap | grep gunicorn
Nəzarətçi
a) quraşdırın (kök istifadəçi)
pip quraşdırma nəzarətçisi
b) konfiqurasiya faylları yaratmaq
echo_supervisord_conf> /etc/supervisord.conf
c) bir kataloq yaratmaq və bir kataloq konfiqurasiyasını təqdim etmək
mkdir -p /etc/supervisor/conf.d
/Etc/supervisord.conf faylını düzəldin və faylın sonundakı [daxil et] altındakı faylları dəyişdirin.
Diqqət yetirin ki, ';' şərh xarakteri olan bu iki sətrin qarşısında.
[daxildir]
Fayllar = /etc/supervisor/conf.d/*.conf
/Etc/supervisor/conf.d/ təqdim etmək deməkdir. Proses konfiqurasiya faylı olaraq aşağıdakı konfiqurasiya faylı istifadə olunur (nəzarətçi tərəfindən izlənilir).
d) daxil olan konfiqurasiya (iotea kataloqunun altında)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) açıq iotea xidməti
superviosrctl reload #konfiqurasiya faylını yenidən yükləyin
superviosrctl start loriot #açıq loriot məlumat qəbulu superviosrctl start iotea #iotea flask tətbiqini açın
f) digər ümumi əməliyyatlar
supervisorctl reload # konfiqurasiya faylını yenidən yüklə
supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # more command bax
Nginx
a) quraşdırın
yum -y nginx yükləyin
b) konfiqurasiya
cp NginxIotea.conf /etc/nginx/conf.d/
c) Nginx başladın
systemctl nginx.service başladın
MySQL
a) əlaqəli parametrlər
istifadəçi = 'kök'
passwd = '1234' db = 'iotea' portu = 3306
b) fayl
iotea_iotea.sql
c) konfiqurasiya faylı
db.ini