Оглавление:

Решение Seeed IoTea LoRa (обновление 1811): 5 шагов
Решение Seeed IoTea LoRa (обновление 1811): 5 шагов

Видео: Решение Seeed IoTea LoRa (обновление 1811): 5 шагов

Видео: Решение Seeed IoTea LoRa (обновление 1811): 5 шагов
Видео: Высокая плотность 2022 2024, Июль
Anonim
Решение Seeed IoTea LoRa (обновление 1811)
Решение Seeed IoTea LoRa (обновление 1811)

Интернет + - популярное понятие сейчас. На этот раз мы попробовали Интернет и сельское хозяйство, чтобы чайный сад вырос из Интернет-чая.

Шаг 1. Вещи, использованные в этом проекте

Компоненты оборудования

  • Grove - Датчик углекислого газа (MH-Z16)
  • Grove - Цифровой датчик освещенности
  • Grove - Датчик пыли (PPD42NS)
  • Grove - Датчик кислорода (ME2-O2-Ф20)
  • Датчик влажности и температуры почвы
  • LoRa LoRaWAN Gateway - комплект 868 МГц с Raspberry Pi 3
  • Grove - Датчик температуры, влажности и барометра (BME280)

Программные приложения и онлайн-сервисы

Microsoft Visual Studio 2015

Шаг 2: история

На горе Мэндин к северо-востоку от Яань в провинции Сычуань горный хребет тянется с запада на восток в зеленом море. Это наиболее знакомое зрелище для 36-летнего Дэна, одного из очень немногих производителей чая Mengding своего поколения, с плантацией площадью 50 му (= 3,3 гектара), расположенной на высоте 1100 м над уровнем моря. Дэн происходит из семьи мастеров чая, но сохранить семейное наследие - непростая задача. «Наши чаи выращиваются на большой высоте в экологически чистой среде, что гарантирует его превосходное качество. Но в то же время плотность роста низкая, стоимость высокая, а бутонизация неравномерная, что затрудняет сбор чая. Вот почему высокогорные чаи обычно собираются небольшими порциями, и их ценность не отражается на рынке ». В течение последних двух лет Дэн пытался повысить осведомленность потребителей о высокогорном чае, чтобы повысить их ценность. И когда он встретил Фэна, который искал плантацию для внедрения технологии Seeed IoTea, было найдено идеальное решение.

Шаг 3: Подключение оборудования

Аппаратное обеспечение этого проекта можно разделить на 4 части: питание, датчики, узел и шлюз. В следующей статье вы узнаете, как это сделать, шаг за шагом.

Силовая часть

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

Часть датчиков

В разделе «Датчики» из-за большого количества датчиков мы использовали метеостанцию, а также сделали акриловый кронштейн для их установки.

Изображение
Изображение

Как вы видите на картинке выше, цифровой датчик освещенности всегда находится наверху, чтобы он мог собирать информацию об освещении. Датчики, которые будут выделять тепло, установлены в середине акрилового кронштейна, например, датчик O2, датчик пыли и датчик CO2. Наконец, датчик температуры и влажности на нижней части акрилового кронштейна.

Кроме того, датчик температуры и влажности почвы устанавливается отдельно в почве. Узел Часть

Изображение
Изображение

Узловая часть - это Seeeduino LoRaWan, установленный в водонепроницаемом боксе, он подключается к источнику питания и датчикам через водяные соединения. Среди них датчик пыли подключается к цифровому контакту D3 LoRaWan, датчик CO2 подключается к контактам D4 и D5, датчик почвы подключается к контактам D6 и D7, датчик O2 подключается к аналоговому контакту A1, а датчик освещенности и датчик барометра подключаются к порту I2C.

ПРИМЕЧАНИЕ. Между синим кабелем датчика почвы (данные) и красным кабелем (Vcc) необходимо добавить резистор 10 кОм.

Seeeduino LoRaWan время от времени собирает значения датчиков и отправляет их на шлюз через LoRa. Формат данных, как показано ниже:

