Mundarija:

IoTea LoRa qarori (yangilanish 1811): 5 qadam
IoTea LoRa qarori (yangilanish 1811): 5 qadam

Video: IoTea LoRa qarori (yangilanish 1811): 5 qadam

Video: IoTea LoRa qarori (yangilanish 1811): 5 qadam
Video: МОДНЫЙ СТИЛЬНЫЙ ТЕПЛЫЙ базовый КАРДИГАН КРЮЧКОМ с ЖИВЫМ узором, МАСТЕР КЛАСС вязание - узор, схема 2024, Noyabr
Anonim
IoTea LoRa qarori (yangilanish 1811)
IoTea LoRa qarori (yangilanish 1811)

Internet+ - hozir mashhur tushunchadir. Bu safar biz Internet va qishloq xo'jaligini sinab ko'rdik, choy bog'i Internet -choy bo'lib o'sdi.

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

Sichuan, Yaanning shimoli -sharqidagi Mengding tog'ida, tog 'tizmasi g'arbdan sharqqa yashil dengizda oqadi. Dengiz sathidan 1100 m balandlikda joylashgan 50mu (= 3,3 gektar) plantatsiyaga ega bo'lgan 36 yoshli Deng, o'z avlodining kam sonli choy ishlab chiqaruvchilardan biri uchun eng tanish manzara. 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 o'z qadrini oshirish uchun iste'molchilarning baland tog'li choy haqida xabardorligini oshirishga harakat qilmoqda. Va u Seeedning IoTea texnologiyasini amalga oshirish uchun plantatsiya qidirayotgan Fan bilan uchrashganida, yechim uchun mukammal moslik topildi.

3 -qadam: Uskuna ulanishi

Loyihaning texnik jihozlari 4 qismga bo'linishi mumkin: quvvat, sensorlar, tugun va shlyuz. Keyingi maqolada buni qanday bosqichma -bosqich bajarish kerakligi ko'rsatiladi.

Quvvat qismi

Quvvat qismi asosan quyosh paneli va lityum batareyani o'z ichiga oladi, agar siz ushbu loyihani namoyish qilish uchun qursangiz, ularni e'tiborsiz qoldirishingiz mumkin. Yoki tugun kuchini o'rnatish uchun oldingi qo'llanmani bajarishingiz mumkin.

Sensorlar qismi

Sensorlar bo'limida, ko'plab sensorlar tufayli biz ob -havo stantsiyasidan foydalanganmiz, shuningdek ularni o'rnatish uchun akril qavs yasaganmiz.

Rasm
Rasm

Yuqoridagi rasmda ko'rib turganingizdek, Raqamli yorug'lik sensori har doim tepada joylashganki, u yorug'lik ma'lumotlarini to'play oladi. Issiqlik chiqaradigan sensorlar O2 sensori, Chang sensori va CO2 sensori kabi akril qavsning o'rtasiga o'rnatiladi. Nihoyat, akril qavsning pastki qismidagi harorat va namlik sensori.

Bundan tashqari, tuproq harorati va namligi sensori faqat tuproqda o'rnatiladi. Tugun qismi

Rasm
Rasm

Tugun qismi - bu suv o'tkazmaydigan qutiga o'rnatilgan Seeeduino LoRaWan, u suv bo'g'inlari orqali quvvat va sensorlarga ulanadi. Chang sensori LoRaWan D3 raqamli piniga, CO2 sensori D4 va D5 piniga, Tuproq sensori D6 va D7 piniga, O2 sensori analog pin A1 ga va yorug'lik sensori va barometr sensori I2C portiga ulanadi.

QAYD: Tuproq sensori ko'k (ma'lumot) kabeli va qizil (Vcc) kabeli orasiga 10k rezistor qo'shilishi kerak.

Seeeduino LoRaWan vaqti -vaqti bilan sensorlar qiymatini yig'adi va ularni LoRa orqali Gateway -ga yuboradi. Ma'lumot formati quyidagi kabi:

{

[0], /* Havo harorati (℃)* /[1], /* Havoning namligi (%)* /[2], /* Balandlik (m) yuqori bayt* /[3], /* Balandlik (m) past bayt */[4],/ * CO2 kontsentratsiyasi (PPM) yuqori bayt */[5],/ * CO2 konsentratsiyasi (PPM) past bayt */[6],/ * Chang kontsentratsiyasi (dona/0.01cf) yuqori bayt */[7],/ *Chang kontsentratsiyasi (dona/0.01 sm) past bayt */[8],/ *Yorug'lik intensivligi (lyuks) yuqori bayt */[9],/ *Yorug'lik zichligi (lyuks) past bayt */ [10], /* O2 kontsentratsiyasi (%)* /[11], /* Tuproq harorati (℃)* /[12], /* Tuproq namligi (%)* /[13], /* Batareya quvvati (V) */ [14]/ *Sensor xato kodi */}

