Skip to content

Instantly share code, notes, and snippets.

@anecdata
Created April 25, 2024 01:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anecdata/99148a1f2f779140d9e3b6c84006be37 to your computer and use it in GitHub Desktop.
Save anecdata/99148a1f2f779140d9e3b6c84006be37 to your computer and use it in GitHub Desktop.
Adafruit_CircuitPython_ConnectionManager PR #8 Test - "Different pool, different ConnectionManager"
import time
import os
import traceback
import board
import digitalio
import ssl
import adafruit_connection_manager
import adafruit_requests
TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html"
# General
def get_requests(radio):
pool = adafruit_connection_manager.get_radio_socketpool(radio)
ssl_context = adafruit_connection_manager.get_radio_ssl_context(radio)
requests = adafruit_requests.Session(pool, ssl_context)
return requests
# Native wifi
def setup_native():
import wifi
radio = wifi.radio
return radio, get_requests(radio)
def connect_native(radio):
while not radio.connected:
try:
radio.connect(os.getenv("WIFI_SSID"), os.getenv("WIFI_PASSWORD"))
except Exception as ex:
traceback.print_exception(ex, ex, ex.__traceback__)
ipv4_str = radio.ipv4_address
return ipv4_str
# WIZnet
def setup_eth():
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
cs = digitalio.DigitalInOut(board.A3)
mac = f'de:ad:be:ef:fe:{252:02x}' # need this to avoid DHCP collisions
radio = WIZNET5K(spi, cs, mac=mac, debug=False)
return radio, get_requests(radio)
def connect_eth(radio):
ipv4_str = radio.pretty_ip(radio.ip_address)
return ipv4_str
# ESP32SPI
def setup_esp():
from adafruit_esp32spi import adafruit_esp32spi
esp32_cs = digitalio.DigitalInOut(board.A0)
esp32_reset = digitalio.DigitalInOut(board.A1)
esp32_ready = digitalio.DigitalInOut(board.A2)
radio = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset, debug=False)
return radio, get_requests(radio)
def connect_esp(radio):
while not radio.is_connected:
try:
radio.connect_AP(os.getenv("WIFI_SSID"), os.getenv("WIFI_PASSWORD"))
except Exception as ex:
traceback.print_exception(ex, ex, ex.__traceback__)
ipv4_str = radio.pretty_ip(radio.ip_address)
return ipv4_str
time.sleep(3) # wait for serial
spi = board.SPI()
radio_native, requests_native = setup_native()
radio_eth, requests_eth = setup_eth()
radio_esp, requests_esp = setup_esp()
while True:
print(f'{"="*25}')
print(f"Fetching from {TEXT_URL} via native wifi {connect_native(radio_native)} ", end="")
with requests_native.get(TEXT_URL) as resp:
print(f'{resp.status_code} {resp.reason.decode()}')
time.sleep(5)
print(f"Fetching from {TEXT_URL} via WIZnet {connect_eth(radio_eth)} ", end="")
with requests_eth.get(TEXT_URL) as resp:
print(f'{resp.status_code} {resp.reason.decode()}')
time.sleep(5)
print(f"Fetching from {TEXT_URL} via ESP32SPI {connect_esp(radio_esp)} ", end="")
with requests_esp.get(TEXT_URL) as resp:
print(f'{resp.status_code} {resp.reason.decode()}')
time.sleep(5)
@anecdata
Copy link
Author

anecdata commented Apr 25, 2024

esp32-s3 + WIZnet + esp32spi

Hardware config:

  • UnexpectedMaker FeatherS3
  • WIZnet 850io (W5500) "BFF"
  • Adafruit Airlift breakout

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment