Оглавление:
- Запасы
- Шаг 1. Аппаратное обеспечение
- Шаг 2: Настройка программного обеспечения ОС Raspberry Pi
- Шаг 3. Настройте Dataplicity для разрешения удаленного доступа
- Шаг 4: проверьте датчики
- Шаг 5: межсетевой экран UFW
- Шаг 6: S завершение данных температуры как JSON
- Шаг 7: отправьте данные с обоих датчиков
- Шаг 8: автоматический запуск
- Шаг 9: Отобразите данные на Freeboard.io (1)
- Шаг 10: отобразите данные на Freeboard.io (2)
- Шаг 11: Соберите проект в коробку
- Шаг 12: Готово
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04
Это моя первая попытка написать 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
Поскольку я использовал этот RPi раньше, я решил начать с чистой установки ОС, переформатировал SD-карту и установил чистую версию NOOBS. Затем я установил полную настольную версию Raspian (верхний вариант), так как при этом также будут установлены PIP и GIT, которых нет в облегченной версии. Несмотря на то, что мне не требовался графический интерфейс пользователя (GUI) для проекта, это простой способ настроить все параметры, а с SD-картой емкостью 16 ГБ недостатка места не было.
Я настроил доступ к WI-FI, затем запустил полную установку, а затем мастер с обновлениями и обновлениями и т. Д. Используя графический интерфейс, я настраиваю RPI по мере необходимости только потому, что использование графического интерфейса проще, чем интерфейс командной строки (CLI). Я перешел в окно конфигурации из меню, а затем:
- На вкладке системы я изменил пароль, установил загрузку в CLI и снял флажок Auto Login
- На вкладке интерфейсов я включил 1-wire
- Нажал ОК и перезагрузился
Если вам нужно вернуться к графическому интерфейсу в любое время, просто введите startx в интерфейсе командной строки.
startx
Шаг 3. Настройте 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
Поскольку этот 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
Вернемся к блогу Тима Фернандо и разделу 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)
В общем, шаги в блоге Тима работают нормально; создайте учетную запись на www.freeboard.io, а затем создайте новый Freeboard, я назвал свой SHEDTEMPERATURES.
Сначала добавьте источник данных, нажмите ДОБАВИТЬ в правом верхнем углу и во всплывающем окне выберите JSON в качестве типа, дайте источнику данных ИМЯ, добавьте адрес червоточины, полученный ранее в качестве URL-адреса, и нажмите НЕТ, чтобы ПОПРОБОВАТЬ THINGPROXY. Температура меняется очень медленно, поэтому ОБНОВЛЯЙТЕ каждые 15 секунд. Щелкните СОХРАНИТЬ.
Шаг 10: отобразите данные на 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 секунд, но это будет позже.
Рекомендуемые:
Как сделать регистратор данных влажности и температуры в реальном времени с Arduino UNO и SD-картой - Моделирование регистратора данных DHT11 в Proteus: 5 шагов
Как сделать регистратор данных влажности и температуры в реальном времени с Arduino UNO и SD-картой | Моделирование регистратора данных DHT11 в Proteus: Введение: привет, это Liono Maker, вот ссылка на YouTube. Мы делаем творческий проект с Arduino и работаем над встраиваемыми системами. Регистратор данных: Регистратор данных (также регистратор данных или регистратор данных) - это электронное устройство, которое записывает данные с течением времени
Система посещаемости путем отправки данных RFID на сервер MySQL с использованием Python с Arduino: 6 шагов
Система посещаемости путем отправки данных RFID на сервер MySQL с использованием Python с Arduino: в этом проекте я подключил RFID-RC522 к arduino, а затем отправляю данные RFID в базу данных phpmyadmin. В отличие от наших предыдущих проектов, в этом случае мы не используем какой-либо сетевой экран, здесь мы просто читаем последовательные данные, поступающие из ar
Отправка данных беспроводного датчика температуры и влажности IoT с большим радиусом действия в Google Sheet: 39 шагов
Отправка данных беспроводного датчика температуры и влажности IoT с большим радиусом действия в таблицу Google: мы используем датчик температуры и влажности NCD, но шаги остаются одинаковыми для любого продукта ncd, поэтому, если у вас есть другие беспроводные датчики ncd, вы можете свободно наблюдать рядом кроме того. Путем остановки этого текста вам нужно
Как сделать регистратор данных температуры, pH и растворенного кислорода: 11 шагов (с изображениями)
Как сделать регистратор данных для температуры, pH и растворенного кислорода: Цели: Сделать регистратор данных за ≤ 500 долларов. Он хранит данные о температуре, pH и DO с отметкой времени и с использованием связи I2C. Почему I2C (межинтегральная схема)? В одну линию можно поставить столько датчиков, сколько у каждого из них
Отображение температуры и влажности и сбор данных с помощью Arduino и обработка: 13 шагов (с изображениями)
Отображение температуры и влажности и сбор данных с помощью Arduino и обработки: Введение: это проект, в котором используется плата Arduino, датчик (DHT11), компьютер с Windows и программа обработки (загружаемая бесплатно) для отображения данных температуры и влажности в цифровом и форма гистограммы, отображение времени и даты и запуск подсчета времени