espnow 例程解析

1、什么是espnow 短数据传输、无连接的快速通讯技术2、应用范围智能照明控制(一)、 ESPNOW例程。下面的例程展示了怎样使用ESPNOW步骤:1、初始化wifiA、TCP/ip适配器初始化a、注册事件处理函数初始化。b、设置配置信息c、选择存储类型d、选择wifi模式APe、启动wifif、启动wifi后设置通道,假如两个设备在同一个通道上就不需要设置2、初始化espnowa、创建个队列b...
摘要由CSDN通过智能技术生成

1、什么是espnow

短数据传输、无连接的快速通讯技术

2、应用范围智能照明控制

(一)、 ESPNOW例程。

下面的例程展示了怎样使用ESPNOW

步骤:

1、初始化wifi

A、TCP/ip适配器初始化

a、注册事件处理函数初始化。

b、设置配置信息

c、选择存储类型

d、选择wifi模式AP

e、启动wifi

f、启动wifi后设置通道,假如两个设备在同一个通道上就不需要设置

2、初始化espnow

a、创建个队列

b、注册发送数据回调函数

c、注册接受数据回调函数

d、设置主秘钥

e、添加广播点信息来点列表

f、初始化发送参数

g、创建espnow任务

*/

#include <stdlib.h>

#include <time.h>

#include <string.h>

#include <assert.h>

#include "freertos/FreeRTOS.h"

#include "freertos/semphr.h"

#include "freertos/timers.h"

#include "nvs_flash.h"

#include "esp_event_loop.h"

#include "tcpip_adapter.h"

#include "esp_wifi.h"

#include "esp_log.h"

#include "esp_system.h"

#include "esp_now.h"

#include "rom/ets_sys.h"

#include "rom/crc.h"

#include "espnow_example.h"


static const char *TAG = "espnow_example";


static xQueueHandle example_espnow_queue;


static uint8_t example_broadcast_mac[ESP_NOW_ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };

static uint16_t s_example_espnow_seq[EXAMPLE_ESPNOW_DATA_MAX] = { 0, 0 };


static void example_espnow_deinit(example_espnow_send_param_t *send_param);

1、事件处理函数

static esp_err_t example_event_handler(void *ctx, system_event_t *event)

{

  switch(event->event_id) {

  case SYSTEM_EVENT_STA_START:                    wifi启动完成

    ESP_LOGI(TAG, "WiFi started");

    break;

  default:

    break;

  }

  return ESP_OK;

}


2、wifi初始化

static void example_wifi_init(void)

{

  tcpip_adapter_init(); TCP/ip适配器初始化

  ESP_ERROR_CHECK( esp_event_loop_init(example_event_handler, NULL) ); 注册事件处理函数初始化。

  wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); 获取wifi配置信息

  ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); 设置配置信息

  ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) ); 选择存储类型

  ESP_ERROR_CHECK( esp_wifi_set_mode(ESPNOW_WIFI_MODE) ); 选择wifi模式AP

  ESP_ERROR_CHECK( esp_wifi_start()); 启动wifi

  ESP_ERROR_CHECK( esp_wifi_set_channel(CONFIG_ESPNOW_CHANNEL, 0) ); 启动wifi后设置通道,假如两个设备在同一个通道上就不需要设置

}


1、发送数据回调函数

static void example_espnow_send_cb(const uint8_t *mac_addr, esp_now_send_status_t status)

{

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值