Simple test

Ensure your device works with this simple test.

examples/esp32spi_simpletest.py
 1# SPDX-FileCopyrightText: 2019 ladyada for Adafruit Industries
 2# SPDX-License-Identifier: MIT
 3
 4from os import getenv
 5
 6import adafruit_connection_manager
 7import adafruit_requests
 8import board
 9import busio
10from digitalio import DigitalInOut
11
12# Use this import for adafruit_esp32spi version 11.0.0 and up.
13# Note that frozen libraries may not be up to date.
14# import adafruit_esp32spi
15from adafruit_esp32spi import adafruit_esp32spi
16
17# Get wifi details and more from a settings.toml file
18# tokens used by this Demo: CIRCUITPY_WIFI_SSID, CIRCUITPY_WIFI_PASSWORD
19ssid = getenv("CIRCUITPY_WIFI_SSID")
20password = getenv("CIRCUITPY_WIFI_PASSWORD")
21
22print("ESP32 SPI webclient test")
23
24TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html"
25JSON_URL = "http://wifitest.adafruit.com/testwifi/sample.json"
26
27
28# If you are using a board with pre-defined ESP32 Pins:
29esp32_cs = DigitalInOut(board.ESP_CS)
30esp32_ready = DigitalInOut(board.ESP_BUSY)
31esp32_reset = DigitalInOut(board.ESP_RESET)
32
33# If you have an AirLift Shield:
34# esp32_cs = DigitalInOut(board.D10)
35# esp32_ready = DigitalInOut(board.D7)
36# esp32_reset = DigitalInOut(board.D5)
37
38# If you have an AirLift Featherwing or ItsyBitsy Airlift:
39# esp32_cs = DigitalInOut(board.D13)
40# esp32_ready = DigitalInOut(board.D11)
41# esp32_reset = DigitalInOut(board.D12)
42
43# If you have an externally connected ESP32:
44# NOTE: You may need to change the pins to reflect your wiring
45# esp32_cs = DigitalInOut(board.D9)
46# esp32_ready = DigitalInOut(board.D10)
47# esp32_reset = DigitalInOut(board.D5)
48
49# Secondary (SCK1) SPI used to connect to WiFi board on Arduino Nano Connect RP2040
50if "SCK1" in dir(board):
51    spi = busio.SPI(board.SCK1, board.MOSI1, board.MISO1)
52else:
53    spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
54esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
55
56pool = adafruit_connection_manager.get_radio_socketpool(esp)
57ssl_context = adafruit_connection_manager.get_radio_ssl_context(esp)
58requests = adafruit_requests.Session(pool, ssl_context)
59
60if esp.status == adafruit_esp32spi.WL_IDLE_STATUS:
61    print("ESP32 found and in idle mode")
62print("Firmware vers.", esp.firmware_version)
63print("MAC addr:", ":".join(f"{byte:02X}" for byte in esp.MAC_address))
64
65for ap in esp.scan_networks():
66    print(f"\t{ap.ssid:<23} RSSI: {ap.rssi}")
67
68print("Connecting to AP...")
69while not esp.is_connected:
70    try:
71        esp.connect_AP(ssid, password)
72    except OSError as e:
73        print("could not connect to AP, retrying: ", e)
74        continue
75print("Connected to", esp.ap_info.ssid, "\tRSSI:", esp.ap_info.rssi)
76print("My IP address is", esp.ipv4_address)
77print(f"IP lookup adafruit.com: {esp.pretty_ip(esp.get_host_by_name('adafruit.com'))}")
78print(f"Ping google.com: {esp.ping('google.com')} ms")
79
80# esp._debug = True
81print("Fetching text from", TEXT_URL)
82r = requests.get(TEXT_URL)
83print("-" * 40)
84print(r.text)
85print("-" * 40)
86r.close()
87
88print()
89print("Fetching json from", JSON_URL)
90r = requests.get(JSON_URL)
91print("-" * 40)
92print(r.json())
93print("-" * 40)
94r.close()
95
96print("Done!")

Other Examples

examples/esp32spi_cheerlights.py
 1# SPDX-FileCopyrightText: 2019 ladyada for Adafruit Industries
 2# SPDX-License-Identifier: MIT
 3
 4import time
 5from os import getenv
 6
 7import adafruit_fancyled.adafruit_fancyled as fancy
 8import board
 9import busio
