在Linux下使用PLatformIO做物联网开发
1. PlatformIO安装
PlatformIO使用python开发,所以首先需要安装python环境,这里使用Anaconda来管理python环境
-
安装Anaconda
打开终端键入以下命令:
# 下载anaconda
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.0-`uname -s`-`uname -m`.sh
# 执行安装
chmod +x Anaconda3-5.3.0-Linux-x86_64.sh
./Anaconda3-5.3.0-Linux-x86_64.sh
根据提示,设置安装路径,加入环境变量
-
使用conda创建python2环境,并安装PlatformIO
# 创建PlatformIO虚拟环境,并指定使用python版本为2.7
conda create -n platform_dev python=2.7
# 激活环境,并安装相关依赖,库(windows激活环境和Linux稍有不同,请根据提示选择)
conda activate platform_dev
pip install -U platformio
-
查看Arduino板子对应在PlatformIO的id(我使用的是Arduino UNO)
platformio boards | grep 'Arduino Uno'
通过以上命令获得Arduino Uno对应的类型是属于uno
2. 开始创建物联网HelloWorld工程
-
创建项目路径,并执行初始化
# 创建工程目录
mkdir hello-arduino && cd hello-arduino
# 使用PlatformIO初始化项目(这里需要使用上一步获得的板子类型)
platformio init --board uno
-
项目目录说明
├── include # 头文件相关存放
│ └── README
├── lib # 自动生成的库存放目录
│ └── README
├── platformio.ini # PlatformIO配置文件
├── src # 源码目录,自己开发的源码就在这里
└── test
└── README
-
在src目录下创建Arduino的源码main.c文件
touch src/main.c
vim src/main.c
-
编写相关helloworld源码(效果实现:点亮板载Led灯,并且每隔一秒进行一次闪烁)
#include <Arduino.h>
#define led 13 // 定义板载led等的控制引脚是13号
/**
* 伪代码,讲解setup方法和loop方法的调用过程
*
* 大概原理
* 1.Arduino上电初始化进入执行main方法
* 2.main方法调用setup()方法
* 3.while(true)死循环,在死循环里面调用loop方法
*
* Arduino伪代码:
*
* int main(){
* ...一些代码...
* setup();
* ...一些代码...
* while(true){
* ...一些代码...
* loop();
* ...一些代码...
* }
* ...一些代码...
* }
*
* 在此,我们只需要在setup方法中进行一些必要的初始化(比如:波特率设置,引脚工作模式等
* 在loop方法中进行业务逻辑处理
*
*/
//该方法在Arduino上电初始化的时候会自动回调一次,可以进行一些必要的初始化
void setup(){
pinMode(led,OUTPUT); // 设置led的工作模式为输出模式
}
/** 该方法会被Arduino循环回调 */
void loop(){
digitalWrite(led,HIGH); //设置led灯输出高电平
delay(1000); //延时一秒
digitalWrite(led,LOW); //设置led灯输出低电平
delay(1000); //延时一秒
}
-
源码编写完成,进行编译、上传Arduino Uno板子运行,并观看效果
-
通过数据线连接ArduinoUno到电脑的USB接口
- 编译并上传
-
platformio run -e uno #进行编译
platformio run -t upload #上传到Arduino Uno
# 其他一些platformio常用命令
# platformio run -e uno -t upload # 编译并上传到Arduino板子一步完成
# platformio run -t clean # 清理编译过的文件
-
观看效果