IoT & Embedded Systems - Guía de Entorno¶
Guía completa para desarrollo de sistemas embebidos, IoT y hardware con Claude Code.
Capacidades de Claude Code¶
| Capacidad | Herramientas |
|---|---|
| Microcontroladores | Arduino, ESP32, STM32, PIC |
| SBCs | Raspberry Pi, BeagleBone, Jetson |
| Firmware | C/C++, Rust, MicroPython |
| RTOS | FreeRTOS, Zephyr, RIOT |
| Protocolos | MQTT, CoAP, Modbus, CAN |
| Hardware Design | KiCad, Fritzing |
| Simulación | Wokwi, QEMU, Renode |
Arduino¶
Arduino IDE / CLI¶
# Arduino CLI (recomendado para Claude Code)
# Windows
winget install Arduino.Arduino-CLI
# macOS
brew install arduino-cli
# Linux
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh
# Configurar
arduino-cli config init
arduino-cli core update-index
# Instalar cores
arduino-cli core install arduino:avr # Arduino Uno, Mega
arduino-cli core install arduino:samd # Arduino Zero, MKR
arduino-cli core install esp32:esp32 # ESP32
arduino-cli core install esp8266:esp8266 # ESP8266
# Listar boards conectados
arduino-cli board list
# Compilar
arduino-cli compile --fqbn arduino:avr:uno MySketch
# Subir
arduino-cli upload -p /dev/ttyUSB0 --fqbn arduino:avr:uno MySketch
# Monitor serial
arduino-cli monitor -p /dev/ttyUSB0 -c baudrate=115200
PlatformIO (Recomendado)¶
# Instalar via pip
pip install platformio
# O VS Code extension
code --install-extension platformio.platformio-ide
# Crear proyecto
pio project init --board uno
pio project init --board esp32dev
pio project init --board teensy41
# Estructura
my-project/
├── src/
│ └── main.cpp
├── lib/
├── include/
├── test/
└── platformio.ini
# Comandos
pio run # Compilar
pio run -t upload # Subir
pio device monitor # Serial monitor
pio test # Tests
pio lib install "ArduinoJson" # Instalar librería
platformio.ini ejemplo:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
bblanchon/ArduinoJson@^7.0.0
knolleary/PubSubClient@^2.8
ESP32 / ESP8266¶
ESP-IDF (Framework oficial Espressif)¶
# Instalar ESP-IDF
# https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/
# Windows: ESP-IDF Tools Installer
# Linux/macOS:
mkdir -p ~/esp
cd ~/esp
git clone -b v5.2 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh esp32
source ./export.sh
# Comandos
idf.py create-project my-project
cd my-project
idf.py set-target esp32
idf.py build
idf.py -p /dev/ttyUSB0 flash
idf.py monitor
Raspberry Pi¶
Setup para desarrollo remoto¶
# En tu máquina local
# SSH habilitado en Pi
# VS Code Remote SSH
code --install-extension ms-vscode-remote.remote-ssh
# Conectar
ssh pi@raspberrypi.local
# Desarrollo Python
python3 --version
pip3 install RPi.GPIO gpiozero
# Desarrollo C/C++
sudo apt install build-essential cmake
GPIO y Hardware¶
# Python
pip3 install RPi.GPIO gpiozero adafruit-blinka
# Para sensores I2C/SPI
pip3 install adafruit-circuitpython-bme280
pip3 install adafruit-circuitpython-ssd1306
Raspberry Pi Pico (MicroPython)¶
# Instalar Thonny o usar rshell
pip install rshell
# Conectar
rshell -p /dev/ttyACM0
# Copiar archivos
cp main.py /pyboard/
# REPL
repl
STM32¶
STM32CubeIDE¶
# Descargar desde ST
# https://www.st.com/en/development-tools/stm32cubeide.html
# O usar PlatformIO con framework stm32cube
[env:nucleo_f401re]
platform = ststm32
board = nucleo_f401re
framework = stm32cube
Rust Embedded (STM32)¶
# Instalar target
rustup target add thumbv7em-none-eabihf
# Crear proyecto
cargo generate --git https://github.com/rust-embedded/cortex-m-quickstart
# Dependencias
cargo add cortex-m cortex-m-rt panic-halt
cargo add stm32f4xx-hal --features stm32f401
# Build
cargo build --release
# Flash con probe-rs
cargo install probe-rs --features cli
probe-rs run --chip STM32F401RETx target/thumbv7em-none-eabihf/release/my-app
RTOS¶
FreeRTOS¶
# Con ESP-IDF (incluido)
# Con STM32CubeMX (generación de código)
# Standalone
git clone https://github.com/FreeRTOS/FreeRTOS.git
Zephyr RTOS¶
# Instalar west (meta-tool de Zephyr)
pip install west
# Obtener Zephyr
west init ~/zephyrproject
cd ~/zephyrproject
west update
# Instalar SDK
# https://docs.zephyrproject.org/latest/develop/getting_started/
# Build
west build -b esp32 samples/hello_world
# Flash
west flash
Protocolos IoT¶
MQTT¶
# Broker local (Mosquitto)
# Windows
winget install EclipseFoundation.Mosquitto
# macOS
brew install mosquitto
# Linux
sudo apt install mosquitto mosquitto-clients
# Iniciar
mosquitto -v
# Test
mosquitto_pub -t "test/topic" -m "Hello"
mosquitto_sub -t "test/topic"
# Python client
pip install paho-mqtt
LoRaWAN¶
Simuladores¶
Wokwi (Online)¶
https://wokwi.com
# Simula Arduino, ESP32, Raspberry Pi Pico
# Integración con VS Code
code --install-extension Wokwi.wokwi-vscode
QEMU (Raspberry Pi)¶
# Emular Raspberry Pi
qemu-system-arm -machine raspi2b -cpu cortex-a7 -m 1G \
-kernel kernel7.img -dtb bcm2709-rpi-2-b.dtb \
-sd raspbian.img -append "root=/dev/mmcblk0p2 rw rootwait"
Renode¶
# Simulador de sistemas embebidos
# https://renode.io/
# Ejecutar
renode
# En Renode monitor:
mach create
machine LoadPlatformDescription @platforms/boards/stm32f4_discovery.repl
sysbus LoadELF @my-firmware.elf
start
Hardware Design¶
KiCad¶
# Windows
winget install KiCad.KiCad
# macOS
brew install --cask kicad
# Linux
sudo apt install kicad
Fritzing¶
Comandos que Claude Code Ejecutará¶
# Arduino CLI
arduino-cli compile --fqbn esp32:esp32:esp32 .
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32 .
arduino-cli monitor -p /dev/ttyUSB0
# PlatformIO
pio run
pio run -t upload
pio device monitor
pio lib install "libreria"
# ESP-IDF
idf.py build
idf.py flash
idf.py monitor
# Rust Embedded
cargo build --release --target thumbv7em-none-eabihf
probe-rs run --chip STM32F401RETx
# Zephyr
west build -b board_name
west flash
# MQTT
mosquitto_pub -t "topic" -m "message"
mosquitto_sub -t "topic"
Verificación del Entorno¶
#!/bin/bash
echo "=== Verificación Entorno IoT/Embedded ==="
echo -e "\n--- Arduino CLI ---"
arduino-cli version 2>/dev/null || echo "Arduino CLI no instalado"
echo -e "\n--- PlatformIO ---"
pio --version 2>/dev/null || echo "PlatformIO no instalado"
echo -e "\n--- ESP-IDF ---"
idf.py --version 2>/dev/null || echo "ESP-IDF no instalado"
echo -e "\n--- Rust Embedded ---"
rustup target list --installed | grep thumb 2>/dev/null || echo "Targets ARM no instalados"
probe-rs --version 2>/dev/null || echo "probe-rs no instalado"
echo -e "\n--- MQTT ---"
mosquitto -h 2>&1 | head -1 || echo "Mosquitto no instalado"
echo -e "\n--- Dispositivos ---"
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null || echo "No hay dispositivos serie conectados"
echo -e "\n=== Verificación Completa ==="