ESP8266配网并将IP显示至oled液晶屏 ESP8266远程连接服务器控制灯或继电器
时间:2022-09-22 13:30:00
智能车与机器人技术交流平台
概述
有些人可能已经熟练地写作了ESP8266程序,但因为我花了大约一周的时间学习和使用,踩了很多坑,所以如果你不喜欢,不要看或喷。本文仅分享和交流一些经验供参考。
主要工作是连接服务器,使用app控制灯的亮灭,以此类推IIC或者其他传感数据。以下是几张成果照片,只是项目的一部分,完整的项目代码将在后续发布。
模块用的ESP8266MOD,协议是TCP,APP用的TCP连接(可以在浏览器上下载),因为阿里云,腾讯的服务器是MQTT因此,本协议的程序也将发布。
TCP直连APP可直接在聊天窗口发消息,也可自行设置在12宫格中,我设置的开关灯。
实现方法
1、ESP8266配网
安信可公众号配网一键配网功能,wifi写入名称和密码。
WiFi.mode(WIFI_STA);//设置工作模式
WiFi.beginSmartConfig()///开始快速连接开启快速连接模式ESP8266Station到AP。ESP8266在空中捕获特殊数据包,包括标AP的SSID和password同时,用户需要通过手机或电脑广播加密信息SSID和password信息。
WiFi.smartConfigDone()//等待配网完成。
WiFi.status()///判断当前是否连接,判断此时wifi状态,做好相应的操作。
WiFi.localIP());ESP8266的ip
WiFi.gatewayIP();//路由IP,可以打印在串口或显示oled液晶屏,我没有显示和本地ip操作一致。
Oled这里不解释液晶屏,可以自己看资料,网上很多,会IP显示在oled显示屏花了我半天时间,IP地址属于IP类型不能直接显示,因此需要将其转换为字符串,然后转换为字符串char*格式,具体操作见下。
ip1=WiFi.localIP().toString();
OLED_ShowString(0,6,(char*)(ip1.c_str(),16);
千万不要一蹴而就将整个公式写一行代码,因为Arduino软件本身或模块问题(不太清楚),最好一步一步写公式,否则会出错。
2.连接服务器
服务器IP端口是固定的,所以你需要检查你想要连接的服务器来澄清他们的信息。
client.connect(serverIP,serverPort)///模块连接WIFI服务器通过路由连接,serverIP,是IP地址,serverPort是端口,连接成功返回1,反之亦然。
client.available()//判断是否有数据到达,有返回1,没有返回0。
client.read()///读取服务器发送的数据。
client.write()///向服务器发送数据。
3.接收数据分析操作IO口
操作IO嘴开始我用的乐心SDK,软件是ARduino不知道是不是因为没有乐信提供软件。IDE还是什么导致操作失败,所以后来又用了ARDuino的SDK来操作,Arduino引脚不同于8266,关系表如下。
staticconstuint8_tD0=16;
staticconstuint8_tD1=5;
staticconstuint8_tD2=4;
staticconstuint8_tD3=0;
staticconstuint8_tD4=2;
staticconstuint8_tD5=14;
staticconstuint8_tD6=12;
staticconstuint8_tD7=13;
staticconstuint8_tD8=15;
staticconstuint8_tD9=3;
staticconstuint8_tD10=1;
如果要操作IO12,#defineLEDD6
pinMode(LED,OUTPUT);///配置输入或输出
digitalWrite(LED,HIGH);//设置高digitalWrite(LED,LOW);//设置低
没有其他困难。
关注微信官方账号,后台私信留邮箱。
调试
下载调试过程时有时会出现错误,COM5或者三口不存在或者找不到是重新插拔下载,而是找到Arduino软件的Driver重新下载驱动文件。
二、注意Arduino软件是g 有些语法不跟C语言C 一样,比如void*可代替所有类型的指针,但是此软件会报错,只能用同宗同源的类型。
最后,请多加支持,谢谢!
已修改0/20
还没有开始修改
预览提交修改
undefined