Pico Wの温度をWebサーバ(WordPress)に送信して表示させた結果です。
現在のPico温度: 36.4 ℃(2025-08-17T02:44)イントロダクション:IoT初心者でもできる温度送信システム
Raspberry Pi Pico Wは安価・小型・Wi-Fi搭載のマイコンで、簡単なIoTプロジェクトに最適です。この記事では、Pico Wの内蔵温度センサーで測った温度を3分ごとにWordPressサイトへ自動送信する方法を解説。Webサーバーに環境データを記録する入り口が学べます。
1. システム全体の仕組み
- Pico Wが内蔵温度を測定 → HTTPリクエストでデータ送信
- WordPressサイトで受信・表示
- 通信は「GETパラメータ+セキュアトークン付きURL」
- 3分ごとの定期送信
2. 使用する技術と準備
- ハードウェア:Raspberry Pi Pico W(内蔵温度センサー)
- 言語/ライブラリ:MicroPython/
urequests
,ntptime
,network
,machine
- Webサーバー:WordPress(独自ドメインまたはSSL対応環境)
- トークン認証:GETパラメータでセキュリティを確保
3. コード解説(Pico W側)
Pico Wの内蔵温度センサで取得した温度をWebサーバー(WordPress等)に3分ごとに送信します。
import network
import urequests
import machine
import time
import ntptime
# ====== Wi-Fi設定 ======
SSID = "あなたのWi-Fi SSID"
PASSWORD = "あなたのWi-Fiパスワード"
# ====== 送信先URL(温度 + 日時付き)& 認証 ======
POST_URL = "https://yourdomain.com/?pico_temp={}&datetime={}&token=your_secure_token"
# ====== 温度を取得 ======
def read_temp():
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / 65535
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706) / 0.001721
return round(temperature, 1)
# ====== 時刻同期(NTP) ======
def sync_time():
try:
ntptime.settime()
print("時刻同期成功")
except:
print("時刻同期失敗")
# ====== 現在の日時を文字列で取得(UTC→JST補正) ======
def get_datetime():
t = time.localtime(time.time() + 9 * 3600) # JST = UTC+9
return "{:04}-{:02}-{:02}T{:02}:{:02}".format(t[0], t[1], t[2], t[3], t[4])
# ====== Wi-Fi接続 ======
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
for _ in range(10):
if wlan.isconnected():
print("接続成功:", wlan.ifconfig())
return True
time.sleep(1)
print("Wi-Fi接続失敗")
return False
# ====== メインループ ======
def main():
if not connect_wifi():
return
sync_time()
while True:
temp = read_temp()
dt = get_datetime()
url = POST_URL.format(temp, dt)
print(f"[{dt}] 送信: {url}")
try:
res = urequests.get(url)
print("応答:", res.text)
res.close()
except Exception as e:
print("送信失敗:", e)
time.sleep(180) # 3分ごと
main()
4. WordPress側の受信処理(※プラグイン設定)
WordPressでは、受信した pico_temp
と datetime
を受け取って、
- 投稿ページに表示する
- カスタムフィールドに保存してグラフ化する
といった処理に応用できます。
※専用プラグイン()
<?php
/*
Plugin Name: Pico Temperature Receiver
Description: Raspberry Pi Pico W から送られた温度を受信し表示するプラグイン
Version: 1.0
Author: Nitta Takanori
*/
add_action('init', function () {
if (isset($_GET['pico_temp'], $_GET['token']) && $_GET['token'] === '1017') {
$temp = floatval($_GET['pico_temp']);
update_option('pico_current_temp', $temp);
if (isset($_GET['datetime'])) {
update_option('pico_temp_time', sanitize_text_field($_GET['datetime']));
}
echo 'OK';
exit;
}
});
add_shortcode('pico_temp', function () {
$temp = get_option('pico_current_temp', 'データ未取得');
$time = get_option('pico_temp_time', '時刻不明');
return "現在のPico温度: " . esc_html($temp) . " ℃(" . esc_html($time) . ")";
});
5. WordPressプラグインのアップロード手順
1. プラグインフォルダをZIP圧縮
- プラグインのフォルダ(例:
my-plugin
)を右クリック → 「送る」→「圧縮(ZIP形式)」 を選択。 - ZIPファイルの中には プラグインフォルダが直下に入っている 必要があります。
(例:my-plugin.zip
の中にmy-plugin/my-plugin.php
が入っている状態)
2. WordPress管理画面にログイン
- ブラウザで
https://example.com/wp-admin/
にアクセスし、管理者アカウントでログインします。
3. プラグイン > 新規追加
- 左サイドメニューの 「プラグイン」→「新規追加」 をクリック。
4. プラグインのアップロード
- 画面上部の 「プラグインのアップロード」 をクリック。
5. ファイルを選択してアップロード
- 「ファイルを選択」 ボタンを押して、作成した
my-plugin.zip
を選択。 - 「今すぐインストール」 をクリック。
6. プラグインを有効化
- インストール完了後、「プラグインを有効化」 をクリック。
- これでプラグインが有効になります。
✅ 補足ポイント
- プラグインフォルダ名とプラグインファイル内の
Plugin Name
が一致していると分かりやすいです。 - ZIPファイル直下に
my-plugin.php
を置くのはNG(必ずフォルダの中に格納)。 - 更新時は、同じ方法で新しいZIPをアップロードし、WordPressが自動で上書きしてくれます。
WordPressの投稿、固定ページ、ウィジェットなどどこでも”pico_temp
” で表示可能。
6. 動作結果のイメージ
記事内に埋め込んだ画像例:
現在のPico温度: 31.3 ℃(2025-06-11T23:40)
このようにWordPress内でリアルタイムに表示される様子をサービスやブログの読者に伝えられます。
コメント