主函数
#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