10import neopixel
11from digitalio import DigitalInOut
12
13# Use these imports for adafruit_esp32spi version 11.0.0 and up.
14# Note that frozen libraries may not be up to date.
15# import adafruit_esp32spi
16# from adafruit_esp32spi.wifimanager import WiFiManager
17from adafruit_esp32spi import adafruit_esp32spi
18from adafruit_esp32spi.adafruit_esp32spi_wifimanager import WiFiManager
19
20# Get wifi details and more from a settings.toml file
21# tokens used by this Demo: CIRCUITPY_WIFI_SSID, CIRCUITPY_WIFI_PASSWORD
22ssid = getenv("CIRCUITPY_WIFI_SSID")
23password = getenv("CIRCUITPY_WIFI_PASSWORD")
24
25print("ESP32 SPI webclient test")
26
27DATA_SOURCE = "https://api.thingspeak.com/channels/1417/feeds.json?results=1"
28DATA_LOCATION = ["feeds", 0, "field2"]
29
30# If you are using a board with pre-defined ESP32 Pins:
31esp32_cs = DigitalInOut(board.ESP_CS)
32esp32_ready = DigitalInOut(board.ESP_BUSY)
33esp32_reset = DigitalInOut(board.ESP_RESET)
34
35# If you have an externally connected ESP32:
36# esp32_cs = DigitalInOut(board.D9)
37# esp32_ready = DigitalInOut(board.D10)
38# esp32_reset = DigitalInOut(board.D5)
39
40# Secondary (SCK1) SPI used to connect to WiFi board on Arduino Nano Connect RP2040
41if "SCK1" in dir(board):
42    spi = busio.SPI(board.SCK1, board.MOSI1, board.MISO1)
43else:
44    spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
45esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
46"""Use below for Most Boards"""
47status_pixel = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.2)
48"""Uncomment below for ItsyBitsy M4"""
49# status_pixel = dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1, brightness=0.2)
50"""Uncomment below for an externally defined RGB LED (including Arduino Nano Connect)"""
51# import adafruit_rgbled
52# from adafruit_esp32spi import PWMOut
53# RED_LED = PWMOut.PWMOut(esp, 26)
54# GREEN_LED = PWMOut.PWMOut(esp, 27)
55# BLUE_LED = PWMOut.PWMOut(esp, 25)
56# status_pixel = adafruit_rgbled.RGBLED(RED_LED, BLUE_LED, GREEN_LED)
57wifi = WiFiManager(esp, ssid, password, status_pixel=status_pixel)
58
59# neopixels
60pixels = neopixel.NeoPixel(board.A1, 16, brightness=0.3)
61pixels.fill(0)
62
63# we'll save the value in question
64last_value = value = None
65
66while True:
67    try:
68        print("Fetching json from", DATA_SOURCE)
69        response = wifi.get(DATA_SOURCE)
70        print(response.json())
71        value = response.json()
72        for key in DATA_LOCATION:
73            value = value[key]
74            print(value)
75        response.close()
76    except OSError as e:
77        print("Failed to get data, retrying\n", e)
78        wifi.reset()
79        continue
80
81    if not value:
82        continue
83    if last_value != value:
84        color = int(value[1:], 16)
85        red = color >> 16 & 0xFF
86        green = color >> 8 & 0xFF
87        blue = color & 0xFF
88        gamma_corrected = fancy.gamma_adjust(fancy.CRGB(red, green, blue)).pack()
89
90        pixels.fill(gamma_corrected)
91        last_value = value
92    response = None
93    time.sleep(60)
examples/esp32spi_aio_post.py
 1# SPDX-FileCopyrightText: 2019 ladyada for Adafruit Industries
 2# SPDX-License-Identifier: MIT
 3
 4import time
 5from os import getenv
 6
 7import board
 8import busio
 9import neopixel
10from digitalio import DigitalInOut
11
12# Use these imports for adafruit_esp32spi version 11.0.0 and up.
13# Note that frozen libraries may not be up to date.
14# import adafruit_esp32spi
15# from adafruit_esp32spi.wifimanager import WiFiManager
16from adafruit_esp32spi import adafruit_esp32spi
17from adafruit_esp32spi.adafruit_esp32spi_wifimanager import WiFiManager
18
19print("ESP32 SPI webclient test")
20
21# Get wifi details and more from a settings.toml file
22# tokens used by this Demo: CIRCUITPY_WIFI_SSID, CIRCUITPY_WIFI_PASSWORD
23#                           ADAFRUIT_AIO_USERNAME, ADAFRUIT_AIO_KEY
24ssid = getenv("CIRCUITPY_WIFI_SSID")
25password = getenv("CIRCUITPY_WIFI_PASSWORD")
26
27aio_username = getenv("ADAFRUIT_AIO_USERNAME")
28aio_key = getenv("ADAFRUIT_AIO_KEY")
29
30# If you are using a board with pre-defined ESP32 Pins:
31esp32_cs = DigitalInOut(board.ESP_CS)
32esp32_ready = DigitalInOut(board.ESP_BUSY)
33esp32_reset = DigitalInOut(board.ESP_RESET)
34
35# If you have an externally connected ESP32:
36# esp32_cs = DigitalInOut(board.D9)
37# esp32_ready = DigitalInOut(board.D10)
38# esp32_reset = DigitalInOut(board.D5)
39
40# Secondary (SCK1) SPI used to connect to WiFi board on Arduino Nano Connect RP2040
41if "SCK1" in dir(board):
42    spi = busio.SPI(board.SCK1, board.MOSI1, board.MISO1)
43else:
44    spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
45esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
46"""Use below for Most Boards"""
47status_pixel = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.2)
48"""Uncomment below for ItsyBitsy M4"""
49# status_pixel = dotstar.DotStar(board.APA102_SCK, board.APA102_MOSI, 1, brightness=0.2)
50"""Uncomment below for an externally defined RGB LED (including Arduino Nano Connect)"""
51# import adafruit_rgbled
52# from adafruit_esp32spi import PWMOut
53# RED_LED = PWMOut.PWMOut(esp, 26)
54# GREEN_LED = PWMOut.PWMOut(esp, 27)
55# BLUE_LED = PWMOut.PWMOut(esp, 25)
56# status_pixel = adafruit_rgbled.RGBLED(RED_LED, BLUE_LED, GREEN_LED)
57
58wifi = WiFiManager(esp, ssid, password, status_pixel=status_pixel)
59
60counter = 0
61
62while True:
63    try:
64        print("Posting data...", end="")
65        data = counter
66        feed = "test"
67        payload = {"value": data}
68        response = wifi.post(
69            "https://io.adafruit.com/api/v2/" + aio_username + "/feeds/" + feed + "/data",
70            json=payload,
71            headers={"X-AIO-KEY": aio_key},
72        )
73        print(response.json())
74        response.close()
75        counter += 1
76        print("OK")
77    except OSError as e:
78        print("Failed to get data, retrying\n", e)
79        wifi.reset()
80        continue
81    response = None
82    time.sleep(15)