Sensor xato kodi baytidagi har bir bit boshqacha ma'noga ega, xuddi quyida:

{

bit0: 1; / * Barometr sensori xatosi */ bit1: 1; / * CO2 sensori xatosi */ bit2: 1; / * Chang sensori xatosi */ bit3: 1; / * Yorug'lik sensori xatosi */ bit4: 1; / * O2 sensori xatosi */ bit5: 1; / * Tuproq sensori xatosi */ himoyalangan: 2; / * Zaxiralangan */}

Gateway qismi

Rasm
Rasm

Gateway qismi - bu RHF0M301-8868 Gateway moduli va RHF4T002 PRI 2 ko'prigiga ulangan, Raspberry Pi, u suv o'tkazmaydigan qutiga o'rnatilgan va suv ulanishlari orqali quvvat va USB kamerasiga ulanadi. Ixtisoslashtirilgan dasturiy ta'minotdan foydalanganligi sababli, uni sozlash uchun Seeed Wiki -ga amal qiling.

4 -qadam: dasturiy ta'minot

Uskuna ulanishi sifatida, dasturiy ta'minotni ham 3 qismga bo'lish mumkin: tugun, shlyuz va veb -sayt.

Tugun qismi

Tugun qismi talab qiladigan drayverlarning aksariyati allaqachon orig_driver papkasida joylashgan. Quyidagi kutubxonalar qo'lda o'rnatilishi kerak:

Adafruit_ASFcore

Loyiha murakkab bo'lgani uchun sizga Arduino IDE o'rniga Microsoft Visual Studio dasturidan foydalanishni tavsiya etamiz. Visual Micro deb nomlangan plagin sizga Visual Studio yordamida Arduino loyihasini bajarishga yordam beradi, qo'shimcha ma'lumot uchun bu erni bosing.

Yaxshi o'qilishi va saqlanishi uchun biz bu safar Ob'ektga yo'naltirilgan dasturlashdan foydalanamiz. Ushbu loyihaning sinf diagrammasi quyidagicha ko'rinadi:

Rasm
Rasm

OOP drayveri allaqachon mavjud bo'lgan sensorlar uchun biz ushbu loyihani moslashtirish uchun uni qayta qadoqladik, boshqalari uchun biz haydovchilarni OOP yordamida qayta yozdik. O'rta dasturlar qatlamidagi Sensor klassi haqiqiy sensorlar interfeyslarini birlashtirish uchun ishlatiladi, masalan, barometr sensori bir vaqtning o'zida harorat, namlik va balandlikni to'play oladi, shuning uchun harorat, namlik va balandlikni olish uchun 3 ta interfeys mavjud. Ammo ular farqli usul nomiga ega, bu sensorlar qiymatini olish dasturini xuddi shunday murakkablashtiradi:

barometr-> getTemperature ();

barometr-> getHumidity (); barometr-> getAltitude (); //… boshqa_sensor-> getSomeValue (); //…

Ammo OOPdan foydalanib, u shunday ko'rinadi:

uchun (auto i = 0; i getValue ();

}

Biz, shuningdek, Application sinfini to'pladik, u IApplication interfeysini, IoTea.ino -dagi setup () va loop () usulini Application ob'ektidagi setup () va loop () usullarini chaqira oladi.

ESLATMA: USB Serial faqat disk raskadrovka uchun ishlatiladi. Nosozliklarni tuzatgandan so'ng, iltimos, setup () usulida kodni ishga tushiring.

Gateway qismi

Gateway Part -ning uy papkasidagi Python dasturi har soatda suratga olish va ularni Amazon S3 Server -ga yuklash uchun ishlatiladi. Ishlatishdan oldin, Raspberry Pi -da fswebcam o'rnatilganligiga ishonch hosil qiling:

sudo apt-get update && sudo apt-get fswebcam-ni o'rnating

Agar siz rasm yuklamoqchi bo'lsangiz, quyidagi amallarni bajarib AWS -ni sozlang. Birinchidan, quyidagi buyruqlar yordamida AWS SDK va AWS CLI -ni Raspberry Pi -ga o'rnating:

sudo pip o'rnatish boto3

sudo pip install awscli

va keyin AWS CLI -ni ishga tushiring:

sudo aws ni sozlash

AWS kirish kalit identifikatorini, AWS maxfiy kirish identifikatorini va standart viloyat nomini sozlang.

Agar siz rasmlaringizni yuklashni yoqtirmasangiz, photo.py -ga yuklash haqidagi AWS konfiguratsiya bosqichlarini va sharh kodlarini o'tkazib yuborishingiz mumkin. Har safar Raspberry Pi -ni ishga tushirgandan so'ng, ushbu dasturni ishga tushirish uchun siz /etc/init.d da fayl nomli rasm yaratishingiz va unga quyidagi kodni yozishingiz mumkin.

#!/bin/bash

# /etc/init.d/photo ### INIT INFO'NI BOSHLASH # Ta'minlaydi: seeed_photo # Majburiy-Boshlash: $ remote_fs $ syslog # Zarur-To'xtatish: $ remote_fs $ syslog # Standart-Boshlash: 2 3 4 5 # Default-Stop: 0 1 6 # Qisqacha tavsif: rasm olish initscript # Tavsif: Bu xizmat suratga olishni boshqarish uchun ishlatiladi ### END INIT INFO holatida "$ 1" boshida) echo "Suratga olishni boshlash" /home/rxhf/photo.py &;; to'xtatish) echo "Suratga olishni to'xtatish" o'ldirish $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{$ 2 chop etish');; *) echo "Foydalanish: xizmat fotosurati boshlanishi | to'xtatish" chiqish 1;; esac chiqish 0

ijro etishga ruxsat berish

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

va uni sinab ko'ring

sudo /etc/init.d/photo boshlanishi

Agar muammo bo'lmasa, uni to'xtating va ishga tushirish dasturiga qo'shing

sudo /etc/init.d/photo to'xtatish

sudo update-rc.d standart rasmlari

QAYD: Agar siz Raspberry Pi -ni yuklaganingizdan so'ng shlyuzni ishga tushirishni xohlasangiz, Seeet Wiki -dagi shlyuzning boshlang'ich kodlarini /etc/rc.local -ga qo'shing, shunday bo'lsin:

#!/bin/sh -e

# # rc.local # # Bu skript har bir ko'p foydalanuvchilik darajasining oxirida bajariladi. # Muvaffaqiyatli skriptda "0 chiqish" yoki xato bo'yicha boshqa # qiymat chiqishiga ishonch hosil qiling. # # Ushbu skriptni yoqish yoki o'chirish uchun # bit bajarilishini o'zgartiring. # # Odatiy bo'lib, bu skript hech narsa qilmaydi. # IP manzilini chop eting _IP = $ (hostname -I) || rost bo'lsa ["$ _IP"]; keyin printf "Mening IP manzilim - %s / n" "$ _IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io chiqish 0

Veb -sayt

Biz veb -saytni CentOS 7 -da joylashtirdik. Quyidagi qadamlar sizga qanday joylashtirishni ko'rsatib beradi.

Qadam 1. Python3 -ni o'rnating

sudo yum -y epel -release ni o'rnating

sudo yum -y python36 ni o'rnating

Qadam 2. Python pip va virtual muhitni o'rnating

wget

sudo python36 get-pip.py sudo pip virtualenv-ni o'rnatadi

O'rnatish 3. GitHub -dan veb -saytimizni klonlang

sudo yum -y ni o'rnatish

git klon

Qadam 4. Virtual muhitni yarating va faollashtiring

virtualenv -p python36 iotea -hb

CD iotea-hb manba bin/faollashtirish

Qadam 5. qaram kutubxonalarni o'rnating

pip o'rnatish pymysql

pip install dbutils pip install flask pip install websocket-client pip install cofigparser

Qadam 6. Ma'lumotlar bazasini yaratish

sudo yum -y mariadb mariabd -serverini o'rnating

sudo systemctl mariadb -ni yoqish sudo systemctl start mariadb mysql -uroot -p

va keyin jadval yaratish uchun iotea_hb.sql dan foydalaning.

7 -qadam. Db.ini yarating va unga ushbu kodlarni yozing

[db]

db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea

db.py db.ini yo'lini o'zgartiring

db.py ichida #

#cf.read ("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read ("/home // iotea-hb/db.ini")

Qadam 8. app.py -dagi portni o'zgartiring va veb -saytni ishga tushiring:

# ilovada

#app.run (disk raskadrovka = To'g'ri, port = 6000) app.run (disk raskadrovka = To'g'ri, port = 8080)

# terminalda

pip gunicorn gunicorn -w 5 -b 0.0.0.0:8080 ilova: ilova

endi veb-brauzeringizda 127.0.0.1:8080 ga tashrif buyuring, siz veb-saytni ko'rishingiz mumkin, lekin real vaqtda ma'lumotlar ko'rsatilmaydi.

Qadam 9. loriot ma'lumotlarini oling

Boshqa terminalni oching, virtual muhitga kiring va loriot ilovasini ishga tushiring:

CD iotea-hb

manba bin/faollashtirish gunicorn loriot: ilova

Biroz kutib turing, siz veb -saytda ko'rsatiladigan ma'lumotlarni ko'rasiz yoki wss -ni loriot.py -da o'zgartirishingiz mumkin:

# loriot.py da

#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")

ws = create_connection ()

5 -qadam: operatsiya

Siz bizning veb-saytlarimizga tashrif buyurib, real vaqtda ma'lumotlarni ko'rishingiz mumkin:

  • Yanda
  • Namoyish uchun

Tavsiya: