Съдържание:

Вижте IoTea LoRa решение (актуализация 1811): 5 стъпки
Вижте IoTea LoRa решение (актуализация 1811): 5 стъпки

Видео: Вижте IoTea LoRa решение (актуализация 1811): 5 стъпки

Видео: Вижте IoTea LoRa решение (актуализация 1811): 5 стъпки
Видео: По следам древней цивилизации? 🗿 Что, если мы ошиблись в своем прошлом? 2024, Юли
Anonim
Вижте IoTea LoRa решение (актуализация 1811)
Вижте IoTea LoRa решение (актуализация 1811)

Интернет+ е популярна концепция в момента. Този път опитахме Интернет плюс селско стопанство, за да направим чайна градина израстваща от Интернет чай.

Стъпка 1: Нещата, използвани в този проект

Хардуерни компоненти

  • Grove - Сензор за въглероден диоксид (MH -Z16)
  • Grove - цифров сензор за светлина
  • Grove - сензор за прах (PPD42NS)
  • Grove-Кислороден сензор (ME2-O2-Ф20)
  • Сензор за влага и температура на почвата
  • LoRa LoRaWAN Gateway - 868MHz комплект с Raspberry Pi 3
  • Grove - Сензор за Температура и Хуми и Барометър (BME280)

Софтуерни приложения и онлайн услуги

Microsoft Visual Studio 2015

Стъпка 2: История

На планината Mengding североизточно от Ya’an, Съчуан, планинският хребет минава от запад на изток в море от зеленина. Това е най-познатата гледка за 36-годишния Денг, един от малкото производители на чай от своето поколение Mengding, с плантация от 50mu (= 3,3 хектара), разположена на 1100 м надморска височина. Ден произхожда от семейство чайници, но продължаването на семейното наследство не е лесна задача. „Нашите чайове се отглеждат на голяма надморска височина в органична среда, за да се гарантира отличното им качество. Но в същото време плътността на растежа е ниска, цената е висока и пъпките са неравномерни, което затруднява прибирането на чая. Ето защо високопланинските чайове обикновено са малки реколти и техните стойности не се отразяват на пазара. “През последните две години Ден се опитва да повиши информираността на потребителите за високопланинския чай, за да популяризира тяхната стойност. И когато срещна Фан, който търсеше плантация за внедряване на технологията IoTea на Seeed, беше направено перфектно съвпадение за решение.

Стъпка 3: Хардуерна връзка

Хардуерът на този проект може да бъде разделен на 4 части: Power, Sensors, Node и Gateway. Следващата статия ще ви покаже как да я завършите стъпка по стъпка.

Захранваща част

Power Part съдържа главно слънчев панел и литиева батерия, ако просто изградите този проект за демонстрация, можете да ги игнорирате. Или можете да следвате предишния урок, за да инсталирате захранване на възел.

Част от сензорите

В частта за сензорите, поради многото сензори, използвахме метеорологична станция и също така направихме акрилна скоба, за да ги инсталираме.

Образ
Образ

Както виждате на снимката по -горе, цифровият сензор за светлина винаги е отгоре, така че да може да събира информация за осветлението. Сензорите, които ще генерират топлина, са инсталирани в средата на акрилната скоба, като сензор за O2, сензор за прах и сензор за CO2. Най -накрая сензор за температура и влажност в долната част на акрилната скоба.

Освен това сензорът за температура и влажност на почвата се инсталира самостоятелно в почвата. Част от възел

Образ
Образ

Node Part е Seeeduino LoRaWan, който е инсталиран във водоустойчива кутия и се свързва към захранване и сензори чрез Water Joints. Сред тях сензорът за прах се свързва към цифровия щифт D3 на LoRaWan, сензорът за CO2 се свързва към щифт D4 и D5, сензорът за почвата се свързва към щифт D6 & D7, сензорът O2 се свързва към аналоговия щифт A1 и сензорът за светлина и сензорът за барометър се свързват към порта I2C.

ЗАБЕЛЕЖКА: Трябва да се добави 10k резистор между синия (данни) кабел на сензора за почвата и червения (Vcc) кабел.

