Съдържание:
- Стъпка 1: Използвани материали
- Стъпка 2: Монтаж
- Стъпка 3: Използване на устройството
- Стъпка 4: BME280 Script
- Стъпка 5: BMP280 Script
Видео: Метеорологична станция Inky_pHAT: 5 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Тук бих искал да опиша една много проста и компактна метеорологична станция на базата на Raspberry Pi Zero, която показва стойностите, измерени от BME280 сензор за температура/налягане/влажност на дисплея на Pimoroni Inky pHAT e-хартия/e-мастило. За да позволя свързването на сензори и pHAT към GPIO на Pi, поставих хакер Pimorini Pico HAT с две женски заглавки, прикрепени между GPIO и дисплея. Устройството е използвано за свързване на няколко сензора, така че описаната тук версия на BME280 е само пример.
За разлика от LCD дисплеите, дисплеите с електронно мастило запазват изображението, дори ако захранването е изключено. Затова те са много добро решение, ако искате да показвате информация, която се актуализира от време на време, особено за изграждане на устройства с ниска енергия. Основното предимство на монохромната/черна версия на 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 £ | 20US $, в Pimoroni.
Хакер на Pimoroni Pico HAT, 2.50 € | 2 £, с прикрепени две женски заглавки, едната от които бустер заглавка с по -дълги щифтове. Имам изградени две различни версии, вижте описанието по -долу.
Пробив BME280, AZ Доставка чрез 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 портове. Не всички сензори ще оцелеят при 5V, затова, моля, проверете преди да ги свържете към 5V портове.
- Инсталирайте библиотеката Blinka, след това инсталирайте библиотеката Circuit Python BME280 от Adafruit.
- Инсталирайте библиотеката Inky pHAT от Pimoroni.
- Инсталирайте примерния код на Python, описан в по -късна стъпка и прикачен към тази инструкция.
- Пуснете кода.
Стъпка 3: Използване на устройството
Има две възможности за използване на устройството.
Кодът, показан тук, трябва да се стартира с помощта на прикачен екран, но след това може да работи без него.
С малки промени в кода можете да използвате crontab за извършване на измервания в определени времеви точки. Това би позволило още повече да се намали консумацията на енергия. Отлични описания как да използвате crontab могат да бъдат намерени другаде.
В комбинация с захранващ блок можете да изградите мобилно устройство и да го използвате за измерване на условията вътре или отвън, в хладилника, в сауната, вашия хюмидор, винарската изба, в самолет,….
Използвайки Zero W, можете не само да показвате стойностите на дисплея, но и да ги изпращате на сървър или вашия уебсайт чрез WLAN, както е описано другаде.
Стъпка 4: BME280 Script
Както бе споменато по -горе, трябва да инсталирате библиотеките Adafruit Blinka и Circuit Python BME280, както и библиотеката на Pimoroni Inky pHAT.
Кодът първо инициализира сензора и Inky pHAT, след това отчита стойностите на температурата, налягането и влажността от сензора и ги показва на екрана и дисплея с електронно мастило. Използвайки командата time.sleep (), измерванията се правят всяка минута. Регулирайте според нуждите. Като зададете езиков параметър, можете да промените езика, използван за показване на резултатите.
С помощта на дисплея Inky pHAT e-ink първо изграждате изображението, което да се показва в паметта, преди то най-накрая да бъде прехвърлено на екрана с помощта на командата inkyphat.show (). Библиотеката Inky pHAT опростява процеса, предлагайки команди за рисуване и форматиране на текст, линии, правоъгълници, кръгове или използване на фонови изображения.
В допълнение към измерените стойности се показва и времето на измерване.
Моля, имайте предвид, че скриптът, както и библиотеките са написани на Python 3, така че отворете и стартирайте с Py3 IDLE или еквивалент.
# Скрипт за сензора за температура/налягане/влажност на bme280 (версия без Adafruit) # и мастилено pHAT - черна версия # # версия Дек 01 2018, Dr H # # Изисква библиотеки Adafruit Blinka и Circuit Python BME280 # и Pimoroni Inky PHAT библиотека време за импортиране дата -час импорт борда внос от adafruit_bme280 импортиране Adafruit_BME280 от adafruit_bme280 импортиране Adafruit_BME280_I2C импортиране inkyphat импортиране на система от PIL внос ImageFont inkyphat.set_colour ('черно') # за b/w мастилено pht 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Изберете стандартен шрифт font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Изберете стандартни данни за шрифта # lang = "DE" # задайте езиков параметър, по подразбиране ("") -> английски lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, адрес = 0x76) # адрес по подразбиране i2c (за Adafruit BMP280) 0x77 (по подразбиране), 0x76 за китайски пробив) # задайте референтно налягане # необходимо за ал изчисление на титула, моля коригирайте. Стандартна стойност 1013,25 hPa # ръчно въвеждане: #reference_hPa = вход ("Въведете референтното налягане в hPa:") # или # задайте налягане в началния момент като референтно, напр. за измерване на относителна височина time.sleep (1) # изчакайте секунда преди първото измерване j = 0 pres_norm_sum = 0, докато j в диапазона (5): # направете пет измервания, за да определите референтната стойност pres_norm_sum = pres_norm_sum + bmp. налягане 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.температура p = bmp.налягане h = bmp.влажност a = bmp. m-%d} '. format (ts) # timestamp - дата, EN формат ts0_DE =' {:%d.%m.%Y} '. format (ts) # timestamp - дата, немски формат 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 = hTextDE: # английски по подразбиране 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. ЧЕРЕН, font2) 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 Script
BMP280 е много подобен на сензора BME280, но само измерва температурата и налягането. Скриптовете са много сходни, но имате нужда от различни библиотеки на Circuit Python. Тук вместо влажност се изчислява изчислена височина въз основа на референтното налягане.
В прикачен файл намирате скрипта.
Препоръчано:
Професионална метеорологична станция, използваща ESP8266 и ESP32 DIY: 9 стъпки (със снимки)
Професионална метеорологична станция, използваща ESP8266 и ESP32 DIY: LineaMeteoStazione е цялостна метеорологична станция, която може да бъде свързана с професионални сензори от Sensirion, както и с някои компоненти на Davis Instrument (Rain Gauge, Anemometer) Проектът е предназначен като DIY метеорологична станция, но просто изисква
Метеорологична станция, подпомагана от сателит: 5 стъпки
Сателитна метеорологична станция: Този проект е предназначен за хора, които искат да събират свои собствени метеорологични данни. Той може да измерва скоростта и посоката на вятъра, температурата и влажността на въздуха. Той също така може да слуша метеорологични спътници, обикалящи около Земята веднъж на всеки 100 минути. Аз ще
Ръчна метеорологична станция: 4 стъпки
Ръчна метеорологична станция: В тази инструкция ще използваме Arduino, олеиран дисплей и комбинация от сензори за околната среда SparkFun със сензори CCS811 и BME280 на борда, за да изградим ръчно устройство, което измерва температура, влажност, нива на TVOC, барометрично налягане
Метеорологична станция NaTaLia: Метеорологична станция със слънчева енергия Arduino, направена по правилния начин: 8 стъпки (със снимки)
Метеорологична станция NaTaLia: Метеорологична станция Arduino със слънчева енергия, направена по правилния начин: След 1 година успешна работа на 2 различни места споделям плановете си за проекти на метеорологични станции със слънчева енергия и обяснявам как се е развила в система, която наистина може да оцелее дълго време периоди от слънчевата енергия. Ако следвате
Метеорологична станция и WiFi сензорна станция: 7 стъпки (със снимки)
Метеостанция „Направи си сам“и WiFi сензорна станция: В този проект ще ви покажа как да създадете метеорологична станция заедно със станция за WiFi сензор. Сензорната станция измерва локалните данни за температурата и влажността и ги изпраща, чрез WiFi, до метеорологичната станция. След това метеорологичната станция показва t