ESP32-C6 × MicroPythonでWi-Fi&Webサーバを簡単構築!接続から動作確認まで解説

ESP32-C6 × MicroPythonでWi-Fi&Webサーバを簡単構築!
スポンサーリンク

次世代の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)
SRAM512KB
Wi-FiIEEE 802.11 b/g/n/ax(Wi-Fi 6対応)2.4GHz 帯対応
BluetoothBluetooth 5、Bluetooth Low Energy(BLE)
GPIO数最大23(XIAO版は実装ピン数が少ない)
ADC12bit 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など

必要なツールとインストール手順

ESP32-C6をWi-Fiに接続する(MicroPython サンプルコード)

ESP32-C6でWi-Fiに接続するための最低限のコードを以下に示します。SSIDPASSWORDの部分をご自分の環境に合わせて書き換えてください。

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での動作が確認できませんでしたでした。確認できましたら改めて記事にする予定です!

タイトルとURLをコピーしました