你用Arduino建造的电子设备,当你把它们连接到网络上时,就开始变得非常酷了。
让我们看看如何将Arduino连接到WiFi网络。
Arduino必须有WiFi连接,例如我使用的Arduino MKR WiFi 1010,或者Arduino Uno WiFi Rev2和其他。
我们将使用这个库 WiFiNINA.这个库超级方便,可以让我们连接到WiFi网络,如果我们愿意,还可以创建一个WiFi网络。
启动你的Arduino草图,使用:
#include <SPI.h>
#include <WiFiNINA.h>
SPI库被WiFiNINA库使用,所以也要加载它。SPI是串行外设接口的缩写
WiFiNINA 库使我们能够访问我们要使用的WiFi 对象,以及其他东西。
现在让我们来处理setup() 函数的主体,这是我们要实现的唯一的Arduino核心函数(我们将把loop() 留空)。
首先,我们要定义2个字符串来保存网络名称、SSID和网络密码。
我使用Arduino Create,所以我只是使用常数,我将在Secret 标签中单独填写。
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
接下来我们要初始化串行接口,将信息从Arduino传回Arduino Create。
然后我们等待,直到它准备好使用
接下来我们把WiFi.begin()放在一个循环里,检查它的返回值是否是WL_CONNECTED ,并且每2秒不断重试,直到它是。
int status = WL_IDLE_STATUS;
while (status != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(2000);
}
我们首先将其初始化为WL_IDLE_STATUS ,这是WiFiNINA的另一个常量,但我们也可以将其初始化为一个空字符串。
一旦我们结束这个循环,我们就连接上了,我们可以调用WiFi.localIP() 方法来获得设备的IP地址,并将其打印到序列上。
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
下面是完整的程序:
#include <SPI.h>
#include <WiFiNINA.h>
void setup() {
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
Serial.begin(9600);
while (!Serial);
int status = WL_IDLE_STATUS;
while (status != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(5000);
}
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
}
你现在可以获得其他信息,比如用WiFi.SSID() 获取网络SSID,用WiFi.RSSI() 获取信号强度。
Serial.print("Signal strength in dBm: ");
Serial.print(WiFi.RSSI());
在这一点上,你已经连接上了,你可以继续执行其他任务。
注意:你可能有一个NINA的固件升级。在你的程序中加入这个检查。
if (WiFi.firmwareVersion() < WIFI_FIRMWARE_LATEST_VERSION) {
Serial.println("Firmware upgrade available");
}
以了解是否是这样的情况。如果是这样,使用Arduino IDE(我看不到如何从Arduino Create做这个)连接到电路板,然后加载示例草图File -> Examples -> WiFiNINA -> Tools -> FirmwareUpdater

然后打开Tools -> WiFi101 / WiFiNINA Firmware Updater 菜单。

并按下Update Firmware 按钮。
