3. 开发环境搭建:工欲善其事,必先利其器
好,咱们正式开始动手了。做嵌入式开发,环境搭建是第一道坎。很多人卡在这一步,其实说白了就是工具链没理顺。我见过不少新手,装了一堆东西,结果编译报错,串口打不开,最后连板子都认不出来。别急,跟着我的节奏来,一步步搞定。
我个人习惯用 Arduino IDE 来做 LoRaWAN 的原型验证。为什么?因为它简单、生态好、社区活跃。你想想看,一个 IDE 就能搞定代码编辑、编译、下载、串口监视,省心。当然,如果你以后做产品,可能会换到 ESP-IDF 或者 PlatformIO,但作为入门和快速验证,Arduino IDE 绝对够用。
3.1 Arduino IDE 安装与配置
先去官网下载 Arduino IDE。我建议用 1.8.x 版本,稳定。2.0 版本虽然界面好看,但有时候会抽风,尤其是串口监视器。嗯,这里要注意,下载时选对操作系统版本,Windows 就选 Windows Installer,macOS 就选 macOS 版本。
安装过程很简单,一路 Next 就行。但有个小细节:安装路径不要有中文,也不要带空格。我之前有个同事,装在了「Program Files (x86)」里,结果后面编译某些库时报路径错误,折腾了半天。所以,老老实实装到 C:\Arduino 或者 D:\Arduino 这种纯英文路径下。
打开 IDE 后,找到「文件」->「首选项」。在「附加开发板管理器网址」里,添加 ESP32 的板级支持包地址。这个地址我贴出来:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
如果你网络不好,可能会卡住。我建议用手机热点试试,或者换个时间段。实在不行,可以手动下载 JSON 文件放到本地,但操作起来麻烦,不推荐新手尝试。
3.2 ESP32 板级支持包安装
添加完地址后,打开「工具」->「开发板」->「开发板管理器」。搜索「ESP32」,你会看到 Espressif Systems 官方出的那个包。点击安装,版本我建议选最新的稳定版,比如 2.0.14 或者 3.0.x(看发布时间)。
安装过程会下载一堆工具链,大概几百兆。网速慢的话,可能要等十几分钟。这时候你可以去泡杯茶,或者看看文档。我记得第一次装的时候,等了快半小时,还以为死机了。其实它后台在下载交叉编译工具链,耐心等就好。
安装完成后,在「工具」->「开发板」里就能看到 ESP32 系列的板子了。选你手头的那款,比如 ESP32 Dev Module 或者 NodeMCU-32S。选错了也没关系,大部分 ESP32 芯片都是兼容的,只是引脚定义可能略有不同。
3.3 LoRa 库(MCCI LoRaWAN LMIC)安装
接下来装 LoRaWAN 的库。我们用的是 MCCI 维护的 LMIC 库,它是基于 IBM 的 LoRaWAN 协议栈移植过来的,稳定可靠。打开「工具」->「管理库」,搜索「MCCI LoRaWAN LMIC」。找到那个由 MCCI 发布的库,安装最新版。
安装完后,你会在「文件」->「示例」里看到「MCCI LoRaWAN LMIC」的示例代码。我建议先打开 ttn-otaa 这个示例,它是用 OTAA 方式入网的。代码里需要修改几个参数:
- DEVEUI:设备唯一标识,通常写在 LoRa 模块的标签上,或者你自己生成。
- APPEUI:应用标识,在 LoRaWAN 服务器上注册时获得。
- APPKEY:应用密钥,也是服务器分配的。
这三个参数,说白了就是你的设备在 LoRaWAN 网络里的「身份证」。填错了,入网就会失败。我刚开始做的时候,把 DEVEUI 和 APPEUI 搞反了,结果折腾了一下午。后来学乖了,每次都在代码里用注释标清楚。
重要提醒: LMIC 库默认使用 SPI 接口与 LoRa 模块通信。ESP32 的 SPI 引脚默认是:
- MOSI: GPIO 23
- MISO: GPIO 19
- SCK: GPIO 18
- NSS: GPIO 5(可配置)
- RST: GPIO 14(可配置)
- DIO0: GPIO 26(可配置)
如果你用的开发板引脚不同,记得在代码里修改 lmic_pins 结构体。
3.4 串口驱动与调试工具
硬件连上了,代码写好了,怎么跟电脑通信?靠串口。ESP32 通常自带 USB 转串口芯片,比如 CP2102 或 CH340。Windows 10/11 一般能自动识别,但有些精简版系统可能缺驱动。
如果插上板子后,设备管理器里显示黄色感叹号,那就是驱动没装。去 Silicon Labs(CP2102)或 WCH(CH340)官网下载对应驱动,安装后重启电脑。macOS 和 Linux 通常免驱,但 Linux 可能需要给串口设备加权限:
sudo usermod -a -G dialout $USER
然后注销重新登录。这样你就能用普通用户权限访问串口了。
调试工具方面,Arduino IDE 自带的串口监视器够用,但功能有限。我个人习惯用 PuTTY 或者 CoolTerm。PuTTY 支持串口和 SSH,CoolTerm 界面更友好,能保存日志。你选一个顺手的就行。
设置串口参数时,注意波特率要跟代码里的一致。LoRaWAN 调试时,我通常用 115200 或 9600。如果乱码,八成是波特率不对,或者串口被其他程序占用了。
好了,环境搭建就这些。你跟着走一遍,应该不会有大问题。如果卡住了,别硬扛,去论坛搜一搜,或者翻翻 GitHub 的 issue。大部分坑都有人踩过,解决方案就在那里。
下一章,我们会写第一个 LoRaWAN 程序,让 ESP32 真正连上网络。到时候你就知道,前面这些准备工作有多值了。