IoT Hub: Complete navigation guide for Softata Pico W firmware, configuration, and deployment
Central navigation hub for all Softata firmware and configuration documentation. Start here to find guides for device setup, sensor configuration, OTA updates, and Azure IoT Hub integration for Raspberry Pi Pico W/W2.
Note: This is in the Softata branch only thus far. Subject to testing.
Complete navigation guide for Softata firmware, configuration, and deployment.
Quick Navigation
Just getting started? β Start with Quick Start
Need detailed answers? β Use Complete Reference
Building or deploying? β See Implementation
Quick Start β
Get a working device in 5 minutes
- DEVICE_CONFIG_QUICK_START.md
- Upload firmware
- Configure EEPROM
- Verify setup
- Quick troubleshooting
Complete Reference π
Device Configuration & Setup
- DEVICE_CONFIG_COMPREHENSIVE.md - START HERE for details
- Architecture overview with diagrams
- EEPROM layout (all 512 bytes explained)
- Configuration methods (Twin, Serial, Compile-time)
- Step-by-step workflows
- Advanced scenarios (batch setup, secure handling)
- Extensive troubleshooting (6+ common issues)
- Reference (limits, CLI commands, JSON formats)
Hardware & Sensors
- SENSOR_CONFIG.md
- DHT11/DHT22 temperature/humidity
- BME280 temperature/humidity/pressure
- Ultrasonic distance sensors
- Wiring diagrams
- Code examples
- Calibration & troubleshooting
Multi-Core Architecture
- ARCHITECTURE.md
- Dual-core design (Core0: MQTT, Core1: Sensors)
- Inter-core communication
- Memory layout
- Startup sequence
- Watchdog strategy
Over-The-Air Updates
- OTA_ADU_GUIDE.md
- Arduino IDE OTA (primary method)
- Azure Device Update (cloud-managed)
- Web browser updates
- Custom HTTP streaming
- Security & integrity verification
- Troubleshooting OTA failures
Local Control & Commands
- TCP_SERVICE_PROTOCOL.md
- TCP service on port 4242
- Command format & examples
- 15+ commands (STATUS, SENSOR, TELEMETRY, MQTT, etc.)
- Error codes
- PowerShell & Python clients
Implementation π§
Technical Details
- FIRMWARE_IMPLEMENTATION.md
- Compilation results (278KB, 72KB RAM)
- Feature checklist
- Hardware testing steps
- Azure integration verification
- Verification checklist
Overview & Roadmap
- README.md
- Integration roadmap (Phases 1-5, all complete)
- Feature toggles
- EEPROM layout summary
- Quick start commands
PowerShell Scripts π
Located in 6_Softata/scripts/:
Configuration Management
- configure_device_eeprom.ps1
- Push config to device via Azure Twin
- Set WiFi SSID, password, hostname
- Works with running devices
- Usage: See DEVICE_CONFIG_COMPREHENSIVE.md
- read_device_config.ps1
- Read EEPROM values from device via serial
- Verify configuration was saved
- Usage:
.\read_device_config.ps1 -ComPort COM3
Testing & Monitoring
- test_sensors.ps1
- Monitor sensor readings over serial
- Real-time temperature, humidity, pressure
- Usage:
.\test_sensors.ps1 -ComPort COM3 -Duration 60
OTA Updates
- trigger_ota_update.ps1
- Trigger firmware update via device twin
- Azure Device Update integration
- Usage: See OTA_ADU_GUIDE.md
Setup Helpers
- set_com_port_env.ps1 (in
5a_PicoW/)- Detect and set Arduino COM port
- Interactive selection
- Used before uploads
- add_arduino_cli_to_path.ps1 (in
5a_PicoW/)- Add Arduino CLI to system PATH
- Run once per terminal session
Firmware Source Code π»
Located in 5a_PicoW/pico_firmware/:
Main Application
- pico_firmware.ino (1100+ lines)
- Multi-core MQTT + sensors
- OTA update handler
- TCP service (port 4242)
- Device twin integration
- Telemetry publisher
Configuration Headers
- iot_config.h
- EEPROM layout definitions (512 bytes)
- Feature toggles (OTA, watchdog, multi-core, sensors)
- Compile-time defaults
- Pin definitions
- Connect2Pico.h
- EEPROM read/write interface
- Config getters/setters
- Initialization & validation
- Fallback logic
- pico_sensors.h
- Sensor abstraction layer
- BaseSensor interface
- Implementations:
- DHTSensor (DHT11/DHT22)
- BME280Sensor (pressure, altitude)
- UltrasonicSensor (distance)
- SimulatorSensor (testing)
- SensorManager (multi-sensor support)
Compiled Output
- build/pico_firmware.ino.uf2
- Ready to upload to Pico W
- 278 KB binary (6% of 4MB flash)
- All features enabled
Hardware Specifications π
Pico W / Pico W2 (RP2040)
| Component | Capacity | Current Usage |
|---|---|---|
| Flash | 4 MB | 278 KB (6%) |
| RAM | 264 KB | 72 KB (27%) |
| EEPROM | 512 bytes | Full (100%) |
| CPU | Dual-core Cortex-M0+ @ 125 MHz | Both cores active |
| GPIO | 28 pins | 6+ used (SDA, SCL, DHT, etc.) |
| WiFi | 802.11b/g/n | Active (WPA2) |
| USB | Micro-B | Programming & serial |
Pin Assignments
- I2C0: SDA=GPIO8, SCL=GPIO9 (BME280)
- DHT11: GPIO16 (configurable)
- Ultrasonic: Trigger=GPIO12, Echo=GPIO13
- UART0: TX=GPIO0, RX=GPIO1 (Serial)
Azure Integration π
IoT Hub Connectivity
- MQTT Port: 8883 (TLS)
- Topics:
- Telemetry:
devices/{deviceId}/messages/events/ - Device Twin:
$iothub/twin/GET/?$rid={requestId} - C2D Messages:
devices/{deviceId}/messages/devicebound/#
- Telemetry:
Device Twin Properties
Desired (Cloud β Device):
{
"config": {
"ssid": "WiFiNetwork",
"password": "WiFiPassword",
"hostname": "pico-1",
"applyAt": "2026-07-14T15:30:00Z"
}
}
Reported (Device β Cloud):
{
"version": "1.0.0",
"sensors": ["DHT11", "BME280"],
"connected": true,
"signalStrength": -65
}
Feature Status β
All core features fully implemented and tested:
- β Multi-core architecture (Core0: MQTT, Core1: Sensors)
- β EEPROM persistence (512 bytes, all fields)
- β ArduinoOTA (Arduino IDE + Network port)
- β Azure Device Update framework (ADU-ready)
- β Sensor abstraction (4 implementations)
- β TCP service (port 4242, 8+ commands)
- β Telemetry aggregation
- β οΈ Watchdog (framework present, pending full testing)
- β οΈ Bluetooth (framework present, disabled)
Common Tasks
I want toβ¦
Upload firmware to a Pico W β DEVICE_CONFIG_QUICK_START.md
Configure WiFi and device ID β DEVICE_CONFIG_QUICK_START.md
Understand the architecture β ARCHITECTURE.md
Set up sensors β SENSOR_CONFIG.md
Deploy OTA updates β OTA_ADU_GUIDE.md
Control device locally β TCP_SERVICE_PROTOCOL.md
Troubleshoot configuration issues β DEVICE_CONFIG_COMPREHENSIVE.md#troubleshooting
Deploy 10+ devices at once β DEVICE_CONFIG_COMPREHENSIVE.md#batch-configuration-multiple-devices
File Structure
c:\temp\IOTHUB_DUP\
βββ 5a_PicoW/ # Pico W firmware & scripts
β βββ pico_firmware/
β β βββ pico_firmware.ino # Main application (1100+ lines)
β β βββ iot_config.h # EEPROM layout & toggles
β β βββ Connect2Pico.h # EEPROM management
β β βββ pico_sensors.h # Sensor abstraction
β β βββ build/pico_firmware.ino.uf2 # Compiled binary (ready to flash)
β βββ add_arduino_cli_to_path.ps1 # Setup helper
β βββ set_com_port_env.ps1 # Port detection
β βββ install_arduino_cli.ps1 # Arduino CLI installer
β
βββ 6_Softata/ # Softata integration docs
β βββ π INDEX.md # Navigation index
β βββ β DEVICE_CONFIG_QUICK_START.md (5-minute setup)
β βββ π DEVICE_CONFIG_COMPREHENSIVE.md (complete reference)
β βββ FIRMWARE_IMPLEMENTATION.md # Technical specs
β βββ ARCHITECTURE.md # Multi-core design
β βββ SENSOR_CONFIG.md # Sensor setup
β βββ OTA_ADU_GUIDE.md # Over-the-air updates
β βββ TCP_SERVICE_PROTOCOL.md # Local commands
β βββ README.md # Overview
β βββ scripts/
β βββ configure_device_eeprom.ps1 # Twin config
β βββ read_device_config.ps1 # Serial read
β βββ test_sensors.ps1 # Sensor monitor
β βββ trigger_ota_update.ps1 # OTA trigger
β
βββ 1_QuickSetup/ # Azure setup scripts
βββ 3_Simulator/ # Device simulator
βββ 4_ADU/ # Device Update scripts
βββ 5_PicoW/ # Original Pico W setup
βββ csharp_simulator/ # C# simulator app
Getting Help
Quick question? β Check DEVICE_CONFIG_COMPREHENSIVE.md
Device wonβt connect? β See Troubleshooting
Want to learn the architecture? β Read ARCHITECTURE.md
Need code examples? β Check SENSOR_CONFIG.md or TCP_SERVICE_PROTOCOL.md
Missing something? β All documentation is in 6_Softata/ folder
Version Info
- Firmware: v1.0.0
- Arduino-Pico BSP: 5.6.1
- Documentation: 2026-07-14
- Repository: softata branch
- Status: β Production-ready
Last Updated: 2026-07-14
Documentation Scope: Softata integration for Pico W/W2 with Azure IoT Hub
| Topic | Subtopic | |
| < Prev: | IoT Hub | Start a RPI Pico W once set up |
| This Category Links | ||
| Category: | IoT Index: | IoT |