
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Интернет + - популярное понятие сейчас. На этот раз мы попробовали Интернет и сельское хозяйство, чтобы чайный сад вырос из Интернет-чая.
Шаг 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: Эксплуатация

Вы можете посетить наши веб-сайты для просмотра данных в реальном времени:
- В Яань
- Для демонстрации
Рекомендуемые:
Решение для светового загрязнения - Artemis: 14 шагов

Решение проблемы светового загрязнения - Артемида: Световое загрязнение - это то, что затрагивает всех нас во всем мире. С тех пор, как была изобретена лампочка, свет стал гораздо более популярен и особенно широко использовался в больших городах, таких как Нью-Йорк и Чикаго. Весь этот свет может повлиять на
Решение таблиц истины: 10 шагов

Решение таблиц истинности: таблица истинности - это способ визуализировать все результаты проблемы. Этот набор инструкций предназначен для людей, начинающих заниматься дискретной математикой. Сегодня мы будем практиковаться с примером задачи, относящейся к этим инструкциям. Вы
Управление бытовой техникой через LoRa - LoRa в домашней автоматизации - Пульт дистанционного управления LoRa: 8 шагов

Управление бытовой техникой через LoRa | LoRa в домашней автоматизации | LoRa Remote Control: управляйте и автоматизируйте свои электроприборы с больших расстояний (километров) без подключения к Интернету. Это возможно через LoRa! Эй, как дела, ребята? Акарш здесь от CETech. Эта печатная плата также имеет OLED-дисплей и 3 реле, которые
Решение Seeed LoRa IoTea: 5 шагов

Seeed LoRa IoTea Решение: автоматическая система сбора информации, применяемая к чайным плантациям. Это часть интеллектуального сбора сельскохозяйственной информации
Решение Seeed IoTea LoRa (с Azure, обновление 1812): 5 шагов

Решение Seeed IoTea LoRa (с Azure, обновление 1812): Microsoft Azure - это облачная служба, которая обеспечивает более мощные и стабильные вычислительные мощности. На этот раз мы попытались отправить на него наши данные IoTea