ESP8266_RTOS_SDK AP和Station功能实现

一、开发环境搭建

SDK开发工具集选择乐鑫配置:VirtualBox + Linux +交叉编译工具
使用的是以下这块开发板
在这里插入图片描述

VirtualBox下载地址
Lubuntu 镜像下载地址Lubuntu是一个轻量级系统(由乐鑫官方提供)
source insight 编辑代码
为了便于我们开发,需要在window下
D盘下新建VM共享目录
VM下新建share目录

挂载共享目录
ls:查看当前目录文件
./mount.ch:运行shell脚本
输入root密码:espressif
在Share目录下,新建文件夹demo
在window下查看是否同步
没成功可以参考这篇文章,写得挺全的

二、本次实验的目的:

1、配置WiFi为Station模式,连接到本地的WiFi网络里
2、配置WiFi为AP模式,PC机连接到WiFi AP下
在这里插入图片描述

三、熟悉FreeRTOS,实现打印“Hello world!” ,并闪烁LED

1,搭建app目录

将SDK放在共享目录下
在这里插入图片描述

在SDK目录下新建app目录
cd 到examples目录下
拷贝smart_config下所有文件到app目录下
cd 到app目录下查看文件是否拷贝成功
在这里插入图片描述

2,修改gen_misc.sh

vim 打开gen_misc.sh进行编辑
在这里插入图片描述
修改SDK_PATH为当前SDK路径(绝对)
修改BIN_PATH为当前BIN路径(绝对)
在这里插入图片描述
输入:x保存退出

3,修改Makefile

  因为分离了sdk和project目录,所以编译之前必须先指定一个 SDK_PATH 和 BIN_PATH,修改 ESP8266_RTOS_SDK/app 目录下的 makefile,添加以下内容

parent_dir:=$(abspath $(shell pwd)/$(lastword $(MAKEFILE_LIST)))
parent_dir:=$(shell dirname $(parent_dir))
parent_dir:=$(shell dirname $(parent_dir))

SDK_PATH=$(parent_dir)
BIN_PATH=$(SDK_PATH)/bin

4,编译和配置

./gen_misc.sh
运行gen_misc脚本进行编译
在这里插入图片描述
编译成功显示如下

在这里插入图片描述
工程模板编译好后,就可以开始写功能了
使用freeRTOS新建2个任务:

  1,定时1秒,串口打印hello word
  2,nodeMcu板上LED灯,1秒钟闪烁一次

5,打开sourceInsight 新建工程

5.1 新建工程Untitled_app工程

在这里插入图片描述
在这里插入图片描述

5.2 选择源文件

在这里插入图片描述

5.3添加需要的文件

在这里插入图片描述

5.4 新生成的文件树需要同步一下文件

在这里插入图片描述

5.5 打开文件目录,输入user_main.c,找到该文件进行编码

在这里插入图片描述

6,在user_main.c中加入打印函数

void ATaskHelloworld( void *pvParameters ) 
{ 
int iVariableExample = 0; 
for( ;; ) 
{ 
	printf("Hello world!\n");
	vTaskDelay(100);
} 
vTaskDelete( NULL ); 
}
user_init(void)
{
    printf("SDK version:%s\n", system_get_sdk_version());

    /* need to set opmode before you set config */
//    wifi_set_opmode(STATION_MODE);

//    xTaskCreate(smartconfig_task, "smartconfig_task", 256, NULL, 2, NULL);
	xTaskCreate(ATaskHelloworld, "hello world", 256, NULL, 2, NULL);
}

7,保存进入虚拟机在app目录下进行编译和配置

然后再Windows中打开下载工具添加bin文件进行下载
在这里插入图片描述
打印结果
在这里插入图片描述

8,再加入led控制函数

8.1 先查阅原理图

在这里插入图片描述
知道LED1由GPIO16控制,GPIO16输出高电平灯灭,GPIO16输出低电平灯亮

9,添加外设驱动文件

9.1 app目录下新建driver目录

9.1.1 拷贝driver_lib/driver下所有文件到app/driver下

在这里插入图片描述

9.1.2 拷贝driver_lib/include下所有文件到app/include下

在这里插入图片描述

10,修改Makefile

10.1 添加工程编译子目录driver和生成libdriver.a静态库

SUBDIRS=    \
        user \
        dirver

COMPONENTS_eagle.app.v6 = \
        user/libuser.a  \
        driver/libdriver.a

11,进入source insight,同步一下文件,然后加入LED初始化函数以及驱动函数

void LED_Init(void) 
{ 

	gpio16_output_conf();
	gpio16_output_set(1);
}


void ATaskled( void *pvParameters ) 
{ 

int iVariableExample = 0; 
 
for( ;; ) 
{ 
	gpio16_output_set(0);
	printf("ledon!\n");
	vTaskDelay(100);
	gpio16_output_set(1);
	printf("ledoff!\n");
	vTaskDelay(100);
} 

vTaskDelete( NULL ); 
}

user_init(void)
{
    printf("SDK version:%s\n", system_get_sdk_version());
	LED_Init();
    /* need to set opmode before you set config */
//    wifi_set_opmode(STATION_MODE);

//    xTaskCreate(smartconfig_task, "smartconfig_task", 256, NULL, 2, NULL);
	xTaskCreate(ATaskHelloworld, "hello world", 256, NULL, 2, NULL);
	xTaskCreate(ATaskled, "LED", 256, NULL, 3, NULL);

}

12,保存编译

打印结果,实物LED在闪烁,输出内容如下
在这里插入图片描述

四,WIFI Station功能实现

1,WIFI Station入网条件

1.1 本地有WiFi网络

  SSID:wifi网络名称
  PASSWORD:WiFi入网密码

2,WIFI Station入网流程

在这里插入图片描述

3,新建Sration工程目录

3.1 新建Station目录,拷贝app目录下所有文件到Station目录下

在这里插入图片描述

4,Sourceinsight配置

移除之前app文件夹,加入Station文件夹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5,代码实现

在user_Init里面实现wifi station功能开发

#define SSID "ApolloPi-314E"
#define PASSWORD "apollopi"
user_init(void)
{
    printf("SDK version:%s\n", system_get_sdk_version());
	LED_Init();
    wifi_set_opmode(STATION_MODE);
	struct station_config *config = (struct station_config *)	\
		zalloc(sizeof(struct station_config));
	sprintf(config->ssid,SSID);
	sprintf(config->password,PASSWORD);
	wifi_station_set_config(config);
	
	free(config);
	wifi_station_connect();
//    xTaskCreate(smartconfig_task, "smartconfig_task", 256, NULL, 2, NULL);
	xTaskCreate(ATaskHelloworld, "hello world", 256, NULL, 2, NULL);
	xTaskCreate(ATaskled, "LED", 256, NULL, 3, NULL);
//	xTaskCreate(ATaskprintf, "printf", 256, NULL, 3, NULL);

}

6,验证测试

烧写固件,复位查看串口日志,获取到路由器分配的IP
在这里插入图片描述

五, WIFI AP 功能实现

1,WIFI AP建立条件

SSID:WIFI网络名称(定义为自己的名字)
PASSWORD:WiFi入网密码
加密模式:WAP2_PSK

2,WIFI AP建立流程

在这里插入图片描述

3,新建AP工程目录

在这里插入图片描述

4,Sourceinsight配置

移除之前Station文件,加入AP文件,同步文件

5,代码实现

在user_Init下完成wifi AP功能开发

#define SSID "testwifi"
#define PASSWORD "123456789"
user_init(void)
{
    printf("SDK version:%s\n", system_get_sdk_version());
	LED_Init();
    wifi_set_opmode(SOFTAP_MODE);
	struct softap_config *config = (struct softap_config *)	\
		zalloc(sizeof(struct softap_config));
	wifi_softap_get_config(config);
	sprintf(config->ssid,SSID);
	sprintf(config->password,PASSWORD);
	config->authmode = AUTH_WPA_WPA2_PSK;
	config->ssid_len = 0;
	config->max_connection = 10;
	wifi_softap_set_config(config);
	

	
	free(config);
//	wifi_station_connect();
//    xTaskCreate(smartconfig_task, "smartconfig_task", 256, NULL, 2, NULL);
	xTaskCreate(ATaskHelloworld, "hello world", 256, NULL, 2, NULL);
	xTaskCreate(ATaskled, "LED", 256, NULL, 3, NULL);
//	xTaskCreate(ATaskprintf, "printf", 256, NULL, 3, NULL);

}

6,验证测试

烧写固件,复位查看串口日志,PC连接AP,获取AP分配的IP地址
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值