ESP32のMicroPythonでLチカする方法(2)
この記事では、インストールしたMicroPythonでESP32のLEDを点滅させる方法を解説します。
この記事で学べること
- MicroPythonのモジュールの調べ方
- LEDを点滅させるプログラム
ステップごとの解説
- MicroPythonのモジュールを調べる
MicroPythonのモジュールに、neopixelがあるか調べます。
REPLにて、help(‘modules’)を実行します。neopixelがリストに表示されるのでモジュールにあることがわかります。
MicroPython v1.25.0 on 2025-04-15; Generic ESP32S3 module with ESP32S3
Type "help()" for more information or .help for custom vREPL commands.
>>> help('modules')
__main__ btree io ssl
_asyncio builtins json struct
_boot cmath machine sys
_espnow collections machine time
_onewire cryptolib math tls
_thread deflate micropython uasyncio
_webrepl dht mip/__init__ uctypes
aioespnow ds18x20 neopixel umqtt/robust
apa106 errno network umqtt/simple
array esp ntptime upysh
asyncio/__init__ esp32 onewire urequests
asyncio/core espnow os vfs
asyncio/event flashbdev platform webrepl
asyncio/funcs framebuf random webrepl_setup
asyncio/lock gc re websocket
asyncio/stream hashlib requests/__init__
binascii heapq select
bluetooth inisetup socket
Plus any modules on the filesystem
>>>
- neopixelのモジュールの関数を調べる
neopixelのモジュールの関数一覧を表示させます。
REPLにて、import neopixelの後、dir(neopixel)を実行すると、NeoPixelという関数があることがわかります。さらに、dir(neopixel.NeoPixel)を実行すると、writeという関数があることがわかります。
MicroPython v1.25.0 on 2025-04-15; Generic ESP32S3 module with ESP32S3
Type "help()" for more information or .help for custom vREPL commands.
>>> import neopixel
>>> dir(neopixel)
['__class__', '__name__', '__dict__', '__file__', 'bitstream', 'NeoPixel', '__version__']
>>> dir(neopixel.NeoPixel)
['__class__', '__getitem__', '__init__', '__len__', '__module__', '__name__', '__qualname__', '__setitem__', 'write', '__bases__', '__dict__', 'fill', 'ORDER']
- NeoPixelを駆動するためのGPIOを調べる
NeoPixel 駆動のためにGPIOを使うのですが、GPIOは下図のピンレイアウトに載っていますので、 21 を出力に設定します。

- neopixelモジュールをインポートして、GPIOを設定する
main.pyに、import neopixelを記入します。次に、NeoPixel 駆動のためにGPIOを使うので、import machineを記入します。neopixelを駆動するためのGPIOは21を出力に設定します。
NeoPixelはRGBのLEDなので、白を設定して点灯させます。
import neopixel
import machine
pin = machine.Pin(21, machine.Pin.OUT) # NeoPixel 駆動のための GPIO 21 を出力に設定
np = neopixel.NeoPixel(pin, 8) # 8ピクセル用の NeoPixel ドライバーを GPIO 21 で作成
np[0] = (255, 255, 255) # 第1ピクセルを白に設定
np.write() # 全ピクセルにデータ書込み
- main.pyを実行してLEDを点灯させる
4の内容を、main.pyに書き込み、保存させます。左のエクスプローラにて、main.pyを選択して、右クリックから、「Run current file on Pico」をクリックすると、M5StampS3上のLEDが白で点灯します。

- LEDを点滅させる
点滅させるために、timeモジュールをインポートします。3回点滅させるので、for文でループさせて、点滅間隔は、500msにします。下記の内容で保存して、左のエクスプローラにて、main.pyを選択して、右クリックから、「Run current file on Pico」をクリックすると、M5StampS3上のLEDが白で3回点滅します。
import neopixel
import machine
import time
pin = machine.Pin(21, machine.Pin.OUT)
np = neopixel.NeoPixel(pin, 8)
for _ in range(3): # 3回ループさせる
np[0] = (255, 255, 255) # 第1ピクセルを白に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
np[0] = (0, 0, 0) # 第1ピクセルを消灯に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
- main.pyを自動実行させる
for文以下をmain関数にします。最後に下記を記入します。
if __name__ == "__main__":
main()
これの意味は:
➡ 「このファイルを直接実行したときだけ main()
を動かす」
➡ 「import されたときには main()
を動かさない」
import neopixel
import machine
import time
pin = machine.Pin(21, machine.Pin.OUT) # NeoPixel 駆動のための GPIO 21 を出力に設定
np = neopixel.NeoPixel(pin, 8) # 8ピクセル用の NeoPixel ドライバーを GPIO 21 で作成
def main():
for _ in range(3): # 3回ループさせる
np[0] = (255, 255, 255) # 第1ピクセルを白に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
np[0] = (0, 0, 0) # 第1ピクセルを消灯に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
if __name__ == "__main__":
main()
- main.pyをESP32S3に転送する
7の内容で保存して、左のエクスプローラにて、main.pyを選択して、右クリックから、「Upload file to Pico」をクリックします。すると、M5StampS3上のLEDが白で3回点滅します。
- M5StampS3をUSB電源に接続する
M5StampS3をPCから切断して、USB電源に接続します。すると、M5StampS3上のLEDが白で3回点滅します。
まとめ
ESP32にMicroPythonをインストールすれば、シンプルなコードでLEDを点灯させたり、センサーを動かしたりできます。応用すればIoTデバイスに簡単に組み込めます。