嵌入式系统与物联网
单片机平台
资料给出的平台对照表如下:
| 平台 | 最适合场景 | 语言 | IDE |
|---|---|---|---|
| ESP32 | WiFi/BLE IoT 设备 | 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 为核心的 IoT | C、Zephyr | nRF Connect SDK |
固件模式
GPIO 与外设
资料提供 ESP-IDF GPIO 示例:通过 gpio_config_t 配置引脚位掩码、模式(如 GPIO_MODE_OUTPUT)、上下拉与中断类型,并调用 gpio_config 应用配置,再用 gpio_set_level 设置电平。
I2C 通信
资料提供通过 I2C 读取传感器的示例流程:创建 i2c_cmd_link,依次发送起始位、写地址、写寄存器、再次起始、读地址,读取数据并以 I2C_MASTER_LAST_NACK 结束,发送停止位后执行 i2c_master_cmd_begin,最后删除命令链接。
RTOS(FreeRTOS)
资料给出任务创建示例:在 sensor_task 中循环读取温度并通过 xQueueSend 发送到队列,用 vTaskDelay 周期性延时,再通过 xTaskCreate 创建任务并指定栈大小与优先级。
同时给出互斥量用法:用 xSemaphoreCreateMutex 创建信号量,通过 xSemaphoreTake 获取、xSemaphoreGive 释放,用于保护 SPI 等共享资源。
IoT 协议
MQTT
资料提供 ESP-IDF MQTT 客户端示例:配置 broker 地址(如 mqtt://broker.hivemq.com),初始化并启动客户端,再用 esp_mqtt_client_publish 发布主题数据。
关键 IoT 协议
| 协议 | 传输 | 用途 |
|---|---|---|
| MQTT | TCP/TLS | 发布/订阅消息、遥测 |
| CoAP | UDP/DTLS | 受限设备、类 REST |
| BLE | 无线电 | 短距离、低功耗 |
| LoRaWAN | 无线电 | 长距离、低数据率 |
| Matter | IP | 智能家居互操作 |
最佳实践
资料列出以下要点:
- 电源管理:深度睡眠模式、中断唤醒、占空比循环。
- 看门狗定时器:始终启用,周期性复位,捕获固件挂起。
- OTA 更新:双分区方案,启动失败回滚,签名校验。
- 内存:优先静态分配,避免堆碎片,使用内存池。
- 测试:硬件在环(HIL),为单元测试模拟硬件接口。
适用场景
根据资料描述,该技能适用于开发固件、使用单片机,或构建 IoT 设备的场景,覆盖从裸机 C/C++ 到 RTOS 与无线协议连接的开发工作。
限制说明
资料未提供该技能的具体安装方式、收费或价格信息、支持的操作系统范围、版本兼容性细节以及可执行的操作步骤,上述内容暂未提供。