Съдържание:
- Стъпка 1: Нещата, използвани в този проект
- Стъпка 2: История
- Стъпка 3: Хардуерна връзка
- Стъпка 4: Софтуерно програмиране
- Стъпка 5: Операция
Видео: Вижте IoTea LoRa решение (актуализация 1811): 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Интернет+ е популярна концепция в момента. Този път опитахме Интернет плюс селско стопанство, за да направим чайна градина израстваща от Интернет чай.
Стъпка 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: Операция
Можете да посетите нашите уебсайтове, за да видите данни в реално време:
- В Яан
- За демонстрация
Препоръчано:
Blu Media Robot (актуализация): 7 стъпки
Blu Media Robot (Актуализация): blu е робот, работещ с дънна платка makeblock и малина за електронните за списъка с части, който можете да закупите от makeblock като мен в началото, сега имам 3D принтер (wanahoa i3 +) и можете да изтеглите различна част, за да ги отпечатате на t
ESP8266 POV вентилатор с актуализация на текста на часовника и уеб страницата: 8 стъпки (със снимки)
ESP8266 POV вентилатор с актуализация на текста на часовника и уеб страницата: Това е променлива скорост, POV (Persistence Of Vision), вентилатор, който периодично показва часа, и две текстови съобщения, които могат да бъдат актуализирани „в движение“. е също уеб сървър с една страница, който ви позволява да променяте двата текста ми
Вижте LoRa IoTea Решение: 5 стъпки
Вижте LoRa IoTea Решение: Автоматична система за събиране на информация, приложена към плантациите за чай. Той е част от интелигентното събиране на информация за селското стопанство
Вижте IoTea LoRa решение (с Azure, актуализация 1812): 5 стъпки
Вижте IoTea LoRa решение (с Azure, актуализация 1812): Microsoft Azure е облачна услуга, която осигурява по -мощна и стабилна изчислителна мощ. Този път се опитахме да изпратим нашите IoTea данни към него
Проект Arduino: Модул LoRa за изпитване RF1276 за решение за проследяване на GPS: 9 стъпки (със снимки)
Проект Arduino: Модул LoRa за изпитване RF1276 за проследяване на GPS Решение: Връзка: USB - SerialNeed: Нужда от браузър Chrome: 1 X Arduino Mega Need: 1 X GPS Need: 1 X SD карта Необходимост: 2 X LoRa модем RF1276 Функция: Arduino Изпратете GPS стойност към основната база - Основна база за съхранение на данни в модул Dataino Server Lora: Свръхдален обхват