我可以通过 wifi shield 重新编程我的 Arduino 吗?

电器工程 Arduino 无线上网
2022-01-08 10:13:31

我的 Arduino 连接到我的水族馆上的一些灯,我可以从局域网上的网络浏览器控制它们。我想知道我是否可以修改 Arduino 上的程序,而不必通过 USB 将其插入机器,这会有点不方便。一定有某种方法可以利用 wifi 连接。

我使用 Pololu 的 wixel shield 无线发送程序(它只是充当串行端口无线电),但这是与我的 WiFi shield 不同的技术。

有人知道我可以通过 WiFi 做到这一点吗?也许如果我将新代码上传到 WiFi shield 中的闪存,它就可以从闪存引导加载?我不确定如何做到这一点,或者它是否可能。

也许完全不同的方法会更简单?

2个回答

这在理论上是可能的,但在实践中并非微不足道。负责将新草图加载到 Arduino 的代码称为bootloader我所知道的所有流行版本的引导加载程序都是基于串行/USB 的。为了在 WiFi 屏蔽上加载草图,必须重写引导加载程序以与 WiFi 屏蔽而不是串行通信。这需要一些工作,但在实践中并非不可能。

请注意,无论您是将草图存储在 WiFi 屏蔽上(我认为这很困难:我不确定这是否可能)或将草图直接上传到您的 Arduino,您都必须这样做:引导加载程序需要与屏蔽通信以读取草图数据。


有一种方法可以轻松地以无线方式重新编程您的 Arduino,那就是蓝牙。您将需要一个蓝牙模块(我不知道蓝牙屏蔽是否可以工作)并将其连接到硬件串行端口。Arduino 上的引导加载程序已经可以进行串行通信,因此问题得到解决。不过,您将不得不(可能)解决另外两个问题:

  • 您在 Ebay 上找到的成本最低的蓝牙模块是 3.3V。这意味着您必须为它们提供 3.3V 电源,并且来自 Arduino 的发送线需要从 5V 电压转换为 3.3V。您可以通过购买用于 5V 通信的蓝牙模块来解决第一个(电源)子问题,或者如果您的 Arduino 具有 3V3 电源,则可以使用该电源为蓝牙模块供电。5V 就绪模块也解决了第二个问题;或者,您可以使用此问题中描述的任何技术对 Arduino 的 5V 输出进行电压转换。
  • 为了自动编程您的 Arduino,需要在上传草图之前重置 Arduino:当 Arduino 正常运行时,引导加载程序不活动。重置 Arduino 会激活引导加载程序,从而可以上传新草图。在 Arduino USB 上巧妙地使用 DTR 线来重置设备。然而,大多数蓝牙串行模块仅提供 TS/RX 输出,因此您可能必须手动重置 Arduino 以上传草图,除非您可以在蓝牙模块上找到一些信号输出,您可以将其编组以连接到复位电路.

今天,我意识到可以实现这一目标的产品:ESP8266。它将允许您通过 wifi 连接对您的 arduino 进行编程/重新编程。各种公司在各种分线板上生产芯片版本。具体来说,它可以成为 Arduino 的 WiFi AVRISP。

您还可以使用 Arduino SDK 对 ESP8266 本身进行编程,它本身具有强大的功能。

有关如何使用 ESP8266 和 Arduino SDK 的详细介绍,请参阅今天的 whatimadetoday (不是我的帖子)。设置 SDK 以对 ESP8266 进行编程后,您可以浏览 IDE 的示例并找到“Arduino_Wifi_AVRISP”。

您可以找到价格在 5 美元到 15 美元之间的电路板。