Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Choy plantatsiyalarida qo'llaniladigan avtomatik ma'lumot yig'ish tizimi. Bu aqlli qishloq xo'jaligi ma'lumotlarini yig'ishning bir qismidir.
1 -qadam: Ushbu loyihada ishlatilgan narsalar
Uskuna komponentlari
- Grove - karbonat angidrid sensori (MH -Z16)
- Grove - Raqamli yorug'lik sensori
- Grove - chang sensori (PPD42NS)
- Grove-kislorod sensori (ME2-O2-F20)
- Tuproq namligi va harorat sensori
- LoRa LoRaWAN Gateway - Raspberry Pi 3 bilan 868 MGts to'plami
- Grove - Temp va Humi va barometr sensori (BME280)
Dasturiy ta'minot va onlayn xizmatlar
Microsoft Visual Studio 2015
2 -qadam: hikoya
Aqlli qishloq xo'jaligi - bu "Internet narsalar" texnologiyasini an'anaviy qishloq xo'jaligiga qo'llash, sensorlar va dasturiy ta'minot yordamida qishloq xo'jaligini ishlab chiqarishni mobil yoki kompyuter platformalari orqali boshqarish, bu an'anaviy qishloq xo'jaligini yanada "aqlli" qilishdir.
Sichuan, Yaanning shimoli -sharqidagi Mengding tog'ida, tog 'tizmasi g'arbdan sharqqa yashil dengizda oqadi. Bu 36-yoshli Deng uchun eng tanish manzara, o'z avlodining eng kam sonli choy ishlab chiqaruvchilaridan biri, dengiz sathidan 1100 m balandlikda joylashgan 50mu (= 3,3 gektar) plantatsiyali. Deng choy ishlab chiqaruvchilar oilasidan, lekin oilaviy merosni davom ettirish oson ish emas. Bizning choylarimiz yuqori sifatda organik muhitda o'stiriladi va uning sifatini ta'minlaydi. Shu bilan birga, o'sish zichligi past, narxi yuqori va kurtaklari notekis bo'lib, choyni yig'ib olishni qiyinlashtiradi. Shuning uchun baland tog'li choylar odatda kichik hosil bo'lib, ularning qiymati bozorda aks ettirilmaydi ». So'nggi ikki yil mobaynida Deng, iste'molchilarning baland tog'li choyi, ularning qadr-qimmatini oshirish maqsadida, xabardorligini oshirishga harakat qilmoqda. Va u Seeedning IoTea texnologiyasini amalga oshirish uchun plantatsiya qidirayotgan Fan bilan uchrashganida, yechim uchun mukammal moslik topildi. Seeed IoTea Solution choy fermerlariga choy etishtirishning an'anaviy amaliyotini o'zgartirmagan holda plantatsiyalarni yaxshiroq boshqarishga yordam berish va ochiq maydonda plantatsiyalardan ekologik ma'lumotlarni real vaqtda taqdim etishga qaratilgan.
IoTea datchiklar, tugunlar va shlyuzlardan iborat bo'lib, harorat va namlik, CO2, O2, PM va yorug'lik ta'sirida etishtirish va ishlab chiqarish jarayonida choy sifatiga ta'sir etuvchi omillar to'g'risidagi real vaqtda ma'lumotlarni to'playdi. Ma'lumotlar sensorlar tomonidan yig'iladi, tugunlar orqali shlyuzga va oxir -oqibat bulutga yuboriladi va veb -sahifadagi oxirgi mijozlar uchun ochiq bo'ladi.
3 -qadam: Uskuna ulanishi
1 -qadam: Gateway ulanishi
Shlyuz alohida qutiga o'rnatiladi. Issiqlik tarqalish muammosini inobatga olib, biz 2 ta muxlisni qo'shdik. Ulardan biri Raspberry Pi issiqlik tarqalishi uchun, ikkinchisi ichki va tashqi havo aylanishi uchun. Darvoza qutisi dehqon uyiga joylashtirilgan, shuning uchun uning elektr muammosini ko'rib chiqishga hojat yo'q.
2 -qadam: tugun ulanishi
Tugun ma'lumotlar terminali bo'lib, barcha asl ma'lumotlar shu erdan olinadi. Tugunga 6 ta sensor ulangan. Tuproq namligi va harorat sensori bilan bir qatorda, panjara qutisiga boshqa datchiklarni qo'yamiz.
Tugun suv o'tkazmaydigan qutiga joylashtirilgan. Tugunga yaxshiroq ulanish uchun biz adapter platasini yasaymiz. Oxir -oqibat, biz ushbu taxtaning sxemasini yuklab olish havolasini beramiz. Quyida ko'rsatilgandek, sensorlar kabellari terminal bloklari orqali adapter platasiga ulangan. Sensor va fanni yoqish va o'chirishni boshqarish uchun 3 ta MOS naychasidan (SI2301) foydalanamiz. Fan sovutish uchun ishlatiladi. Bizda harorat sensori (DS18B20) o'rnatilgan. Bu bizga qutining ichki harorati haqida ma'lumot berishi mumkin, keyin mikrokontroller fanni yoqish -yoqmasligini hal qiladi. Qo'rg'oshin-kislotali akkumulyator zo'riqishini o'lchash uchun kuchlanishni ajratuvchi sxemani yaratish uchun biz bir nechta rezistorlardan foydalanamiz. Nihoyat, biz kengaytirish va disk raskadrovka uchun bortda 3 ta IIC interfeysi va ketma -ket portni saqlaymiz.
Keling, tugunning elektr ta'minoti muammosi haqida gapiraylik. Tugun choy plantatsiyasida tasodifiy joylashtirilgan, shuning uchun an'anaviy elektr ta'minoti usuli endi qo'llanilmaydi. Quyosh energiyali eritmani ishlatish yaxshi fikr. Hozirgi vaqtda bozorda ko'plab echimlar mavjud. Bizning ehtiyojlarimizga mos keladigan birini tanlashimiz mumkin. Biz tanlagan eritmada 3 qism mavjud: quyosh paneli, quyosh zaryadini boshqaruvchi va qo'rg'oshin kislotali akkumulyator. Quyosh energiyasini yaxshiroq olish uchun biz quyosh panelini qavsning yuqori qismiga qo'yamiz va uning burchagini quyoshga qaragan holda sozlaymiz. Biz quyosh zaryadini boshqarish moslamasini tugunli qutiga joylashtirdik. Qutida qo'shimcha joy yo'qligi sababli, qo'rg'oshin kislotali batareyani joylashtirish uchun yangi suv o'tkazmaydigan qutini topishimiz kerak edi.
4 -qadam: dasturiy ta'minotni sozlash
Tugun
Ushbu bo'limda biz asosan tugunning dasturiy ta'minoti bilan tanishamiz.
Ma'lumotlar formati
Shlyuzga tugun tomonidan yuklangan ma'lumotlar:
imzosiz Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Har bir ma'lumot bitining ma'nosi:
Lora_data [0]: Havo harorati, ℃
Ma'lumotlar [1]: Havoning namligi, %
Lora_data [2]: Balandligi sakkiz, m
Lora_data [3]: past sakkizinchi balandlik
Lora_data [4]: CO2 konsentratsiyasi yuqori sakkiz, ppm
Lora_data [5]: CO2 konsentratsiyasi past sakkiz
Lora_data [6]: Chang kontsentratsiyasi sakkizta, dona/0,01 sm
Lora_data [7]: Chang kontsentratsiyasi sakkiztadan past
Lora_data [8]: yorug'lik intensivligi yuqori sakkiz, lyuks
Lora_data [9]: yorug'lik sig'imi past sakkiz
Lora_data [10]: O2 konsentratsiyasi, % (xom ma'lumotlar 1000 ga bo'linadi)
Lora_data [11]: Tuproq harorati, ℃
Lora_data [12]: Tuproq namligi, %
Lora_data [13]: Batareya quvvati, v
Lora_data [14]: Sensorlar xato kodi
Xato kodi:
Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]
Har bir bitning ma'nosi:
bit 0: 1 ---- Temp & Humi va barometr sensori (BME280) xatosi
bit 1: 1 ---- Karbonat angidrid sensori (MH-Z16) xatosi
bit 2: 1 ---- Chang sensori, PPD42NS, xato
bit 3: 1 ---- Raqamli yorug'lik sensori xatosi
bit 4: 1 ---- Kislorod sensori (ME2-O2-F20) xatosi
bit 5: 1 ---- Tuproq namligi va harorat sensori xatosi
bit 6: zaxiralangan
bit 7: zaxiralangan
Biz Error_code_transform.exe qildik, uni ochamiz va o'n oltilikda xato kodini kiritamiz, qaysi sensor xato ekanligini tezda bilib olasiz. Yuklab olish havolasi maqolaning oxirida.
Parametrlarni sozlash: a) Ma'lumotlarni uzatish aylanishi
// Seeedtea.ino
#foydalanuvchi intervalli_ vaqt 600 // soniya
Ma'lumot uzatish davrini o'zgartirish uchun bu parametr o'zgarishi mumkin. Har bir tsiklda ma'lumotlarni yig'ish taxminan 1 daqiqa davom etadi. Shunday qilib, bu qiymatni 60 soniyadan kam o'zgartirish tavsiya etilmaydi.
b) chang sezgichining isish vaqti
//seeedtea.ino
#definePreheat_time 30000 // DustSensor isinish vaqti, millisond //Dust_other.cpp #definesampletime_ms 30000 // namuna olish vaqti30s
c) kuchlanish koeffitsienti
//POWER_Ctrl.cpp
#defineBattery_coeffeffitsienti 0.159864 // ADC qiymati × Batareya_koeffitsienti = batareya_kuchlanishi
Bu ikkita parametr kuchlanish taqsimlagich sxemasi asosida hisoblanadi.
d) Ventilyatorning ochilish harorati chegarasi
//POWER_Ctrl.cpp
#defineFan_start_temp 45 // temperaturethreshold #defineFan_start_light 500 // yorug'lik intensivligi
Haqiqiy harorat chegaradan oshganda, fan soviy boshlaydi.
e) O2 sensori ishga tushirish parametri
//Oksigen.cpp
#defineO2_ foiz 208.00 //20.8%
f) Ibratli kalit
//seeedtea.ino
#defineLORA_RUN // Izohdan so'ng Lorani ishga tushirish va ma'lumotlarni uzatish to'xtatiladi #defineSENSOR_RUN // Izohdan so'ng, ekstensal sensorlar ishlamay qoladi //POWER_Ctrl.cpp #defineFAN_ON // Faqat foresting, Amaliy ilovaga sharh berish kerak /**** *** DS18B20 boshqaruv rejimi **********************/ #defineSlower_Mode // Sekin rejim haroratni birlashtiradi. Fikr -mulohaza tez rejimda
g) Pin xaritasi
D2: LED ko'rsatkichi va tashqi reset mikrokontrollerIIC: SCL va SDA
//Dust_boshqa.h
#defineDust_pin 3 // Chang sensori //CO2.cpp #defineCO2_serial Serial1 // hardwareserial portdan foydalaning (D0 va D1) //seeedtea.ino #definedataPin 6 // Tuproq ma'lumoti pin #defineclockPin 7 // Tuproq soati pimi // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Fan #defineAir_CtrlPin 10 // louverboxga joylashtirilgan datchiklar uchun boshqaruv pimi #defineSoil_CtrlPin 11 // Tuproq namligi va harorat sensori pimi #defineBatterySpin_pin A2 / /Quyosh paneli kuchlanishini o'lchash //Oksigen.h #aniqlashO2_pin A1 // O2 sensori
h) qo'riqchi taymeri
Kuzatuvchi taymeri tizimning ish holatini kuzatish uchun ishlatiladi. Tizim g'ayritabiiy ishlayotganda, tugun uzoq vaqt davomida uzluksiz ishlashi uchun tiklanadi.
Manba bo'lishi kerak bo'lgan kutubxona:
- Adafruit_SleepyDog.h loyihaga qo'shildi
- Adafruit_ASFcore-master.zip loyiha papkasida joylashgan va uni qo'lda Arduino IDE-ga qo'shish kerak.
Tegishli funktsiyalar:
Kuzatuvchini yoqish
int WatchdogSAMD:: faollashtirish (int maxPeriodMS, bool isForSleep)
Kirish parametrlari:
Int maxPeriodMS: kutish vaqti millisekundlarda. Ruxsat etilgan maksimal ruxsat - 16000 millisekund.
qaytish qiymati:
Int turi, haqiqiy kutish vaqtini qaytaring
Kuzatuvchini tiklash
void WatchdogSAMD:: reset ()
"Itni ovqatlantirish" deb nomlangan qo'riqchi taymerini qayta o'rnatish uchun bu funktsiyani chaqiring. Qayta tiklashsiz kutish vaqtidan oshib ketish tugunning qayta ishga tushishiga olib keladi.
Qo'riqchi kuchini to'xtating
void WatchdogSAMD:: disable ()
Darvoza
Ushbu bo'limda biz Loriot serveriga qanday ulanish haqida gaplashamiz.
1 -qadam: Loriot Server Gateway -ni ro'yxatdan o'tkazish
a) Yangi foydalanuvchi avval hisobni ro'yxatdan o'tkazishi kerak, ro'yxatdan o'tish manzilini bosing. Ro'yxatdan o'tish uchun foydalanuvchi nomi, parol va elektron pochta manzilini kiriting, ro'yxatdan o'tgandan so'ng sizga elektron pochta yuboriladi, faollashtirish uchun elektron pochtadagi ko'rsatmalarga amal qiling.
b) Muvaffaqiyatli faollashtirilgandan so'ng, tizimga kirish uchun shu erni bosing. Standart daraja "Hamjamiyat tarmog'i" bo'lib, u 1 shluzi (RHF2S001) va 10 ta tugunni qo'llab -quvvatlaydi.
c) Boshqaruv paneli -> Gateway -ga kiring, Gateway -ni qo'shishni boshlash uchun Gateway -ni qo'shishni bosing.
d) Raspberry Pi 3 ni tanlang
e) quyidagicha belgilang:
- Old radio -> RHF2S001 868/915 MGts (SX1257)
- BUS -> SPI
f) RHF2S001 ning MAC manzilini b8: 27: eb: xx: xx: xx formatida to'ldiring. Shuningdek, Gateway joylashuvi ma'lumotlarini kiriting.
g) Ro'yxatdan o'tishni tugatish uchun "Raspberry Pi shlyuzini ro'yxatdan o'tkazish" ni bosing.
h) Konfiguratsiya sahifasiga kirish uchun ro'yxatdan o'tgan shlyuzni bosing, "Chastotalar rejasi" ni qo'lda almashtiring, bu erda sizning rejangiz RHF2S001 turiga qarab belgilanadi, mavjud reja CN470, CN473, CN434, CN780, EU868, tanlanganidan keyin sahifani yangilang. aniq kanalni olish uchun. Bu vikida biz EU868 ni tanlaymiz.
i) macunali terminalda buyruqni bajaring:
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.
2 -qadam: Loriot Server Connect Node qurilmasi
a) mavjud shlyuz kanallarini oling
Joriy shlyuz kanallarini boshqaruv paneli -> shlyuz -> sizning shlyuz orqali olish mumkin, siz mavjud kanallarni quyidagi rasmda ko'rishingiz mumkin.
b) Seeeduino LoRAWAN GPS (RHF3M076) konfiguratsiyasi
ArduinoIDE -ning ketma -ket monitorini oching va quyidagi buyruqni bosing.
+ch da
Seeeduino_LoRAWAN GPS -ning standart kanalini tasdiqlash uchun sizga 3 ta kanal beriladi. Agar kanal bo'lmasa, Seeeduino_LoRAWAN kanallarini quyidagi buyruq bilan o'zgartirishingiz mumkin.
+ch = 0 da, 868.1
+ch = 1 da, 868,3 da+ch = 2, 868,5 da
Keyin yana tekshirish uchun+ch dan foydalanishingiz mumkin.
c) Seeeduino_LoRAWAN GPS -ni ABP NodeLog sifatida Loriot serveriga qo'shing, Boshqarish paneli -> Ilovalar -> SimpleApp -ni bosing. Elementlar ostidagi ABP importini bosing
- DevAddr: Seeeduino_LoRAWAN GPS "AT+ID" buyrug'i orqali o'tadi (Eslatma: Loriot yo'g'on ichakni qo'llab -quvvatlamaydi, qo'lda olib tashlash kerak)
- FCntUp: Setto 1
- FCntDn: Setto 1
- NWKSKEY: Standart qiymat 2B7E151628AED2A6ABF7158809CF4F3C
- APPSKEY: Standart qiymat 2B7E151628AED2A6ABF7158809CF4F3C
- EUI: DEVEUI, Seeeduino_LoRAWAN GPS "AT+ID" buyrug'i orqali o'tadi.
Qurilmani import qilishni tugatish uchun "Import Import Device" tugmasini bosing. Endi Boshqaruv paneli -> Ilovalar -> SampleApp -ni tanlang, siz yangi qo'shgan ABP tugunini ko'rasiz.
d) Seeeduino_LoRAWAN -dan ma'lumotlarni yuborish
DIQQAT! Bu shunchaki sinov.
ArduinoIDE -ning ketma -ket monitoriga qaytib, buyruqni yuboring:
AT+CMSGHEX = "0a 0b 0c 0d 0e"
Keyin Boshqaruv paneli -> Ilovalar -> SampleApp -> Qurilma -ga o'ting, tugun qurilmasi EUI yoki DevAddr -ni bosing, siz bu erda yuborgan ma'lumotlarni topasiz.
Tafsilotlar uchun ushbu vikiga qarang.
5 -qadam: veb -sayt yaratish
Tegishli vositalar
- virtual
- Python3
- Gunicorn
- Nazoratchi
- Nginx
- MySQL
Biz CentOS7 -ni sinov tarqatish muhiti sifatida ishlatamiz
virtual tarmoq
Python3 uchun mustaqil ishlab chiqarish muhitini yaratish uchun virtualenv -dan foydalaning
a) o'rnatish
pip virtualenv -ni o'rnating
b) python3 virtual muhitini yaratish
virtual tarmoq -p python3 iotea
c) virtual muhitni ishga tushiring va iotea katalogiga kiring
manba qutisi/faollashtirish
d) mavjud muhit
o'chirib qo'ymoq
Python3
a) o'rnatish
epel-release-ni o'rnating
python36 ni o'rnating
b) PyMySQL, DBUtils, Flask, websocket-client, configparser kutubxonalarini o'rnatish.
pip o'rnatish pymysql
pip install dbutils pip pip flask pip install websocket-client pip install configparser
Gunicorn
a) o'rnatish (Python3 muhitida)
gunicornni o'rnatish
b) kolba loyihasini ishga tushirish (iotea loyiha katalogi ostida)
gunicorn -w 5 -b 0.0.0.0:5000 ilova: ilova
c) loriot ma'lumotlarini olish uchun websocket-clint-ni ishga tushiring
gunicorn loriot: ilova
d) Gunicorn jarayonining daraxtini ko'rish
pstree -ap | grep gunicorn
Nazoratchi
a) o'rnatish (root foydalanuvchisi)
pip o'rnatish ustasi
b) konfiguratsiya fayllarini yaratish
echo_supervisord_conf> /etc/supervisord.conf
c) katalog yaratish va katalog konfiguratsiyasini kiritish
mkdir -p /etc/supervisor/conf.d
/Etc/supervisord.conf -ni tahrirlang va fayl oxiridagi [o'z ichiga] ostidagi fayllar maydonini o'zgartiring.
E'tibor bering, siz ';' ni olib tashlashingiz kerak. bu ikki satr oldida, bu sharh belgisi.
[shu jumladan]
Fayllar = /etc/supervisor/conf.d/*.conf
/Etc/supervisor/conf.d/ ni kiritishni anglatadi. Quyidagi konfiguratsiya fayli jarayon konfiguratsiya fayli sifatida ishlatiladi (nazoratchi tomonidan nazorat qilinadi).
d) kiruvchi konfiguratsiya (iotea katalogi ostida)
cp iotea.conf /etc/supervisor/conf.d/
cp loriot.conf /etc/supervisor/conf.d/
e) ochiq iotea xizmati
superviosrctl reload #konfiguratsiya faylini qayta yuklang
superviosrctl start loriot #open loriot ma'lumotlarni qabul qilish superviosrctl start iotea #iotea flask ilovasini ochish
f) boshqa umumiy operatsiyalar
supervisorctl reload # konfiguratsiya faylini qayta yuklaydi
supervisorctl update supervisorctl start xxx supervisorctl stop xxx supervisorctl status xxx supervisorctl help # more buyrug'ini ko'rish
Nginx
a) o'rnatish
yum o'rnatish -y nginx
b) konfiguratsiya
cp NginxIotea.conf /etc/nginx/conf.d/
c) Nginx -ni ishga tushiring
systemctl nginx.service -ni ishga tushiring
MySQL
a) tegishli parametrlar
user = 'root'
passwd = '1234' db = 'iotea' port = 3306
b) fayl
iotea_iotea.sql
c) konfiguratsiya fayli
db.ini