Съдържание:

Вижте LoRa IoTea Решение: 5 стъпки
Вижте LoRa IoTea Решение: 5 стъпки

Видео: Вижте LoRa IoTea Решение: 5 стъпки

Видео: Вижте LoRa IoTea Решение: 5 стъпки
Видео: Щит и меч, 4 серия (реставрация 4К, реж. Владимир Басов, 1967 г.) 2024, Юли
Anonim
Вижте LoRa IoTea решение
Вижте LoRa IoTea решение

Автоматична система за събиране на информация, приложена към плантациите за чай. Той е част от интелигентното събиране на информация за селското стопанство.

Стъпка 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, беше направено перфектно съвпадение за решение. Решението Seeed IoTea има за цел да помогне на фермерите за чай да управляват по-добре насажденията, без да променят традиционните практики на отглеждане на чай, и да представи в реално време екологични данни от плантациите на отворена платформа.

Състоящ се от сензори, възли и шлюзове, IoTea събира в реално време данни за фактори, които могат да повлияят на качеството на чая по време на култивирането и производствените процеси, включително температура и влажност, CO2, O2, PM и излагане на светлина. Данните се събират от сензорите, изпращат се от възлите до шлюза и в крайна сметка до облака и се правят достъпни за крайните клиенти на уеб страница.

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

Стъпка 1: Връзка към шлюза

Порталът се инсталира отделно в кутия. Като се има предвид проблемът с разсейването на топлината, добавихме 2 вентилатора. Едната е за разсейване на топлината на Raspberry Pi, другата е за вътрешна и външна циркулация на въздуха. Порталната кутия е поставена в дома на фермер, така че не е нужно да обмисляме проблема с захранването.

Образ
Образ

Стъпка 2: Свързване на възел

Възелът е терминал на данните и всички оригинални данни се получават от тук. Към възела са свързани 6 сензора. В допълнение към сензора за влажност на почвата и температурата, ние поставяме други сензори в кутията на жалузите.

Образ
Образ
Образ
Образ

Възелът е поставен във водоустойчива кутия. За да имаме по -добра връзка с възела, правим адапторна платка. Накрая ще предоставим връзка за изтегляне на схемата на тази дъска. Както е показано по -долу, кабелите на сензорите са включени в адаптерната платка през клеми. Използваме 3 MOS тръби (SI2301) за изграждане на комутационни вериги за управление на включването и изключването на сензори и вентилатор. Вентилаторът се използва за охлаждане. Имаме температурен сензор (DS18B20), монтиран на дъската. Той може да ни каже вътрешната температура на кутията и след това микроконтролерът решава дали да включи вентилатора. Използваме няколко резистора, за да направим делителна верига за измерване на напрежението на оловно-киселинната батерия. И накрая, запазваме 3 IIC интерфейса и сериен порт на платката за по -късно разширяване и отстраняване на грешки.

Образ
Образ

Нека поговорим за проблема с захранването на възела. Възелът се поставя в чаена плантация на случаен принцип, така че традиционният метод на захранване вече не е приложим. Използването на решение за слънчева енергия е добра идея. В момента на пазара се предлагат много решения. Можем да изберем един от тях, който отговаря на нашите нужди. В решението, което избрахме, има 3 части: слънчев панел, слънчев контролер на зареждане и оловно -киселинна батерия. За да уловим по -добре слънчевата енергия, поставяме слънчевия панел в горната част на скобата и регулираме ъгъла му, за да сме сигурни, че е обърнат към слънцето. Поставихме контролера за слънчево зареждане в една и съща кутия с възел. Тъй като вътре в кутията няма допълнително място, трябваше да намерим нова водоустойчива кутия, за да поставим оловно -киселинната батерия.

Образ
Образ
Образ
Образ
Образ
Образ

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

Възел

В този раздел ще представим основно софтуерната конфигурация на възел.

Формат на данните

Данни, качени от възела на шлюза:

