完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 3guoyangyang7 于 2016-11-3 18:42 编辑
本篇跟着小狂玩ESP32主要讲解网络连接之esp32作为STA连接入路由,这个目前是没有API函数作为参考的,只能根据经验参考例程,和IDE中的头文件,所以文中肯定有不妥之处,小伙伴们感觉小狂哪些东西写的不对的话可以指出,一起讨论。 在正式开始之前,我先填一下上一篇帖子填的坑,上一篇讲到GPIO的时候发现手册,idf中寄存器的地址定义不一样,问了官网上的工作人员,也给出了回复,现在贴上回复,希望不要坑太多的人。 大概意思就是手册上的是错的,先参考头文件的定义,以后会更改的。就这样。闲话少说,直接进入正题。 一、概念关于wifi连接的基本概念,小狂在以前的CC3200的帖子中有详细的描述,如果要是不了解的可以参考cc3200关于STA的帖子。谢谢。 二、代码分析1、初始化wifi环境 Wifi只是ESP32的一个功能所以在做实际应用的时候,可以用也可以不用,所以在使用之前应该先让其初始化。 先初始化,使用的是 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); 在使用任何关于网络的函数之前必须首先调用esp_wifi_init函数。 2、设置模式 ESP32可以工作在STA模式,可以工作在AP模式,也可以工作在STA+AP模式,这些模式需要我们设置,使用esp_wifi_set_mode函数设置当前的工作模式 ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); 可以使用esp_wifi_get_mode()获取当前工作的模式。 3、wifi事件处理 当确定的wifi事件发生时,会调用相应的回调函数给用户指示,所以我们如何确定我们的wifi已经连接到AP上,如何去顶已经获取了IP地址,这些在以后的应用中很重要。以下事件发生的时候会进入回调函数 ①我们已经连接到了无线AP ②从无限AP种断开连接 ③当前的模式转变 ④当ESP32处于AP模式的时候有STA接入 ⑤当ESP32处于AP模式的时候有STA断开 ⑥SSID扫描完成 我们使用esp_event_loop_init()函数来初始化我们的回调函数 ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) ); 回调函数的定义必须为下面的形式 typedef esp_err_t (*system_event_cb_t)(void *ctx, system_event_t *event); 时间的的Id代表具体的发生的事件就不一一解释了,大家看一下就行 如果你想要什么信息直接在回调函数中写明就行,我的回调函数如下图所示 当我们工作在STA模式的时候我们应该配置我们要连接的ap的名称以及密码,具体设置如下 wifi_config_t wifi_config = { .sta = { .ssid = EXAMPLE_WIFI_SSID, .password = EXAMPLE_WIFI_PASS, }, }; 其中.sta段是STA配置,AP配置下回再说,.ssid是你要连接的AP的名称,password是你要连接网络的密码。 调用下面的函数使配置生效 ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &wifi_config) ); 5、启动wifi功能 当所有的配置都完成的时候我们需要启动ESP32的wifi功能,这个时候需要调用esp_wifi_start()我们的配置才能生效,wifi才能开始正常的工作。 ESP_ERROR_CHECK( esp_wifi_start() );到此,已经基本上把STA所需要的操作都讲完了,整体的流程如下图所示 三、验证 我们把程序下载到ESP32中查看我们的网络连接情况 由此可见我们已经让我们的ESP32成功的接入了AP中,这样就可以开心的玩耍了,哈哈,哈哈,网络连接一旦完成我们就能开发各种网络应用了。 四、总结这一篇主要介绍了STA的连接,当时写的时候没有API后来找到了一本书,讲的挺好挺详细的,有需要的可以参考一下,名字叫Kolban’s Book onESP32。里边基本上所以的东西都讲了,还包括了FREEOS、lwip、wifi、硬件的各种API函数,有需要的可以参考。下一篇TCP客户端。 ESP32其他篇请移步 |
|
相关推荐
|
|
|
|
|
|
|
|
|
|
|
|
|
|
功耗不小,发热还行不到烫手的地步,时钟我还真心没改过,提供的应该有可更改的接口 |
|
|
|
|
|
大神你好,我开启了模块的AP模式,可以收到WiFi,但是连不上是是什么情况?
|
|
|
|
|
|
我找到了API的文档,分享一下:http://esp-idf.readthedocs.io/en/latest/api-guides/index.html
我尝试的时候是在linux系统环境下,ubuntu16.04,其中也是路过很多坑,关键的坑就是交叉编译环境的搭建,很多包需要自己根据提示一步步安装,最终还是可以实现的,就是不知道怎么用blink,我看到github上有example了,我也编译并且make flash到板子上了,板子启动也能看到信息,就是不知道如何去调用GPIO点灯,这个步骤走了很久。。上传没有问题,晚上回家再试试,同志们知道的也可以留言哦。 |
|
|
|
|
|
楼主您好:
我的代码在 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); 调不过去 说: WIFI_INIT_CONFIG_DEFAULT() 没有定义,找不到。 请教楼主: 我应该怎样配置 : WIFI_INIT_CONFIG_DEFAULT(); 望指教!谢谢 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
3257 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3904 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3411 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
3964 浏览 1 评论
20603 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
738浏览 2评论
923浏览 2评论
953浏览 1评论
1079浏览 1评论
359浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 16:31 , Processed in 0.950377 second(s), Total 68, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号