Оглавление:
- Шаг 1. Используемые материалы
- Шаг 2: Сборка
- Шаг 3: Использование устройства
- Шаг 4: сценарий BME280
- Шаг 5: Скрипт BMP280
Видео: Метеостанция Inky_pHAT: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Здесь я хотел бы описать очень простую и компактную метеостанцию на основе Raspberry Pi Zero, которая отображает значения, измеренные датчиком температуры / давления / влажности BME280, на дисплее электронной бумаги / электронных чернил Pimoroni Inky pHAT. Чтобы разрешить подключение датчиков и pHAT к GPIO Pi, я поместил хакер Pimorini Pico HAT с двумя женскими разъемами, прикрепленными между GPIO и дисплеем. Устройство использовалось для подключения нескольких датчиков, поэтому описанная здесь версия BME280 является лишь примером.
В отличие от ЖК-дисплеев, дисплеи с электронными чернилами сохраняют изображение даже при выключенном питании. Поэтому они являются очень хорошим решением, если вы хотите отображать информацию, которая обновляется время от времени, особенно для создания устройств с низким энергопотреблением. Основным преимуществом монохромной / черной версии Inky pHAT является то, что обновление дисплея занимает около одной секунды вместо десяти-пятнадцати секунд, которые требовались для трехцветных версий. Смотрите фильм.
Библиотека Blinka от Adafruit позволяет запускать код Circuit Python на Raspberry Pi, а образцы Circuit Python для самых разных датчиков доступны от Adafruit. Подробное описание того, как установить Blinka и коды Circuit Python, можно найти на веб-сайте Adafruit. Библиотеки, которые я тестировал до сих пор (BMP280, BME280, TSL2591, TCS34785, VEML7065,…), работали очень хорошо, в то время как в некоторых примерах кода были небольшие проблемы.
BME280 - датчик для измерения температуры, влажности и атмосферного давления. BMP280 доступны у многих поставщиков, включая Adafruit, но я здесь использовал дешевую китайскую версию. Имейте в виду, что они используют разные адреса i2c (Adafruit: 0x77, другие: 0x76).
Разрыв подключается к Pi с помощью i2c, и считывание показаний датчика очень просто с использованием библиотеки и примера кода.
Шаг 1. Используемые материалы
Raspberry Pi Zero с прикрепленным мужским заголовком. Но подойдет любая версия Raspberry Pi.
Pimoroni Inky pHAT, черная / монохромная версия, 25 € | 22 £ | 20 долларов США, в Pimoroni.
Хакер Pimoroni Pico HAT, 2,50 евро | 2 фунта, с двумя прикрепленными женскими заголовками, один из которых является вспомогательным заголовком с более длинными контактами. Я собрал две разные версии, см. Описание ниже.
Прорыв BME280, доставка в Аризону через Amazon.de по 7,50 евро, с прикрепленным заголовком.
Кабельные перемычки удлинения
По желанию:
Блок питания USB для мобильных приложений
Корпус для Pi или устройства (здесь не показано)
Шаг 2: Сборка
- Припаяйте женские заголовки к хакеру Pico HAT. Перед пайкой проверьте правильность ориентации. Я создал две версии этого для разных целей. Один с расположенным вниз жаткой бустера в переднем ряду и нормальным жаткой вверх / вниз в заднем ряду и версия с жаткой бустера, обращенной вниз, в заднем ряду и прямоугольным женским жаткой в переднем ряду. Смотрите изображения. Первая версия позволяет очень легко присоединять и заменять датчики и кабели, в то время как версия с обращенным внутрь разъемом позволяет заключить Pi, датчик и Inky pHAT в корпус. В качестве альтернативы вы можете припаять кабели, соединяющие GPIO и датчик, непосредственно с хакером Pico HAT и / или припаять хакер Pico HAT непосредственно к контактам GPIO. В любом случае используйте минимально необходимое количество припоя.
- При необходимости припаяйте коллектор к датчику.
- Установите модифицированный хакерский модуль Pico HAT на Pi, затем добавьте Inky pHAT. При необходимости вставьте опору, например Пеноблок или стойки для Inky pHAT.
- Подключите кабели и датчик, используя порты 3V, GND, SDA и SCL. Не все датчики выдерживают напряжение 5 В, поэтому проверьте их перед подключением к портам 5 В.
- Установите библиотеку Blinka, затем установите библиотеку Circuit Python BME280 от Adafruit.
- Установите библиотеку Inky pHAT от Pimoroni.
- Установите пример кода Python, описанный на более позднем этапе и прикрепленный к этому руководству.
- Запустите код.
Шаг 3: Использование устройства
Есть два варианта использования устройства.
Код, показанный здесь, должен запускаться с прикрепленного экрана, но затем может работать и без него.
С небольшими изменениями кода вы можете использовать crontab для выполнения измерений в определенные моменты времени. Это позволит еще больше снизить энергопотребление. Отличные описания того, как использовать crontab, можно найти в другом месте.
В сочетании с блоком питания вы можете создать мобильное устройство и использовать его для измерения условий внутри или снаружи, в холодильнике, сауне, вашем хьюмидоре, винном погребе, в самолете и т. Д.
Используя Zero W, вы можете не только отображать значения на дисплее, но также отправлять их на сервер или свой веб-сайт через WLAN, как описано в другом месте.
Шаг 4: сценарий BME280
Как упоминалось ранее, вам необходимо установить библиотеки Adafruit Blinka и Circuit Python BME280, а также библиотеку Pimoroni Inky pHAT.
Код сначала инициализирует датчик и Inky pHAT, затем считывает значения температуры, давления и влажности с датчика и отображает их на экране и дисплее электронных чернил. Используя команду time.sleep (), измерения выполняются каждую минуту. При необходимости отрегулируйте. Установив параметр языка, вы можете изменить язык, используемый для отображения результатов.
Используя дисплей электронных чернил Inky pHAT, вы сначала создаете изображение, которое будет отображаться в памяти, прежде чем оно будет окончательно перенесено на экран с помощью команды inkyphat.show (). Библиотека Inky pHAT упрощает процесс, предлагая команды для рисования и форматирования текста, линий, прямоугольников, кругов или использования фоновых изображений.
Помимо измеренных значений также отображается время измерения.
Имейте в виду, что сценарий и библиотеки написаны на Python 3, поэтому открывайте и запускайте с помощью Py3 IDLE или его эквивалента.
# Скрипт для датчика температуры / давления / влажности bme280 (версия без Adafruit) # и чернильный pHAT - черная версия # # версия 01 декабря 2018 г., Dr H # # Требуются библиотеки Adafruit Blinka и Circuit Python BME280 # и Pimoroni Inky Библиотека pHAT import time import datetime import board import busio from adafruit_bme280 import Adafruit_BME280 from adafruit_bme280 import Adafruit_BME280_I2C import inkyphat import sys from PIL import ImageFont inkyphat.set_colour ('black') # for b / what inky pset_rotinkypation 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Выбрать стандартный шрифт font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Выбрать данные стандартного шрифта # lang = "DE" # установить параметр языка, default ("") -> english lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, address = 0x76) # адрес i2c по умолчанию (для Adafruit BMP280) 0x77 (по умолчанию), 0x76 для китайского отрыва) # установить эталонное давление # требуется для всех расчет размера, пожалуйста, отрегулируйте. Стандартное значение 1013,25 гПа # ручной ввод: #reference_hPa = input ("Введите эталонное давление в гПа:") # или # установите давление в момент запуска в качестве эталона, например для измерения относительной высоты time.sleep (1) # подождать секунду перед первым измерением j = 0 pres_norm_sum = 0 while j in range (5): # выполнить пять измерений для определения опорного значения pres_norm_sum = pres_norm_sum + bmp.pressure j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum / j) # установить начальное измерение как контрольную точку, чтобы включить измерения высоты bmp.sea_level_pressure = float (reference_hPa) print () while True: # работает вечно, изменить для версии crontab # измерено значения t = bmp.tem temperature p = bmp.pressure h = bmp.humidity a = bmp.altitude # рассчитывается библиотекой adafruit на основе давления # timestamp ts = datetime.datetime.now () # timestamp ts0_EN = '{:% Y-% m-% d} '. format (ts) # timestamp - date, EN format ts0_DE =' {:% d.% m.% Y} '. format (ts) # timestamp - date, German format ts1 =' {: % H:% M:% S} '. Format (ts) # timestamp - time tmp = "{0: 0.1f}". Format (t) pre = "{0: 0.1f}". Format (p) hyg = "{0: 0.1f}". Format (h) alt="{0: 0.1f}". Format (a) tText = "Temp.:" pText_EN = "Давление:" pText_DE = "Luftdruck:" h Text_EN = "Влажность:" hText_DE = "отн. LF: "aText_EN =" Высота: "aText_DE =" Höhe üNN: "# exakt: ü. NHN, über Нормальный Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = pText_DE hText = pText = hText_DE hText = pText_DE hText = pT_DE_DE hText_DE: # английский по умолчанию ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # выводить значения для отображения print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, "%") print (aText, alt, "m") print () # вывод значений в Inky pHAT t1 = 5 # вкладка 1, первый столбец, упрощает оптимизацию макета t2 = 110 # вкладка 2, второй столбец inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # запись даты в метке времени inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # запись времени метки времени inkyphat.line ((t1, 25, 207, 25), 1, 3) # рисуем линию inkyphat.text ((t1, 30), tText, inkyphat. BLACK, font2) inkyphat.text ((t2, 30), (tmp + «° C»), inkyphat. BLACK, font2) inkyphat.text ((t1, 55), pText, inkyphat. BLACK, font2) inkyphat.text ((t2, 55), (pre + «hPa»), inkyphat. ЧЕРНЫЙ, шрифт2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + "%"), inkyphat. BLACK, font2) # альтернативно отображать вычисленную высоту # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # подождите несколько секунд до следующих измерений, +19 секунд на цикл inkyphat.clear () # пустая процедура отображения Inky pHAT, inkyphat.show () # тишина для crontab-версии
Шаг 5: Скрипт BMP280
BMP280 очень похож на датчик BME280, но только измеряет температуру и давление. Скрипты очень похожи, но вам нужны разные библиотеки Circuit Python. Здесь вместо влажности отображается рассчитанная высота на основе эталонного давления.
В приложении вы найдете сценарий.
Рекомендуемые:
Профессиональная метеостанция с использованием ESP8266 и ESP32 DIY: 9 шагов (с изображениями)
Профессиональная метеостанция с использованием ESP8266 и ESP32 DIY: LineaMeteoStazione - это законченная метеостанция, которая может быть сопряжена с профессиональными датчиками от Sensirion, а также с некоторыми компонентами прибора Дэвиса (датчик дождя, анемометр)
Метеостанция большого радиуса действия HC-12 и датчики DHT: 9 шагов
HC-12 Метеостанция для больших расстояний и датчики DHT: в этом уроке мы узнаем, как сделать удаленную метеостанцию для больших расстояний, используя два датчика DHT, модули HC12 и ЖК-дисплей I2C. Посмотрите видео
Спутниковая метеостанция: 5 шагов
Спутниковая метеостанция: этот проект предназначен для людей, которые хотят собирать собственные данные о погоде. Он может измерять скорость и направление ветра, температуру и влажность воздуха. Он также способен прослушивать метеорологические спутники, вращающиеся вокруг Земли, каждые 100 минут. Я буду
Fanair: метеостанция для вашей комнаты: 6 шагов (с изображениями)
Fanair: метеостанция для вашей комнаты: есть бесчисленное множество способов узнать текущую погоду, но тогда вы знаете только погоду на улице. Что, если вы хотите узнать погоду в своем доме, в конкретной комнате? Вот что я пытаюсь решить с помощью этого проекта. Fanair использует муль
Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: 8 шагов (с изображениями)
Метеостанция NaTaLia: метеостанция на солнечной энергии Arduino сделала правильный выбор: после 1 года успешной работы в 2 разных местах я делюсь своими планами по проекту метеостанции на солнечной энергии и объясняю, как она превратилась в систему, которая действительно может выжить в течение длительного времени. периоды от солнечной энергии. Если вы последуете