您当前的位置:首页 > 教程 > Arduino教程 > 【Arduino教程】第十三课:Arduino通过ESP8266接入互联网 网站首页 Arduino教程
【Arduino教程】第十三课:Arduino通过ESP8266接入互联网
发布时间:2018-02-26 13:26:15编辑:阅读()
-
ESP8266是一个WIFI转串口的模块,内部集成了TCP/IP协议栈,既可以独立使用也可以作为从机搭载在单片机上使用。
1、准备材料
ESP8266模块1个
Arduino板1块,主控芯片必须是Atmega328或更高的芯片(需要使用软串口)
杜邦线若干
2、ESP8266初始配置
ESP8266在使用前需要做初始的配置和验证。
具体配置方法参考这里:WIFI模块ESP8266使用方法
3、Arduino中ESP8266库下载
在如下地址下载ESP8266的库
链接:https://pan.baidu.com/s/1kXgmPbp 密码:40yr
下载后解压把SerialESP8266wifi.cpp和SerialESP8266wifi.h文件安装到Arduino的Library目录,或者把这两个文件直接放到自己的代码目录中。
4、ESP8266与Arduino连接
5、测试代码
ESP8266作为TCP的服务端,通过tcp调试助手可以给ESP8266发送命令,并且能够看到返回结果
注意:一定要修改代码中的SSID和PASSWORD,改成自己的wifi用户名和密码;如果要通过串口查看esp8266的日志信息需要额外接一个USB转TTL模块,因为esp8266连接了arduino的物理串口,调试信息是通过软串口打印出来的。
#include <SoftwareSerial.h>
#include <SerialESP8266wifi.h>
/*连接USB转TTL的TX引脚*/
#define sw_serial_rx_pin 4
/*连接USB转TTL的RX引脚*/
#define sw_serial_tx_pin 6
/*连接esp8266的CH_PD引脚,注意不是reset引脚(reset引脚悬空)*/
#define esp8266_reset_pin 5
/*把SSID和PASSWORD修改成自己的wifi用户名和密码*/
#define SERVER_PORT "2121"
#define SSID "YourSSID"
#define PASSWORD "YourPassword"
SoftwareSerial swSerial(sw_serial_rx_pin, sw_serial_tx_pin);
/*最后一个参数设置ESP8266的调试串口*/
SerialESP8266wifi wifi(Serial, Serial, esp8266_reset_pin, swSerial);
void processCommand(WifiMessage msg);
uint8_t wifi_started = false;
/*TCP命令*/
const char RST[] PROGMEM = "RST";
const char IDN[] PROGMEM = "*IDN?";
void setup() {
/*调试串口*/
swSerial.begin(9600);
/*与esp8266连接的物理串口*/
Serial.begin(115200);
while (!Serial)
;
Serial.println("Starting wifi");
swSerial.println("Starting wifi");
wifi.setTransportToTCP();
wifi.endSendWithNewline(false);
wifi_started = wifi.begin();
if (wifi_started) {
wifi.connectToAP(SSID, PASSWORD);
wifi.startLocalServer(SERVER_PORT);
} else {
/*初始化失败*/
}
}
void loop() {
static WifiConnection *connections;
/*检查连接*/
if (wifi_started)
wifi.checkConnections(&connections);
/*检查每个连接上是否有数据*/
for (int i = 0; i < MAX_CONNECTIONS; i++) {
if (connections[i].connected) {
WifiMessage msg = wifi.getIncomingMessage();
if (msg.hasData) {
/*发送命令*/
processCommand(msg);
}
}
}
}
void processCommand(WifiMessage msg) {
char espBuf[MSG_BUFFER_MAX];
int set;
char str[16];
sscanf(msg.message,"%15s %d",str,&set);
if ( !strcmp_P(str,IDN) ) {
wifi.send(msg.channel,"ESP8266wifi Example");
}
else if ( !strcmp_P(str,RST) ) {
wifi.send(msg.channel,"SYSTEM RESET...");
/*通过软件复位arduino*/
asm volatile (" jmp 0");
}
/*未知命令*/
else {
wifi.send(msg.channel,"ERR");
}
}
关键字词:ESP8266代码,Arduino连接ESP8266,Arduino 教程
相关文章
-
无相关信息