Kazalo:

Vremenska postaja Inky_pHAT: 5 korakov
Vremenska postaja Inky_pHAT: 5 korakov

Video: Vremenska postaja Inky_pHAT: 5 korakov

Video: Vremenska postaja Inky_pHAT: 5 korakov
Video: Посещение самой глубокой станции Японии | Станция Доай | АСМР 2024, Julij
Anonim
Vremenska postaja Inky_pHAT
Vremenska postaja Inky_pHAT
Vremenska postaja Inky_pHAT
Vremenska postaja Inky_pHAT
Vremenska postaja Inky_pHAT
Vremenska postaja Inky_pHAT
Vremenska postaja Inky_pHAT
Vremenska postaja Inky_pHAT

Tu bi rad opisal zelo preprosto in kompaktno vremensko postajo na osnovi Raspberry Pi Zero, ki prikazuje vrednosti, merjene s senzorjem temperature/tlaka/vlažnosti BME280 na zaslonu e-papirja/e-črnila Pimoroni Inky pHAT. Da bi omogočili povezavo senzorjev in pHAT -a z GPIO Pi, sem postavil hekerja Pimorini Pico HAT z dvema ženskima glavoma, pritrjenima med GPIO in zaslonom. Naprava je bila uporabljena za priključitev več senzorjev, zato je tukaj opisana različica BME280 le primer.

Za razliko od LCD zaslonov, zasloni z e-črnilom ohranjajo sliko, tudi če je napajanje izklopljeno. Zato so zelo dobra rešitev, če želite prikazati informacije, ki se občasno posodabljajo, zlasti za izdelavo naprav z nizko porabo energije. Glavna prednost enobarvne/črne različice Inky pHAT je, da posodabljanje zaslona traja le približno eno sekundo, namesto deset do petnajst sekund, ki jih zahtevajo tribarvne različice. Oglejte si film.

Adafruitova knjižnica Blinka omogoča izvajanje kode Circuit Python na Raspberry Pi, vzorci Circuit Python za najrazličnejše senzorje pa so na voljo pri Adafruit. Podroben opis, kako namestiti kode Blinka in Circuit Python, najdete na spletnem mestu Adafruit. Knjižnice, ki sem jih do sedaj preizkusil (BMP280, BME280, TSL2591, TCS34785, VEML7065, …), so delovale zelo dobro, medtem ko so bile v nekaterih vzorčnih kodah manjše težave.

BME280 je senzor za merjenje temperature, vlažnosti in atmosferskega tlaka. Prelomi BMP280 so na voljo pri številnih prodajalcih, vključno z Adafruitom, vendar sem tukaj uporabljal poceni kitajsko različico. Upoštevajte, da ti uporabljajo različne naslove i2c (Adafruit: 0x77, drugi: 0x76).

Prekinitev je povezana s Pi prek i2c, branje senzorja pa je zelo preprosto z uporabo knjižnice in vzorčne kode.

Korak: Uporabljeni materiali

Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali
Uporabljeni materiali

Raspberry Pi Zero, s priloženo moško glavo. Toda vsaka različica Raspberry Pi bi ustrezala.

Pimoroni Inky pHAT, črna/enobarvna različica, 25 € | 22 £ | 20US $, v Pimoroniju.

Haker Pimoroni Pico HAT, 2,50 € | 2 £, z dvema pritrjenima ženskima glavoma, od katerih je eden pospeševalnik z daljšimi zatiči. Zgradil sem dve različici, glej opis spodaj.

Zlom BME280, dostava AZ prek Amazon.de @ 7,50 €, s priloženo glavo.

Podaljševalni kabli

Neobvezno:

Napajalnik USB za mobilne aplikacije

Ohišje za Pi ali napravo (tukaj ni prikazano)