Seeeduino LoRaWan от време на време събира стойностите на сензорите и ги изпраща към Gateway чрез LoRa. Форматът на данните, както е показано по -долу:

{

[0], /* Температура на въздуха (℃)* /[1], /* Влажност на въздуха (%)* /[2], /* Височина (m) висок байт* /[3], /* Надморска височина (m) нисък байт */[4],/ * концентрация на CO2 (PPM) висок байт */[5],/ * концентрация на CO2 (PPM) нисък байт */[6],/ * концентрация на прах (бр/0,01 cf) висок байт */[7],/ *Концентрация на прах (бр./0,01 cf) нисък байт */[8],/ *Интензивност на светлината (лукс) висок байт */[9],/ *Интензивност на светлината (лукс) нисък байт */ [10], /* концентрация на O2 (%)* /[11], /* Температура на почвата (℃)* /[12], /* Влажност на почвата (%)* /[13], /* Напрежение на батерията (V) */ [14]/ *Код на грешка на сензора */}

Всеки бит в байта на кода за грешка на сензора има различно значение, точно както по -долу:

{

бит0: 1; / * Грешка на сензора на барометъра */ бит1: 1; / * CO2 сензорна грешка */ бит2: 1; / * Грешка на сензора за прах */ бит3: 1; / * Грешка на сензора за светлина */ бит4: 1; / * Грешка на сензора на O2 */ бит5: 1; / * Грешка на сензора за почвата */ запазено: 2; / * Запазено */}

Част от шлюза

Образ
Образ

Gateway Part е Raspberry Pi, който включва Gateway модул RHF0M301–868 и PRI 2 Bridge RHF4T002, той е инсталиран във водоустойчива кутия и се свързва към захранване и USB камера чрез водни съединения. Тъй като използва специализиран фърмуер, моля, следвайте Seeed Wiki, за да го конфигурирате.

Стъпка 4: Софтуерно програмиране

Като хардуерна връзка, софтуерното програмиране също може да бъде разделено, може да бъде разделено на 3 части: възел, шлюз и уебсайт.

Част от възел

Повечето драйвери, които са необходими за Node Part, вече се съдържат в папката origin_driver. Следващите библиотеки трябва да бъдат инсталирани ръчно:

Adafruit_ASFcore

Тъй като проектът е сложен, препоръчваме да използвате Microsoft Visual Studio вместо Arduino IDE. Плъгин, наречен Visual Micro, може да ви помогне да изградите проект на Arduino, като използвате Visual Studio, щракнете тук за повече информация.

За по-добра четливост и поддръжка, този път използваме обектно-ориентирано програмиране. Диаграмата на класа на този проект изглежда по -долу:

Образ
Образ

За тези сензори вече има OOP драйвер, ние го преопаковахме, за да адаптираме този проект, за други пренаписахме техните драйвери, използвайки OOP. Класът Sensor в слоя междинен софтуер се използва за унифициране на интерфейсите на реални сензори, например сензор за барометър може да събира температура, влажност и надморска височина едновременно, така че има 3 интерфейса за придобиване на температура, влажност и надморска височина. Но те имат различно име на метод, което ще направи програмата за придобиване на стойността на сензорите по -сложна, точно така:

барометър-> getTemperature ();

барометър-> getHumidity (); барометър-> getAltitude (); //… друг_сензор-> getSomeValue (); //…

Но използвайки OOP, изглежда така:

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

}

Също така опаковахме клас Application, той реализира интерфейса на IApplication, метода setup () и loop () в IoTea.ino може да извика метода setup () и loop () в обект Application.

ЗАБЕЛЕЖКА: USB Serial се използва само за отстраняване на грешки. След отстраняване на грешки, моля, коментирайте, че инициализира кода в метода setup ().

Част от шлюза

Програмата Python на Gateway Part в началната папка се използва за правене на снимки и качване на всеки час на Amazon S3 Server. Преди да го използвате, уверете се, че fswebcam вече е инсталиран във вашия Raspberry Pi:

sudo apt-get update && sudo apt-get install fswebcam

Ако искате да качите снимки, конфигурирайте AWS, като следвате стъпките. Първо, инсталирайте AWS SDK и AWS CLI на вашия Raspberry Pi, като използвате тези команди:

sudo pip инсталирайте boto3

sudo pip инсталирате awscli

и след това стартирайте AWS CLI:

sudo aws конфигуриране

Конфигурирайте своя идентификатор на ключ за достъп на AWS, идентификатор на секретен достъп на AWS и име на регион по подразбиране.

Ако не обичате да качвате снимките си, можете да пропуснете стъпките за конфигуриране на AWS и кодовете за коментари относно качването във photo.py. За да стартирате тази програма след всяко зареждане на Raspberry Pi, можете да създадете снимка с име на файл в /etc/init.d и да напишете следния код към нея.

#!/bin/bash

# /etc/init.d/photo ### BEGIN INIT INFO # Предоставя: seeed_photo # Изискващ старт: $ remote_fs $ syslog # Изискващ стоп: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Кратко описание: правене на снимки initscript # Описание: Тази услуга се използва за управление на снимки ### END INIT INFO случай „$ 1“в началото) ехо „Започнете да правите снимка“/home/rxhf/photo.py &;; стоп) ехо "Спрете да правите снимки" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) ехо "Използване: сервизна снимка старт | стоп" изход 1;; esac изход 0

задайте разрешение за изпълнение

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

и го тествайте

sudo /etc/init.d/photo старт

Ако няма проблем, спрете го и го добавете към стартиращото приложение

sudo /etc/init.d/photo stop

sudo update-rc.d снимки по подразбиране

ЗАБЕЛЕЖКА: Ако искате да стартирате шлюз след зареждане на Raspberry Pi, добавете началните кодове на шлюза в Seeed Wiki към /etc/rc.local, нека изглежда така:

#!/бин/ш -е

# # rc.local # # Този скрипт се изпълнява в края на всяко многопотребителско ниво на изпълнение. # Уверете се, че скриптът ще "излезе от 0" при успех или друга # стойност при грешка. # # За да активирате или деактивирате този скрипт, просто променете изпълнението # бита. # # По подразбиране този скрипт не прави нищо. # Отпечатайте IP адреса _IP = $ (име на хост -I) || вярно, ако ["$ _IP"]; след това printf "Моят IP адрес е %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 изход 0

Уебсайт

Разположихме уебсайта на CentOS 7. Следващите стъпки ще ви покажат как да го внедрите.

Стъпка 1. Инсталирайте Python3

sudo yum -y инсталирайте epel -release

sudo yum -y инсталирайте python36

Стъпка 2. Инсталирайте Python pip и виртуална среда

wget

sudo python36 get-pip.py sudo pip инсталиране на virtualenv

Setp 3. Клонирайте нашия уебсайт от GitHub

sudo yum -y инсталирайте git

git клонинг

Стъпка 4. Създайте и активирайте виртуална среда

virtualenv -p python36 iotea -hb

cd iotea-hb източник кош/активиране

Стъпка 5. Инсталирайте зависими библиотеки

pip install pymysql

pip install dbutils pip install колба pip install websocket-client pip install cofigparser

Стъпка 6. Създайте база данни

sudo yum -y инсталирате mariadb mariabd -сървър

sudo systemctl активира mariadb sudo systemctl стартира mariadb mysql -uroot -p

и след това използвайте iotea_hb.sql, за да създадете таблица.

Стъпка 7. Създайте db.ini и напишете тези кодове към него

[db]

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

променете пътя на db.ini в db.py

# в db.py

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

Стъпка 8. Променете порта в app.py и стартирайте уебсайта:

# в app.py

#app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)

# в терминал

pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app: app

сега посетете 127.0.0.1:8080 във вашия уеб браузър, можете да видите уебсайта, но данните в реално време не се показват.

Стъпка 9. Вземете loriot данни

Отворете друг терминал, въведете отново виртуалната среда и стартирайте приложението loriot:

cd iotea-hb

кош за източник/активиране на gunicorn loriot: приложение

Изчакайте известно време, ще видите данни, показани на уебсайта, или можете да промените wss в loriot.py:

# в loriot.py

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

ws = create_connection ()

Стъпка 5: Операция

Можете да посетите нашите уебсайтове, за да видите данни в реално време:

  • В Яан
  • За демонстрация

Препоръчано: