Arduino UNO WiFi Webサーバー:ブラウザからLEDをON/OFF制御
概要
Arduino UNO WiFi(内蔵ESP8266/ATWINC1500搭載モデル)を簡易Webサーバーとして動作させ、ブラウザからオンボードLED(D13)をON/OFF制御するデモプロジェクトです。ArduinoWiFiライブラリを使用し、REST風のURLパスでGPIOを操作します。
必要な部品
- Arduino UNO WiFi(Arduino.org版 / Rev2等)
- LED(オンボードのL LED(D13)を使用する場合は不要)
- 220Ω抵抗(外部LED使用時)
- ブレッドボード・ジャンパーワイヤー
回路
オンボードLED(D13)をそのまま使用するか、外部LEDのアノードを220Ω抵抗経由でD13に、カソードをGNDに接続します。回路図はプロジェクトページ参照。
スケッチ解説
ライブラリ
ArduinoWiFi.h- Arduino UNO WiFi専用のWi-Fi/サーバー制御ライブラリWire.h- I2C(本スケッチでは未使用だが定型でインクルード)
動作フロー
setup(): D13を出力設定、Wi-Fi開始、シリアルに「WebServer Server is up」出力loop():Wifi.available()でクライアント接続待ち、process()でリクエスト処理process(): URLの最初のパス('/'まで)を読み取り、webserverならHTML返却、digitalならGPIO制御WebServer(): HTTP 200 OK + HTMLボディ返却。ON/OFFボタンは/arduino/digital/13/1と/arduino/digital/13/0をwindow.open()で呼び出すJavaScriptdigitalCommand():/digital/<pin>/<value>をパースしdigitalWrite()実行、ステータステキスト返却
重要なポイント
- レスポンス末尾に
DELIMITER(ライブラリ定義の終端マーカー)を送信必須。これがないとクライアント側で通信完了とみなされない。 WifiDataオブジェクトでクライアントストリームを操作。- URLパスは
/arduino/webserver/と/arduino/digital/13/1の形式。
動作確認手順
- スケッチ書き込み後、シリアルモニタでIPアドレス確認(または
hostname.local)。 - ブラウザで
https://<IP>/arduino/webserver/またはhttps://<hostname>.local/arduino/webserver/にアクセス。 - 表示される「pin13 ON」「pin13 OFF」ボタンをクリック → LED点灯/消灯。
- Arduino UNO WiFiのWebパネル(
https://<IP>/)からもGPIO操作可能。
応用・発展
- 複数GPIOの制御(リレー、モーター、サーボ等)
- センサー値のJSON返却(
/analog/<pin>等) - WebSocketやServer-Sent Eventsでリアルタイム双方向通信
- 認証・HTTPS化(本番運用時)
- SPA(Single Page Application)フロントエンドとの連携
注意点
- Arduino UNO WiFiは生産終了品が多く、入手性に注意。後継は Arduino UNO WiFi Rev2(ATmega4809 + u-blox NINA-W13)または Arduino Nano 33 IoT、ESP32 等。
ArduinoWiFi.hは標準のWiFi.h(ESP32/ESP8266用)とは異なる専用ライブラリ。- ブラウザのポップアップブロック機能により
window.open()がブロックされる場合、手動で許可するか<a href="...">リンク方式に変更推奨。
製造プロセス
- Pythonで作るWi-Fi制御Raspberry Piロボット - ステップバイステップガイド
- Arduino UNOで作る『イカゲーム』テーマのインタラクティブ人形 - DIYプロジェクト
- Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
- Arduino Unoベースの人間検知レスキューロボット:センサー統合ステップバイステップ
- Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
- ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
- Arduino UNOで作るシンプル電卓 - シリアルモニターで四則演算
- Arduino UNOとATtiny85で作る携帯型POV(残像)ディスプレイ
- Arduinoで自動化するChrome恐竜ゲーム – LDRとPythonで障害物を検知してジャンプ
- Arduino NanoとRDA5807Mで作るコンパクトFMラジオ
- ArduinoとESP8266で作るWi-Fi対応スマートドアロック — スマホで解錠