беззнаков char Lora_data [15] = {0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Значение на всеки бит данни:

Lora_data [0]: Температура на въздуха, ℃

Lora_data [1]: Влажност на въздуха, %

Lora_data [2]: Височина над осем, m

Lora_data [3]: Надморска височина осем

Lora_data [4]: Висока концентрация на CO2 осем, ppm

Lora_data [5]: концентрация на CO2 ниска осем

Lora_data [6]: Висока концентрация на прах осем, бр./0,01cf

Lora_data [7]: Концентрация на прах ниска осем

Lora_data [8]: Интензитет на светлината висок осем, лукс

Lora_data [9]: Интензитет на светлината нисък осем

Lora_data [10]: концентрация на O2, % (необработени данни, разделени на 1000)

Lora_data [11]: Температура на почвата, ℃

Lora_data [12]: Влажност на почвата, %

Lora_data [13]: Напрежение на батерията, v

Lora_data [14]: Код на грешка на сензора

Код на грешка:

Lora_data [14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

Значението на всеки бит:

бит 0: 1 ---- Грешка на Temp & Humi & Barometer Sensor (BME280)

бит 1: 1 ---- Грешка на сензора за въглероден диоксид (MH-Z16)

бит 2: 1 ---- Грешка на сензора за прах (PPD42NS)

бит 3: 1 ---- Грешка на цифровия сензор за светлина

бит 4: 1 ---- Грешка на кислородния сензор (ME2-O2-Ф20)

бит 5: 1 ---- Грешка на сензора за влажност и температура на почвата

бит 6: Запазено

бит 7: Запазено

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

Настройка на параметрите: а) Цикъл на предаване на данни

// seeedtea.ino

#defineinterval_time 600 // секунда

Този параметър може да се променя, за да се промени цикълът на предаване на данни. Във всеки цикъл събирането на данни отнема около 1 минута. Така че не се препоръчва да променяте тази стойност на по -малко от 60 секунди.

б) Време за загряване на сензора за прах

//seeedtea.ino

#definePreheat_time 30000 // Време за загряване на DustSensor, милисекунди //Dust_other.cpp #definesampletime_ms 30000 // samplingtime30s

в) Коефициент на напрежение

//POWER_Ctrl.cpp

#defineBattery_coefficient 0,159864 // ADC стойност × Battery_coefficient = напрежение на батерията #defineSolar_coefficient 0,22559 // ADC стойност × Solar_coefficient = слънчево напрежение

Тези два параметъра се изчисляват въз основа на веригата на делителя на напрежение.

г) Праг на температурата на отваряне на вентилатора

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // температурен праг #defineFan_start_light 500 // интензивност на светлината

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

д) Параметър за инициализация на сензора O2

// Кислород.cpp

#defineO2_процент 208.00 //20.8%

е) Макро превключвател

//seeedtea.ino

#defineLORA_RUN // След коментара инициализацията на Lora и предаването на данни ще спрат #defineSENSOR_RUN // След коментара външните сензори ще спрат да работят //POWER_Ctrl.cpp #defineFAN_ON // Само проверка, Практическото приложение трябва да бъде коментирано /**** *** Режим на управление на DS18B20 **********************/ #defineSlower_Mode // Бавен режим за настройка на температурата. Коментарът е бърз режим

ж) Пин картиране

D2: LED индикатор и външен нулиран микроконтролер IIC: SCL и SDA

//Dust_other.h

#defineDust_pin 3 // Сензор за прах //CO2.cpp #defineCO2_serial Serial1 // използвайте хардуерен сериен порт (D0 & D1) //seeedtea.ino #definedataPin 6 // Пин за данни за почвата #defineclockPin 7 // Пин за часовник на почвата // POWER_Ctrl. h #defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Вентилатор #defineAir_CtrlPin 10 // Управляващ щифт за сензорите, поставени в жалузито #defineSoil_CtrlPin 11 // Превключвател за контакт на сензора за влажност и температура на почвата #Измерване на напрежението на батерията A2 /Измерете напрежението на слънчевия панел // кислород.h #defineO2_pin A1 // сензор O2

