完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、ESP32-CAM高性价比温湿度监控系统配网与上网方案设计与实现是什么?
在这一期项目中:将要实现一个WEB配网方式,通过ESP32-CAM先创建一个知道账号和密码的AP热点“daodanjishui”,然后用手机WIFI通过输入密码asdfghjkl连上这个热点,再用该手机打开浏览器,在浏览器网址输入栏输入192.168.4.1(热点的IP是固定的,如果想在局域网实现DNS域名解析,请看第四篇:ESP32-CAM创建热点构成并发式DNS服务器,输入网址之后就可以看到保存在ESP32的配网主页,在主页输入要链接的无线WIFI账号和密码 ,点击连接即可。连上Internet之后,自然可以轻松地发送get请求,最后请求"心知天气"的服务器返回北京的天气预报,最后ESP32-CAMM模块通过串口打印出来天气情况,以此来证明ESP32-CAM确实能与外网相互通信。 二、软件开发思路 1.编写配网主页 首先编写一个配网主页,存入单片机。 代码如下(示例): 然后单片机开机之后创建一个无需密码的热点,手机连上如下图的热点 连上无密码热点之后在其浏览器上输入地址192.168.4.1(这个热点IP是不会变的,所以不用看串口打印的IP地址就可以写对)先显示这个配网主页,如下图所示: 让用户输入无线热点的账号和密码,通过提交网页表单的方式让单片机接收该账号和密码去运行配网的代码从而实现智能网页配网(如果密码正确,ESP32会在串口打印出有关网络信息(箭头1),并且利用该网络发送get请求(箭头2)。用户可以修改为LED指示灯也是没有问题的)。配网成功之后切换联网模式正常上网,上网之后获取心知天气的天气预报。串口打印信息如下: 互联网上的“心知天气”服务器收到该ESP32-CAM发送的get请求,就会把json格式的天气预报信息返回给ESP32-CAM,ESP32-CAM再将该信息打印到串口上,如上图的箭头三所示(不想让程序复杂化,这里我没有做json字符串解析),如下图所示 2.单片机读入表单数据 通过单片机读取网页表单的密码和账号完成配网 代码如下(示例): void HandleVal() { String wifis = server.arg("ssid"); //从JavaScript发送的数据中找ssid的值 String wifip = server.arg("password"); //从JavaScript发送的数据中找password的值 Serial.println(wifis); Serial.println(wifip); //WiFi.begin(wifis,wifip); WiFi.begin(wifis.c_str(),wifip.c_str()); } 3.单片机发送post请求获取心知天气服务器的数据 单片机连上互联网之后就可以实时获取网络上服务器的数据了。现在就不是局域网的通信了。 String postRequest =(String)("GET ") + url + " HTTP/1.1rn" + //"Content-Type: text/html;charset=utf-8rn" + "Host: " + host + "rn" + "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8rn"+ "Accept-Language:zh-cnrn"+ //"User-Agent: daodanjishuiESP32rn" + "Connection: Keep Alivernrn"; Serial.println(postRequest); client.print(postRequest); // 发送HTTP请求 // 展示返回的所有信息 String line = client.readStringUntil('n'); while(line.length() != 0){ Serial.println(line); line = client.readStringUntil('n'); } Serial.println(line); client.stop(); 总结:这套代码可以学到图传摄像头ESP32-CAM WEB配网、AP模式发布配网主页到手机浏览器、嵌入式服务器获取表单数据、STA模式连上Internet、发送GET请求给远程服务器获取天气预报。免费版的代码是没有注释的,收费版是有详细注释的,收费版还送了网页源码和get请求格式指导,随君选择。本项目涉及到的有关项目都是原创为主,不是什么51单片机点灯之类程序,挑选的是比较新的前沿的设备进行创作。 |
|
|
|
只有小组成员才能发言,加入小组>>
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
1455 浏览 0 评论
3339 浏览 9 评论
3017 浏览 16 评论
3508 浏览 1 评论
9104 浏览 16 评论
1222浏览 3评论
632浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
621浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2363浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1928浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 22:02 , Processed in 1.332672 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号