import sys
import os
from machine import Pin
import time
class Board:
class BoardType:
PICO = "Raspberry Pi Pico"
PICO_W = "Raspberry Pi Pico W"
PICO2 = "Raspberry Pi Pico 2"
PICO2_W = "Raspberry Pi Pico 2W"
RP2040 = "RP2040 Generic"
ESP8266 = "ESP8266"
ESP32 = "ESP32"
ESP32_S2 = "ESP32-S2"
ESP32_S3 = "ESP32-S3"
ESP32_C3 = "ESP32-C3"
UNKNOWN = "Unknown"
def __init__(self):
self.type = self.detect_board_type()
def detect_board_type(self):
info = os.uname()
sysname = info.sysname.lower()
machine = info.machine.lower()
# -------------------------
# RP2040 / RP2350 family
# -------------------------
if sysname == "rp2":
if "pico w" in machine:
return self.BoardType.PICO_W
elif "pico 2w" in machine:
return self.BoardType.PICO2_W
elif "pico 2" in machine:
return self.BoardType.PICO2
elif "pico" in machine:
return self.BoardType.PICO
elif "rp2040" in machine:
return self.BoardType.RP2040
# -------------------------
# ESP8266
# -------------------------
elif sysname == "esp8266":
return self.BoardType.ESP8266
# -------------------------
# ESP32 family
# -------------------------
elif sysname == "esp32":
if "esp32s3" in machine:
return self.BoardType.ESP32_S3
elif "esp32s2" in machine:
return self.BoardType.ESP32_S2
elif "esp32c3" in machine:
return self.BoardType.ESP32_C3
elif "esp32" in machine:
return self.BoardType.ESP32
return self.BoardType.UNKNOWN
# ------------------------------------------------
# Detectar tipo de placa
# ------------------------------------------------
BOARD_TYPE = Board().type
print("Board type:", BOARD_TYPE)
# ------------------------------------------------
# Configuración del LED según la placa
# ------------------------------------------------
if BOARD_TYPE == Board.BoardType.PICO_W:
led = Pin("LED", Pin.OUT)
elif BOARD_TYPE in (
Board.BoardType.PICO,
Board.BoardType.PICO2,
Board.BoardType.PICO2_W,
Board.BoardType.RP2040):
led = Pin(25, Pin.OUT)
elif BOARD_TYPE == Board.BoardType.ESP8266:
led = Pin(2, Pin.OUT)
elif BOARD_TYPE in (
Board.BoardType.ESP32,
Board.BoardType.ESP32_S2,
Board.BoardType.ESP32_S3,
Board.BoardType.ESP32_C3):
led = Pin(2, Pin.OUT)
else:
print("Unknown board, defaulting to GPIO2")
led = Pin(2, Pin.OUT)
# ------------------------------------------------
# Test del LED
# ------------------------------------------------
print("Testing LED")
while True:
led.value(1)
print("LED ON")
time.sleep(1)
led.value(0)
print("LED OFF")
time.sleep(1)