【安信可BW16-Kit开发板】WifiWebClient应用
<div class='showpostmsg'><p align="center"><b>【安信可BW16-Kit开发板】WifiWebClient应用</b></p><p > </p>
<p >随着物联网的兴起,在许多项目中,我们需要使用Arduino开发板来实现与互联网的无线连接。使用WiFi模块,我们可以轻松实现物联网应用,将传感器数据发送到云平台或者通过云平台控制设备。安信可BW16-Kit具有Ble、Wifi功能。本文将介绍一下在Arduino下使用BW16-Kit开发板连接WEB客户端方法。</p>
<p ><b>一、安信可BW16-Kit介绍</b></p>
<p >安信可科技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协议功能。</p>
<p >【特性】</p>
<ul>
<li >支持 802.11a/b/g/n 1x1,2.4GHz or 5GHz </li>
<li >支持 HT20/HT40 模式 </li>
<li >支持低功耗信标监听模式,低功耗接收模式,低功耗挂起模式 </li>
<li >内置 AES / DES / SHA 硬件引擎 </li>
<li >支持 TrustZone-M,支持安全启动 </li>
<li >支持 SWD 调试端口访问保护和禁止模式 </li>
<li >支持 BLE 和 BT5.0 </li>
<li >蓝牙支持高功率模式(7dBm,与 Wi-Fi 共享同一 PA) </li>
<li >Wi-Fi 和 BT 共用同一天线 </li>
<li >支持 STA/AP/STA+AP 工作模式 </li>
<li >支持安卓、IOS 的 Simple Config(APP)WiFi一键配网 </li>
<li >支持蓝牙辅助配网 </li>
<li >支持串口本地升级和远程固件升级(FOTA)</li>
</ul>
<p ><b>二、环境搭建</b></p>
<p >BW16-Kit开发板的Arduino开发环境搭建介绍的文章很多,这里就不在赘述,可参考相关文章。<a href="https://bbs.eeworld.com.cn/thread-1270568-1-1.html" style="color:blue; text-decoration:underline">【安信可BW16-Kit】+搭建环境 - RF/无线 - 电子工程世界-论坛 (eeworld.com.cn)</a></p>
<p ><b>三、WifiWebClient应用开发示例</b></p>
<p >我们使用Ameba连上WiFi,作为客户端,从百度上获取资讯。</p>
<ol>
<li >ArduinoIDE环境下选择开发板为Ameba,</li>
<li >选择“Tools” -> “Board” -> “Arduino Ameba”</li>
<li >然后打开 WiFi Web Client的范例, “File” -> “Examples” -> “WiFi” -> “WiFiWebClient”</li>
</ol>
<p align="left" ><o:wrapblock> </o:wrapblock></p>
<p> </p>
<div style="text-align: center;"></div>
<p> </p>
<p>将WiFi连线的相关讯息,如下图中黄色标注的地方进行对应的修改。</p>
<p align="left" style="text-align: center;"> </p>
<p >4、程序如下</p>
<pre>
<code>#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");
}</code></pre>
<p align="left" > </p>
<p >5、程序使用到下面的API函数:</p>
<p >在连线WiFi时会使用到WiFi.begin();</p>
<p >连线成功后会读取WiFi的信息:显示WiFi的名称WiFi.SSID()</p>
<p >显示WiFi的讯号强度WiFi.RSSI()</p>
<p >显示Ameba的IP信息WiFi.localIP()</p>
<p >建立一个Client: WiFiClient()</p>
<p >客户端通过服务器的IP和端口连线client.connect()</p>
<p >向服务器对发送数据并开启新的一行 client.println()</p>
<p >判断是否有数据从服务器端发送过来client.available()</p>
<p >客户端读取数据client.read()</p>
<p >客户端断开与服务器的连线client.stop()</p>
<p > </p>
<p ><b>四、运行结果</b></p>
<p >显示运行结果如下:</p>
<p align="center" > </p>
<p ><span style="display: none;"> </span> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>测试步骤比较详细,运行结果还行</p>
页:
[1]