Raspberry Pi
とPython
を組み合わせることで、低コストで効率的なIoT(Internet of Things)
プロジェクトを実現することができます。この記事では、Raspberry Piを使ってセンサーからデータを収集し、Python
でデータを分析する手順をステップバイステップで解説します。IoTプロジェクトを始めたい方や、センサーを使ったデータ収集に興味がある方にぴったりの内容です。
IoTとRaspberry Piの基本
IoTとは?
IoT
は「モノのインターネット」の略で、デバイスがインターネットに接続され、センサーや機器からリアルタイムでデータを収集し、他のデバイスやシステムと連携する技術です。たとえば、家庭用スマート家電や産業用監視システムなどがIoTの代表的な応用例です。
Raspberry Piとは?
Raspberry Pi
は、クレジットカードサイズの低価格コンピュータで、GPIOピンを使ってセンサーやモーターなどの電子部品を制御できます。Python
とRaspberry Piを組み合わせることで、簡単にセンサーデータを収集し、分析や可視化ができるIoTプロジェクトを実現できます。
Raspberry Piの準備
必要なハードウェア
Raspberry Pi
(モデル3または4推奨)MicroSDカード
(Raspberry Pi OSがインストールされたもの)電源アダプタ
DHT11センサー
(温度・湿度センサー)ジャンパーワイヤー
ブレッドボード
(オプション)
ソフトウェアのセットアップ
- Raspberry Piに
Raspberry Pi OS
をインストールし、基本的なセットアップを完了させます。 Python
はデフォルトでインストールされていますが、必要なライブラリを追加します。 センサーデータを収集するために、以下のPython
パッケージをインストールします。
sudo apt update
sudo apt install python3-pip
pip3 install Adafruit_DHT
このAdafruit_DHT
ライブラリは、DHT11/DHT22温度・湿度センサーのデータを取得するために必要です。
DHT11センサーを使ったデータ収集
センサーの接続
Raspberry PiとDHT11センサー
を接続します。DHT11には3本のピンがあり、それぞれ以下のように接続します。
- VCC:Raspberry Piの5Vピン
- GND:Raspberry PiのGNDピン
- Data:Raspberry PiのGPIOピン(例:GPIO4)
Pythonコードでセンサーからデータを取得
DHT11センサーからデータを収集するためのPython
コードは以下の通りです。
import Adafruit_DHT
import time
# DHTセンサーの設定
sensor = Adafruit_DHT.DHT11
pin = 4 # データピンをGPIO4に接続
# データ収集のループ
while True:
# センサーからデータを取得
humidity, temperature = Adafruit_DHT.read(sensor, pin)
if humidity is not None and temperature is not None:
print(f'Temperature: {temperature}°C, Humidity: {humidity}%')
else:
print('Failed to retrieve data from sensor')
# 5秒ごとにデータを更新
time.sleep(5)
このコードでは、Adafruit_DHT
ライブラリを使ってDHT11センサーから温度と湿度のデータを取得し、5秒ごとに出力しています。データが正常に取得できなかった場合には、エラーメッセージが表示されます。
データの保存と分析
センサーデータを収集したら、それを保存し、後で分析することが重要です。ここでは、CSVファイルにデータを保存する方法と、そのデータを分析するためのPython
コードを紹介します。
データをCSVファイルに保存
まずは、センサーから収集したデータをCSVファイルに保存する方法です。
import Adafruit_DHT
import time
import csv
# CSVファイルの作成
with open('sensor_data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Timestamp', 'Temperature (C)', 'Humidity (%)'])
# データ収集のループ
while True:
humidity, temperature = Adafruit_DHT.read(sensor, pin)
if humidity is not None and temperature is not None:
timestamp = time.strftime('%Y-%m-%d %H:%M:%S')
writer.writerow([timestamp, temperature, humidity])
print(f'Temperature: {temperature}°C, Humidity: {humidity}%')
else:
print('Failed to retrieve data from sensor')
time.sleep(5)
このコードでは、センサーデータをsensor_data.csv
ファイルにタイムスタンプと共に書き込みます。データは5秒ごとに収集され、ファイルに追記されます。
データの分析と可視化
次に、収集したデータを分析し、可視化するためにMatplotlib
とPandas
を使います。
必要なライブラリをインストール
pip3 install matplotlib pandas
Pythonコードでデータの可視化
import pandas as pd
import matplotlib.pyplot as plt
# CSVファイルからデータを読み込む
data = pd.read_csv('sensor_data.csv')
# データの可視化
plt.figure(figsize=(10,5))
# 温度のグラフ
plt.subplot(1, 2, 1)
plt.plot(data['Timestamp'], data['Temperature (C)'], color='r')
plt.xticks(rotation=45)
plt.title('Temperature Over Time')
plt.xlabel('Time')
plt.ylabel('Temperature (C)')
# 湿度のグラフ
plt.subplot(1, 2, 2)
plt.plot(data['Timestamp'], data['Humidity (%)'], color='b')
plt.xticks(rotation=45)
plt.title('Humidity Over Time')
plt.xlabel('Time')
plt.ylabel('Humidity (%)')
# グラフの表示
plt.tight_layout()
plt.show()
このコードでは、Pandasを使ってCSVファイルからデータを読み込み、Matplotlibで温度と湿度の変化をグラフに表示します。これにより、センサーから得たデータを視覚的に分析できます。
拡張アイデア
この基本的なセンサーデータ収集システムをベースに、さまざまな拡張を行うことが可能です。
- データのクラウド送信:収集したデータをクラウド サーバーに送信し、リモートでデータをモニタリングできます。
- アラートシステムの構築:温度や湿度が一定の閾値を超えた場合に、メールやSMSでアラートを送るシステムを追加できます。
- 複数のセンサーの統合:DHT11以外のセンサーを追加して、より多くの環境データ(例:光、音、気圧など)を収集することも可能です。
まとめ
Raspberry Pi
とPython
を使ったIoTプロジェクトでは、低コストかつ簡単にセンサーデータを収集し、リアルタイムで分析するシステムを構築できます。今回はDHT11センサーを使って温度・湿度データを収集し、Python
でデータを保存・可視化する方法を紹介しました。今後は、これらを基にさらに高度なIoTプロジェクトに挑戦し、データを活用したスマートなシステムを構築してみてください。