Оглавление:

Двойной сервер данных температуры IoT: 12 шагов (с изображениями)
Двойной сервер данных температуры IoT: 12 шагов (с изображениями)

Видео: Двойной сервер данных температуры IoT: 12 шагов (с изображениями)

Видео: Двойной сервер данных температуры IoT: 12 шагов (с изображениями)
Видео: НАБРАЛ Секретный Код На Телефоне И ОФИГЕЛ!! БАТАРЕЯ НЕ САДИТСЯ! 2024, Июнь
Anonim
Сервер данных по двойной температуре IoT
Сервер данных по двойной температуре IoT

Это моя первая попытка написать Instructable, поэтому, пожалуйста, не торопитесь! Если вы считаете, что это не так уж и плохо, тогда проголосуйте за меня в Конкурсе впервые написанных авторов.

Это мой проект Lock-Down для удаленного мониторинга двух температур в теплице: одна на уровне пола и одна под крышей. Хотя я и раньше использовал Raspberry Pi (RPi), этот проект включал в себя несколько элементов, которые я не использовал, и по ходу дела я обнаружил несколько устаревших или просто неправильных руководств. Это мой набор знаний для создания работающего двойного удаленного монитора температуры из Pi Zero и 2 DS18B20 + однопроводных цифровых датчиков температуры, которые были приобретены в процессе.

Что я узнал:

  • Предоставление доступа к данным с устройства в рамках Интернета вещей (IoT)
  • Интерфейс 1-Wire с 2 устройствами
  • Данные
  • Данные JSON
  • Настройка брандмауэра UFW
  • Использование Freeboard.io для отображения данных
  • Настройка RPi для автозапуска программы

Существует огромное количество данных, которые можно найти с помощью простого поиска по всем этим темам, но не так ясно то, как объединить все эти отдельные элементы.

Запасы

  • Вам понадобится Raspberry Pi (с монитором, мышью и клавиатурой для настройки, но не при запуске готового проекта)
  • Работающее интернет-соединение.
  • Блок питания с разъемом Micro USB
  • 2 однопроводных цифровых датчика температуры DS18B20 +. Я обнаружил, что Amazon был самым дешевым
  • Резистор 4К7 Ом или я использовал 2 резистора 10КОм.
  • Небольшой макет и несколько мужских / женских проводов для тестирования на стенде
  • Небольшой кусок картона для окончательной сборки
  • Простые инструменты для пайки и снятия изоляции с проводов.
  • Небольшой пластиковый ящик для готовой конструкции

Шаг 1. Аппаратное обеспечение

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

У меня уже был Raspberry Pi Zero W (с беспроводной связью), но я уверен, что этот простой проект будет нормально работать на любом из RPI. В коробке со странными электронными битами в моей мастерской было все остальное (макетная плата, провод, блок питания и т. Д.), Поэтому все, что мне нужно было купить, это два датчика 2 x DS18B20 от Amazon. Это обычные микросхемы DS18B20, просто удобно установленные в водонепроницаемом корпусе с кабелем длиной 3 м. От кабеля идет 3 провода:

  • Красный - питание - подключите к выводу 1 3,3 В
  • Черный - возврат - подключить к заземлению контакт 6
  • Желтый - данные - подключите к выводу 7 GPIO4

Датчики используют интерфейс 1-Wire, их очень легко подключить и получить данные. В Интернете есть несколько страниц с подробной информацией о подключении 1 устройства, но очень мало сведений о подключении 2 (или более).

Для тестирования на стенде схема была собрана на макетной плате. В учебных пособиях, которые я нашел, было указано, что для смещения линии передачи данных используется резистор 4K7, но я не смог найти его, поэтому использовал 2 * 10K параллельно, и он работал нормально. В Интернете есть множество ресурсов по использованию макетов для сборки схем RPi, поэтому я не буду их здесь повторять.

Схема, созданная с помощью Circuit Diagram

Шаг 2: Настройка программного обеспечения ОС Raspberry Pi

Настройка программного обеспечения Raspberry Pi OS
Настройка программного обеспечения Raspberry Pi OS
Настройка программного обеспечения Raspberry Pi OS
Настройка программного обеспечения Raspberry Pi OS
Настройка программного обеспечения Raspberry Pi OS
Настройка программного обеспечения Raspberry Pi OS

Поскольку я использовал этот RPi раньше, я решил начать с чистой установки ОС, переформатировал SD-карту и установил чистую версию NOOBS. Затем я установил полную настольную версию Raspian (верхний вариант), так как при этом также будут установлены PIP и GIT, которых нет в облегченной версии. Несмотря на то, что мне не требовался графический интерфейс пользователя (GUI) для проекта, это простой способ настроить все параметры, а с SD-картой емкостью 16 ГБ недостатка места не было.

Я настроил доступ к WI-FI, затем запустил полную установку, а затем мастер с обновлениями и обновлениями и т. Д. Используя графический интерфейс, я настраиваю RPI по мере необходимости только потому, что использование графического интерфейса проще, чем интерфейс командной строки (CLI). Я перешел в окно конфигурации из меню, а затем:

  • На вкладке системы я изменил пароль, установил загрузку в CLI и снял флажок Auto Login
  • На вкладке интерфейсов я включил 1-wire
  • Нажал ОК и перезагрузился

Если вам нужно вернуться к графическому интерфейсу в любое время, просто введите startx в интерфейсе командной строки.

startx

Шаг 3. Настройте Dataplicity для разрешения удаленного доступа

Настройка Dataplicity для разрешения удаленного доступа
Настройка Dataplicity для разрешения удаленного доступа
Настройка Dataplicity для разрешения удаленного доступа
Настройка Dataplicity для разрешения удаленного доступа
Настройка Dataplicity для разрешения удаленного доступа
Настройка Dataplicity для разрешения удаленного доступа

Я нашел действительно полезную запись в блоге на сайте Dataplicity по адресу https://blog.dataplicity.com/how-to-build-a-raspb… и использовал несколько ее частей. В разделе 3 блога описывается настройка Dataplicity для удаленного доступа к RPi. Я никогда раньше не использовал Dataplicity, но должен сказать, что настоятельно рекомендую его как очень простой инструмент удаленного доступа. Хотя скриншоты (в блоге выше) немного устарели, в принципе все в порядке.

На своем ПК перейдите на Dataplicity.com и создайте учетную запись (вы можете использовать браузер в графическом интерфейсе пользователя, но это будет довольно медленно на RPi Zero). Затем нажмите кнопку «Добавить новое устройство», и во всплывающем окне отобразится строка кода. Затем перейдите в интерфейс командной строки RPi и введите строку текста. Если все в порядке, отобразится логотип Dataplicity и запустится программа установки.

Вернувшись на ваш компьютер, новое устройство должно появиться на веб-сайте Dataplicity. Щелкните устройство, и вы должны увидеть экран терминала для вашего RPi.

Здесь следует отметить несколько моментов:

  • Чтобы войти в систему, введите «su pi» (для доступа суперпользователя), и вам будет предложено ввести пароль (установленный ранее).
  • Вам необходимо включить Wormhole (чтобы использовать позже)
  • Вам понадобится адрес червоточины для отображения данных позже (щелкните правой кнопкой мыши, чтобы скопировать, когда это необходимо)

Вы можете использовать этот удаленный доступ для всех следующих шагов, и он намного проще для копирования данных, программ и т. Д., Чем непосредственно на RPi.

Шаг 4: проверьте датчики

Теперь вы можете использовать Dataplicity для удаленного доступа к RPI для всех следующих разделов.

Если теперь все подключено нормально, вы должны увидеть, что температура возвращается с DS18B20. Я проработал руководство Pi Hut, но большей части этого не требовалось. Если вам нужна полная информация, их можно найти здесь:

Важные биты - перейти в каталог устройств и убедиться, что показаны 2 разных датчика.

cd / sys / bus / w1 / устройства /

Это должно показать 2 устройства, начиная с 28- и мастер шины. Мои показывает:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Эти 2 идентификационных номера важны и понадобятся позже! Затем перейдите в один из каталогов датчиков:

cd 28-011453ebfdaa

(например), а затем для считывания значения с датчика

кошка w1_slave

Должны быть показаны 2 строки текста:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d ДА

53 01 4b 46 7f ff 0c 10 2d t = 21187

ДА показывает, что датчик считывает правильно, а 21187 показывает температуру в градусах Цельсия, равную 21,187 (разделить на 1000). Повторите это, чтобы проверить второй датчик. Если оба прочитаны нормально, мы можем перейти к чтению данных с помощью Python3.

Я скопировал и адаптировал следующий код, который нашел в Интернете, но не могу вспомнить, откуда. Если это похоже на ваш код, я прошу прощения, так как плагиат не был предназначен; пожалуйста, дайте мне знать, и я буду признателен за вашу работу.

Создайте каталог с именем projects и перейдите в этот каталог.

mkdir ~ / проекты

cd ~ / проекты

В этом каталоге с помощью текстового редактора (nano) создайте и отредактируйте файл с именем thermo-test.py.

sudo nano thermo-test.py

Это должно было открыть редактор, и, поскольку вы используете Dataplicity, вы можете просто скопировать следующий код ниже (thermo-test.py) и вставить в редактор. Вам нужно будет изменить 2 имени устройства (начиная с 28-…) на указанные выше. Когда все будет выглядеть правильно, нажмите ctrl + X, чтобы закончить, Y, чтобы сохранить, и вернитесь, чтобы использовать существующее имя. Если вы предпочитаете использовать графический интерфейс, Тонни сделает то же самое.

Чтобы запустить тестовую программу:

sudo python3 thermo-test.py

Если все в порядке, это должно запустить файл с использованием python 3 и распечатать на экране 2 температуры каждые 10 секунд. Вы можете проверить, все ли в порядке, поместив 1 датчик в ледяную воду или осторожно нагревая феном. Если все в порядке, то можно двигаться дальше!

Шаг 5: межсетевой экран UFW

Межсетевой экран UFW
Межсетевой экран UFW

Поскольку этот RPi должен был быть постоянно подключен к Интернету, я решил, что брандмауэр будет хорошей идеей, а простой в использовании - несложный брандмауэр (ufw). Здесь есть очень простой учебник

Я не буду вдаваться в подробности, так как это не является целью данного руководства, но вкратце:

Установите брандмауэр с помощью:

sudo apt-get install ufw

Установите правила по умолчанию:

sudo ufw по умолчанию разрешить исходящие

sudo ufw default deny incoming

Откройте порт 80 для Dataplicity

sudo ufw разрешить 80

Включите брандмауэр

sudo ufw enable

Проверьте статус и убедитесь, что все работает

sudo ufw статус

Шаг 6: S завершение данных температуры как JSON

S завершение данных о температуре как JSON
S завершение данных о температуре как JSON

Вернемся к блогу Тима Фернандо и разделу 5.

Следуйте инструкциям, как указано (за исключением того, что мы уже создали каталог проектов), и все должно работать нормально. Используя GIT, вы загрузите файлы приложения Тима, и PIP обеспечит установку всех необходимых программ на ваш RPi. Затем я обнаружил, что мне нужно перезагрузить компьютер, чтобы убедиться, что все пакеты настроены правильно.

Затем запустите программу Тима, и ваш RPi должен предоставить данные JSON для первого датчика.

cd home / pi / projects / temperature-serve-pi

температура sudo gunicorn: app -b 0.0.0.0:80

Вы можете перейти через блог к разделу 6, где вы найдете данные для одного из датчиков.

Вы также можете использовать JSON Viewer для просмотра данных https://codebeautify.org/jsonviewer Нажмите кнопку «загрузить URL» и вставьте адрес червоточины, указанный ранее. На левой панели вы должны увидеть две записи, одну для Цельсия и одну для Фаренгейта.

Шаг 7: отправьте данные с обоих датчиков

Отправить данные от обоих датчиков
Отправить данные от обоих датчиков

На основе кода в файлах temperature.py и thermo-test.py я создал 2temps.py, отредактированный, как и раньше, в каталоге / projects / temperature-serve-pi, вставил в код и сохранил. Я тогда побежал

sudo gunicorn 2temps: приложение -b 0.0.0.0:80

Теперь, когда я повторно запустил JSON Viewer, я получил значения для temp1 и temp2.

Успех:)

Шаг 8: автоматический запуск

Автоматический старт
Автоматический старт

Поскольку питание теплицы иногда отключается, я хотел, чтобы RPi автоматически загружал программу и начинал проверку данных. Самый простой способ - отредактировать файл rc.local и добавить требуемый код внизу чуть выше строки exit 0.

компакт-диск и т. д.

sudo nan rc.local

затем надстройка

спать 10

cd home / pi / projects / temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • Знак & в конце указывает компьютеру запустить сценарий во вспомогательной оболочке, чтобы компьютер не ждал завершения функции и продолжил загрузку.
  • Сон 10 [секунды] гарантирует, что все предыдущие операции выполнены перед запуском службы.

Выйдите и сохраните как раньше. Затем перезагрузитесь и повторно запустите JSON Viewer, чтобы убедиться, что все в порядке.

Если вам нужна дополнительная информация об автозапускаемых программах, здесь есть отличный учебник

Шаг 9: Отобразите данные на Freeboard.io (1)

Отображение данных на Freeboard.io (1)
Отображение данных на Freeboard.io (1)

В общем, шаги в блоге Тима работают нормально; создайте учетную запись на www.freeboard.io, а затем создайте новый Freeboard, я назвал свой SHEDTEMPERATURES.

Сначала добавьте источник данных, нажмите ДОБАВИТЬ в правом верхнем углу и во всплывающем окне выберите JSON в качестве типа, дайте источнику данных ИМЯ, добавьте адрес червоточины, полученный ранее в качестве URL-адреса, и нажмите НЕТ, чтобы ПОПРОБОВАТЬ THINGPROXY. Температура меняется очень медленно, поэтому ОБНОВЛЯЙТЕ каждые 15 секунд. Щелкните СОХРАНИТЬ.

Шаг 10: отобразите данные на Freeboard.io (2)

Отображение данных на Freeboard.io (2)
Отображение данных на Freeboard.io (2)
Отображение данных на Freeboard.io (2)
Отображение данных на Freeboard.io (2)
Отображение данных на Freeboard.io (2)
Отображение данных на Freeboard.io (2)
Отображение данных на Freeboard.io (2)
Отображение данных на Freeboard.io (2)

Щелкните ДОБАВИТЬ ПАНЕЛЬ, а затем +, чтобы добавить первый виджет. Вы можете выбирать и играть с различными ТИПАМИ, но я обнаружил, что Gauge вполне подходит. Дайте подходящее НАЗВАНИЕ, ЕДИНИЦЫ (C), МИНИМУМ и МАКСИМУМ в соответствии с вашим приложением. Для DATASOURCE нажмите +, и появится созданный выше источник.

В раскрывающемся списке теперь должны отображаться 2 источника данных JSON (temp2 и temp2), созданные ранее. Выберите соответствующий источник и нажмите «Сохранить».

Повторите это для второго датчика, и все готово.

Теперь данные должны отображаться на 2 датчиках, и если у вас все еще есть PRi, подключенный к монитору, вы должны видеть запросы от Freeboard.io по мере их поступления.

Шаг 11: Соберите проект в коробку

Создайте проект в коробке
Создайте проект в коробке
Создайте проект в коробке
Создайте проект в коробке
Создайте проект в коробке
Создайте проект в коробке
Создайте проект в коробке
Создайте проект в коробке

До этого момента RPi и другие компоненты собирались на стенде с использованием макета. Затем был использован небольшой кусок картона, чтобы заменить макетную плату, и все выводы были припаяны на место.

Была обнаружена ярко-розовая маленькая коробка для хранения Lego, в которой было много места и где RPI не становился слишком горячим. По бокам коробки были просверлены отверстия, и 3-миллиметровые нейлоновые монтажные стойки использовались для фиксации RPi и картона на месте.

Требуется только 3 подключения от GPIO, 3,3 В, GND и данных.

  • 3.3vdc контакт 1
  • GND контакт 6
  • Данные (GPIO4) контакт 7

Также в коробке были добавлены отверстия для USB-питания и кабелей к датчикам температуры. После того, как все было установлено на место, было добавлено небольшое количество силиконового герметика, чтобы пауки не сочли это теплым местом для зимовки!

Шаг 12: Готово

Законченный
Законченный
Законченный
Законченный

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

Это моя первая инструкция, и я надеюсь, вы думаете, что это нормально. Если вы обнаружите какие-либо ошибки, пожалуйста, дайте мне знать, и я исправлю, где это необходимо. Следующим шагом может быть запись данных каждые (скажем) 60 секунд, но это будет позже.

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