Mundarija:

Ko'rilgan LoRa IoTea yechimi: 5 qadam
Ko'rilgan LoRa IoTea yechimi: 5 qadam

Video: Ko'rilgan LoRa IoTea yechimi: 5 qadam

Video: Ko'rilgan LoRa IoTea yechimi: 5 qadam
Video: Laura Branigan - Self Control (Official Music Video) 2024, Iyul
Anonim
LoRa IoTea yechimini ko'rdi
LoRa IoTea yechimini ko'rdi

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.

Rasm
Rasm

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.

Rasm
Rasm
Rasm
Rasm

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.

Rasm
Rasm

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.

Rasm
Rasm
Rasm
Rasm
Rasm
Rasm

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.

Rasm
Rasm

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.

Rasm
Rasm

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.

Rasm
Rasm

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.
Rasm
Rasm

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.

Rasm
Rasm

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.

Rasm
Rasm

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

Tavsiya: