Съдържание:

Метеорологична станция Inky_pHAT: 5 стъпки
Метеорологична станция Inky_pHAT: 5 стъпки

Видео: Метеорологична станция Inky_pHAT: 5 стъпки

Видео: Метеорологична станция Inky_pHAT: 5 стъпки
Видео: Geodnet Miner Setup Tutorial 2024, Юли
Anonim
Метеорологична станция Inky_pHAT
Метеорологична станция Inky_pHAT
Метеорологична станция Inky_pHAT
Метеорологична станция Inky_pHAT
Метеорологична станция Inky_pHAT
Метеорологична станция Inky_pHAT
Метеорологична станция Inky_pHAT
Метеорологична станция Inky_pHAT

Тук бих искал да опиша една много проста и компактна метеорологична станция на базата на 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

Скриптът BME280
Скриптът BME280

Както бе споменато по -горе, трябва да инсталирате библиотеките 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. Тук вместо влажност се изчислява изчислена височина въз основа на референтното налягане.

В прикачен файл намирате скрипта.

Препоръчано: