ESP8266 SDK开发篇(二)——连接wifi
来源:互联网 发布:苹果编程app 编辑:程序博客网 时间:2024/06/04 19:05
上一节我讲了搭建SDK开发环境以及烧录方式,那么从这一节开始就进入正题——如何进行SDK开发,既然ESP8266是wifi模块,那么我就从如何连接wifi开始讲起。
一、建立工程
我开发的时候比较早,用的是NONOS_v1.5.0的sdk,最新的v2.1.0的sdk烧录好固件后,上电会一直出Fatal exception 28的错误,搞了一天没弄清楚,所以用还留着的v1.5.3的sdk讲解,具体使用方法不会有很大改变,详细也可以参考API文档。
打开解压sdk包,将example文件夹下的IOT_Demo复制替换到app文件夹下,并将driver_lib/include/driver下的uart.h、uart_register.h
复制到app/include下,driver_lib/driver下uart.c
复制到app/driver下,同时将driver_lib下Makefile文件改名或者删除,懂makefile的朋友可以自行修改makefile文件否则会出现编译错误,目录结构如下。
目录结构
我们主要修改的是user_main.c这个文件,将user_init()函数是程序入口,里的内容全删了
此外头文件修改为
#include "ets_sys.h"#include "osapi.h"#include "user_interface.h"#include "uart.h"
user_rf_pre_init()
这个函数不要删除,放着即可,这样user_main.c文件只有void user_rf_pre_init(void)、void user_init(void)
这两个函数,以及4个头文件。
二、连接wifi
要连接wifi首先要指定要连接的wifi账号和密码,则需要定义两个变量来存放它们,同时还需要定义一个结构体用于存放:Wi-Fi Station 接口参数。
struct station_config station_cfg;uint8 ssid[]="xxx"; //wifi名uint8 password[]="xxx"; //wifi密码
新买到的模块默认是作为AP,这里我们需要将它修改作为Station,这样才能连wifi,这里我将这几个操作放入一个函数里面。
void ICACHE_FLASH_ATTRuser_set_station_config(void){ wifi_set_opmode(STATION_MODE); //设置为STATION MODE os_strcpy(station_cfg.ssid, ssid); //ssid名称 os_strcpy(station_cfg.password, password); //密码 wifi_station_set_config(&station_cfg); //设置WIFI帐号和密码}
注:添加ICACHE_FLASH_ATTR宏定义是因为8266的iRam空间有限,所以上电启动时不能把所有数据都放入iRam,只有在需要用到的时候才载入,因此推荐一般的函数都加ICACHE_FLASH_ATTR。
这样我们就能把这个函数放到user_init()中了,如下所示。
void user_init(void){ uart_init(BIT_RATE_115200,BIT_RATE_115200); //设置波特率为115200 os_printf("SDK version:%s\n", system_get_sdk_version()); //打印sdk版本 user_set_station_config(); //set STATION config //user_set_station_config()中调用wifi_station_set_config(&station_cfg) //底层会自动连接对应路由,不需要调用 wifi_station_connect 来进行连接。}
编译通过后烧入固件就能查看效果了。
串口输出
路由器后台
这样最简单的连接wifi就完成了,为后续要跟服务器进行TCP/UDP协议的通信打下基础,那么问题来了,连上wifi是否意味着一定能上网?假设能通过这个路由器上网,但是如果节点很多,超过了DHCP分配范围的话,这样芯片就获取不了ip,因此需要判断芯片是否分配到了ip地址,这个就作为本讲作业,给刚入门的朋友思考一下(提示:多看API文档)。
本讲用到的sdk和文档可以从此处下载
- ESP8266 SDK开发篇(二)——连接wifi
- Wifi模块——ESP8266(二)
- WiFi-ESP8266入门开发(二)-连接WiFi网络
- ESP8266 SDK开发篇(三)——定时器
- ESP8266 SDK开发篇(四)——UDP通信
- ESP8266 SDK开发篇(五)——GPIO
- ESP8266--学习笔记(二)扫描、连接WiFi
- Wifi模块——ESP8266(一)
- Wifi模块——ESP8266(三)
- ESP8266 SDK开发篇(一)——环境与烧录
- ESP8266的WIFI连接
- Android WiFi开发教程(二)——WiFi的搜索和连接
- 小e开发板(esp8266)连接Arduino实现WiFi扫描
- <WIFI>ESP8266定时器的使用(基于安信可SDK)
- ESP8266 RTOS SDK开发
- ESP8266 SDK开发1
- ESP8266 sdk开发入门
- ESP8266-SDK开发入坑(二)-点亮第一个LED
- 通用资源分配算法
- 破解 jar 包之直接修改 .class 文件方式
- 进程撤销
- 基于springboot的框架搭建(3)取消bean对象使用hashmap代替
- 迭代加深搜索 (IDA*)
- ESP8266 SDK开发篇(二)——连接wifi
- JAVAse部分小结,从入门到进阶
- 手动打jar包
- (十)插值与拟合
- UVA1636Headshot
- 贪心+思维策略
- ZOJ 3204 Connect them 最小生成树+字典序最小
- c语言初步经典题14--计算一元二次方程的根
- 九度OJ1078