如何方便地阅读Arduino或Esp8266的源代码

如何方便地阅读Arduino或Esp8266的源代码 Windows(Sourcetrail+ArduinoCLI) 需要用到的工具 Sourcetrail ArduinoCLI 根据官方手册,下载windows下的压缩包,解压后的文件夹种有一个arduino-cli.exe,执行文件。假设改执行文件的路径为D:\arduino-cli\arduino-cli.exe,用管理员权限打开cmd进入该目录。 Arduino 根据官方手册,先使用arduino-cli core update-index更新一下缓存。将Arduino的板子插入电脑的接口后,使用arduino-cli board list后,core会告知改板子使用的核心,比如我用的Arduino UNO R3,core是arduino:avr,那么需要下载该corearduino-cli core install arduino:avr,如果这个时候出现Access is denied错误,根据issues723,关闭一下杀毒软件在尝试一次(我使用的火绒导致静默阻止)。core安装成功之后可以使用arduino-cli core list查看一下所有已经安装的core。其他使用方法可以参考官方文档,重点是如何更好地阅读代码。假设我们要阅读的代码是MyFirstSketch.ino,那么根据官方手册可以执行arduino-cli compile -b esp8266:esp8266:nodemcu HttpOTA --only-compilation-database -v,–only-compilation-database会在build目录下生成comile_commands.json文件,-v会显示具体的信息,而build目录就是输出最后arduino-sketch文件所在的目录。 找到comile_commands.json文件后就可以直接用Sourcetrail打开,创建新项目时选择CDB,里面选择comile_commands.json文件(建议复制到源文件目录下,sourcetrail的项目文件也选择源文件目录),解析头文件选择从cdb中导入就行,这样解析之后虽然还会有一些error和fatal,但是基本上不影响源码阅读。 esp8266 方法和Arduino使用差不多,根据官方手册安装esp8266的库文件用这个命令 arduino-cli core update-index --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json 注意连接板子查看具体的board型号。 WSL2 加入需要在Windows上的WSL2里面使用ArduinoCLI,vscode使用compile_command.json来解析的话,会遇到下面一些问题。 WSL2目前不支持串口映射,解决办法时根据微软的手册安装软件进行手动映射。 在Linux环境中遇到avrdude: ser_open(): can’t open device “/dev/ttyACM0”: Permission denied问题,sudo chmod a+rw /dev/ttyACM0 arduino-cli core install esp8266:esp8266 arduino-cli compile -b esp8266:esp8266:nodemcu HttpOTA --only-compilation-database -v C:\Users\18454\AppData\Local\Temp\arduino-sketch-776950451AE70DA4FF60E70254F9E1B8

April 27, 2022 · 1 min

NodeMCU远程点亮电灯泡

**目标:**远程点亮一个灯泡 硬件:ModeMCU 基础知识 ESP8266和NodeMCU: ESP8266是一块芯片,NodeMCU是以ESP8266芯片为核心的开发板 esp8266芯片 内置ESP8266芯片的nodemcu开发板 ESP8266的三种工作模式: STA(Station):ESP8266主动去连接WIFI AP(Wireless Access Point):ESP8266创建WIFI STA+AP:上面两个共存 API: WiFiServer,Serial.begin(),pinMode(),Serial.print() 板载小灯: GPIO2引脚与板载小灯相联 在esp8266的库文件中hardware/esp8266/3.0.2/variants/nodemcu/pins_arduino.h中定义了各种引脚 基本思路 ESP8266以STA模式工作,连接到WIFI后,自己内部启动一个TCP server,这个TCP server其实是写一个小型的HTTP服务器,客户端通过浏览器就可以访问到。 代码: #include <ESP8266WiFi.h> //此处设置您的wifi接入信息 #ifndef STASSID #define STASSID "WiFi" // wifi名称 #define STAPSK "password" //要连接的wifi密码 #endif const char *ssid = STASSID; const char *password = STAPSK; //创建TCP server对象,并将端口指定为80 WiFiServer server(80); void setup() { //打开串口 Serial.begin(115200); //初始化板载LED pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, 0); //连接WiFi Serial.println(); Serial.println(); Serial.print(F("Connecting to ")); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi....

April 21, 2022 · 1 min