PlatformIO学习之ESP8266开发环境搭建

PlatformIO 是开源的物联网开发生态系统。提供跨平台的代码构建器、集成开发环境(IDE),兼容 Arduino,ESP8266和mbed等。支持在Windows、Linux、macOS上使用预编译好的工具链,调试器和框架进行开发。

使用PlatformIO开发嵌入式有很多方便之处,首先PlatformIO不是独立的IDE,只是一个VisualStudio Code中的一个插件,所以安装非常方便,如果熟悉使用VSCode的话更好。
此外PlatformIO中可以统一安装嵌入式开发的平台支持和类库,免去了频繁的下载和搭建各种编译环境,免去了系统不兼容造成的麻烦。因为这些编译环境和上传调试工具都由平台支持者统一去适配好了。
对于ESP8266开发板,使用Arduino开发也很方便,不过PlatformIO支持得更好,提供了Arduino,NonOS-SDK,RTOS-SDK的开发方式,只要把平台更新好就可以开始写user代码了,非常方便。

PlatformIO使用步骤

1. 安装PlatformIO

打开VSCode扩展栏,搜索PlatformIO,然后安装,等待安装成功后重新加载即可,安装成功后左侧多出一个蚂蚁头样的栏目。

2. 安装平台支持

打开PIO Home > Platforms, 去Embedded栏搜索ESP,就会出来Espressif 8266,点右上方install即可安装平台支持。

3. 创建项目

在PIO Home > Home, 点击 New Project, 就可以创建项目,创建的时候Board一栏可以根据情况选个,比如NodeMCU,Framework一栏是指定软件框架的,可以根据情况选择Arduino(兼容Arduino),NonOS(不带RTOS),RTOS(带RTOS),选择完成等待配置完成,就可以开发项目了。也可以点Project Examples,查看自带的示例。

4. Hello Arduino

创建了一个Arduino项目,在src/main.cpp中编写代码即可,和在Arduino IDE中编写是一样的,不过在头部要加上 #include “Arduino.h” 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "Arduino.h"
#include "ESP8266WiFi.h"

void setup() {
// initialize LED digital pin as an output.
pinMode(LED_BUILTIN, OUTPUT);
// 初始化串口
Serial.begin(115200);
Serial.println("Arduino Begin!!");

WiFi.mode(WIFI_STA);
WiFi.disconnect();
}

void loop() {
// turn the LED on (HIGH is the voltage level)
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("\n\n---Scan Wifi-------------");
int n = WiFi.scanNetworks();
for (int i = 0; i < n; i++) {
Serial.printf("%02d: %s, Ch:%d (%ddBm) %s\n", i + 1,
WiFi.SSID(i).c_str(), WiFi.channel(i), WiFi.RSSI(i),
WiFi.encryptionType(i) == ENC_TYPE_NONE ? "" : "*");
}
Serial.println("---Wifi End-------------\n\n");
// wait for a second
delay(6000);
// turn the LED off by making the voltage LOW
digitalWrite(LED_BUILTIN, LOW);
// wait for a second
delay(20);
}

5. 使用技巧

  • 每个项目的重要配置,主要保存在platformio.ini文件中,可以指定平台,板卡,软件框架,串口烧写速率,串口终端波特率等,例如:

    1
    2
    3
    4
    5
    6
    [env:nodemcuv2]
    platform = espressif8266
    board = nodemcuv2
    framework = arduino
    upload_speed = 921600
    monitor_speed = 115200
  • 代码写完后需要运行只需要点下方的向右箭头→,即可完成编译和烧写,和Arduino IDE类似。点下方插头图标🔌,即可打开串口终端查看消息

  • VSCode代码格式化样式设置:默认的代码格式化是VS样式,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int test()
    {
    int i = 3;
    if (i == 3)
    {
    i = 4;
    }
    else if (i == 4)
    {
    i = 3;
    }
    }

    这样子比较占行数,我们一般习惯LLVM样式,只要在设置 > 扩展 > C/C++ > C_Cpp: Clang_format_style
    修改设置位LLVM即可,再使用Alt + Shift + F 格式化代码,即可变成紧凑型。

    1
    2
    3
    4
    5
    6
    7
    8
    int test() {
    int i = 3;
    if (i == 3) {
    i = 4;
    } else if (i == 4) {
    i = 3;
    }
    }

    如果嫌这样TAB空格太短,可以指定为下面代码:

    1
    { BasedOnStyle: LLVM, IndentWidth: 4 }

    空格长一点了,代码较短的话看起来舒服一些

    1
    2
    3
    4
    5
    6
    7
    8
    int test() {
    int i = 3;
    if (i == 3) {
    i = 4;
    } else if (i == 4) {
    i = 3;
    }
    }

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器