第一课:课程导学与硬件准备
大家好,我是你们的老朋友。做嵌入式这么多年,从最早的51单片机一路折腾到现在的STM32,我最大的感触就是:单机玩得再溜,也只是个“孤岛”。
物联网时代,设备不上云,就像手机没联网,功能直接砍半。所以这门课,咱们就干一件事——把STM32的数据,通过ESP8266,稳稳当当地送到阿里云物联网平台。
嗯,第一节课,咱们不急着写代码。先把家伙事儿备齐,把路数摸清楚。
1.1 阿里云物联网平台:到底是个啥?
说白了,阿里云物联网平台就是一个“云上的管家”。
你的STM32采集了温度、湿度、开关状态,这些数据不能自己存着吧?得有个地方帮你收着、存着、甚至分析。平台就是干这个的。
我个人习惯把它分成三层理解:
- 设备端:就是咱们的STM32 + ESP8266,负责采集和发送数据。
- 云平台:阿里云那边,负责接收、存储、转发。你可以在网页上看到数据曲线。
- 应用端:手机App或者网页,从云平台拉数据展示,或者下发指令。
我在项目中遇到过最头疼的事,就是设备端和云端的“通信协议”对不上。你发的是二进制,它要的是JSON,结果数据全乱码。所以咱们这门课,重点就是把这个“翻译”工作做标准。
核心要点:阿里云物联网平台支持MQTT、CoAP、HTTP三种协议。咱们实战中,99%的情况用MQTT。为什么?因为MQTT是发布/订阅模式,省流量、实时性好,特别适合单片机这种资源受限的设备。
1.2 认识我们的主角:STM32与ESP8266
先说说STM32。我建议初学者用F103系列,比如STM32F103C8T6,也就是大家常说的“蓝色 pill”板子。为什么选它?
- 资料多:网上教程一抓一大把,遇到问题好查。
- 性价比高:几块钱一片,性能足够跑个RTOS或者裸机程序。
- 外设丰富:USART、I2C、SPI、ADC,该有的都有。
再说ESP8266。这玩意儿刚出来的时候,我其实挺瞧不上它的——功耗高、稳定性一般。但后来发现,真香!
ESP8266本质上是一个带Wi-Fi功能的单片机。但在咱们课程里,它只干一件事:当STM32的“Wi-Fi猫”。STM32通过AT指令控制它,让它连上路由器,再连上阿里云。
我的小建议:买ESP8266模块时,尽量选“ESP-12F”或者“ESP-01S”。别买太老的版本,比如ESP-01,Flash太小,固件升级容易出问题。我曾经因为贪便宜买了几个老版本,结果折腾了一整天刷固件,得不偿失。
1.3 搭建开发环境:Keil MDK与串口工具
环境搭建这块,我踩过的坑比走过的路还多。咱们一步步来,别急。
1.3.1 Keil MDK安装
Keil MDK是ARM单片机开发的主流IDE。虽然界面老气了点,但稳定。我个人习惯用MDK 5.38版本,太新的版本有时候对老芯片支持不好。
安装步骤很简单:
- 去Keil官网下载MDK-Arm安装包。
- 一路Next,安装路径不要有中文。
- 安装完成后,打开Pack Installer,下载STM32F1系列的器件包。
嗯,这里要注意:如果你用的是D版,记得用管理员权限运行。别问我怎么知道的,都是泪。
1.3.2 串口工具的选择
调试物联网设备,串口工具就是你的眼睛。我推荐两个:
| 工具名称 | 优点 | 缺点 |
|---|---|---|
| SSCOM(串口助手) | 轻量、稳定、支持中文显示 | 功能单一,不支持网络调试 |
| MobaXterm | 支持串口和SSH,功能强大 | 界面稍复杂,新手可能懵 |
我个人习惯用SSCOM做日常调试,简单粗暴。但如果你需要同时监控多个串口,或者要抓网络包,MobaXterm更合适。
避坑指南:我曾经在调试时,发现串口打印全是乱码。折腾了半天,最后发现是USB转串口模块的TX和RX接反了。记住:STM32的TX接ESP8266的RX,STM32的RX接ESP8266的TX。交叉连接,别搞反了。
1.4 硬件接线速览
咱们先把硬件连起来,心里有个数。具体接线如下:
STM32F103C8T6 ESP8266-12F
PA9 (USART1_TX) --> RXD
PA10 (USART1_RX) --> TXD
3.3V --> VCC
GND --> GND
为什么用USART1?因为PA9和PA10是默认的调试串口,方便你一边看日志一边调。如果你用其他串口,记得在代码里改配置。
还有一点:ESP8266工作时电流能到300mA,别直接用STM32的3.3V引脚供电,带不动。我建议单独用一个3.3V稳压模块给ESP8266供电,或者用开发板上的独立3.3V输出。
1.5 第一节课的“课后作业”
别急着往下翻。这节课虽然没写代码,但有几件事你得先做完:
- 在阿里云物联网平台注册一个账号,创建一个产品(产品名随意,比如“STM32_Demo”)。
- 在产品下添加一个设备,记下设备的“三元组”(ProductKey、DeviceName、DeviceSecret)。
- 把STM32和ESP8266按上面的接线图连好,用串口工具测试一下ESP8266能不能正常响应AT指令。
测试AT指令很简单:打开串口助手,波特率设115200,发送“AT\r\n”,如果返回“OK”,说明模块活着。如果没反应,检查接线和供电。
嗯,这节课就到这儿。下节课咱们开始写代码,让STM32通过ESP8266连上Wi-Fi。准备好了吗?