搜索
bottom↓
回复: 1
打印 上一主题 下一主题

《DNESP32S3使用指南-IDF版_V1.6》第五十章 WiFi热点实验

[复制链接]

出0入234汤圆

跳转到指定楼层
1
发表于 2024-8-5 17:47:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 正点原子 于 2024-8-5 17:47 编辑


1)实验平台:正点原子ESP32S3开发板
2)购买链接:https://detail.tmall.com/item.htm?id=768499342659
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-347618-1-1.html
4)正点原子官方B站:https://space.bilibili.com/394620890
5)正点原子手把手教你学ESP32S3快速入门视频教程:https://www.bilibili.com/video/BV1sH4y1W7Tc
6)正点原子FPGA交流群:132780729




第五十章 WiFi热点实验

       本章节实验作者把ESP32-S3配置为AP模式,即创建连接热点,读者可使用手机连接该热点。AP模式相关知识请读者查看第二章节的内容。
       本章分为如下几个小节:
       50.1 硬件设计
       50.2 软件设计
       50.3 下载验证

       50.1 硬件设计

       1. 例程功能
       本章实验功能简介:当手机连接这个热点时,LCD显示该连接设备的MAC地址,断开时,LCD显示断开设备的MAC地址。

       2. 硬件资源

       1)LED灯
              LED-IO1

       2)XL9555
              IIC_INT-IO0(需在P5连接IO0)
              IIC_SDA-IO41
              IIC_SCL-IO42

       3)SPILCD
              CS-IO21
              SCK-IO12
              SDA-IO11
              DC-IO40(在P5端口,使用跳线帽将IO_SET和LCD_DC相连)
              PWR- IO1_3(XL9555)
              RST- IO1_2(XL9555)

       4)ESP32-S3内部WiFi

       3. 原理图
       本章实验使用的WiFi为ESP32-S3的片上资源,因此并没有相应的连接原理图。

       50.2 软件设计

       50.2.1 程序流程图
       程序流程图能帮助我们更好的理解一个工程的功能和实现的过程,对学习和设计工程有很好的主导作用。下面看看本实验的程序流程图:

图50.2.1.1 程序流程图

       50.2.2 程序解析
       在本章节实验中,我们只关心main.c文件内容即可,该文件内容如下:
  1. i2c_obj_t i2c0_master;
  2. static const char *TAG = "AP";
  3. #define EXAMPLE_ESP_WIFI_SSID   "123"
  4. #define EXAMPLE_ESP_WIFI_PASS   "123456789"
  5. #define EXAMPLE_MAX_STA_CONN    5
  6. #define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
  7. #define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
  8. static char lcd_buff[100] = {0};


  9. /**
  10. * @brief       WIFI链接糊掉函数
  11. * @param       arg:传入网卡控制块
  12. * @param       event_base:WIFI事件
  13. * @param       event_id:事件ID
  14. * @param       event_data:事件数据
  15. * @retval      无
  16. */
  17. static void wifi_event_handler(void *arg, esp_event_base_t event_base,
  18.                                int32_t event_id, void *event_data)
  19. {
  20.     /* 设备连接 */
  21.     if (event_id == WIFI_EVENT_AP_STACONNECTED)
  22.     {
  23.         lcd_fill(0,90,320,240,WHITE);
  24.         wifi_event_ap_staconnected_t *event = (wifi_event_ap_staconnected_t *)
  25. event_data;
  26.         ESP_LOGI(TAG, "station " MACSTR " join, AID=%d",
  27.                  MAC2STR(event->mac), event->aid);
  28.         sprintf(lcd_buff, "MACSTR:"MACSTR,MAC2STR(event->mac));
  29.         lcd_show_string(0, 90, 320, 16, 16, lcd_buff, BLUE);
  30.         lcd_show_string(0, 110, 320, 16, 16, "With device connection", BLUE);
  31.     }
  32.     /* 设备断开 */
  33.     else if (event_id == WIFI_EVENT_AP_STADISCONNECTED)
  34.     {
  35.         wifi_event_ap_stadisconnected_t *event =
  36.                                  (wifi_event_ap_stadisconnected_t *)event_data;
  37.         ESP_LOGI(TAG, "station " MACSTR " leave, AID=%d",
  38.                  MAC2STR(event->mac), event->aid);
  39.         lcd_fill(0,90,320,320,WHITE);
  40.         sprintf(lcd_buff, "Device disconnected:"MACSTR,MAC2STR(event->mac));
  41.         lcd_show_string(0, 90, 320, 16, 16, lcd_buff, BLUE);
  42.     }
  43. }

  44. /**
  45. * @brief       WIFI初始化
  46. * @param       无
  47. * @retval      无
  48. */
  49. static void wifi_init_softap(void)
  50. {
  51.     /* 初始化网卡 */
  52.     ESP_ERROR_CHECK(esp_netif_init());

  53.     /* 创建新的事件循环 */
  54.     ESP_ERROR_CHECK(esp_event_loop_create_default());
  55.     /* 使用默认配置初始化包括netif的Wi-Fi */
  56.     esp_netif_create_default_wifi_ap();
  57.     wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  58.     ESP_ERROR_CHECK(esp_wifi_init(&cfg));

  59. ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID,
  60.                 &wifi_event_handler, NULL));
  61.     /* 配置WIFI */
  62.     wifi_config_t wifi_config = {
  63.         .ap = {
  64.             .ssid = EXAMPLE_ESP_WIFI_SSID,
  65.             .ssid_len = strlen(EXAMPLE_ESP_WIFI_SSID),
  66.             .password = EXAMPLE_ESP_WIFI_PASS,
  67.             .max_connection = EXAMPLE_MAX_STA_CONN,
  68.             .authmode = WIFI_AUTH_WPA_WPA2_PSK
  69.         },
  70.     };

  71.     if (strlen(EXAMPLE_ESP_WIFI_PASS) == 0)
  72.     {
  73.         wifi_config.ap.authmode = WIFI_AUTH_OPEN;
  74.     }
  75.     ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
  76.     ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP, &wifi_config));
  77.     ESP_ERROR_CHECK(esp_wifi_start());
  78. esp_netif_ip_info_t ip_info;
  79. /* 获取当前设备的IP地址 */
  80. esp_netif_get_ip_info(esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"),
  81.                       &ip_info);
  82.     char ip_addr[16];
  83.     inet_ntoa_r(ip_info.ip.addr, ip_addr, 16);
  84.     ESP_LOGI(TAG, "Set up softAP with IP: %s", ip_addr);
  85.     ESP_LOGI(TAG, "wifi_init_softap finished. SSID:'%s' password:'%s'",
  86.              EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
  87.    
  88.     lcd_show_string(0, 90, 240, 16, 16, "wifi connecting......", BLUE);
  89. }

  90. /**
  91. * @brief       程序入口
  92. * @param       无
  93. * @retval      无
  94. */
  95. void app_main(void)
  96. {
  97.     /* 省略部分代码..... */
  98.     wifi_init_softap();
  99.     while (1)
  100.     {
  101.         LED_TOGGLE();
  102.         vTaskDelay(500);
  103.     }
  104. }
复制代码
       上述源码相对简单,主要将ESP32-S3设备配置为AP模式,即作为热点设备。然后,设置热点设备的账号、密码、安全模式等参数。在WiFi事件回调函数中,当有外部设备请求连接时,程序会在LCD上显示连接设备的MAC地址等信息。而当外部设备从连接状态断开时,LCD会显示当前断开的外部设备MAC地址。

       50.3 下载验证
       程序下载成功后,我们利用手机连接ESP32-S3热点设备,当手机连接热点设备成功时,LCD显示手机的MAC地址等信息,当手机从已连接状态断开时,LCD显示断开的外部设备的MAC地址。下图为连接成功的LCD显示效果图。

图50.3.1 外部设备连接热点设备

       下图为外部设备从已连接状态断开效果图,如下所示。

图50.3.2 外部设备断开热点设备

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出100入113汤圆

2
发表于 2024-8-8 13:52:46 | 只看该作者
手机连上开发板后,开发板可以实现路由功能吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 14:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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