Raspberry PI jako metostanice

Kategorie: Projekty, Raspberry PI

Meteostanice se dá udělat doma snadno, rychle a zábavně. Tento model je pouze přípravou neboť na zařízení zobrazí do výstupu konzole teplotu a vlhkost. Další zpracování těchto dat je možné navázat.

Potřebné

Raspberry PI namalované
Raspberry PI

Pro tento účel mi poslouží zařízení Raspberry PI 3, které bude za pomoci externího modulu měřit teplotu a vlhkost ovzduší. V Raspberry PI mám nainstalovaný aktuální Raspberry Pi OS lite v textovém režimu, který je, jak jsem pochopil, nástupcem Raspbianu. Díky bezdrátovému Wi-Fi připojení bude zařízení dostupné v síti a bude moci předávat data.

DHT11
DHT11

Pro měření je tu modul DHT11 a funkci v počítači budu programovat pomocí Pythonu. DHT11 měří hodnotu teploty a vlhkosti vzduchu

Budeme tedy potřebovat:

Potřebné balíčky pro Python získáme takto:

sudo apt install python python3 python-gpiozero python3-gpiozero python-tk python3-tk

Zapojení DHT11

Pro zapojení modulu DHT11 do GPIO rozhraní jsou piny GND, VCC a DATA. Číslování pinů bude s ohledem na reálné uspořádání na desce dle obrázku níže. Pin GND je uzemnění a v tomto případě záporný pól – , zapojíme jej do (9). Pin VCC slouží pro napájení a podporuje 5V i 3.3V, zapojíme jej do (1). Pin DATA slouží k přenosu dat, zapojíme ho do (11).

Raspberry GPIO piny
Raspberry GPIO – fyzické uspořádání pinů pro nahlédnutí
  • GND -> GND (9)
  • VCC -> 3V3 (1)
  • DATA -> GPIO17 (11)

Program

Pro chod ukázkového programu je zapotřebí vlastní program v souboru dht11 zajišťující komunikaci s modulem, který je v ukázkovém programu volán. Je zapotřebí mít tedy oba soubory v jednom adresáři.

Spouští se dht11_ukázka.py!

Kód ukázkového programu v Pythonu:

import RPi.GPIO as GPIO
import dht11
import time
import datetime
import os 
from turtle import exitonclick

#zahaji GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

#cte data z pinu 17
instance = dht11.DHT11(pin=17)

#vlastni program
while True:
    result = instance.read()
    if result.is_valid():
        os.system('clear')
        # radek nize po odkomentovani prida casove razitko
        # print("Data " + str(datetime.datetime.now()))
        print("Teplota: %d C" % result.temperature)
        print("Vlhkost: %d %%" % result.humidity)
        print(input())
    time.sleep(10)

V kódu se na začátku importuje dht11 knihovna, to znamená, že se načte soubor dht11, který je v adresáři u spouštěcího souboru, bez onoho souboru je program nefunkční.

Co program dělá?

Vypisuje hodnoty teploty a vlhkosti vzduchu v aktualizačních intervalech 10 sekund do výstupu.

Další zpracování získaných dat

Další zpracování dat je možné, jestliže budeme vycházet ze souboru dht11_ukázka.py. Je možné zahájit také interakci na základě překročení teploty anebo naopak.

Jako zobrazovací jednotku lze využít dvouřádkový displej – bude vyžadovat přidání parametrů pro zobrazení.

Do budoucna připravuji přidat k sestavě další modul pro rozšíření o další měřitelnou jednotku.