ESP32のMicroPythonで無線LAN経由でWEB APIに接続する方法
この記事では、ESP32とMicroPythonを使ってWEB APIに接続する方法を解説します。
この記事で学べること
- ESP32でWEB APIに接続する方法
- MicroPythonのコード例
- 接続できたかの確認方法
ステップごとの解説
- 必要な部品を準備する
今回も前回、MicroPythonをインストールしたM5STACK社のM5StampS3を使います。
M5StampS3は、Amazon、スイッチサイエンス社、マルツエレック社などで購入することができます。 - M5StampS3にMicroPythonをインストールする
前回の記事を参考にMicroPythonをインストールします。 - M5StampS3をPCに接続する
M5StampS3とPCをUSBケーブルで接続します。接続できているか確認します。
ls -l /dev/tty.usbmodem*
crw-rw-rw- 1 root wheel 0x9000006 8 24 16:37 /dev/tty.usbmodem11401
- WEB APIとは?
インターネットを通じて、他のサービスやアプリとデータをやり取りするための「窓口」 のこと。 - 具体例
- 天気予報アプリ → 天気サービスの API から気温を取得
- マップアプリ → Google Maps API を使って地図を表示
- Shopify → Webhook や API で注文情報を外部に送る
- マイクロサービス → お互いの API を使って通信
- なぜ便利?
- アプリ同士が 決まったルールで会話できる
- サーバーに直接ログインしなくても データを安全に操作できる
- 開発の手間が減る(機能を API に任せられる)
- よくある形
- REST API(最も一般的)
- GraphQL
- Webhook(API から「通知」を送る仕組み)
- JSON がデータ形式としてよく使われる
- 天気APIを利用する
今回は、無料で利用できる天気APIであるOpen Weather MapのAPIを使います。 - APIを利用するために登録する
Open Weather Mapのページにアクセスして、右上のSign inをクリックします。

- アカウントを作成する
アカウントを作成するために、Create an Accountをクリックします。

- 必要な情報を入力する
Username、Email、Passwordを2回入力します。
「I am 16 years old and over」、「I agree with Privacy Policy, Terms and conditions of sale and Websites terms and conditions of use」、それぞれ、16歳以上であること、プライバシーポリシー、規約に同意することにチェックをいれて、「私はロボットではありません」にチェックをいれて、「Create Account」をクリックします。

- APIの目的を入力する
APIの目的を聞かれているので、Purposeの部分に記入し、Saveボタンを押します。
今回は、Education/Scienceを選択しました。Companyは入力不要です。

- メール認証をする
メールを送信したと表示されるので、11で入力したメールをチェックします。

- メールを確認する
OpenWeatherからメールが届きますので、「Verify your email」をクリックし、メール認証を行います。

- メール認証を完了する
OpenWeatherMapのページが開いて、メール認証が完了したことが表示されます。

- APIキーを確認する
My API Keysをクリックして、APIキーを確認します。

- APIキーを取得する
Keyと書いてあるところが、利用できるAPI Keyとなります。

- API Callを作成する
今回は、下図の赤枠のAPI Callを利用して、API Callを作成します。

https://api.openweathermap.org/data/2.5/weather?q=tokyo&appid=[my API Key]
- VSCodeで以前、作ったプロジェクトを選択する
VSCodeを起動して、以前、作ったプロジェクトを選択します。

- エディタで新しいファイルを作成する
左側のエクスプローラにて右クリックして、「新しいファイル」を選択します。ファイル名を入力する欄が表示されるので、適当に名前を入力します。今回は、「webapi1.py」としました。

- 下記コードをエディターで記入する
「webapi1.py」を選択すると、エディター画面が開くので、下記コードを記入して保存します。
import urequests
import ujson
# 接続先のURLの指定
url = 'https://api.openweathermap.org/data/2.5/weather?q=tokyo&appid=[my API Key]&units=metric'
# WEBサーバからデータを取得
resp = urequests.get(url)
data = ujson.loads(resp.text)
print(data)
# 気温を取得する場合
print("気温:" + str(data["main"]["temp"]) + "℃")
resp.close()
- 「webapi1.py」を実行する
左のエクスプローラにて、「webapi1.py」を選択して、右クリックから、「Run current file on Pico」をクリックすると、REPL画面に下記のように、Open Weather APIから取得した天気データが表示されます。
MicroPython v1.26.1 on 2025-09-11; Generic ESP32S3 module with ESP32S3
Type "help()" for more information or .help for custom vREPL commands.
>>>
{'timezone': 32400, 'cod': 200, 'dt': 1765109468, 'base': 'stations', 'weather': [{'id': 800, 'icon': '01n', 'main': 'Clear', 'description': 'clear sky'}], 'sys': {'country': 'JP', 'sunrise': 1765057057, 'sunset': 1765092469, 'id': 268395, 'type': 2}, 'name': 'Tokyo', 'clouds': {'all': 0}, 'coord': {'lon': 139.6917, 'lat': 35.6895}, 'visibility': 10000, 'wind': {'gust': 1.11, 'speed': 0.17, 'deg': 66}, 'id': 1850144, 'main': {'feels_like': 9.86, 'pressure': 1019, 'temp_max': 12.59, 'temp': 9.86, 'temp_min': 8.66, 'humidity': 58, 'sea_level': 1019, 'grnd_level': 1017}}
気温:9.86℃
>>>
#JSON整形
{
"timezone": 32400, #UTCからのタイムゾーン 32400秒 = 9時間
"cod": 200,
"dt": 1765109468, #API Callした時間 UnixTime 1765109468 は、2025-12-07 21:11:08です
"base": "stations",
"weather": [
{
"id": 800,
"icon": "01n",
"main": "Clear", #晴れ
"description": "clear sky" #晴れ渡った空
}
],
"sys": {
"country": "JP",
"sunrise": 1765057057, #日の出 UnixTime 1765057057 は、2025-12-07 06:37:37です
"sunset": 1765092469, #日の入 UnixTime 1765092469 は、2025-12-07 16:27:49です
"id": 268395,
"type": 2
},
"name": "Tokyo", #地域
"clouds": {
"all": 0
},
"coord": {
"lon": 139.6917, #経度
"lat": 35.6895 #緯度
},
"visibility": 10000, #視界
"wind": {
"gust": 1.11, #突風
"speed": 0.17, #風速
"deg": 66 #風向
},
"id": 1850144,
"main": {
"feels_like": 9.86, #体感温度
"pressure": 1019, #気圧
"temp_max": 12.59, #最高気温
"temp": 9.86, #気温
"temp_min": 8.66, #最低気温
"humidity": 58, #湿度
"sea_level": 1019, #海水面の気圧
"grnd_level": 1017 #地表面の気圧
}
}
まとめ
ESP32とMicroPythonを使えば、シンプルなコードでWEB APIからデータを取得できます。応用すればIoTデバイスに簡単に組み込めます。
