关于 embedded-iot
面向嵌入式与 IoT 固件开发者的参考技能,涵盖常见微控制器平台,并整理固件模式、通信协议示例及工程实践。
主要功能
- 01微控制器平台概览
- 02GPIO 与 I2C 模式
- 03FreeRTOS 任务示例
- 04IoT 协议比较
- 05固件可靠性实践
适用场景
- 01为 IoT 设备选择平台
- 02查阅传感器与外设代码
- 03规划 MQTT 或 BLE 通信
- 04检查固件测试与更新实践
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ travisjneuman/ .claude --skill embedded-iot安装后在 Claude Code 中输入/embedded-iot确认已加载。
详细介绍
嵌入式系统与物联网
微控制器平台
| 平台 | 最适合 | 语言 | IDE |
|---|---|---|---|
| ESP32 | WiFi/BLE 物联网设备 | C/C++、MicroPython | PlatformIO、Arduino IDE |
| STM32 | 工业、实时应用 | C/C++ | STM32CubeIDE、PlatformIO |
| Arduino | 原型开发、学习 | C++ (Arduino) | Arduino IDE、PlatformIO |
| Raspberry Pi Pico | RP2040、双核 | C/C++、MicroPython | Thonny、VS Code |
| nRF52 | 以 BLE 为核心的物联网 | C、Zephyr | nRF Connect SDK |
固件模式
GPIO 与外设
// ESP-IDF GPIO example
gpio_config_t io_conf = {
.pin_bit_mask = (1ULL << GPIO_NUM_2),
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = GPIO_PULLUP_DISABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE,
};
gpio_config(&io_conf);
gpio_set_level(GPIO_NUM_2, 1);
I2C 通信
// Read sensor via I2C
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd);
i2c_master_write_byte(cmd, (SENSOR_ADDR << 1) | I2C_MASTER_WRITE, true);
i2c_master_write_byte(cmd, REG_TEMP, true);
i2c_master_start(cmd);
i2c_master_write_byte(cmd, (SENSOR_ADDR << 1) | I2C_MASTER_READ, true);
i2c_master_read(cmd, data, 2, I2C_MASTER_LAST_NACK);
i2c_master_stop(cmd);
i2c_master_cmd_begin(I2C_NUM_0, cmd, pdMS_TO_TICKS(1000));
i2c_cmd_link_delete(cmd);
RTOS(FreeRTOS)
// Task creation
void sensor_task(void *pvParameters) {
while (1) {
float temp = read_temperature();
xQueueSend(data_queue, &temp, portMAX_DELAY);
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
xTaskCreate(sensor_task, "sensor", 4096, NULL, 5, NULL);
// Mutex for shared resources
SemaphoreHandle_t spi_mutex = xSemaphoreCreateMutex();
if (xSemaphoreTake(spi_mutex, pdMS_TO_TICKS(100)) == pdTRUE) {
spi_transfer(data);
xSemaphoreGive(spi_mutex);
}
物联网协议
MQTT
// ESP-IDF MQTT client
esp_mqtt_client_config_t mqtt_cfg = {
.broker.address.uri = "mqtt://broker.hivemq.com",
};
esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);
esp_mqtt_client_start(client);
esp_mqtt_client_publish(client, "/sensors/temp", "23.5", 0, 1, 0);
主要物联网协议
| 协议 | 传输方式 | 使用场景 |
|---|---|---|
| MQTT | TCP/TLS | 发布/订阅消息、遥测 |
| CoAP | UDP/DTLS | 受限设备、类似 REST 的交互 |
| BLE | 无线电 | 短距离、低功耗 |
| LoRaWAN | 无线电 | 长距离、低数据速率 |
| Matter | IP | 智能家居互操作性 |
最佳实践
- 电源管理: 深度睡眠模式、中断唤醒、占空比调节
- 看门狗定时器: 始终启用、定期复位、捕获固件挂起
- OTA 更新: 双分区方案、启动失败时回滚、签名验证
- 内存: 优先使用静态分配,避免堆碎片,使用内存池
- 测试: 硬件在环(HIL),为单元测试模拟硬件接口
评论
支持 Markdown