{

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

Каждый бит в байте кода ошибки датчика имеет различное значение, как показано ниже:

{

бит0: 1; / * Ошибка датчика барометра * / bit1: 1; / * Ошибка датчика CO2 * / bit2: 1; / * Ошибка датчика пыли * / bit3: 1; / * Ошибка датчика освещенности * / bit4: 1; / * Ошибка датчика O2 * / bit5: 1; / * Ошибка датчика почвы * / зарезервировано: 2; /* Зарезервированный */ }

Часть шлюза

Изображение
Изображение

Шлюзовая часть - это Raspberry Pi, в который вставлен модуль шлюза RHF0M301–868 и мост PRI 2 RHF4T002, он установлен в водонепроницаемом боксе и подключается к источнику питания и USB-камере через водяные соединения. Поскольку он использует специализированную прошивку, пожалуйста, следуйте Seeed Wiki, чтобы настроить его.

Шаг 4: Программирование программного обеспечения

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

Узел Часть

Большинство драйверов, необходимых для Node Part, уже содержатся в папке origin_driver. Следующие ниже библиотеки необходимо установить вручную:

Adafruit_ASFcore

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

На этот раз для удобства чтения и сопровождения мы используем объектно-ориентированное программирование. Диаграмма классов этого проекта выглядит следующим образом:

Изображение
Изображение

Для этих датчиков уже есть драйвер ООП, мы перепаковали его, чтобы адаптировать этот проект, для других мы переписали их драйверы с помощью ООП. Класс Sensor на уровне промежуточного программного обеспечения используется для унификации интерфейсов реальных датчиков, например, датчик барометра может одновременно измерять температуру, влажность и высоту, поэтому у него есть 3 интерфейса для измерения температуры, влажности и высоты. Но у них есть другое название метода, что усложняет программу получения значений датчиков, вот так:

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

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

Но с использованием ООП это выглядит так:

for (авто я = 0; я getValue ();

}

Мы также упаковали класс Application, он реализует интерфейс IApplication, методы setup () и loop () в IoTea.ino могут вызывать методы setup () и loop () в объекте Application.

ПРИМЕЧАНИЕ. Последовательный порт USB используется ТОЛЬКО для отладки. После отладки прокомментируйте код инициализации в методе setup ().

Часть шлюза

Программа Python Gateway Part в домашней папке используется для съемки фотографий и их загрузки на сервер Amazon S3 каждый час. Прежде чем использовать его, убедитесь, что 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 # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # По умолчанию-Stop: 0 1 6 # Краткое описание: начальный сценарий фотосъемки # Описание: Эта служба используется для управления фотосъемкой ### END INIT INFO case "$ 1" в начале) echo "Начать снимать фото" /home/rxhf/photo.py &;; stop) echo «Прекратить фотографировать» kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Использование: запуск фото службы | остановка" exit 1;; esac выход 0

установить разрешение на выполнение

sudo chmod 777 /etc/init.d/photo

sudo chmod 777 /home/rxhf/photo.py

и проверить это

sudo /etc/init.d/photo start

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

sudo /etc/init.d/photo stop

sudo update-rc.d фото по умолчанию

ПРИМЕЧАНИЕ. Если вы хотите запустить шлюз после загрузки Raspberry Pi, добавьте коды запуска шлюза в Seeed Wiki в /etc/rc.local, пусть это будет выглядеть так:

#! / bin / sh -e

# # rc.local # # Этот сценарий выполняется в конце каждого многопользовательского уровня запуска. # Убедитесь, что сценарий "выйдет из 0" в случае успеха или # любое другое значение в случае ошибки. # # Чтобы включить или отключить этот сценарий, просто измените бит выполнения #. # # По умолчанию этот скрипт ничего не делает. # Вывести IP-адрес _IP = $ (hostname -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 clone

Шаг 4. Создайте и активируйте виртуальную среду.

virtualenv -p python36 iotea-hb

cd iotea-hb исходный бункер / активировать

Шаг 5. Установите зависимые библиотеки

pip установить pymysql

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

Шаг 6. Создайте базу данных

sudo yum -y установить mariadb mariabd-server

sudo systemctl включить mariadb sudo systemctl start mariadb mysql -uroot -p

а затем используйте iotea_hb.sql для создания таблицы.

Шаг 7. Создайте db.ini и запишите в него эти коды.

[дб]

db_port = 3306 db_user = корень 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 приложение: приложение

теперь посетите 127.0.0.1:8080 в своем веб-браузере, вы можете увидеть веб-сайт, но данные в реальном времени не отображаются.

Шаг 9. Получите данные loriot

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

cd iotea-hb

исходный бункер / активировать Gunicorn loriot: app

Подождите немного, вы увидите данные, отображаемые на веб-сайте, или вы можете изменить wss в loriot.py:

# в loriot.py

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

ws = create_connection ()

Шаг 5: Эксплуатация

Вы можете посетить наши веб-сайты для просмотра данных в реальном времени:

  • В Яань
  • Для демонстрации

Рекомендуемые: