Arduino UnoとESP8266を連携させるステップバイステップガイド(ソフトウェアシリアル+ロジックレベル変換)
必要な部品と材料
| ESP8266(SparkFun ESP8266等) | ×1 |
| Arduino UNO | ×1 |
| ロジックレベルコンバータ(双方向、SparkFun製等) | ×1 |
| ブレッドボード(汎用) | ×1 |
| ジャンパワイヤ(汎用) | ×1 |
使用するアプリとオンラインサービス
- Arduino IDE
- circuito.io(回路設計支援)
- Firmware.ino(GitHubライブラリ)
- SoftwareSerialライブラリ
プロジェクト概要
ESP8266 ATコマンドライブラリ(ITEADライブラリベース)を作成し、ソフトウェアシリアルでほとんどのESP8266デバイス上で動作するようにしました(ATコマンドに応答するファームウェア、通常は出荷時デフォルト、が前提)。このプレリミナリライブラリをテスト用に公開し、フィードバックと改善をGitHubリポジトリで募集しています。
1. 必要なもの
- Arduino Uno(Arduino IDEインストール済み)
- ESP8266
- ロジックレベルコンバータ
2. 配線
ESP8266をロジックレベルコンバータ経由でArduino Unoのソフトウェアシリアルピンに接続します(添付の配線図参照)。

3. 自宅Wi-Fiへの接続設定
GitHubからFirmware.inoをダウンロードし、ご自宅のSSIDとパスワードを設定:
const char *SSID = "WIFI-SSID";
const char *PASSWORD = "WIFI-PASSWORD";
4. Arduinoへスケッチをアップロード
ArduinoをPCに接続して書き込み。
5. シリアルモニタで確認
Arduino IDEのシリアルモニタボタン(右上)を開く。正常なら以下のような出力が見られます:

6. トラブルシューティング
応答がない場合は、以下のファームウェアに更新してみてください。3.3V FTDIボードを使用します。
- ESP8266をFTDIに接続
- ESP8266Flasherを入手
- 1.1.1.1ファームウェアを入手
- ESP8266に書き込み

ソフトウェアシリアルで部分的な応答しか得られない場合、ソフトウェアシリアルの受信バッファサイズを拡張してください:
// ファイル: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src\SoftwareSerial.h
// 42行目を変更:
#define _SS_MAX_RX_BUFF 64 // RX buffer size
// ↓
#define _SS_MAX_RX_BUFF 256 // RX buffer size
初期化時のボーレート設定が失敗することがあります。Arduinoをリセットすれば解決することが多いです。それでも解決しない場合はコメントで報告してください。改善提案はGitHubでプルリクエストを。このコードは全Arduino Uno + ESP8266-01バージョンで動作するはずです。ご意見お待ちしています!
コード
GitHubリポジトリ:
https://github.com/Circuito-io/ESP8266_SoftwareSerial
回路図

製造プロセス
- DIY Arduinoワードクロック – 文字で時刻を表示する洗練されたリアルタイムクロック
- DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
- コンパクト気象ステーション:Arduino Nano & ESP8266 + BMP280 + OLED/Nokia LCD
- Arduino UNO WiFi Webサーバー:ブラウザからLEDをON/OFF制御
- Pixie: Arduino Pro Miniで作るNeoPixel腕時計 - アナログとデジタル融合のDIY光る時計
- Arduino UNOで作るシンプル電卓 - シリアルモニターで四則演算
- Arduino UNOとATtiny85で作る携帯型POV(残像)ディスプレイ
- シンプルなArduinoストップウォッチ:ボタンで動作するクロノメーターの作り方
- 携帯型リモート監視カメラロボット - Raspberry PiとArduinoで構築
- スマート手話グローブ:ジェスチャーをテキスト/音声に変換
- ESP32-CAMで作るAI顔認識ドアロックシステム:ローカル処理でプライバシー保護