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行プログラミング Step6 release7.0.0

(1) Nano RP2040 Connectの準備と動作確認

(2) Nano RP2040 Connectの搭載センサIMU LSM6DSOX

(3) Nano RP2040 ConnectにI2CでIMUセンサLSM9DS1

(4) Nano RP2040 ConnectのWi-Fi

(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

前へ

CircuitPython 10行プログラミング Step6 (3) Nano RP2040 ConnectにI2CでIMUセンサLSM9DS1

次へ

CircuitPython 10行プログラミング Step6 (5) Nano RP2040 Connectで確度0.1℃の温度計