基于上海乐鑫ESP系列的开发板

来自Ubuntu中文
Nsynet留言 | 贡献2024年9月4日 (三) 23:16的版本 (创建页面,内容为“![微信图片\_20240902233048.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/bbd5838afcc94925b571808e19c87eaf~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=SfzBQL6zqFJVZmAofUevGQIfhiM%3D) ![微信图片\_20240902233058.jpg](https://p0-xtjj-private…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航跳到搜索

![微信图片\_20240902233048.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/bbd5838afcc94925b571808e19c87eaf~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=SfzBQL6zqFJVZmAofUevGQIfhiM%3D)

![微信图片\_20240902233058.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/7179738620324ce1962790a1bc2db1b8~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=2m4cbUW6pWDYD7bHkbgzkA%2BTKls%3D)

    1. ESPduino(ESP8266)/WeMos D1(ESP8266)

//WeMos D1(ESP8266) 使用ESP-12F模组,SMD-22封装,而ESPduino使用安信可的ESP-13模组,SMD-18封装. <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3746415d336544f0b301b301fe52656d~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=901&h=1198&s=1199992&e=png&b=f0e9e8" width="40%">

![OIP-C.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/f2814088724b4f97949c4c1937d7b569~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=trMxGhRxyy7xC0TpIv3tM%2FDStfU%3D)

//ESPDuino使用安信可的ESP-13模块(该模块使用ESP8266EX 芯片),该模块的pinout如下: <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3ad1aa50fd1d4dc9b2329d7c400c65fc~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1587&h=1469&s=162526&e=png&b=fefefe" width="65%">

标准arduino IDE开发ESPDuino,需要在“首选项”->"其他开发板管理器地址"下输入: \` <https://arduino.esp8266.com/stable/package_esp8266com_index.json> //ESPDuino使用ESP-13模块(很多书上误写为ESP-12模块) <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/41bc69e4571d4a4eb7630ec08fba5630~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1322&h=615&s=62414&e=png&b=f9f9f9" width="55%"> ESP-13模块的原理图: ![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d25db74ac50d4daaaabbcd8197e366e9~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=2095\&h=1637\&s=483546\&e=png\&b=fdfcfc)

    1. ESP32
      1. 常用arduino库

| 名称 | 库头文件 | 用法 | 在ESP32上是否能使用 | | --------------------------------------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------- | ------------ |

| debug库 | #include "Arduino\_DebugUtils.h" |

setup()阶段:Debug.timestampOn();
loop()阶段:DEBUG\_INFO("i = %d,0x%02x", i,i);

| Y |

| Serial Plotter库,Serial Plotter 可以将串口发送的数据以图表的形式显示出来,适合观察数据的变化趋势 | | | | | Debugger:这个库可以让你在 Arduino 程序中使用断点、单步执行等调试功能,就像在 PC 上使用集成开发环境调试程序一样。 | #include \<Debugger.h\> | | 有报错?? | | SimpleDebug:这是一个简单的调试库,它允许你通过串口发送调试信息,并且可以设置不同的调试级别。 | | | | | DebugLib:这个库为 Arduino 提供了一个简单而强大的调试功能,支持宏定义来启用或禁用调试代码,无需修改代码即可切换调试模式。 | | | |

|

Logging | | | | 提供了日志功能,支持不同级别的日志输出,比如调试、信息、警告、错误等。 assert 虽然不是库,但 C++ 标准库中的 assert 宏可以在条件不满足时停止程序运行,是检查假设条件的好方法。 elibcppdbg 这个库提供了类似标准 C++ 库中的流输出功能,可以将信息输出到串口,方便调试。 NeoDebug 一个为 Arduino 设计的轻量级调试库,支持多种数据类型的输出,还可以自定义调试等级。 FPRETTY 一个简单的库,用于格式化串口输出,使得调试信息更加易于阅读。

| | | |

\| | | | | \| | | | | \| | | | |

    1. AI回答
      1. Q:arduino IDE编译不同开发板时,ino代码如何区分当前是哪种开发板
      1. A:

在 Arduino IDE 中,当你选择不同的开发板时,编译器会包含对应开发板的特定头文件和定义,这允许你在代码中通过条件编译来区分当前是哪种开发板。以下是一些方法来区分不同的开发板:

1. **使用预定义的宏**:

   每个开发板在编译时都会定义一些特定的宏,例如 `ARDUINO`,`ARDUINO_ARCH_{ARCH}` 和 `BOARD` 等。你可以通过这些宏来判断当前的板子。
   ```cpp
   #ifdef ARDUINO_AVR_UNO
   // 代码专门为 Arduino Uno 编写
   #elif defined(ARDUINO_SAM_DUE)
   // 代码专门为 Arduino Due 编写
   #elif defined(ARDUINO_ARCH_ESP8266)
   // 代码专门为 ESP8266 编写
   #elif defined(ARDUINO_ARCH_ESP32)
   // 代码专门为 ESP32 编写
   #endif
   ```

2. **检查`BOARD`宏**:

   `BOARD`宏通常包含了开发板的名称,你可以用它来区分不同的开发板。
   ```cpp
   #if defined(BOARD) && (BOARD == "AVR_UNO" || BOARD == "AVR_MEGA2560")
   // 代码适用于 Uno 或 Mega2560
   #elif defined(BOARD) && BOARD == "SAMD_ZERO"
   // 代码适用于 Zero 或 itsybitsy_m0
   #endif
   ```

3. **检查特定开发板的功能或引脚定义**:

   某些开发板可能有特定的功能或引脚定义,你可以检查这些来区分开发板。
   ```cpp
   #if defined(__AVR_ATmega328P__)
   // 代码专门为基于 ATmega328P 的开发板编写
   #elif defined(__SAM3X8E__)
   // 代码专门为基于 SAM3X8E 的开发板编写
   #endif
   ```

4. **自定义宏**:

   在项目的 `platform.local.txt` 或 `boards.txt` 文件中,你可以为特定的开发板定义自定义宏。然后在代码中使用这些宏。

5. **使用`pins_arduino.h`文件**:

   每个 Arduino 开发板都有自己的 `pins_arduino.h` 文件,定义了该板的引脚映射。虽然这个文件通常不直接在 `.ino` 文件中使用,但你可以通过包含它来获取板级信息。
   ```cpp
   #include <pins_arduino.h>
   #if defined(PIN_A0)
   // 根据引脚定义区分
   #endif
   ```

使用这些方法,你可以在 `.ino` 文件中根据不同的开发板编写特定的代码段,从而确保代码可以在不同的硬件平台上正确运行。记得在编写条件编译代码时,始终要有一个默认的路径,以处理未定义的情况。