1.首先要下载ardunio IDE,安装;
2.然后就是接线,由于要下载进去,把gpio0加接地,en脚接3.3,rx接tx,tx接rx,rst脚接3.3,gpio2接3.3;
3.安装开发库,参考这位博主:https://blog.csdn.net/qq_24269643/article/details/87574021
4.tcp的代码
#include <ESP8266WiFi.h>
WiFiServer server(8080);
WiFiClient client;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin ( 115200 );
//Serial.println("");
// 设置内网
IPAddress softLocal(192,168,4,1); // 1 设置内网WIFI IP地址
IPAddress softGateway(192,168,4,1);
IPAddress softSubnet(255,255,255,0);
WiFi.softAPConfig(softLocal, softGateway, softSubnet);
String apName = ("ESP8266_"+(String)ESP.getChipId()); // 2 设置WIFI名称
const char *softAPName = apName.c_str();
WiFi.softAP(softAPName, "12345678"); // 3创建wifi 名称 +密码 adminadmin
//IPAddress myIP = WiFi.softAPIP(); // 4输出创建的WIFI IP地址
//Serial.print("AP IP address: ");
//Serial.println(myIP);
//Serial.print("softAPName: "); // 5输出WIFI 名称
//Serial.println(apName);
server.begin();
}
void loop() {
client = server.available();
if (client)
{
while (client.connected())
{
if(client.available())
{
size_t count = client.available();
uint8_t sbuf[count];
client.readBytes(sbuf, count);
Serial.write(sbuf, count);
}
if(Serial.available())
{
size_t count = Serial.available();
uint8_t sbuf[count];
Serial.readBytes(sbuf, count);
client.write(sbuf, count);
}
delay(5);
}
delay(10);
client.stop();
}
digitalWrite(LED_BUILTIN, LOW);
delay(250);
digitalWrite(LED_BUILTIN, HIGH);
delay(250);
}
程序:在没有连接连上时,led会闪,连上之后就灭了。
5.点击上传,等待完成,之后把gpio0脚悬空,重新上电,就可以用啦。主要是用来把我的小四轴数据传给手机。
凉了一年,又开始搞小四轴了,之前半路吃灰了,上面的tcp通信,实际用的时候,在安卓端和stm32端都出现数据断开了,后面改成udp通信,有一点点改善。stm32接收也要改,之前用的是串口空闲+dma的,老是断开两半过来,,看来还是老实点一个个接。
上个辣鸡四轴的图
这四轴中间改版了几次,还是有bug,电机的供电走线走细,导致转速一上去就挂,后面用几根线直接连电源口用着先。传感器那里,6050还好能用,bmp280感觉是走线或者画的时候引脚出错了,焊上去一丢丢反应都无有。不说了,先上现在的esp01s的代码,有一点点遗憾,串口和udp那里,之后udp那里有东西收到之后,才能获取到udp的ip和端口,也就是说如果udp那边没收到东西,我串口发东西就不知道发给谁了,,
esp8266开的ap,不知道怎么查连入设备的ip,后面再想想办法。
上代码了
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
char receivebuf[255];
char srBuf[255];
unsigned int localUdpPort = 8860;
int sLen = 0;
int packetSize = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin ( 115200 );
//Serial.println("");
// 设置内网
IPAddress softLocal(192,168,4,1); // 1 设置内网WIFI IP地址
IPAddress softGateway(192,168,4,1);
IPAddress softSubnet(255,255,255,0);
WiFi.softAPConfig(softLocal, softGateway, softSubnet);
String apName = ("ESP8266_SZ"); // 2 设置WIFI名称
const char *softAPName = apName.c_str();
WiFi.softAP(softAPName, "12345678"); // 3创建wifi 名称 +密码 adminadmin
Udp.begin(localUdpPort);
}
void loop() {
// put your main code here, to run repeatedly:
packetSize = Udp.parsePacket();
if (packetSize)
{
int len = Udp.read(receivebuf, 255);
if (len > 0)
{
Serial.write(receivebuf,len);
}
}
sLen = Serial.available();
if(sLen)
{
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
while(sLen)
{
Serial.read(srBuf,sLen);
Udp.write(srBuf,sLen);
delay(1);
sLen = Serial.available();
}
Udp.endPacket();
}
}
改进在这里,在网络调试助手测试,之前会分开一段一段发,这样子就连到一起了,只要的想法是,看延时1毫秒后还有无有数据进来,无有就发了。
sLen = Serial.available();
if(sLen)
{
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
while(sLen)
{
Serial.read(srBuf,sLen);
Udp.write(srBuf,sLen);
delay(1);
sLen = Serial.available();
}
Udp.endPacket();
}