单片机学习(四)

您所在的位置:网站首页 单片机是干什么 单片机学习(四)

单片机学习(四)

2023-09-19 07:57| 来源: 网络整理| 查看: 265

 

文章目录 前言一、ESP8266可以干什么?二、ESP8266作为传输数据的开发 1.电路连接图2.ESP8266直接烧录3.通过Arduino对ESP8266进行烧录三、ESP8266作为开发板的开发四、可能会存在的问题总结 前言

ESP8266 Wi-Fi模块作为可以进行WiFi传输的模块集成了业内领先的Tensilica L106超低功耗32位微型MCU,带有16位精简模式,主频可达160MHz。同时支持RTOS(Real Time Operating System)集成Wi-Fi MAC/BB/RF/PA/LNA和 IEEE802.11 b/g/n 协议,支持完整的TCP/IP协议栈,也支持STA(Station),AP(Access Point),ATA+AP三种模式。

一、ESP8266可以干什么? ESP8266可以作为辅助的模块进行数据的传输:可以在Arduino IDE的主程序内创建函数进行编写,将Arduino开发板连接的检测模块的数据通过ESP8266传输到服务器等ESP8266也可以直接作为开发板通过Arduino IDE进行编译 二、ESP8266作为传输数据的开发 1.电路连接图 ESP8266具有两种烧录的模式,使用者需要根据自己的需要进行不同电路的连接:

(一)通过AT指令进行烧录,在此烧录模式下需要将ESP8266与USB转TTL连接通过电脑的烧录软件进行烧录,具体的连接图如图1所示:

(二)通过Arduino进行代码烧录,在此模式下需要将ESP8266与Arduino进行连接,通过Arduino IDE编写代码对Arduino板子进行烧录,具体连接如图2所示:

2.ESP8266直接烧录 按照图1连接电路,将USB口插入电脑端,在我的电脑管理内查询端口号,第一次使用可能会出现无法显示的问题可以安装CH340驱动(一般window10系统会自动安装驱动/CH340驱动模块以及后面说的工具我会在后面给大家链接)识别出端口号后要记住,在烧录的时候会使用。打开SSCOM串口调试工具或者其他串口调试工具(本文以SSCOM作为例子),根据你在管理看到的串口号选择自己的串口(一定要在USB插上电脑后在打开,否则可能会找不到自己的串口号),波特率选择115200(ESP8266默认出厂频率为115200,想要更改可以通过AT固件重刷,不过我没有用到过,有需要的可以自行百度),打开串口。

进行AT指令的发送,AT指令集如下所示(这些指令集是几年前当的,现在那篇博客没有了,如果博客大大看到的话,感谢博客大大提供这么全的资料!):

1. AT+CWMODE 选择 wifi 应用模式

STA模式(1):Station,类似无线网终端,接收无线的接入。

AP模式(2):ACCESS POINT 提供无线网服务,允许其他无线设备接入。

AP+STA模式(3)

2. AT+CWJAP 加入 AP

3. AT+CWLAP 列出可用AP

4. AT+CWQAP 退出与AP连接

5. AT+CWSAP 设置AP模式下的参数

6. AT+CWLIF 查看已经连接的IP

TCP/IP指令集

1. AT+CIPSTATUS 查看连接状态

2. AT+CIPSTART 建立TCP连接或者注册 UDP端口号

3. AT+CIPEND 发送数据

4. AT+CIPCLOSE 关闭TCP UDP连接

5. AT+CIFSR 获取本地IP地址

6. AT+CIPMUX 启用多连接

7. AT+CIPSERVER 配置服务器

如果你不太清楚自己需要什么的话一般都使用STA模式,连接自己的热点,访问服务器,可以按照下图去发送:

如果你选择的模式是STA,可以打开网络调试助手选择TCP Sever,输入自己本地的IP地址测试是否通讯成功,如果成功会在数据接收部分显示通过ESP8266传输的数据。 3.通过Arduino对ESP8266进行烧录 方法一:通过Arduino对ESP8266烧录需要先打开Arduino IDE编译器,新建一个工程,将下面代码copy过去,选择你要烧录的Arduino的板子和串口进行烧录,通过串口监视器(选择115200波特率的)发送你要配置的AT指令进行手动烧录 /*************************************************** * * 名称:ESP8266 01S AT指令手动联网 * 接线: * Arduino nano ESP8266 01S * D2(RX) ——— TX * D3(TX) ——— RX * VCC(3.3) ——— VCC(&EN) * GND ——— GND * ****************************************************/ #include SoftwareSerial mySerial(2,3);//RX ,TX wifiSerial void setup() { Serial.begin(115200); while (!Serial) { ; } Serial.println("ok"); mySerial.begin(115200); mySerial.println("ready"); } void loop() { if(mySerial.available()) Serial.write(mySerial.read()); if(Serial.available()) mySerial.write(Serial.read()); }  方法二:自己写一个函数,写上自己需要发送的指令,在初始化过程中调用此函数,在主函数中使用Serial.println(****);(****为你要传输的数据)将数据发送出去,核心代码如下所示: void setup() { Serial1.begin(115200); wifibegin(); } void wifibegin() { delay(8000); Serial1.println("AT");delay(2000); Serial1.println("AT+RST");delay(2000); Serial1.println("AT+CWMODE=1");delay(2000); Serial1.println("AT+CIPMODE=1"); delay(4000); Serial1.println("AT+CIPSTART=\"TCP\",\"IP地址\",端口号"); delay(4000); Serial1.println("AT+CIPSEND"); delay(4000); } 三、ESP8266作为开发板的开发 ESP8266作为开发板需要先配置好环境,打开Arduino,选择文件首选项,将下面的地址修改成:http://wechat.doit.am/package_esp8266com_index.json

再选择工具管理库,就会看到正在加载库,搜索ESP8266,下载ESP8266的库

以下代码可以直接烧录到ESP8266的板子上,可用于测试,ESP8266还有更多自身的开发,可以去百度找相关资料 #include #define led 2 //发光二极管连接在8266的GPIO2上 const char *ssid = "kiki";//这里写入网络的ssid const char *password = "1234567890k";//wifi密码 const char *host = "192.168.174.1";//修改为Server服务端的IP,即你电脑的IP,确保在同一网络之下。 WiFiClient client;//声明一个客户端对象,用于与服务器进行连接 const int tcpPort = 8266;//修改为你建立的Server服务端的端口号,此端口号是创建服务器时指定的。 static String comdata = ""; static String val = ""; void setup() { Serial.begin(115200); pinMode(led,OUTPUT); delay(10); Serial.println(); Serial.print("Connecting to ");//会通过usb转tll模块发送到电脑,通过ide集成的串口监视器可以获取数据。 Serial.println(ssid); WiFi.begin(ssid, password);//启动 //在这里检测是否成功连接到目标网络,未连接则阻塞。 while (WiFi.status() != WL_CONNECTED) { delay(500); } //几句提示 Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { /******************串口接受数据************************/ while (Serial.available() > 0) // 串口收到字符数大于零。 { comdata += char(Serial.read()); } /******************串口打印数据************************/ if(comdata!="")//如果接受到数据 { client.print(comdata);//向服务器发送数据 } comdata="";//清空数据 if (client.connected()) //尝试访问目标地址,如果没连接上LED灯灭 Serial.println("connect client fail"); //digitalWrite(led, LOW); else Serial.println("connect client ok"); //digitalWrite(led, HIGH); while (!client.connected())//若未连接到服务端,则客户端进行连接。 { if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true { Serial.println("连接中...."); delay(500); } } while (client.available())//available()表示是否可以获取到数据 { // char val = client.read();//read()表示从网络中读取数据。 while (client.available() > 0) // 串口收到字符数大于零。 { val += char(client.read()); } client.print("text:"+val); val="";//清空数据 } delay(1); } 编译的时候一定要选择对开发板,根据你的ESP8266型号选择

四、可能会存在的问题 串口号找不到可能是因为没有驱动,或者先打开了串口调试助手,或者是因为USB转TTL出现了问题,可以从这些进行尝试判断AT发送失败,可能是电路连接问题(我的VCC一直连接的是3.3V,有看到资料说不能连接5V可以注意一下),可能是ESP8266模块坏掉了(可以多买几个备用着),还有可能是因为之前烧录过,这个时候需要对ESP8266模块进行固件初始化,具体步骤如下:

1.连接方式参考图1,这里比图一多了一个GPIO0要接GND其他一样

2.打开一键烧写的软件,选择配置选项卡,点击小齿轮图标 - 加载固件地址

3.只选择第二个选项(固件地址),最后的地址为默认的0x00000,其他不更改

4.返回操作选项卡,选择正确COM端口,点击一键下载

5.等待下载完成,Finish

总结

这个模块的研究不是一帆风顺,会有很多小问题,希望大家能通过此文有所收获,能帮助大家解决一些小问题,最后给大家放上工具的连接地址,可以免费下载

地址:https://download.csdn.net/download/sunshineQY/16661852

 

 



【本文地址】


今日新闻


推荐新闻


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