次世代のIoT向けチップとして注目されている「ESP32-C6」。Wi-Fi 6とBluetooth 5に対応し、省電力かつ高性能なこのマイコンを、今回はMicroPythonで動かし、Wi-Fi接続と簡単なWebサーバを構築してみました。
この記事では、ESP32-C6の特徴や開発環境の準備、Wi-Fi接続の確認方法、さらにHTMLを表示するWebサーバの立ち上げまでを、初心者にもわかりやすくステップ形式で紹介します。
はじめに
ESP32-C6とは?
ESP32-C6の主な仕様
| 項目 | 内容 |
|---|---|
| プロセッサ | RISC-V 32bit シングルコア(最大160MHz) |
| フラッシュメモリ | 4MB(内蔵SPI Flash) |
| SRAM | 512KB |
| Wi-Fi | IEEE 802.11 b/g/n/ax(Wi-Fi 6対応)2.4GHz 帯対応 |
| Bluetooth | Bluetooth 5、Bluetooth Low Energy(BLE) |
| GPIO数 | 最大23(XIAO版は実装ピン数が少ない) |
| ADC | 12bit ADC × 5ch(使用に制限あり) |
| 通信機能 | UART / I2C / SPI / PWM / USB-CDC など |
| USB機能 | USB 2.0 フルスピード対応(デバイスモード) |
| 動作電圧 | 3.3V(XIAO基板では5V入力→3.3Vレギュレータ) |
| サイズ | 約21mm × 17.5mm(XIAO版) |
| その他 | MicroPython公式対応、低消費電力モードあり |
主な特徴と利点
- Wi-Fi 6対応で省電力・高速通信
- RISC-Vコア搭載で次世代アーキテクチャに対応
- USB-CDC対応でMicroPythonのREPLが簡単に使える
- 小型でブレッドボードにも最適(XIAO版)
開発環境の準備
使用したボード:XIAO ESP32C6など
必要なツールとインストール手順
- Thonnyエディタ
- MicroPythonファームウェアの書き込み(esptoolを使う)こちらでかくにんしてください。
ESP32-C6をWi-Fiに接続する(MicroPython サンプルコード)
ESP32-C6でWi-Fiに接続するための最低限のコードを以下に示します。SSIDとPASSWORDの部分をご自分の環境に合わせて書き換えてください。
import network
import socket
import time
# ==== ご自宅のWi-Fi情報をここに書き換えてください ====
SSID = 'YourSSID'
PASSWORD = 'YourPassword'
# ========================================================
# Wi-Fiに接続
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
print("Wi-Fiに接続中...")
for _ in range(10):
if wlan.isconnected():
break
time.sleep(1)
if wlan.isconnected():
ip = wlan.ifconfig()[0]
print("接続成功! IPアドレス:", ip)
else:
print("Wi-Fi接続に失敗しました。")
raise SystemExit✅実行結果の例(成功時)
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot
Wi-Fiに接続中...
接続成功! IPアドレス: 192.168.3.14
>>>接続できないときは
SSID/PASSWORDのスペルミスを確認
2.4GHz帯のネットワークであるか確認(ESP32-C6は5GHz非対応)
ルーターのMACフィルタやステルス設定に注意
Webサーバの構築(MicroPython)
サンプルコード(web_server.py)
import network
import socket
import time
# ==== ご自宅のWi-Fi情報をここに書き換えてください ====
SSID = 'YourSSID'
PASSWORD = 'YourPassword'
# ========================================================
# Wi-Fiに接続
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
print("Wi-Fiに接続中...")
for _ in range(10):
if wlan.isconnected():
break
time.sleep(1)
if wlan.isconnected():
ip = wlan.ifconfig()[0]
print("接続成功! IPアドレス:", ip)
else:
print("Wi-Fi接続に失敗しました。")
raise SystemExit
# ==== 表示するHTML ====
html = """<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>XIAO ESP32-C6</title>
</head>
<body>
<h1>こんにちは!XIAO ESP32-C6です</h1>
<p>MicroPythonでWebサーバ稼働中</p>
</body>
</html>
"""
# ==== ソケットでWebサーバを起動 ====
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print("Webサーバ起動中... ブラウザで http://{}/ を開いてください".format(ip))
# ==== 接続処理ループ ====
while True:
try:
cl, addr = s.accept()
print("接続:", addr)
cl_file = cl.makefile('rwb', 0)
while True:
line = cl_file.readline()
if not line or line == b'\r\n':
break
# ヘッダー+HTMLをUTF-8で送信
cl.send('HTTP/1.0 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n'.encode('utf-8'))
cl.send(html.encode('utf-8'))
cl.close()
except Exception as e:
print("接続エラー:", e)日本語表示にするための注意点
<html lang=”Ja”>
.encode(‘utf-8)
です
Thonnyで動かすと下記の表示になります
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot
Wi-Fiに接続中...
接続成功! IPアドレス: 192.168.3.14
Webサーバ起動中... ブラウザで http://192.168.3.14/ を開いてください上記の部分のブラウザで http://192.168.3.14/ を開いてくださいを
クリックするとブラウザーが開きます。
接続: ('192.168.3.7', 52269)
接続: ('192.168.3.7', 52270)
接続: ('192.168.3.7', 52293)
接続: ('192.168.3.7', 52294)
接続: ('192.168.3.7', 52306)
接続: ('192.168.3.7', 52307)
接続: ('192.168.3.7', 52308)ブラウザの画面です

✅まとめ
ESP32-C6は低価格ながらWi-Fi通信に対応しており、MicroPythonとの組み合わせによって、初心者でも手軽にWebサーバの構築が可能です。本記事では、Wi-Fiへの接続からWebページの表示までの基本的な流れを紹介しました。これをベースにすれば、IoT機器の遠隔制御やデータの可視化など、さまざまな応用が期待できます。今後はセンサーやモーターとの連携も視野に、より高度な開発にチャレンジしてみてください!
※ちなみにI2Cデバイスとの連携も試みましたが、現時点ではESP32-C6での動作が確認できませんでしたでした。確認できましたら改めて記事にする予定です!



