2995浏览
查看: 2995|回复: 8

[ESP8266/ESP32] 【连载一】如何在树莓派上通过arduino-cli编程ESP32-C3?

[复制链接]
本帖最后由 yoyojacky 于 2022-6-16 23:22 编辑

前言

前不久疫情期间封印在家,我无意中发现自己因为写了不少帖子攒下来很多积分,然后看到DF商城能够积分兑换模块,又有微信群里小伙伴谈论ESP32-C3 说是RISC-V架构,能跑神经网络,于是激动的就下单了。

一口气用积分换了3个,钱么纸么花么!积分么随便花!只要我不心疼,没有人会心疼。。。随着每天捅喉咙和牙痛困扰,也就慢慢遗忘了,谁知道突然一天快递小哥送来了惊喜。

打开一看,好可爱的小开发板。拇指大小,带wifi和蓝牙,还能做神经网络就很nice。它们是这样的:



于是就想着找个时间搭建一下环境试试看。

思路

本来想着在windows下通过vscode安装esp32的idf环境,后来觉得太麻烦,也不喜欢在vscode下开发,手里有树莓派开发板,心想,为何不用树莓派来开发ESP32-C3呢?熟悉的命令行,如果开发成功了,说不定还能写个一键烧录的脚本,批量烧录固件,万一有人想要量产什么的,也可以有个参考,本着我不开源别人也会开源的想法,我还是决定写个开源的开源方案的帖子来帮助喜欢ESP32和树莓派的朋友。虽然你们会觉得听君一席话,如听一席话,但是我不care, 开心就好,只缺烦恼。

说干就干?

不可能的,我是懒癌发作,今天要不是因为ESP32群里沸沸扬扬的讨论ESP32环境到底使用MicroPython还是circuitpython还是idf的时候,我插不上嘴,也不知道为啥要这么纠结,喜欢哪个,习惯哪个,或者哪个适合自己就选择哪个呗。

关于一灯大师

大家都知道我在蘑菇云的圈子里面,只会点灯, 所以叫一灯大师。于是我还真去商城一口气兑换了一堆灯。


就是为了测试一下然后安装到我新买的莫哈维上。

为啥要装到我的RC车上? 夜跑不带灯,怎么能拉风?

焊接引脚

说干就干,找了两根杜邦线, 开启烙铁,30秒完成任务。




焊点还挺饱满的吧?360度2秒焊接。杜邦线白色接VIN到LED灯的+极。 负极用引脚0控制。

树莓派配置

Arduino-cli树莓派上安装arduino-cli的方法也非常简单。我目前使用的树莓派系统是Raspberry Pi OS, 版本是:

安装arduino-cli 方法:

  1. 下载:

    wget https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_ARM64.tar.gz
  2. 解压:

    tar -xf arduino-cli_latest_Linux_ARM64.tar.gz
  3. 移动二进制文件到/usr/bin目录下,方便操作。

    sudo mv arduino-cli /usr/bin/
  4. 测试一下命令是否好用:

    arduino-cli help

  5. 查看开发板信息

    arduino-cli board list
    或者
    arduino-cli board list --format json

舒服, 序列号都可以看到,后续写shell脚本操作可以根据序列号来烧录不同的固件了,自动化的第一步就实现了不是?
板子内容再详细一些:

arduino-cli board details -b esp32:esp32:esp32c3



详细信息就是详细,绝对够用了。

更新核心core

arduino-cli需要更新core,这样才可以下载对应的资源。

更新核心前,先去添加json链接,不然你的arduino-cli不知道去哪里更新关于ESP32-C3的资源。

初始化配置文件

先初始化配置文件,并修改arduino-cli.yaml文件

arduino-cli config init 

生成后的文件是在用户属主目录下一个隐藏目录里面的。

一定要编辑它!!!

vim /home/pi/.arduino15/arduino-cli.yaml 

在board manager的 addtional_urls: [ ] 这里添加: 单引号引起来,然后如果有多个板子,就添加对应板子的package_index.json路径。

这里我添加了ESP32和ESP8266的:

'https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json' 

文件路径在这:

然后在终端中就可以通过下面的命令来安装和更新了。

arduino-cli help core     # 可以查看帮助
arduino-cli core update-index    # 更新索引文件
arduino-cli core upgrade     # 升级
arduino-cli core list    # 列出核心
arduino-cli core seach esp32  # 查询ESP32的核心

如果没有,那就执行下面的命令安装:

arduino-cli core install esp32:esp32 
arduino-cli core download esp32:esp32

如果想玩儿别的板子。

  • ESP8266
arduino-cli core install esp8266:esp8266
  • Arduino Leonardo
arduino-cli core install arduino:avr

创建sketch

arduino-cli sketch new  wifiled

会在你当前目录下创建一个wifiled目录,然后里面会生成一个wifiled.ino文件,直接编辑就行了。

代码我这里实在贴不出来。。。。我贴二楼了。

编辑完保存退出。

编译并上传

  • 编译:
arduino-cli compile -b esp32:esp32:esp32c3 wifiled.ino

  • 上传:
arduino-cli upload -p /dev/ttyACM0  -b esp32:esp32:esp32c3

然后突然我就发现灯支棱起来了!

然后打开手机,设置,打开wifi 连接配置好的连接:

[b]打开浏览器输入:http://192.168.4.1
看到如下图提示。

点击OFF对应的here关灯。
点击ON对应的here开灯。
其实实际上我的正好相反。。。

总结

到此,基本操作过程就这样顺利完成了。
中途遇到一个问题就是如果你在帖子的Makrdown状态下写好了,保存后,千万别再修改并尝试通过markdown打开文本,别问我怎么知道的。
ok, 我是骑驴玩儿漂移,下次再见。




yoyojacky  初级技匠
 楼主|

发表于 2022-6-16 23:22:34


#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.");
}
}
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2022-7-4 17:58:43

没人看啊?。。。
回复

使用道具 举报

驴友花雕  中级技神

发表于 2022-7-7 05:35:47

C3,树莓派,点灯.......没整明白,一灯大师
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2022-8-31 16:08:05

驴友花雕 发表于 2022-7-7 05:35
C3,树莓派,点灯.......没整明白,一灯大师

都是先入门再搞事情啊哈哈
回复

使用道具 举报

驴友花雕  中级技神

发表于 2022-8-31 17:58:35

yoyojacky 发表于 2022-8-31 16:08
都是先入门再搞事情啊哈哈

高,实在是高......
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2022-9-1 18:38:08


哈哈, 后续很快就来了。
回复

使用道具 举报

驴友花雕  中级技神

发表于 2022-9-1 21:08:33

yoyojacky 发表于 2022-9-1 18:38
哈哈, 后续很快就来了。

厉害,加油哦
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2023-4-26 18:43:05

我发现自己不长记性啊。有一次被自己的markdown文档给坑了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail