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)