mcpField
E
embedded-iot

embedded-iot

github.com/travisjneuman开发106195 次安装1 天前更新
代码仓库

关于 embedded-iot

面向嵌入式与 IoT 固件开发者的参考技能,涵盖常见微控制器平台,并整理固件模式、通信协议示例及工程实践。

主要功能

  1. 01微控制器平台概览
  2. 02GPIO 与 I2C 模式
  3. 03FreeRTOS 任务示例
  4. 04IoT 协议比较
  5. 05固件可靠性实践

适用场景

  1. 01为 IoT 设备选择平台
  2. 02查阅传感器与外设代码
  3. 03规划 MQTT 或 BLE 通信
  4. 04检查固件测试与更新实践

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/travisjneuman/.claude --skill embedded-iot

安装后在 Claude Code 中输入/embedded-iot确认已加载。

详细介绍

嵌入式系统与物联网

微控制器平台

平台最适合语言IDE
ESP32WiFi/BLE 物联网设备C/C++、MicroPythonPlatformIO、Arduino IDE
STM32工业、实时应用C/C++STM32CubeIDE、PlatformIO
Arduino原型开发、学习C++ (Arduino)Arduino IDE、PlatformIO
Raspberry Pi PicoRP2040、双核C/C++、MicroPythonThonny、VS Code
nRF52以 BLE 为核心的物联网C、ZephyrnRF 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);
主要物联网协议
协议传输方式使用场景
MQTTTCP/TLS发布/订阅消息、遥测
CoAPUDP/DTLS受限设备、类似 REST 的交互
BLE无线电短距离、低功耗
LoRaWAN无线电长距离、低数据速率
MatterIP智能家居互操作性

最佳实践

  • 电源管理: 深度睡眠模式、中断唤醒、占空比调节
  • 看门狗定时器: 始终启用、定期复位、捕获固件挂起
  • OTA 更新: 双分区方案、启动失败时回滚、签名验证
  • 内存: 优先使用静态分配,避免堆碎片,使用内存池
  • 测试: 硬件在环(HIL),为单元测试模拟硬件接口

评论

支持 Markdown