【Arduino教程】第十三课:Arduino通过ESP8266接入互联网

您所在的位置:网站首页 esp8266怎么连接到arduino板 【Arduino教程】第十三课:Arduino通过ESP8266接入互联网

【Arduino教程】第十三课:Arduino通过ESP8266接入互联网

2023-08-30 11:50| 来源: 网络整理| 查看: 265

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 #include /*连接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"); }}

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3