Visual Studio Code + PlatformIO 快速入门
Arduino 官方的 IDE 把硬件开发环境傻瓜化,挺好的。但是随着硬件开发学习的深入、工程越来越大,它的问题也开始凸显。例如没有代码自动补全,没有实时的语法错误提示,跟在纸上拿笔写代码的感觉差不多、代码工程管理不方便、没有版本控制,代码调试困难等等。因此找一个更好的开发环境变得势在必行。
Visual Studio Code 俗称 VS Code 或 VSC,是微软公司提供的一套通用的软件开发环境,通过插件的方式,可以用于各种不同语言的开发场景。它基于开源项目构建,供大家免费使用。而且,它在 Windows \ Mac OS \ Linux 下都可以运行,哪天 Windows 没了也没关系,做的工程一样可以留给子孙后代。
VS Code 有微软自己开发的 Arduino 插件,也就是 Visual Studio Code + Arduino 组合。但既然我们要升级开发环境,干脆更彻底一些,使用更好的 PlatformIO 这个插件(简称 PIO),也就是 Visual Studio Code + Platform IO 组合。这样不仅解决了 Arduino IDE 上面的那些缺点,而且有 Platform IO 良好的跨平台支持。给 Arduino 开发板写的代码,简单修改就可以上传到 ESP-8266 或 ESP-32 中运行。
下面以 Windows 10 系统为例说下 Visual Studio Code + PlatformIO 开发环境的配置方法。
第一步:安装必须的依赖环境:
前往 Arduino 官网 https://www.arduino.cc/en/software 下载最新版的 Arduino IDE。虽然我们不再直接用它来开发,但 VS Code 还是需要调用它的库文件。
第二步:安装 VS Code:
前往官网 https://code.visualstudio.com/ 下载,然后默认选项一路完成即可。
第三步:安装 Platform IO 插件:
打开上一步安装好的 VSCode,点击下图最右侧“Extensions(插件)”图标,在上方的插件市场搜索框中输入“PlatformIO” 后回车搜索,点击第一个结果后点击右侧“Install”按钮(已安装会变为 Uninstall)。
也可以前往 Visual Studio 市场网站安装: https://marketplace.visualstudio.com/items?itemName=platformio.platformio-ide
安装时要留意右下角可能弹出的提示,按提示中的推荐操作即可。
上述步骤完成后,VS Code 左侧工具栏会出 PlatformIO 的外星人图标,就说明 PlatformIO 已经安装好了。
下面我们以经典的 Blink 工程为例,一起体验下在 VS Code 中创建工程及上传、调试的基本流程。
点击左侧外星人图标,在下方的QUICK ACCESS 中点击 PIO Home -> Open,然后在右侧 PIO 主页面点击 New Project 就可以创建新工程了。
创建工程时,Name 一栏填写工程名字,例如 Blink。Board 一栏中要选择对应的开发板,点击后 PIO 会从网络下载可用的开发板列表,可用键盘输入 Arduino 以快速定位。对于 Arduino 系列开发板, Framework 一栏会自动填充,无需修改。最后点击 Finish 即可。初次创建时,PIO 会需要一些时间从网络上下载一些对应的依赖库,稍等即可完成。
如果期间遇到什么问题,可能是特殊的网络环境导致的,PIO 服务器在国外,可以通过设置 VS Code 中的网络代理解决。当然,这需要你有一定的科研技能。
提示
更详细的 VSCode + PlatformIO 配置代理服务器的方法可点此查看。
工程创建完成后,VS Code 左侧会有 Blink 相应的目录出现,主要包括 include,lib,src 这三个目录和一个 platformio.ini 文件。include 目录用来存放工程所用的C语言头文件。lib目录用来存放当前工程中使用的私有库文件。src 目录用来存放主程序文件。
我们打开 src 目录中的 main.cpp 文件。这个文件相当于 Arduino IDE 中的 main.ino ,我们的代码就先写在这里面。
编译按钮(√)、上传按钮(→)位于 VS Code 的最下方,确认 Arduino 开发板已经插入 USB 端口,点击上传,稍等片刻,Blink 程序就写入成功了!
总的来说,VS Code + PIO 的开发环境在安装配置过程中比 Arduino 官方 IDE 稍复杂一些,但配置好之后,就可以极大地帮助我们提高工作效率,对以后开发更复杂的系统也打好了基础。