Last active
March 29, 2024 00:19
-
-
Save anecdata/8152eba03eefd0a587747e551c683543 to your computer and use it in GitHub Desktop.
CircuitPython with 4 Networks: W5100S + W5500 + ESP32-S2 + ESP32SPI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import board | |
from digitalio import DigitalInOut, Direction | |
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K | |
import adafruit_wiznet5k.adafruit_wiznet5k_socket as wiznet5k_socket | |
from adafruit_esp32spi import adafruit_esp32spi | |
import adafruit_esp32spi.adafruit_esp32spi_socket as esp_socket | |
import wifi | |
import socketpool | |
import ssl | |
import adafruit_requests | |
# local | |
from secrets import secrets | |
TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html" | |
spi = board.SPI() | |
# | |
# WIZNET5K - W5100S WIZnet Pico Hat via Keyboard FeatherWing | |
# | |
MAC_ADDR_5100S = (0xDE, 0xAD, 0xBE, 0xEF, 0x06, 246) | |
eth_5100S_rst = DigitalInOut(board.A3) # should be A2 ? | |
eth_5100S_rst.direction = Direction.OUTPUT | |
# eth_cs = digitalio.DigitalInOut(board.D10) | |
# Pico-side CS pin isn't connected to the FeatherWing side, so jumper is needed | |
eth_5100S_cs = DigitalInOut(board.D6) | |
eth_5100S = WIZNET5K(spi, eth_5100S_cs, reset=eth_5100S_rst, mac=MAC_ADDR_5100S) | |
print("W5100S IP Address:", eth_5100S.pretty_ip(eth_5100S.ip_address)) | |
# | |
# WIZNET5K - W5500 FeatherWing | |
# | |
# eth_cs = digitalio.DigitalInOut(board.D10) | |
MAC_ADDR_5500 = (0xDE, 0xAD, 0xBE, 0xEF, 0x06, 247) | |
# customized CS pin b/c ESP32 needs GPIO0 available for reboots: | |
eth_5500_cs = DigitalInOut(board.A5) | |
eth_5500 = WIZNET5K(spi, eth_5500_cs, mac=MAC_ADDR_5500) | |
print("W5500 IP Address:", eth_5500.pretty_ip(eth_5500.ip_address)) | |
# | |
# ESP32SPI Airlift FeatherWing | |
# | |
esp32_cs = DigitalInOut(board.D13) # LED on some Feathers | |
esp32_ready = DigitalInOut(board.D11) | |
esp32_reset = DigitalInOut(board.D12) | |
# esp32_gpio0 = DigitalInOut(board.D10) # optional | |
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) | |
esp.connect_AP(secrets['ssid'], secrets['password']) | |
print("ESP32SPI IP Address:", esp.pretty_ip(esp.ip_address)) | |
# | |
# Adafruit Feather ESP32-S2 | |
# | |
wifi.radio.connect(secrets['ssid'], secrets['password']) | |
print("ESP32-S2 IP Address:", wifi.radio.ipv4_address) | |
print() | |
# Initialize a requests object with an ethernet socket and interface | |
adafruit_requests.set_socket(wiznet5k_socket, eth_5100S) | |
print("Fetching text via W5100S from", TEXT_URL) | |
with adafruit_requests.get(TEXT_URL) as r: | |
print(r.text) | |
# Initialize a requests object with an ethernet socket and interface | |
adafruit_requests.set_socket(wiznet5k_socket, eth_5500) | |
print("Fetching text via W5500 from", TEXT_URL) | |
with adafruit_requests.get(TEXT_URL) as r: | |
print(r.text) | |
# Initialize a requests object with an ESP32SPI wi-fi socket and interface | |
adafruit_requests.set_socket(esp_socket, esp) | |
print("Fetching text via ESP32SPI from", TEXT_URL) | |
with adafruit_requests.get(TEXT_URL) as r: | |
print(r.text) | |
# Initialize a requests object with an ESP32-S2 wi-fi socket and interface | |
pool = socketpool.SocketPool(wifi.radio) | |
requests = adafruit_requests.Session(pool, ssl.create_default_context()) | |
print("Fetching text via ESP32-S2 from", TEXT_URL) | |
with requests.get(TEXT_URL) as r: | |
print(r.text) | |
print("Done!") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Native wifi + WIZnet W5100S + W5500 + W6100:
https://gist.github.com/anecdata/c708dd9e5a0e0b582f01f27d24fc3aab