在研究了它们之后,这些板子当然看起来很有趣。
这块板似乎有两种变体,因为我看过RobotDyn 的照片:

后部(来自 Instructables)

或WeMos徽标。

它们可能相同,也可能不同。还有这个,只有一个通用的“WiFi”标志(来自下面的 eBay 页面):

内存差异
但是,在规格和内存量方面肯定存在一些差异(除非有许多变体 - 这肯定是可能的):
看看这篇文章 Instructables - Arduino MEGA 2560 With WiFi Built-in - ESP8266,它不完全是 ESP8266-12:
在今天的文章中,我们讨论了一个我认为非常特别的 Arduino,因为它的电路板上嵌入了 ESP8266。它没有将 ESP12 焊接到板上。相反,它具有乐鑫芯片。所以,在板上你有内置 4MB 内存的 Tensilica 芯片,以及 ATmega2560,这是传统的 Arduino Mega。
所以 ESP 有 4 MB,但 32 Mb 在哪里发挥作用?
好吧,看看这个 RobotDyn 内存表(取自 Instructables 页面):

ESP 的 4 MB 似乎立即被矛盾并升级到 8 MB!ATmega2560不知何故有 32 Mb(这似乎有点撒谎 - 因为没有人知道的 ATmega2560有那么多内存2),并且被相应的文本进一步混淆:
正如我们在上表中看到的,ATmega 有 32MB 的内存,不包括 ESP 内存。这太棒了,因为传统的 Mega Arduino 只有 256kb 的内存。
所以MB
还是Mb
?ATmega2560 外部是否有额外的闪存 IC?查看来自俄罗斯 RobotDyn 页面的示意图,似乎没有:

所以这可能是无稽之谈。按照逻辑,ATmega 有 256 kB,ESP 有 4 MB ......但我可能错了......?
来自Контроллер RobotDyn Mega 2560 R3 + WiFi ESP8266b、闪存 память 8Mbit、USB-TTL CH340G、MicroUSB 的链接:
通讯可靠性
无论实际规格如何,为了解决您的 ESP/Arduino 通信可靠性问题:
由于 ESP8266 和 ATmega2560 在同一块板上,人们会假设两者之间的(串行)通信是无故障的。但是,已经报告了一些问题3。
尽管如此,从您的问题来看,您似乎遇到了 ESP 与 OctoPi 通信的问题,而不是 ESP 与 Arduino 的问题,所以这可能实际上并不能回答您的问题。
此外,关于它们与 RAMPS 的兼容性,目前可用的信息很少,似乎是一个试一试的情况。我得到的最接近的是这个帖子,OnStep 和 RAMPS1.4,但它似乎是垃圾邮件。
然而,这听起来确实值得一赌,因为它将是技术的完美结合。但是,我认为需要对固件进行一些修改。
有用的笔记
- 来自Mega + WiFi R3 ATmega2560 + ESP8266 (8 Mb memoire) 的#8 帖子
要将草图上传到板上:
5, 6, 7 ON
RXD3 - TXD3
要运行草图:
5 and 6 ON
RXD3 - TXD3
脚注
1 来自WeMOS Mega + WiFi R3 ATmega2560 + ESP8266 USB-TTL 用于 Arduino Mega NodeMCU
WeMOS Mega + WiFi R3 ATmega2560 + ESP8266 USB-TTL 适用于 Arduino Mega NodeMCU
特征:
表 DIP- 开关:
Connection DIP
1 2 3 4 5 6 7
ATmega2560<->ESP8266 ON ON OFF OFF OFF OFF OFF
USB <->ATmega2560 OFF OFF ON ON OFF OFF OFF
USB<->ESP8266 (Update firmware or sketch) OFF OFF OFF OFF ON ON ON
USB<->ESP8266 (communication) OFF OFF OFF OFF ON ON OFF
All independent OFF OFF OFF OFF OFF OFF OFF
Special solution:
USB <->ATmega328<-> ESP8266
Connection DIP SWITCH 2
1 2 3 4 5 6 7
USB <-> ATmega2560<-> ESP8266 ON ON ON ON OFF OFF OFF To RXD3/TXD3
- USB 转换器 CH340G 连接到 ATmega2560 的 RX0/TX0
- ESP8266 连接 ATmega2560 的 RX3/TX3
尺寸:10.5x5.3cm/4.13x2.09inch
2来自Atmel ATmega640/V-1280/V -1281/V-2560/V-2561/V 数据表

3从兆丰+无线R3 ATmega2560 + ESP8266(8 MB备忘录),有做似乎是用ATmega和ESP集成电路之间的通信,与一些用户报告问题的一些问题。
但是,提供了几种解决方案:
方案一
来自帖子 #2
将 DIP 开关设置为“特殊”模式: ( 1=on, 2=on, 3=on, 4=on, 5=off, 6=off, 7=off, 8=off
) 参见产品说明。
在RXD3设置开关
- 运行下面的草图,更改 SSID 和 PASSWORD 值。这只是为了测试 Arduino 和 ESP8266 是否协同工作。该代码源自 Element14 中的 BISSA ORBOEA。
代码:
#include "ESP8266.h"
#define SSID "YOURSID"
#define PASSWORD "YOURPASSWORD"
ESP8266 wifi(Serial3,115200);
void setup() {
Serial.begin(9600);
Serial.println("Restart");
wifi.restart();
delay(1000);
Serial.println("FW Version:");
Serial.println(wifi.getVersion().c_str());
if (wifi.setOprToStation()) {
Serial.println("OprToStation ok"); }
else {
Serial.println("OprToStation err");
}
if (wifi.joinAP(SSID, PASSWORD)) {
Serial.println("Join AP success");
Serial.print("IP:");
Serial.println( wifi.getLocalIP().c_str());
} else {
Serial.println("Join AP failure");
}
}
void loop()
{
}
解决方案2
来自帖子 #6
首先,您需要根据您的应用程序为每个板编写代码,但是在您的代码中,您需要在两个代码中的 Atmega 和 ESP 的串行端口之间建立通信,再次根据您的应用程序。最后,放置使两者之间进行内部互连的开关。
例如,我为 ESP 编写了一个代码,用于连接接入点并放在 TCP 服务器上。当无线客户端连接到 ESP 并因此连接到 TCP 服务器时,客户端发送的所有数据我都重定向到串行端口。由于ESP的串口与Atmega的串口3相连,因此Atmega中的代码将串口3的数据传递给atmega。
解决方案3
来自帖子 #11
如果您与我的情况相同,请按照以下步骤操作:
- 通过将 DIP 配置为 5:on,6:on,7:on 和其他关闭,编程到 ESP(上传草图)以进行 wifi 连接。
- 程序到 mega(上传草图),以防您想通过将 Dip 配置为 3:on、4:on 和其他关闭来相互发送通信。
- 切换两个 RX0/TX0(在我的情况下,我使用 Serial.print() 和 Serial.readString() 在 Esp 和 Mega 之间进行通信)
将草图上传到两个模块后,您可以通过将 DIP 配置为:1:on,2:on,3:on,4:on 来测试它们之间的通信。然后按重置按钮重新启动板。
在 ESP 中,您可以通过 if(Serial.available()) Serial.readString(); 从 Mega 获取字符串。在超级中,您可以通过以下方式从 ESP 获取数据:if(Serial.available())Serial.readString()。
- 在你得到一个字符串之后,你就可以拆分或做任何你想做的事情。
- 如果要将数据发送到 Firebase,则必须在 Esp 端使用 Firebase 库,在 Mega 中它不支持。