【安信可BW16-Kit开发板】WifiWebClient应用
随着物联网的兴起,在许多项目中,我们需要使用Arduino开发板来实现与互联网的无线连接。使用WiFi模块,我们可以轻松实现物联网应用,将传感器数据发送到云平台或者通过云平台控制设备。安信可BW16-Kit具有Ble、Wifi功能。本文将介绍一下在Arduino下使用BW16-Kit开发板连接WEB客户端方法。
一、安信可BW16-Kit介绍
安信可科技BW16是双频 Wi-Fi+蓝牙SoC模组,支持双频(2.4GHz或5GHz)WLAN 和低功耗蓝牙5.0 ,集成了ARM V8兼容Cortex-M4F)高性能MCU、ARM V8M(兼容 Cortex-M0)低功耗 MCU、WLAN(802.11 a/b/g/n)、MAC,蓝牙基带和RF基带,并提供可配置的GPIO口,用于不同外围设备的控制。安信可BW16 集成了内部存储器,支持简单的应用程序开发,可实现完整的Wi-Fi和BT5.0协议功能。
【特性】
- 支持 802.11a/b/g/n 1x1,2.4GHz or 5GHz
- 支持 HT20/HT40 模式
- 支持低功耗信标监听模式,低功耗接收模式,低功耗挂起模式
- 内置 AES / DES / SHA 硬件引擎
- 支持 TrustZone-M,支持安全启动
- 支持 SWD 调试端口访问保护和禁止模式
- 支持 BLE 和 BT5.0
- 蓝牙支持高功率模式(7dBm,与 Wi-Fi 共享同一 PA)
- Wi-Fi 和 BT 共用同一天线
- 支持 STA/AP/STA+AP 工作模式
- 支持安卓、IOS 的 Simple Config(APP)WiFi一键配网
- 支持蓝牙辅助配网
- 支持串口本地升级和远程固件升级(FOTA)
二、环境搭建
BW16-Kit开发板的Arduino开发环境搭建介绍的文章很多,这里就不在赘述,可参考相关文章。【安信可BW16-Kit】+搭建环境 - RF/无线 - 电子工程世界-论坛 (eeworld.com.cn)
三、WifiWebClient应用开发示例
我们使用Ameba连上WiFi,作为客户端,从百度上获取资讯。
- ArduinoIDE环境下选择开发板为Ameba,
- 选择“Tools” -> “Board” -> “Arduino Ameba”
- 然后打开 WiFi Web Client的范例, “File” -> “Examples” -> “WiFi” -> “WiFiWebClient”
将WiFi连线的相关讯息,如下图中黄色标注的地方进行对应的修改。
4、程序如下
#include <WiFi.h>
char ssid[] = "xxxx"; // your network SSID (name)
char pass[] = "xxxx"; // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0; // your network key Index number (needed only for WEP)
int status = WL_IDLE_STATUS;
IPAddress server(153,3,238,102); // numeric IP for Google (no DNS)
//char server[] = "www.baidu.com"; // name address for Google (using DNS)
WiFiClient client;
void setup() {
Serial.begin(115200);
while (!Serial) {
;
}
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
while (true);
}
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid, pass);
delay(10000);
}
Serial.println("Connected to wifi");
printWifiStatus();
Serial.println("\nStarting connection to server...");
if (client.connect(server, 80)) {
Serial.println("connected to server");
client.println("GET /search?q=ameba HTTP/1.1");
client.println("Host: www.baidu.com");
client.println("Connection: close");
client.println();
}
delay(100);
}
void loop() {
while (client.available()) {
char c = client.read();
Serial.write(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting from server.");
client.stop();
while (true);
}
}
void printWifiStatus() {
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
5、程序使用到下面的API函数:
在连线WiFi时会使用到WiFi.begin();
连线成功后会读取WiFi的信息:显示WiFi的名称WiFi.SSID()
显示WiFi的讯号强度WiFi.RSSI()
显示Ameba的IP信息WiFi.localIP()
建立一个Client: WiFiClient()
客户端通过服务器的IP和端口连线client.connect()
向服务器对发送数据并开启新的一行 client.println()
判断是否有数据从服务器端发送过来client.available()
客户端读取数据client.read()
客户端断开与服务器的连线client.stop()
四、运行结果
显示运行结果如下: