【连载一】如何在树莓派上通过arduino-cli编程ESP32-C3?
本帖最后由 yoyojacky 于 2022-6-16 23:22 编辑## 前言
前不久疫情期间封印在家,我无意中发现自己因为写了不少帖子攒下来很多积分,然后看到DF商城能够积分兑换模块,又有微信群里小伙伴谈论ESP32-C3 说是RISC-V架构,能跑神经网络,于是激动的就下单了。
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/174134e4aadh185ild4tw1.jpg )
一口气用积分换了3个,钱么纸么花么!积分么随便花!只要我不心疼,没有人会心疼。。。随着每天捅喉咙和牙痛困扰,也就慢慢遗忘了,谁知道突然一天快递小哥送来了惊喜。
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/174058ssqrjgew33agiaqi.jpg)
打开一看,好可爱的小开发板。拇指大小,带wifi和蓝牙,还能做神经网络就很nice。它们是这样的:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/173645ecinz13ibw82incc.png)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/174018abrjjptj3f5bjd3x.png)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/174031oiq4ag0aewslemaa.png)
于是就想着找个时间搭建一下环境试试看。
## 思路
本来想着在windows下通过vscode安装esp32的idf环境,后来觉得太麻烦,也不喜欢在vscode下开发,手里有树莓派开发板,心想,为何不用树莓派来开发ESP32-C3呢?熟悉的命令行,如果开发成功了,说不定还能写个一键烧录的脚本,批量烧录固件,万一有人想要量产什么的,也可以有个参考,本着我不开源别人也会开源的想法,我还是决定写个开源的开源方案的帖子来帮助喜欢ESP32和树莓派的朋友。虽然你们会觉得听君一席话,如听一席话,但是我不care, 开心就好,只缺烦恼。
## 说干就干?
不可能的,我是懒癌发作,今天要不是因为ESP32群里沸沸扬扬的讨论ESP32环境到底使用MicroPython还是circuitpython还是idf的时候,我插不上嘴,也不知道为啥要这么纠结,喜欢哪个,习惯哪个,或者哪个适合自己就选择哪个呗。
## 关于一灯大师
大家都知道我在蘑菇云的圈子里面,只会点灯, 所以叫一灯大师。于是我还真去商城一口气兑换了一堆灯。
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/173006bbz0k50mk4dbt4q0.jpg)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/173013pyg5pbhn53na5dc5.jpg)
就是为了测试一下然后安装到我新买的莫哈维上。
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/172945uupo5lawnsw7s8js.png)
为啥要装到我的RC车上? 夜跑不带灯,怎么能拉风?
## 焊接引脚
说干就干,找了两根杜邦线, 开启烙铁,30秒完成任务。
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/175018v648n6j8oxjlan7v.jpg)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/175029kmqvmyhdudhuaxdm.jpg)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/175036yvn19k111fz9lf9l.jpg)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/175045xsgizzwqpvszkvpv.jpg)
焊点还挺饱满的吧?360度2秒焊接。杜邦线白色接VIN到LED灯的+极。 负极用引脚0控制。
## 树莓派配置
Arduino-cli树莓派上安装arduino-cli的方法也非常简单。我目前使用的树莓派系统是Raspberry Pi OS, 版本是:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/175342m1i32ctoznyz2zen.png)
### 安装arduino-cli 方法:
1. 下载:
```bash
wget https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_ARM64.tar.gz
```
2. 解压:
```bash
tar -xf arduino-cli_latest_Linux_ARM64.tar.gz
```
3. 移动二进制文件到/usr/bin目录下,方便操作。
```bash
sudo mv arduino-cli /usr/bin/
```
4. 测试一下命令是否好用:
```bash
arduino-cli help
```
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/175755ljaeje6h0x9a94nh.png)
5. 查看开发板信息
```bash
arduino-cli board list
或者
arduino-cli board list --format json
```
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/180151oi6fz8148zf8vt8b.png)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/180157kuufqr3121lm1se6.png)
舒服, 序列号都可以看到,后续写shell脚本操作可以根据序列号来烧录不同的固件了,自动化的第一步就实现了不是?
板子内容再详细一些:
```bash
arduino-cli board details -b esp32:esp32:esp32c3
```
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/180523geybeks5fzy5weks.png)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/180601fokxqedkqrttadho.png)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/180618i4hxd9t9dili9uo1.png)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/180638tk1qd2qk4526kkcx.png)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/180727qhbptesg8h01uetm.png)
详细信息就是详细,绝对够用了。
### 更新核心core
arduino-cli需要更新core,这样才可以下载对应的资源。
更新核心前,先去添加json链接,不然你的arduino-cli不知道去哪里更新关于ESP32-C3的资源。
### 初始化配置文件
先初始化配置文件,并修改arduino-cli.yaml文件
```bash
arduino-cli config init
```
生成后的文件是在用户属主目录下一个隐藏目录里面的。
## 一定要编辑它!!!
```bash
vim /home/pi/.arduino15/arduino-cli.yaml
```
在board manager的 addtional_urls: [ ] 这里添加: 单引号引起来,然后如果有多个板子,就添加对应板子的package_index.json路径。
这里我添加了ESP32和ESP8266的:
```bash
'https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json'
```
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/224335fuuufz3iusuj1443.png)
文件路径在这:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/223811di4tsqsbta08jyba.png)
然后在终端中就可以通过下面的命令来安装和更新了。
```bash
arduino-cli help core # 可以查看帮助
arduino-cli core update-index # 更新索引文件
arduino-cli core upgrade # 升级
arduino-cli core list # 列出核心
arduino-cli core seach esp32# 查询ESP32的核心
```
如果没有,那就执行下面的命令安装:
```bash
arduino-cli core install esp32:esp32
arduino-cli core download esp32:esp32
```
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/223222zylc6nffgf8zl8fp.png)
如果想玩儿别的板子。
* ESP8266
```bash
arduino-cli core install esp8266:esp8266
```
* Arduino Leonardo
```bash
arduino-cli core install arduino:avr
```
### 创建sketch
```bash
arduino-cli sketch newwifiled
```
会在你当前目录下创建一个wifiled目录,然后里面会生成一个wifiled.ino文件,直接编辑就行了。
###代码我这里实在贴不出来。。。。我贴二楼了。
编辑完保存退出。
### 编译并上传
* 编译:
```bash
arduino-cli compile -b esp32:esp32:esp32c3 wifiled.ino
```
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/225150qapsdexpeolqtqhd.png)
* 上传:
```bash
arduino-cli upload -p /dev/ttyACM0-b esp32:esp32:esp32c3
```
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/225448px7m4kx76xh4wwt6.png)
然后突然我就发现灯支棱起来了!
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/225948bro18weuop18y8qb.jpg)
然后打开手机,设置,打开wifi 连接配置好的连接:
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/230339iv379y79rr9r88y7.jpg)
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/230348euykkskt3kz0bspu.jpg)
打开浏览器输入:http://192.168.4.1
看到如下图提示。
![](https://imagemc.dfrobot.com.cn/data/attachment/album/202206/16/230354i4qcazqcq441cpik.jpg)
点击OFF对应的here关灯。
点击ON对应的here开灯。
其实实际上我的正好相反。。。
## 总结
到此,基本操作过程就这样顺利完成了。
中途遇到一个问题就是如果你在帖子的Makrdown状态下写好了,保存后,千万别再修改并尝试通过markdown打开文本,别问我怎么知道的。
ok, 我是骑驴玩儿漂移,下次再见。
#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>
#define myLED 0
const char *ssid = "ESP32C3-YOYO";
const char *password = "123123123";
WiFiServer server(80);
void setup() {
pinMode(myLED, OUTPUT);
Serial.begin(115200);
Serial.println();
Serial.println("Configuring accsess point...");
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.println("AP IP Address: ");
Serial.println(myIP);
server.begin();
Serial.println("Server Started...");
}
void loop() {
WiFiClient client = server.available();
if (client){
Serial.println("New Client.");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.println("Click <a href=\"/ON\">here</a> to turn ON the LED.<br>");
client.println("Click <a href=\"/OFF\">here</a> to turn OFF the LED.<br>");
client.println();
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
if (currentLine.endsWith("/ON")) {
digitalWrite(myLED, LOW);
}
if (currentLine.endsWith("/OFF")) {
digitalWrite(myLED, HIGH);
}
}
}
client.stop();
Serial.println("Client Disconnected.");
}
}
没人看啊?。。。 C3,树莓派,点灯.......没整明白,一灯大师 驴友花雕 发表于 2022-7-7 05:35
C3,树莓派,点灯.......没整明白,一灯大师
都是先入门再搞事情啊哈哈
yoyojacky 发表于 2022-8-31 16:08
都是先入门再搞事情啊哈哈
高,实在是高...... 驴友花雕 发表于 2022-8-31 17:58
高,实在是高......
哈哈, 后续很快就来了。 yoyojacky 发表于 2022-9-1 18:38
哈哈, 后续很快就来了。
厉害,加油哦 我发现自己不长记性啊。有一次被自己的markdown文档给坑了。
页:
[1]