з) Таймер за наблюдение

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

Библиотеката, към която ще се позовава:

  • Adafruit_SleepyDog.h е добавен към проекта
  • Adafruit_ASFcore-master.zip е опакован в папката на проекта и трябва да бъде добавен ръчно към IDE на Arduino.

Свързани функции:

Активирайте наблюдател

int WatchdogSAMD:: enable (int maxPeriodMS, bool isForSleep)

Входни параметри:

Int maxPeriodMS: Време на изчакване в милисекунди. Максимално допустимото е 16000 милисекунди.

възвращаема стойност:

Int type, връща действителното време на изчакване

Нулиране на контролния панел

void WatchdogSAMD:: reset ()

Извикайте тази функция, за да нулирате таймера за наблюдение, наричан „хранене на кучето“. Превишаването на времето за изчакване без нулиране ще доведе до рестартиране на възела.

Спрете пазача

void WatchdogSAMD:: disable ()

Gateway

В този раздел ще ви запознаем как да се свържете със сървъра на Loriot.

Стъпка 1: Регистрация на шлюз на Loriot Server

а) Новият потребител трябва първо да регистрира акаунт, щракнете върху адреса за регистрация. Попълнете потребителско име, парола и имейл адрес, за да се регистрирате, след регистрация ще ви бъде изпратен имейл, моля, следвайте инструкциите в имейла, за да активирате.

б) След успешно активиране, щракнете тук, за да влезете. Нивото по подразбиране е „Мрежа на общността“, поддържа 1 шлюз (RHF2S001) и 10 възли.

в) Влезте в Dashboard -> Gateway, щракнете върху Add Gateway start, за да добавите Gateway.

г) Изберете Raspberry Pi 3

д) Задайте както е показано по -долу:

  • Радио интерфейс -> RHF2S001 868/915 MHz (SX1257)
  • АВТОБУС -> SPI

е) Попълнете MAC адреса на вашия RHF2S001, трябва да бъде във формат b8: 27: eb: xx: xx: xx. Също така въведете информация за местоположението на шлюза.

ж) Щракнете върху „Регистриране на Raspberry Pi шлюз“, за да завършите регистрацията.

Образ
Образ

з) Щракнете върху регистрирания шлюз, за да влезете в конфигурационната страница, превключете „Честотен план“ръчно, вашият план тук се определя от типа на вашия RHF2S001 тип, наличният план е CN470 , CN473 , CN434 , CN780 , EU868, след като изберете, опреснете страницата за да получите точния канал. В тази уики избираме EU868.

i) Изпълнете командата в терминала за замазка:

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: Устройство за свързване на сървъра на Loriot Server

а) Вземете наличните шлюзови канали

Текущите канали на шлюза могат да бъдат получени от таблото за управление -> шлюз -> вашият шлюз, можете да видите наличните канали като снимката по -долу.

Образ
Образ

б) Конфигурация на Seeeduino LoRAWAN GPS (RHF3M076)

Отворете серийния монитор на ArduinoIDE, докоснете командата по -долу.

в+гл

За да потвърдите канала по подразбиране на вашия Seeeduino_LoRAWAN GPS, ще получите 3 канала. Ако няма наличен канал, можете да промените каналите на Seeeduino_LoRAWAN чрез командата по -долу.

при+ch = 0, 868.1

при+ch = 1, 868,3 при+ch = 2, 868,5

След това можете да използвате отново+ch, за да проверите.

в) Добавете Seeeduino_LoRAWAN GPS като ABP NodeLog в сървъра на Loriot, Щракнете върху Dash Board -> Applications -> SimpleApp. Щракнете върху Импортиране на ABP , въведете под елементите

  • DevAddr: Seeeduino_LoRAWAN GPS получава чрез командата "AT+ID" (Забележка: Loriot не поддържа конектор за двоеточие, трябва да се премахне ръчно)
  • FCntUp: Setto 1
  • FCntDn: Setto 1
  • NWKSKEY: стойност по подразбиране 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: Стойност по подразбиране 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI: DEVEUI, Seeeduino_LoRAWAN GPS получавате чрез командата "AT+ID"
Образ
Образ

Щракнете върху бутона Импортиране на устройство, за да завършите импортирането на устройството. Сега изберете Табло за управление-> Приложения -> SampleApp, ще видите новия ABP възел, който току -що сте добавили.

Образ
Образ

г) Изпращане на данни от Seeeduino_LoRAWAN

ВНИМАНИЕ! Това е просто тест.

Обратно към серийния монитор на ArduinoIDE, изпратете команда:

AT+CMSGHEX = "0a 0b 0c 0d 0e"

След това отидете на Табло за управление -> Приложения -> SampleApp -> Устройство, щракнете върху NI Device EUI или DevAddr, тук ще намерите данните, които току -що сте изпратили.

Образ
Образ

За подробности, моля, вижте тази уики.

Стъпка 5: Изграждане на уебсайт

Свързани инструменти

  • virtualenv
  • Python3
  • Gunicorn
  • Ръководител
  • Nginx
  • MySQL

Използваме CentOS7 като среда за тестово внедряване

virtualenv

Използвайте virtualenv за изграждане на самостоятелна среда за производство на python3

а) инсталирайте

pip install virtualenv

б) създайте виртуална среда на python3

virtualenv -p python3 iotea

в) стартирайте виртуалната среда и влезте в директория iotea

източник кош/активиране

г) съществуваща среда

деактивирайте

Python3

а) инсталирайте

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

yum инсталирайте python36

б) инсталирайте зависима библиотека PyMySQL, DBUtils, Flask, websocket-client, configparser

pip install pymysql

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

Gunicorn

а) инсталиране (в среда на Python3)

pip install gunicorn

б) стартирайте проект за колба (под директорията на проекта на iotea)

gunicorn -w 5 -b 0.0.0.0:5000 app: app

в) стартирайте websocket-clint, за да получите данни за loriot

gunicorn loriot: приложение

г) прегледайте дървовидния процес на Gunicorn

pstree -ap | grep gunicorn

Ръководител

а) инсталиране (root потребител)

pip install supervizor

б) генериране на конфигурационни файлове

echo_supervisord_conf> /etc/supervisord.conf

в) създайте директория и въведете конфигурация на директория

mkdir -p /etc/supervisor/conf.d

Редактирайте /etc/supervisord.conf и променете полето за файлове под [включване] в края на файла.

Имайте предвид, че трябва да премахнете ';' пред тези два реда, което е символът за коментар.

[включва]

Файлове = /etc/supervisor/conf.d/*.conf

Означава да се въведе /etc/supervisor/conf.d/. Следният конфигурационен файл се използва като конфигурационен файл на процеса (наблюдаван от надзорния орган).

г) входяща конфигурация (под директория iotea)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

д) отворена iotea сервира

superviosrctl reload #reload конфигурационния файл

superviosrctl start loriot #open loriot приемане на данни superviosrctl start iotea #отворете приложението на колбата iotea

е) други общи операции

supervizorctl reload # презареди конфигурационния файл

supervisorctl актуализира supervizorctl старт xxx надзорникctl стоп xxx надзорник статус

Nginx

а) инсталирайте

yum install -y nginx

б) конфигурация

cp NginxIotea.conf /etc/nginx/conf.d/

в) стартирайте Nginx

systemctl стартира nginx.service

MySQL

а) свързани параметри

потребител = 'корен'

passwd = '1234' db = 'iotea' порт = 3306

б) файл

iotea_iotea.sql

в) конфигурационен файл

db.ini

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