CircuitPython 10行プログラミング Step6 (4) Nano RP2040 ConnectのWi-Fi
Nano RP2040 ConnectにはU-bloxのNina W102モジュールが搭載されていて、Wi-Fi(2.4GHz 802.11b/g/n)とBLEが使えます。ここでは、Wi-Fiの動作を確認します。Nina W102モジュールの中身はESP32で、SPIバスでRP2040とつながっています。
●Nina W102モジュールとの接続ピン
CircuitPythonでNina W102モジュールを利用するときのピンとSPIバスの設定です。
- esp32_cs = DigitalInOut(board.CS1)
- esp32_ready = DigitalInOut(board.ESP_BUSY)
- esp32_reset = DigitalInOut(board.ESP_RESET)
- spi = busio.SPI(board.SCK1, board.MOSI1, board.MISO1)
●secrets.py
Wi-Fiルータとの接続情報は、Nano RP2040 Connectのルート(libフォルダがあるところ)に、secrets.pyをおいておきます。内容です。
secrets = {
'ssid' : 'Buffalo-G-20EA',
'password' : 'xxxxxxxxxx'
}
●必要なライブラリ
ダウンロードしたlibフォルダに入っているadafruit_esp32spiフォルダとadafruit_bus_deviceフォルダ、adafruit_requests.mpyを、PCのエクスプローラで見えているCIRCUITPYフォルダのlibへコピーします。
●プログラム
ダウンロードしたexamplesに入っているesp32spi_simpletest_rp2040.pyをMuにコピーします。
SPIのピン指定部分、
# Raspberry Pi RP2040 Pinout
esp32_cs = DigitalInOut(board.GP13)
esp32_ready = DigitalInOut(board.GP14)
esp32_reset = DigitalInOut(board.GP15)
spi = busio.SPI(board.GP10, board.GP11, board.GP12)
を次のように書き換えます。
# Raspberry Pi RP2040 Pinout
esp32_cs = DigitalInOut(board.CS1)
esp32_ready = DigitalInOut(board.ESP_BUSY)
esp32_reset = DigitalInOut(board.ESP_RESET)
spi = busio.SPI(board.SCK1, board.MOSI1, board.MISO1)
Muのシリアルをクリックし、保存をクリックして実行します。Wi-Fiルータの接続、socketのプログラムが動いているようです。
●プログラム2
上記のプログラムを修正して、気象庁の天気予報を取得します。120000.jsonは千葉の情報です。
# SPDX-FileCopyrightText: 2019 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
import board
import busio
from digitalio import DigitalInOut
import adafruit_requests as requests
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
from adafruit_esp32spi import adafruit_esp32spi
# Get wifi details and more from a secrets.py file
try:
from secrets import secrets
except ImportError:
print("WiFi secrets are kept in secrets.py, please add them there!")
raise
print("Nano RP2040 Connect to 気象庁")
JSON_URL = "https://www.jma.go.jp/bosai/forecast/data/overview_forecast/120000.json"
# Raspberry Pi RP2040 Pinout
esp32_cs = DigitalInOut(board.CS1)
esp32_ready = DigitalInOut(board.ESP_BUSY)
esp32_reset = DigitalInOut(board.ESP_RESET)
spi = busio.SPI(board.SCK1, board.MOSI1, board.MISO1)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
requests.set_socket(socket, esp)
print("Connecting to AP...")
while not esp.is_connected:
try:
esp.connect_AP(secrets["ssid"], secrets["password"])
except RuntimeError as e:
print("could not connect to AP, retrying: ", e)
continue
print("Connected to", str(esp.ssid, "utf-8"), "\tRSSI:", esp.rssi)
print()
print("Fetching json from", JSON_URL)
r = requests.get(JSON_URL)
#print("-" * 40)
#print(r.json())
#print("-" * 40)
print(r.json()['targetArea'])
print(r.json()['publishingOffice'])
print(r.json()['reportDatetime'])
print(r.json()['text'])
print()
r.close()
連載 CircuitPython 10行プログラミング Step8 release8.0.0 Alpha1
(4) I2Cで温度センサTMP117
(5) アナログ入力 ジョイスティック
連載 CircuitPython 10行プログラミング Step7 release7.2.0-alpha.1
(2) 気圧センサLPS22HB
連載 CircuitPython 10行プログラミング Step6 release7.0.0
(1) Nano RP2040 Connectの準備と動作確認
(2) Nano RP2040 Connectの搭載センサIMU LSM6DSOX
(3) Nano RP2040 ConnectにI2CでIMUセンサLSM9DS1
(5) Nano RP2040 Connectで確度0.1℃の温度計TMP117+ht16k33
連載 CircuitPython 10行プログラミング Step5
(1) Raspberry Pi Picoの準備と動作確認 (2) digitalio (3) Raspberry Pi Picoのmicrocontroller (4) アナログ入力 (5) PWM出力 (6) I2S出力 (7) I2C ① OLEDディスプレイ (8) I2C ② 温湿度センサ (9) I2C ③ 気圧センサ (10) Raspberry Pi PicoのSPI ① TFTディスプレイ
連載 CircuitPython 10行プログラミング Step4
(1) Adafruit Feather nRF52840 Senseの準備 (2) Lチカ (3) 搭載センサ (4) BLE①ペリフェラル (5) BLE②セントラル
連載 CircuitPython 10行プログラミング Step3
(1) Metro M4 Express AirLift (WiFi)の準備 (2) ロータリ・エンコーダ (3) eInk/ePaper (4) Wi-Fi その1 接続 (5) Wi-Fi その2 ソケット (6) Wi-Fi その3 電圧測定 (7) 気圧センサLPS25HB (8) サーミスタ
連載 CircuitPython 10行プログラミング Step2
(1) Grand Central M4 Expressの準備 (2) グラフィック・ディスプレイOLED (3) RTC DS3231 (4) モジュール/SDメモリ (5) 複合センサ BME680 (6) ロードセル+ADS1220 (7) サーボ・モータ① (8) サーボ・モータ② (9) I2S UDA1334A (10) D-Aコンバータ
連載 CircuitPython 10行プログラミング
(1) Trinket M0の準備 (2) ディジタルI/O (3) アナログ入出力 (4) I2C 温湿度センサSi7021 (5) SPI 熱電対+MAX31855 (6) UART 距離センサTFMini (7) 1-Wire 温度DS18B20 (8) ロータリ・エンコーダ (9) 7セグメントLED (10) FANコントロール (11) UART GPS (12) I2C Lチカ MCP23017