收藏官网首页
查看: 1440|回复: 0

[分享] 8266 使用non-os-sdk 连接wifi示例

106

主题

107

帖子

7261

积分

论坛元老

Rank: 8Rank: 8

积分
7261
跳转到指定楼层
楼主
 楼主| 发表于 2023-10-6 23:37:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
    在上次的文章里,介绍了如何简单使用non-os-sdk的项目,接下来,我们使用这个sdk来实现wifi的连接和任务创建。
wifi连接:

连接WiFi是esp8266应用程序中的关键步骤之一,它允许设备与互联网通信。在ESP8266 Non-OS SDK中,WiFi连接通常涉及几个步骤,包括设置连接参数、连接到WiFi网络、等待连接成功等。

首先是头文件的引入,要使用non-os-sdk 来运行8266,要确保我们要有相关的头文件,最少的头文件要求如下:

  1. #include "ets_sys.h"
  2. #include "osapi.h"
  3. #include "user_interface.h"
复制代码


接下来,我们就可以编写wifi连接的代码了,首先我们看一下sdk技术手册里关于wifi连接的函数说明



说明里提示了,在设置wifi和连接wifi,需要先设置wifi的模式,我们连接wifi主要使用sta模式,此外,说明里还提到,wifi_station_set_config在user_init里调用,则esp8266 会在初始化完成后自动连接到路由器。

那么我们的代码可以这样编写:



user_init:

  1. user_set_station_config();
复制代码


烧录,由于此sdk不同于机智云使用的版本,因此烧录会有点区别,按图中进行烧录即可:



烧录完成后,看一下串口输出:



可以看见,已经连接成功了,为了确保连接成功,我们可以创建一个任务输出wifi连接信息:

虽然此sdk不带操作系统,没有调度,但是提供了定时器给我们使用,我们可以使用自带的定时器调用函数达到任务的同样效果:

先定义一个ostimer
  1. os_timer_t my_timer;
复制代码


定义需要被调用的函数,函数里输出wifi状态:

  1. void my_timer_callback(void *arg) {
  2.     os_printf("wifi_status:%d\n",wifi_station_get_connect_status());
  3. }
复制代码


设置定时器和定时器的时间:

  1. os_timer_setfn(&my_timer, (os_timer_func_t *)my_timer_callback, NULL);
  2.     os_timer_arm(&my_timer, 1000, 1);
复制代码


编译烧录,查看串口输出:



可以看见,wifi连接成功后,状态从1变成了5
  1. enum {
  2.     STATION_IDLE = 0,
  3.     STATION_CONNECTING,
  4.     STATION_WRONG_PASSWORD,
  5.     STATION_NO_AP_FOUND,
  6.     STATION_CONNECT_FAIL,
  7.     STATION_GOT_IP
  8. };
复制代码
从这个结构体里,1表示wifi正在连接,5则是连接成功并且分配到了ip,这就是最简单的wifi连接代码。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表