学习任务:
WiFiduino作为TcpClient发送数据到TCP服务器
组件:
- WiFiduino主板
- USB数据线
下图为WiFiduino主板
实验步骤:
1.打开串口调式助手
2.烧录代码
/*
WiFiduino作为TcpClient连接到服务器
*/
#include <ESP8266WiFi.h>
// 需要连接到的WiFi名【WiFi必须是2.4G频段】
const char* ssid = "OnePlus";
//WiFi密码
const char* password = "2553414176";
void setup() {
// 初始化串口通讯波特率为115200
Serial.begin(115200);
// 设置Wifi工作模式为STA,默认为AP+STA模式
WiFi.mode(WIFI_STA);
// 通过wifi名和密码连接到Wifi
WiFi.begin(ssid, password);
// 串口监视器输出网络连接信息
Serial.print("正在连接... ");
int i = 0;
// WiFi.status()函数的返回值是由WiFiduino的WiFi连接状态所决定的, 如果WiFi连接成功则返回值为WL_CONNECTED
while (WiFi.status() != WL_CONNECTED)
{
// 此处通过While循环让WiFiduino每隔一秒钟检查一次WiFi.status()函数返回值
delay(1000);
Serial.print("正在连接");
Serial.print(i++);
}
// WiFiduino将通过串口监视器输出"连接成功"信息。
Serial.println("连接成功");
// 同时还将输出WiFiduino的IP地址。这一功能是通过调用
Serial.print("IP地址: ");
// WiFi.localIP()函数来实现的。该函数的返回值即WiFiduino的IP地址。
Serial.println(WiFi.localIP());
}
const char* host = "192.168.221.44";
const uint16_t port = 8266;
void loop() {
/* 新建一个WiFiClient类对象,作为TCP客户端对象 */
WiFiClient tcpclient;
/* 建立TCP连接 */
if (!tcpclient.connect(host, port)) {
// 如果连接失败,则打印连接失败信息,并返回
Serial.println("连接失败");
delay(5000);
return;
}
/* 如果连接成功,则发送一个字符串到TCP服务器 */
Serial.println("连接成功,发送是数据到TCP服务器");
if (tcpclient.connected()) {
tcpclient.println("hello, I am WiFiduino.");
}
/* 等待TCP服务器返回消息 */
Serial.println("等待TCP服务器返回数据...");
while (tcpclient.available() == 0) {}
Serial.println("received data:");
while (tcpclient.available()) {
char ch = static_cast<char>(tcpclient.read());
Serial.print(ch);
}
Serial.println();
/* 接受到服务器返回的消息后关闭TCP连接 */
Serial.println("关闭连接");
tcpclient.stop();
/* LED闪烁 */
pinMode(2, OUTPUT);
while(1){
digitalWrite(2, LOW);
delay(300);
digitalWrite(2, HIGH);
delay(300);
}
}
3.实验现象
网络调试助手显示有新的客户端连接成功,并收到 **hello, I am WiFiduino.**网络调试助手回复数据,在arduino串口调试助手看到数据。