ESP8266例程解析⑪NOW解析(代码)

本文介绍ESP8266如何进行NOW通信的初始化和操作,包括主函数中网关设备和子设备的初始化,以及ESP-NOW接口的使用。网关和子设备设置station模式,连接路由器,初始化ESP-NOW并注册收发包回调函数,建立设备间通信,并通过定时器发送数据包。
摘要由CSDN通过智能技术生成

主函数

#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "driver/uart.h"
#include "espnow.h"
#include "user_esp_now.h"

uint32 ICACHE_FLASH_ATTR user_rf_cal_sector_set(void)  {
	enum flash_size_map size_map = system_get_flash_size_map();
	uint32 rf_cal_sec = 0;

	switch (size_map) {
	case FLASH_SIZE_4M_MAP_256_256:
		rf_cal_sec = 128 - 5;
		break;

	case FLASH_SIZE_8M_MAP_512_512:
		rf_cal_sec = 256 - 5;
		break;

	case FLASH_SIZE_16M_MAP_512_512:
	case FLASH_SIZE_16M_MAP_1024_1024:
		rf_cal_sec = 512 - 5;
		break;

	case FLASH_SIZE_32M_MAP_512_512:
	case FLASH_SIZE_32M_MAP_1024_1024:
		rf_cal_sec = 1024 - 5;
		break;

	default:
		rf_cal_sec = 0;
		break;
	}

	return rf_cal_sec;
}

void ICACHE_FLASH_ATTR user_rf_pre_init(void) {
}

void ICACHE_FLASH_ATTR init_done_cb_init(void) {
	//网关初始化
	GateWay_Device_init();

	//子设备初始化
	//subDevice_Device_init();
}

void ICACHE_FLASH_ATTR
user_init(void) {

	uart_init(9600, 9600);
	os_printf("SDK version:%s\n", system_get_sdk_version());
	// 系统初始化后回调
	system_init_done_cb(init_done_cb_init);
}


  • 网关设备初始化
    设置模式为station、账号,密码都是自己路由器的 保存配置到flash 连接路由器(打印状态) 初始化ESP-NOW功能(打印状态 ) 注册 ESP-NOW 收包的回调函数 注册发包回调函数 设置自身ESP-NOW的角色 增加ESP-NOW匹配设备,将设备mac地址存入ESP-NOW维护的列表 开始定时发送消息给所有子设备(即定时器回调) 发送ESP-NOW数据包

gateway_device.c //网关设备初始化

#include "osapi.h"
#include "espnow.h"
#include "ets_sys.h"
#include "osapi.h"
#include "ip_addr.h"
#include "espconn.h"
#include "mem.h"
#include "spi_flash.h"
#include "user_interface.h"
#include "c_types.h"
#include "smartconfig.h"

os_timer_t gateway_esp_now_timer;

//下面是要发送的三个子设备的mac地址,此地址请替换到你要测试的设备的mac地址
u8 slaveDeviceMac_1[6] = { 0x84, 0xF3, 0xEB, 0xB3, 0xA7, 0x40 };
u8 slaveDeviceMac_2[6
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值