ESP8266的基本使用及透传编程

来源:互联网 发布:数据库定时同步工具 编辑:程序博客网 时间:2024/06/05 20:48

15年的时候用过一次,当时文档还没现在这么全,这次帮同学做毕设用到了,记录一下基本的使用

手里的模块是ESP-01
具体选项和文档见官网:http://wiki.ai-thinker.com


一:接线

ESP8266

查阅手册可知,正常工作时
VCC ————-3.3V
GND ————-GND
CH_PD————-3.3V
GPIO2————-3.3V
RX ————-TX
TX ————-Rx
其余引脚为空。
烧写时
GPIO0接地。
为了方便使用,我直接将CH_PD和VCC焊在了一起,烧写时只需要把GPIO0引出接到地。

调试的时候用的CH340 USB转串口,网上很多地方强调对电源要求高,最好用五号电池,15年和现在实测直接接USB转串口模块没问题。


共地
这里写图片描述
这里写图片描述

为了烧录方便,把排阵连通做为GND,烧录的时候GPIO0接GND,工作模式直接GPIO0悬空。
此时连接电脑,波特率选择115200,8位数据位,1位停止位,无奇偶校验位,即可进行AT指令测试。


二:开发环境
这次使用发现了Arduino IDE 也可以用来开发ESP8266了,而且完全是Arduino风格。
首先 下载Arduino IDE-文件-首选项-附加开发板管理网址-http://wechat.doit.am/package_esp8266com_index.json-保存。
然后 工具-开发板-开发板管理器-esp8266 by ESP8266 Community-选择2.0-下载。
下载时开发板选择Generic ESP8266 Module CPU 频率 80 MHz。


三:编写程序
这里我编写了两个透传的程序,都是作为station模式连接电脑共享的WIFI。
第一个,ESP8266作为TCP客户端进行透传

#include <ESP8266WiFi.h>const char *ssid     = "WIFISSID";const char *password = "PASSWORD";const char *host = "192.168.191.1";//要连接的TCP服务器IPWiFiClient client;const int tcpPort = 8080;//TCP服务器的端口号void setup(){  Serial.begin(115200);  delay(10);  Serial.println();  Serial.println();  Serial.print("Connecting to ");  Serial.println(ssid);  WiFi.begin(ssid, password);  while (WiFi.status() != WL_CONNECTED)  {    delay(500);    Serial.print(".");  }  Serial.println("");  Serial.println("WiFi connected");  Serial.println("IP address: ");  Serial.println(WiFi.localIP());}void loop(){  while (!client.connected())  {    if (!client.connect(host, tcpPort))    {      Serial.println("connection....");      //client.stop();      delay(500);    }  }  while (client.available())  {    uint8_t c = client.read();    Serial.write(c);  }  if (Serial.available())  {    size_t counti = Serial.available();    uint8_t sbuf[counti];    Serial.readBytes(sbuf, counti);    client.write(sbuf, counti);  }

第二个,ESP8266作为TCP服务端进行透传

#include <ESP8266WiFi.h>const char *ssid     = "WIFISSID";const char *password = "PASSWORD";const int tcpPort = 80;//要建立的TCP服务的端口号WiFiServer server(tcpPort);void setup(){  Serial.begin(115200);  delay(10);  Serial.println();  Serial.println();  Serial.print("Connecting to ");  Serial.println(ssid);  WiFi.begin(ssid, password);  while (WiFi.status() != WL_CONNECTED)  {    delay(500);    Serial.print(".");  }  Serial.println("");  Serial.println("WiFi connected");  Serial.println("IP address: ");  Serial.println(WiFi.localIP());  server.begin();}void loop(){  WiFiClient client = server.available();  if (client) {    while (client.connected()) {      if (client.available()) {        char c = client.read();        Serial.write(c);      }      if (Serial.available())      {        size_t counti = Serial.available();        uint8_t sbuf[counti];        Serial.readBytes(sbuf, counti);        client.write(sbuf, counti);      }    }    delay(1);    client.stop();  }}

官方文档:
http://esp8266.github.io/Arduino/versions/2.0.0/doc/libraries.html#wifiesp8266wifi-library

交流:@坯子王珂

0 0
原创粉丝点击