2. korak: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
  • Spajkajte ženske glave hekerju Pico HAT. Pred spajkanjem preverite pravilno usmerjenost. Zgradil sem dve različici tega, za različne namene. Ena z glavo navzdol obrnjeno v prvo vrsto in normalno glavo navzgor/navzgor v zadnji vrsti ter različico z glavo navzdol v zadnji vrsti in pravokotno glavo v prvi vrsti. Oglejte si slike. Prva različica omogoča zelo enostavno priključitev in menjavo senzorjev in kablov, različica z glavo, obrnjenim navznoter, pa omogoča pritrditev Pi, senzorja in črnila pHAT v ohišje. Druga možnost je, da kable, ki povezujejo GPIO in senzor, spajkate neposredno na heker Pico HAT in/ali spajkate heker Pico HAT neposredno na zatiče GPIO. V vsakem primeru uporabite minimalno potrebno količino spajkanja.
  • Spojite glavo na senzor, če je potrebno.
  • Spremenjeno hekersko enoto Pico HAT zložite na Pi in dodajte Inky pHAT. Po potrebi vstavite nekaj podpore, npr. Blok iz pene ali stojala za Inky pHAT.
  • Priključite kable in senzor s pomočjo vrat 3V, GND, SDA in SCL. Vsi senzorji ne bodo preživeli 5V, zato preverite, preden jih priključite na vrata 5V.
  • Namestite knjižnico Blinka, nato pa namestite knjižnico Circuit Python BME280 iz Adafruit.
  • Namestite knjižnico Inky pHAT iz Pimoronija.
  • Namestite vzorčno kodo Python, opisano v poznejšem koraku in priloženo temu navodilu.
  • Zaženite kodo.

3. korak: Uporaba naprave

Uporaba naprave
Uporaba naprave

Obstajata dve možnosti za uporabo naprave.

Kodo, prikazano tukaj, je treba zagnati s priloženim zaslonom, nato pa lahko deluje tudi brez nje.

Z manjšimi spremembami kode lahko uporabite crontab za izvajanje meritev v določenih časovnih točkah. To bi še dodatno zmanjšalo porabo energije. Odlične opise uporabe crontaba najdete drugje.

V povezavi z napajalnikom lahko sestavite mobilno napravo in jo uporabite za merjenje pogojev znotraj ali zunaj, v hladilniku, v savni, v vašem humidorju, vinski kleti, v letalu,….

Z uporabo Zero W ne morete samo prikazati vrednosti na zaslonu, ampak jih tudi poslati prek strežnika WLAN ali na vaše spletno mesto, kot je opisano drugje.

4. korak: Scenarij BME280

Scenarij BME280
Scenarij BME280

Kot smo že omenili, morate namestiti knjižnici Adafruit Blinka in Circuit Python BME280 ter knjižnico pHAT Pimoroni Inky.

Koda najprej inicializira senzor in Inky pHAT, nato prebere vrednosti temperature, tlaka in vlažnosti s senzorja ter jih prikaže na zaslonu in zaslonu e-črnila. Z ukazom time.sleep () se meritve izvajajo vsako minuto. Po potrebi prilagodite. Z nastavitvijo parametra jezika lahko spremenite jezik, ki se uporablja za prikaz rezultatov.

Z zaslonom e-ink Inky pHAT najprej sestavite sliko za prikaz v pomnilniku, preden se končno prenese na zaslon z ukazom inkyphat.show (). Knjižnica Inky pHAT poenostavlja postopek in ponuja ukaze za risanje in oblikovanje besedila, vrstic, pravokotnikov, krogov ali uporabo slik v ozadju.

Poleg izmerjenih vrednosti je prikazan tudi čas merjenja.

Upoštevajte, da sta skript in knjižnice napisana v Pythonu 3, zato jih odprite in zaženite z Py3 IDLE ali enakovrednim.

# Skript za senzor temperature/tlaka/vlažnosti bme280 (različica, ki ni Adafruit) # in črnilni pHAT - črna različica # # različica 1. december 2018, Dr H # # Zahteva knjižnice Adafruit Blinka in Circuit Python BME280 # in Pimoroni Inky PHAT knjižnica čas uvoza datum datum uvoz plošča uvoz busio iz adafruit_bme280 uvoz Adafruit_BME280 iz adafruit_bme280 uvoz Adafruit_BME280_I2C uvoz inkyphat uvoz sistema iz PIL uvoz ImageFont inkyphat.set_colour ('črna') # za b/w črnilo pint 180 ° font1 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 27) # Izberite standardno pisavo font2 = ImageFont.truetype (inkyphat.fonts. FredokaOne, 19) # Izberite standardne podatke o pisavi # lang = "DE" # nastavite jezikovni parameter, privzeto ("") -> angleščina lang = "EN" i2c = busio. I2C (board. SCL, board. SDA) bmp = Adafruit_BME280_I2C (i2c, naslov = 0x76) # privzeti naslov i2c (za Adafruit BMP280) 0x77 (privzeto), 0x76 za kitajski preboj) # nastavite referenčni tlak # potreben za al izračun naslova, prilagodite. Standardna vrednost 1013,25 hPa # ročni vnos: #reference_hPa = vnos ("Vnesite referenčni tlak v hPa:") # ali # nastavite tlak v času zagona kot referenco, npr. za meritve relativne višine time.sleep (1) # počakajte sekundo pred prvo meritvijo j = 0 pres_norm_sum = 0, medtem ko j v območju (5): # izvedite pet meritev, da določite referenčno vrednost pres_norm_sum = pres_norm_sum + bmp. tlak j = j + 1 time.sleep (1) reference_hPa = (pres_norm_sum/j) # nastavite začetno meritev kot referenčno točko, da omogočite meritve višine bmp.sea_level_pressure = float (reference_hPa) print () medtem ko je True: # teče za vedno, spremenite za crontab-različico # izmerjeno vrednosti t = bmp.temperatura p = bmp.tlak h = bmp.vlažnost a = bmp.višina # izračunana v knjižnici adafruit iz tlaka #timestamp ts = datetime.datetime.now () # časovni žig ts0_EN = '{:%Y-% m-%d} '. format (ts) # časovni žig - datum, format EN ts0_DE =' {:%d.%m.%Y} '. format (ts) # časovni žig - datum, nemški format ts1 =' {: %H:%M:%S} '. Format (ts) # časovni žig - čas 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 = "Tlak:" pText_DE = "Luftdruck:" h Text_EN = "Vlažnost:" hText_DE = "rel. LF: "aText_EN =" Nadmorska višina: "aText_DE =" Höhe üNN: " # exakt: ü. NHN, über Normal Höhen Null if (lang ==" DE "): ts0 = ts0_DE aText = aText_DE pText = hTextDE: # privzeto angleško ts0 = ts0_EN aText = aText_EN pText = pText_EN hText = hText_EN # vrednosti tiskanja za prikaz print (ts) print (tText, tmp, "° C") print (pText, pre, "hPa") print (hText, hyg, " %") print (aText, alt, "m") print () # vrednosti tiskanja na Inky pHAT t1 = 5 # tab 1, prvi stolpec, poenostavi optimizacijo postavitve t2 = 110 # tab 2, drugi stolpec inkyphat. clear () inkyphat.text ((t1, 0), ts0, inkyphat. BLACK, font2) # zapis datuma časovnega žiga inkyphat.text ((t2, 0), ts1, inkyphat. BLACK, font2) # čas pisanja časovnega žiga inkyphat.line ((t1, 25, 207, 25), 1, 3) # potegni črto 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. ČRNA, font2) inkyphat.text ((t1, 80), hText, inkyphat. BLACK, font2) inkyphat.text ((t2, 80), (hyg + " %"), inkyphat. BLACK, font2) # alternativno prikaže izračunano višino # inkyphat.text ((t1, 80), aText, inkyphat. BLACK, font2) # inkyphat.text ((t2, 80), (alt + "m"), inkyphat. BLACK, font2) inkyphat.show () time.sleep (51) # počakajte nekaj sekund pred naslednjimi meritvami, +19 sekund na cikel inkyphat.clear () # prazen postopek prikaza črnila pHAT, inkyphat.show () # tišina za različico crontab

5. korak: Skript BMP280

BMP280 je zelo podoben senzorju BME280, vendar meri le temperaturo in tlak. Skripti so si zelo podobni, vendar potrebujete različne knjižnice Circuit Python. Tu se namesto vlažnosti prikaže izračunana višina, ki temelji na referenčnem tlaku.

V prilogi najdete skript.

Priporočena: