收藏本站
登录(Log in)
注册(Registered)
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
工程样例
工程素材
视频教程
官方网站
点击访问官网网站
淘宝商店
FeelElec论坛
»
论坛
›
串口液晶专区
›
应用交流
›
FYU43T4827+ESP8266制作气象站(支持自动识别地区) ...
返回列表
查看:
1777
|
回复:
0
FYU43T4827+ESP8266制作气象站(支持自动识别地区)
[复制链接]
视觉℡
视觉℡
当前离线
积分
254
39
主题
39
帖子
254
积分
管理员
积分
254
发消息
发表于 2018-12-8 15:33:26
|
显示全部楼层
|
阅读模式
相信很多小伙伴都见过使用ESP8266+OLED液晶制作的微型气象站,但是编程比较麻烦,液晶面积太小,可是你见过使用ESP8266+4.3寸彩色液晶制作的气象站吗?
准备材料:
ESP8266 * 1(原厂AT固件)
FYU43T4827液晶一块(
目前正在做活动,仅需49元
)
思路
:FYU43T4827液晶具有串口主动发数据的能力,只需要液晶向串口发送AT指令即可控制ESP8266联网获取天气数据。
测试一下ESP8266 AT指令
1) 设置 wifi 模式:
AT+CWMODE=3
//设置为 softAP+station 共存模式
响应:
OK
2) 重启生效
AT+RST
响应:
OK
3) 连接路由
AT+CWJAP="ssid","password"
// 传入路由的ssid 和 password
响应:
OK
4) 查询设备IP
AT+CIFSR
响应:
192.168.3.106
//返回设备的 IP 地址
5) 设备连接服务器
AT+CIPSTART="TCP","139.129.153.247",80
//传入协议、服务器 IP、端口号
响应:
OK
6) 转换成单点连接
AT+CIPMODE=1
响应:
OK
7) 改为透传模式
AT+CIPSEND
响应:
OK
>
注意:多了一个 “>”,表示已经进入透传模式
8) 发送数据(请求地址为我自己搭建的服务器,并且已经整合过天气数据,只需要调用即可,需要PHP代码的通讯请访问
http://bbs.feelelec.cn/thread-111-1-1.html
)
这里需要一点点HTTP的知识,我们将ESP8266伪装成一个浏览器,所以要加入“请求头”一定要安装我的请求头写,搞了很久才搞出来的。
GET /api/tianqi.php HTTP/1.1
api-key: xUrvOCDB=iRuS5noq9FsKrvoW=s=
Host:feelsight.cn
注意:结束需要有"\r\n\r\n" 两个哦,代表结束符
/api/tianqi.php是请求的详细地址
feelsight.cn 是请求域名
响应:
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 08 Dec 2018 03:21:45 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.45
7a
WTime.txt="2018/12/08 09-01-00"
WCity.txt="郑州市"
Wwtyp.txt="多云"
WHtemp.txt="高温 0.0℃"
WLtemp.txt="低温 -6.0℃"
0
好了,有数据了就开始我们的液晶模块编程了
这是我们的大致界面,不会编写界面的同学可以观看我们的视频教程:
http://bbs.feelelec.cn/mp4/index.html
第一步:页面初始化前需要先将串口回显给关掉,要不然液晶向ESP8266模块发送数据时,ESP8266会返回”OK“指令,OK指令对于液晶模块来说是不识别的,然后液晶模块会返回 0X00 0X0D 0X0A,这一条数据ESP8266模块又不认,就会返回ERROR,结果。。。液晶模块和ESP8266他们两个就干上了,不断互相发数据,所以
必须将液晶模块的回显给关闭”bkcmd=0“
第二步:ESP8266上电瞬间会有一部分数据输出,和等待连接WIFI,所以我们需要将定时器延时10秒钟,然后再发送数据,
timer0.tim=10000 //设定定时器时间
timer0.en=1 //=使能定时器
var0.val=1 //状态机标志位
第三步:开始写我们的任务状态机,由于串口需要发送 \r\n " 等特殊字符串,所以我们改为十六进制发送数据,防止液晶解析不正常
if(var0.val==1)
{
timer0.tim=1000
//连接服务器 指令
readh 41 54 2B 43 49 50 53 54 41 52 54 3D 22 54 43 50 22 2C 22 31 30 34 2E 32 32 34 2E 31 34 38 2E 39 34 22 2C 38 30 0D 0A
var0.val=2
}else if(var0.val==2)
{
//转换成单点连接
readh 41 54 2B 43 49 50 4D 4F 44 45 3D 31 0D 0A
var0.val=3
}else if(var0.val==3)
{
//改为透传模式
readh 41 54 2B 43 49 50 53 45 4E 44 0D 0A
var0.val=4
}else if(var0.val==4)
{
var0.val=5
timer0.tim=2000//延时2秒等待接收到的天气数据
//发送我们的http请求
readh 47 45 54 20 2F 61 70 69 2F 74 69 61 6E 71 69 2E 70 68 70 20 48 54 54 50 2F 31 2E 31 0D 0A 61 70 69 2D 6B 65 79 3A 20 78 55 72 76 4F 43 44 42 3D 69 52 75 53 35 6E 6F 71 39 46 73 4B 72 76 6F 57 3D 73 3D 0D 0A 48 6F 73 74 3A 65 69 72 62 69 6F 2E 63 6E 0D 0A 0D 0A
}else if(var0.val==5)
{//开始更新图标显示信息
if(Wwtyp.txt=="晴")
{
picBox1.pic=1
}else if(Wwtyp.txt=="多云")
{
picBox1.pic=2
}else if(Wwtyp.txt=="阴")
{
picBox1.pic=3
}else if(Wwtyp.txt=="雷阵雨")
{
picBox1.pic=4
}else if(Wwtyp.txt=="小雨")
{
picBox1.pic=5
}else if(Wwtyp.txt=="大雨")
{
picBox1.pic=6
}
var0.val=4
timer0.tim=60000
}
本案例工程代码:
http://bbs.feelelec.cn/forum-2-1.html
回复
使用道具
举报
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
最佳新人
注册账号后积极发帖的会员
活跃会员
经常参与各类话题的讨论,发帖内容较有主见
优秀版主
活跃且尽责职守的版主
快速回复
返回顶部
返回列表