18.09.2025. Raspberry Pi 62

Raspberry Pi Projekt: Vremenska Stanica

Izgradite vlastitu vremensku stanicu s Raspberry Pi-em i DHT22 senzorom. Pratite temperaturu, vlažnost i tlak zraka u stvarnom vremenu.
Raspberry Pi Projekt: Vremenska Stanica

Jedna od najzanimljivijih primjena Raspberry Pi-a je izgradnja vlastite vremenske stanice. U ovom projektu pokazat ću vam kako pomoću jednostavnih senzora možete pratiti temperaturu, vlažnost zraka, te čak i atmosferski tlak, a sve podatke prikazati na LCD ekranu ili web sučelju.

Zašto Izgraditi Vlastitu Vremensku Stanicu?

Komercijalne vremenske stanice mogu biti skupe i često ne nude fleksibilnost koju želite. S Raspberry Pi-em možete:

  • Prilagoditi točno koje podatke želite pratiti
  • Spremati povijesne podatke za analizu
  • Pristupiti podacima s bilo kojeg uređaja putem weba
  • Integrirati s drugim pametnim kućnim sustavima
  • Dodati dodatne senzore po potrebi

Potrebni Materijali

Za ovaj projekt trebat će vam:

  • Raspberry Pi (model 3B+ ili noviji preporučen)
  • DHT22 senzor (temperatura i vlažnost) - oko 50 kn
  • BMP280 senzor (tlak zraka) - oko 30 kn
  • Spojni kablovi (ženka-ženka)
  • Breadboard (opcionalno, za lakše spajanje)
  • MicroSD kartica (minimalno 8GB)
  • Napajanje za Raspberry Pi

Ukupni trošak: Oko 300-500 kn (bez Raspberry Pi-a)

Shema Spajanja

Prvo ćemo spojiti DHT22 senzor na Raspberry Pi.

DHT22 Senzor - Pinovi

DHT22    |  Raspberry Pi
---------|---------------
VCC (+)  |  Pin 1 (3.3V)
DATA     |  Pin 7 (GPIO 4)
NC       |  (ne spajaj)
GND (-)  |  Pin 6 (Ground)

BMP280 Senzor - I2C Spajanje

BMP280   |  Raspberry Pi
---------|---------------
VCC      |  Pin 1 (3.3V)
GND      |  Pin 9 (Ground)
SCL      |  Pin 5 (GPIO 3 - SCL)
SDA      |  Pin 3 (GPIO 2 - SDA)

Važno: Budite oprezni s polaritetom! Provjerite datasheet vašeg senzora jer raspored pinova može varirati.

Priprema Raspberry Pi-a

Prvo ažurirajte sustav i instalirajte potrebne biblioteke:

sudo apt update
sudo apt upgrade -y
sudo apt install python3-pip python3-dev git -y

# Instalirajte potrebne Python biblioteke
pip3 install adafruit-circuitpython-dht
pip3 install adafruit-circuitpython-bmp280
pip3 install RPi.GPIO

Omogućavanje I2C

Za BMP280 senzor morate omogućiti I2C sučelje:

sudo raspi-config

Odaberite: Interface Options → I2C → Yes

Restartirajte Raspberry Pi:

sudo reboot

Python Kod za Čitanje Senzora

Sada ćemo napisati Python skriptu koja čita podatke iz senzora.

weather_station.py

#!/usr/bin/env python3
import time
import board
import adafruit_dht
import busio
import adafruit_bmp280
from datetime import datetime

# Inicijalizacija DHT22 senzora (GPIO 4)
dht_sensor = adafruit_dht.DHT22(board.D4)

# Inicijalizacija I2C i BMP280 senzora
i2c = busio.I2C(board.SCL, board.SDA)
bmp_sensor = adafruit_bmp280.Adafruit_BMP280_I2C(i2c)

# Podesi tlak na razini mora za točniju nadmorsku visinu
bmp_sensor.sea_level_pressure = 1013.25

print("Vremenska stanica - pritisni Ctrl+C za izlaz")
print("-" * 50)

