2742| 8
|
[ESP8266/ESP32] 【连载一】如何在树莓派上通过arduino-cli编程ESP32-C3? |
本帖最后由 yoyojacky 于 2022-6-16 23:22 编辑 前言前不久疫情期间封印在家,我无意中发现自己因为写了不少帖子攒下来很多积分,然后看到DF商城能够积分兑换模块,又有微信群里小伙伴谈论ESP32-C3 说是RISC-V架构,能跑神经网络,于是激动的就下单了。 一口气用积分换了3个,钱么纸么花么!积分么随便花!只要我不心疼,没有人会心疼。。。随着每天捅喉咙和牙痛困扰,也就慢慢遗忘了,谁知道突然一天快递小哥送来了惊喜。 思路本来想着在windows下通过vscode安装esp32的idf环境,后来觉得太麻烦,也不喜欢在vscode下开发,手里有树莓派开发板,心想,为何不用树莓派来开发ESP32-C3呢?熟悉的命令行,如果开发成功了,说不定还能写个一键烧录的脚本,批量烧录固件,万一有人想要量产什么的,也可以有个参考,本着我不开源别人也会开源的想法,我还是决定写个开源的开源方案的帖子来帮助喜欢ESP32和树莓派的朋友。虽然你们会觉得听君一席话,如听一席话,但是我不care, 开心就好,只缺烦恼。 说干就干?不可能的,我是懒癌发作,今天要不是因为ESP32群里沸沸扬扬的讨论ESP32环境到底使用MicroPython还是circuitpython还是idf的时候,我插不上嘴,也不知道为啥要这么纠结,喜欢哪个,习惯哪个,或者哪个适合自己就选择哪个呗。 关于一灯大师大家都知道我在蘑菇云的圈子里面,只会点灯, 所以叫一灯大师。于是我还真去商城一口气兑换了一堆灯。 焊接引脚说干就干,找了两根杜邦线, 开启烙铁,30秒完成任务。 树莓派配置Arduino-cli树莓派上安装arduino-cli的方法也非常简单。我目前使用的树莓派系统是Raspberry Pi OS, 版本是: 安装arduino-cli 方法:
舒服, 序列号都可以看到,后续写shell脚本操作可以根据序列号来烧录不同的固件了,自动化的第一步就实现了不是?
详细信息就是详细,绝对够用了。 更新核心corearduino-cli需要更新core,这样才可以下载对应的资源。 更新核心前,先去添加json链接,不然你的arduino-cli不知道去哪里更新关于ESP32-C3的资源。 初始化配置文件先初始化配置文件,并修改arduino-cli.yaml文件
生成后的文件是在用户属主目录下一个隐藏目录里面的。 一定要编辑它!!!
在board manager的 addtional_urls: [ ] 这里添加: 单引号引起来,然后如果有多个板子,就添加对应板子的package_index.json路径。 这里我添加了ESP32和ESP8266的:
文件路径在这: 然后在终端中就可以通过下面的命令来安装和更新了。
如果没有,那就执行下面的命令安装:
如果想玩儿别的板子。
创建sketch
会在你当前目录下创建一个wifiled目录,然后里面会生成一个wifiled.ino文件,直接编辑就行了。 代码我这里实在贴不出来。。。。我贴二楼了。编辑完保存退出。 编译并上传
然后突然我就发现灯支棱起来了! 然后打开手机,设置,打开wifi 连接配置好的连接: [b]打开浏览器输入:http://192.168.4.1 点击OFF对应的here关灯。 总结到此,基本操作过程就这样顺利完成了。 |
#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."); } } |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed