IoT Szenzor Műszerfal – Arduino-Raspberry I2C
Kezdő oldal HTML
// Évfolyamok
9–10. évfolyam 11–12. évfolyam 13. évfolyam
// Ipari Informatika
CAD / CAM Cisco Packet Tracer Ipari és Terepi buszrendszerek I2C
🌡️ IoT Projekt — Arduino ↔ Raspberry Pi

IoT Szenzor Műszerfal I2C kommunikáció BMP280 szenzorral

// Komplett adatgyűjtő rendszer Arduino mikrovezérlővel, Raspberry Pi Zero számítógéppel
és valós idejű webes megjelenítéssel

I2C Protocol Arduino Raspberry Pi Python PHP/MySQL BMP280
// 01 · Rendszer Architektúra
system.overview
01

Hogyan Működik?

Komplett IoT adatgyűjtő rendszer

Ez a projekt egy komplett IoT adatgyűjtő rendszer, amely Arduino mikrovezérlőt, Raspberry Pi Zero számítógépet és BMP280 környezeti szenzort használ. A rendszer valós időben gyűjti a hőmérsékleti és légnyomás adatokat, majd egy webes felületen jeleníti meg azokat.

Az I2C (Inter-Integrated Circuit) egy kétvezetékes kommunikációs protokoll, amely lehetővé teszi, hogy több eszköz kommunikáljon egyetlen buszon keresztül. A rendszerünkben az Arduino I2C Slave eszközként működik, míg a Raspberry Pi I2C Master eszközként kéri le az adatokat.

Adatfolyam

🌡️ Arduino + BMP280

Szenzor adatok leolvasása

🔗 I2C Kommunikáció

Adatátvitel SDA/SCL vezetékeken

🖥️ Raspberry Pi

Python szkript fogadja az adatokat

🌐 Web API

PHP/MySQL szerver tárolja

Protokoll
I2C (TWI)
Master
Raspberry Pi
Slave
Arduino 0x08
Szenzor
BMP280
// 02 · Hardver Összeállítás
hardware.wiring
02

Áramköri Diagram

Arduino Uno + Raspberry Pi Zero + BMP280

Arduino és Raspberry Pi I2C kapcsolás
Arduino Uno ↔ Raspberry Pi Zero ↔ BMP280 szenzor I2C kapcsolata

Szükséges Alkatrészek

1 Raspberry Pi Zero (W/2W)

A rendszer központi számítógépe, Python szkriptet futtat

2 Arduino Uno/Nano

I2C Slave eszköz, szenzor adatokat gyűjt

3 BMP280 Szenzor

Hőmérséklet és légnyomás mérő modul

4 Jumper Kábelek

SDA, SCL, VCC, GND kapcsolatokhoz

⚡ Bekötési Táblázat

Arduino Raspberry Pi ───────────────────────────── SDA (A4) → GPIO 2 (SDA) SCL (A5) → GPIO 3 (SCL) GND → GND 5V → 5V (opcionális) BMP280 Arduino ───────────────────────────── VIN → 3.3V / 5V GND → GND SDA → A4 (SDA) SCL → A5 (SCL)
⚠️ Fontos: Az I2C kommunikációhoz közös földelés (GND) szükséges! A Raspberry Pi 3.3V-on működik, de az Arduino 5V-os I2C jeleket küldhet. Használj szintillesztőt, ha szükséges.
Arduino SDA
A4 (GPIO)
Arduino SCL
A5 (GPIO)
RPi SDA
GPIO 2
RPi SCL
GPIO 3
web.dashboard
03

Szenzor Műszerfal

Valós idejű adatvizualizáció

Szenzor Műszerfal - display_data.php
Webes műszerfal: valós idejű hőmérséklet és légnyomás megjelenítés

A display_data.php webes felület valós időben jeleníti meg a szenzor adatokat. A műszerfal tartalmazza a jelenlegi hőmérsékletet, légnyomást, valamint grafikus ábrázolást a múltbeli adatokról.

A webes interfész automatikusan frissül, és vizuálisan vonzó, modern megjelenítést biztosít a begyűjtött IoT adatok számára.

Főbb Funkciók

  • Valós idejű hőmérséklet és légnyomás kijelzés
  • Grafikus idősor grafikonok a múltbeli adatokról
  • Automatikus adatfrissítés AJAX technológiával
  • Reszponzív dizájn mobil eszközökre optimalizálva
// 03 · Szoftver Komponensek
software.arduino
04

Arduino Oldal

I2C Slave implementáció

Feladatok:

  • BMP280 szenzor inicializálása az Adafruit BMP280 könyvtárral
  • I2C Slave cím beállítása: 0x08
  • Hőmérséklet és légnyomás adatok periódikus leolvasása
  • Adatok továbbítása I2C kérés esetén (Wire.onRequest() callback)
#include <Wire.h> #include <Adafruit_BMP280.h> Adafruit_BMP280 bmp; void setup() { Wire.begin(0x08); // I2C Slave cím Wire.onRequest(sendData); bmp.begin(); } void sendData() { float temp = bmp.readTemperature(); Wire.write((byte*)&temp, sizeof(temp)); }
I2C Cím
0x08
Könyvtár
Wire.h
Szerepkör
Slave
Szenzor
Adafruit BMP280
software.python
05

Python Szkript

I2C Master adatlekérés

Szükséges telepítés:

sudo apt update sudo apt install -y python3-pip i2c-tools pip3 install smbus2 requests # I2C eszköz ellenőrzése sudo i2cdetect -y 1

Python szkript működése:

  • I2C busz megnyitása (smbus2 könyvtárral)
  • Adatok beolvasása az Arduino-ról: read_i2c_block_data(0x08, 0, 8)
  • Byte-ok átalakítása float értékekké
  • HTTP GET kérés az API felé
import smbus2 import requests import struct bus = smbus2.SMBus(1) ARDUINO_ADDR = 0x08 data = bus.read_i2c_block_data(ARDUINO_ADDR, 0, 8) temp = struct.unpack(‘f’, bytes(data[0:4]))[0] url = ‘http://yourserver.com/insert_data.php’ params = {‘temperature’: temp, ‘pressure’: pressure} response = requests.get(url, params=params)
Könyvtár
smbus2
I2C Bus
/dev/i2c-1
Szerepkör
Master
Protokoll
HTTP GET
software.backend
06

PHP/MySQL Backend

Adattárolás és megjelenítés

A webszerver oldalon egy egyszerű PHP szkript fogadja a GET kéréseket és MySQL adatbázisba menti az adatokat:

<?php $temp = $_GET[‘temperature’]; $humidity = $_GET[‘humidity’]; $conn = new mysqli(„localhost”, „user”, „pass”, „sensors_db”); $sql = „INSERT INTO sensor_data (temperature, humidity) VALUES ($temp, $humidity)”; $conn->query($sql); ?>

A display_data.php szkript pedig lekérdezi és JSON formátumban vagy HTML-ben jeleníti meg az adatokat a webes műszerfalon.

Backend
PHP 7.4+
Adatbázis
MySQL
API
REST GET
Frontend
HTML/JS
// 04 · Megvalósítási Útmutató
implementation.steps
07

Megvalósítási Lépések

A teljes rendszer felépítése

1

Hardver Összeállítása

Kösd össze az Arduino és Raspberry Pi I2C lábait a fenti kapcsolási rajz szerint. Csatlakoztasd a BMP280 szenzort az Arduino A4 (SDA) és A5 (SCL) lábaira.

2

Arduino Programozása

Töltsd le a projektet a GitHub-ról, telepítsd a szükséges könyvtárakat (Wire.h, Adafruit BMP280), majd töltsd fel az Arduino-ra az .ino fájlt.

📂 Arduino Forráskód
3

PHP API Telepítése

Hozd létre a MySQL adatbázist a create.sql segítségével, másold fel a PHP fájlokat a webszerverre és konfiguráld az adatbázis kapcsolatot.

📂 PHP/MySQL Fájlok
4

Raspberry Pi SSH Bejelentkezés

# Windows PowerShell / Linux Terminal: ssh pi@192.168.1.x # Alapértelmezett jelszó: raspberry
5

Python Szkript Futtatása

Másold fel a Python szkriptet SSH-n keresztül, állítsd be az API URL-t, majd indítsd el:

python3 Raspberry_I2C_To_Arduino.py # Automata indítás cron-nal: crontab -e */5 * * * * python3 /home/pi/script.py
diagnostics.troubleshooting
08

Ellenőrzési Pontok

Diagnosztika és gyakori hibák

✅ I2C Detektálás

sudo i2cdetect -y 1

Várt: 0x08 cím megjelenik

✅ Arduino Monitor

Soros monitor kimenet

Várt: Szenzor adatok logolva

✅ Python Szkript

Terminál kimenet

Várt: Hőmérséklet kiírva

✅ API Válasz

HTTP 200 válasz

Várt: JSON sikeres mentés

🔍 Gyakori Problémák

❌ i2cdetect nem talál eszközt
Megoldás: Ellenőrizd a kábelezést (SDA, SCL), győződj meg róla, hogy az I2C engedélyezve van: sudo raspi-config → Interface Options → I2C
❌ Python OSError [Errno 121]
Megoldás: Az Arduino nincs bekapcsolva, vagy rossz I2C cím. Ellenőrizd, hogy 0x08 cím van-e beállítva.
❌ SSH Connection Refused
Megoldás: SSH nincs engedélyezve. Futtasd: sudo systemctl enable ssh && sudo systemctl start ssh
// 05 · Összefoglalás
project.summary
09

Rendszer Architektúra

Három rétegű IoT rendszer

Ez a projekt demonstrálja egy teljes IoT rendszer felépítését az alkatrészek fizikai összekötésétől kezdve a webes megjelenítésig. A rendszer három fő komponensből áll:

🔌 Hardver Réteg

Arduino + BMP280 szenzor → I2C kommunikáció → Raspberry Pi

💻 Szoftver Réteg

Python szkript → HTTP GET kérések → PHP/MySQL API

🌐 Megjelenítési Réteg

Webes műszerfal → Valós idejű grafikonok és adatmegjelenítés

Az I2C protokoll központi szerepet játszik, mivel lehetővé teszi, hogy mindössze két vezetékkel (SDA, SCL) kommunikáljanak az eszközök. Ez hatékony és megbízható adatátvitelt biztosít alacsony energiafogyasztás mellett.

🔗 További Projektek GitHub-on