while True:
    try:
        # Čitaj temperaturu i vlažnost iz DHT22
        temperature = dht_sensor.temperature
        humidity = dht_sensor.humidity
        
        # Čitaj tlak iz BMP280
        pressure = bmp_sensor.pressure
        altitude = bmp_sensor.altitude
        
        # Trenutno vrijeme
        timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        
        # Ispis podataka
        print(f"\n{timestamp}")
        print(f"Temperatura: {temperature:.1f}°C")
        print(f"Vlažnost: {humidity:.1f}%")
        print(f"Tlak: {pressure:.2f} hPa")
        print(f"Nadmorska visina: {altitude:.2f} m")
        
        # Pauza od 5 sekundi
        time.sleep(5)
        
    except RuntimeError as e:
        # DHT senzori mogu povremeno baciti grešku
        print(f"Greška: {e}")
        time.sleep(2)
        continue
        
    except KeyboardInterrupt:
        print("\n\nZaustavljanje...")
        break

# Oslobodi resurse
dht_sensor.exit()

Spremite datoteku i pokrenite je:

python3 weather_station.py

Trebali biste vidjeti podatke koji se ažuriraju svakih 5 sekundi!

Spremanje Podataka u Bazu

Za povijesne podatke, možemo koristiti SQLite bazu:

import sqlite3

# Kreiraj bazu podataka
conn = sqlite3.connect('weather_data.db')
c = conn.cursor()

c.execute("""CREATE TABLE IF NOT EXISTS readings
             (timestamp TEXT, temperature REAL, humidity REAL, 
              pressure REAL, altitude REAL)""")

# Spremanje podataka
c.execute("INSERT INTO readings VALUES (?, ?, ?, ?, ?)",
          (timestamp, temperature, humidity, pressure, altitude))

conn.commit()
conn.close()

Web Sučelje s Flask

Dodajmo jednostavno web sučelje za prikaz podataka:

pip3 install flask matplotlib
from flask import Flask, render_template
import sqlite3

app = Flask(__name__)

@app.route('/')
def index():
    conn = sqlite3.connect('weather_data.db')
    c = conn.cursor()
    c.execute("SELECT * FROM readings ORDER BY timestamp DESC LIMIT 1")
    latest = c.fetchone()
    conn.close()
    
    return render_template('index.html', data=latest)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Pristupite web sučelju na http://raspberrypi.local:5000

Postavljanje Automatskog Pokretanja

Da bi skripta radila automatski pri pokretanju:

sudo nano /etc/systemd/system/weather-station.service
[Unit]
Description=Weather Station Service
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/weather-station
ExecStart=/usr/bin/python3 /home/pi/weather-station/weather_station.py
Restart=always

[Install]
WantedBy=multi-user.target

Omogućite i pokrenite servis:

sudo systemctl enable weather-station.service
sudo systemctl start weather-station.service

Dodatna Poboljšanja

  • LCD Ekran: Dodajte 16x2 LCD ekran za lokalni prikaz
  • Grafovi: Koristite Grafana za vizualizaciju povijesnih podataka
  • Upozorenja: Postavite notifikacije za ekstremne temperature
  • Vanjski senzori: Dodajte senzor kiše ili vjetra

Zaključak

Čestitam! Izgradili ste funkcionalnu vremensku stanicu koja prati nekoliko parametara i sprema podatke za buduću analizu. Ovaj projekt je odličan za učenje rada sa senzorima, bazama podataka i web razvoju. Možete ga dalje proširivati dodavanjem novih senzora ili funkcionalnosti!

Česta Pitanja

Koliko je precizan DHT22 senzor?
DHT22 ima točnost ±0.5°C za temperaturu i ±2-5% za vlažnost, što je sasvim dovoljno za kućnu upotrebu.

Mogu li koristiti senzor napolju?
Da, ali trebate ga zaštititi od izravne kiše i sunca. Koristite odgovarajuće kućište s ventilacijom.

Koliko struje troši ovaj projekt?
Raspberry Pi s dva senzora troši oko 5-8W, što je vrlo malo.

Podijeli članak: