基于ESP32实现一个WIFI透传模块demo
admin
2024-03-08 09:49:11
0

esp32作为一个热门芯片,网上的文章很多,sdk里的例子和官网的教程也是比较详细。不过作为新玩家,还是要先做一些小改动才更容易入门。所以这里就综合几个example代码,写一个简单的透传demo。

环境

操作系统:ubuntu 20.04
虚拟机:VMare Workstation 16
IDE:vscode 1.73.1
vscode插件:Espressif IDF v1.5.1
board:淘宝上的ESP32-S3-DevKitC-1兼容板
外置串口板子:淘宝上的cp2102 6合1串口模块

需求

通过外部的串口模块,连接ESP32-S3-DevKitC-1开发板上的IO4和5,与电脑进行通讯。
而串口指令,参考一下某透传模块的文档,提取并简化成了以下几条:

  • 扫描AP
指令ATWS
响应AP : ,,,,,
[ATWS] OK
  • 连接到 AP
指令ATPN=,
响应成功
[ATPN] OK
失败
[ATPN] ERROR:
error_code1: 命令格式错误
2: 参数错误
3: 连接 AP错误
4: dhcp 超时
  • 建立socket
指令ATPC=,,
响应成功
[ATPC] OK
失败
[ATPC]:
参数mode:
 0:TCP
error_code1: 命令格式错误
2: 参数错误
3: 连接 server错误
4: 尚未连接AP
  • 设置透传模式
指令ATPU
响应成功
[ATPU] OK
失败
[ATPU] ERROR:
error_code1: 命令格式错误
2: 尚未连server

https://editor.csdn.net/md/?articleId=128134802

创建工程

通过<新建esp32的vscode工程的三种方式>中的<通过"ESP-IDF:New Project"创建新工程>这个方法,创建一个以esp-idf/examples/wifi/scan为模板的工程esp32_network123,这也是本文中的主工程模板
接着再通过<通过vscode的"ESP-IDF:Show Examples Project"页面中新建工程>这个方法,通过SDK中的以下几个例子:

esp-idf/examples/wifi/scan
esp-idf/examples/wifi/getting_started/station
esp-idf/examples/protocols/sockets/udp_client
esp-idf/examples/peripherals/uart/uart_echo

为模板分别创建几个参考的工程。

扫描AP功能

在vscode下打开工程esp32_network123工程,并在main文件夹上右键,选中"New File",新建两个文件:app_main.c和wifi.c。并将原本自带的scan.c文件删除。

注:这种通过vscode来新建和删除文件的行为,会通过插件,自动的修改对应的CMakeLists.txt文件。省却了一些麻烦的操作。

其中在app_main.c内添加代码:

#define WIFI_TASK_STACK_SIZE  (1024*16)
extern void wifi_task(void *arg);
void app_main(void)
{xTaskCreate(wifi_task, "wifi_task", WIFI_TASK_STACK_SIZE, NULL, 10, NULL);
}

用于新建wifi任务。
而wifi.c则参考原有的scan.c,在wifi.c内实现的wifi_task()任务用来初始化WIFI,并配置成sta模式

void wifi_task(void *arg)
{
...// Initialize Wi-Fi as staESP_ERROR_CHECK(esp_netif_init());ESP_ERROR_CHECK(esp_event_loop_create_default());esp_netif_t *sta_netif = esp_netif_create_default_wifi_sta();assert(sta_netif);wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(&cfg));ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));ESP_ERROR_CHECK(esp_wifi_start());wifi_scan();while(1) {vTaskDelay( 5000/portTICK_PERIOD_MS );ESP_LOGI(TAG, "delay");}
}

上面的代码中调用的wifi_scan()调用后直接触发扫描,并将结果打印出来:

static void wifi_scan(void)
{uint16_t number = DEFAULT_SCAN_LIST_SIZE;memset(ap_info, 0, sizeof(ap_info));esp_wifi_scan_start(NULL, true);ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&number, ap_info));ESP_ERROR_CHECK(esp_wifi_scan_get_ap_num(&ap_count));ESP_LOGI(TAG, "Total APs scanned = %u", ap_count);for (int i = 0; (i < DEFAULT_SCAN_LIST_SIZE) && (i < ap_count); i++) {wifi_print_scan(ap_info,i);//按照需求的格式打印AP列表}
}

代码

https://github.com/chenbb8/esp32_network123
代码clone下来后,还需要用到<新建esp32的vscode工程的三种方式>中的<将普通esp-idf工程升级成esp-vscode工程>这个方法,修改一下本地的程序。

未完待续。正在一边撸代码,一边写笔记。

相关内容

热门资讯

手机系统安卓和ios系统下载地... 你有没有发现,现在手机的世界里,安卓和iOS两大系统就像是一对双胞胎,各有各的特色,让人爱不释手。今...
安卓系统最早开发公司,从安卓起... 你有没有想过,我们每天离不开的安卓系统,它究竟是由哪家公司最早开发的呢?没错,就是谷歌(Google...
安卓系统平板推荐学生用,学生适... 作为一名热爱学习的学生,你是不是也在寻找一款既实用又好用的平板电脑呢?平板电脑在学习和生活中可是个得...
安卓5.0系统多大容量,存储容... 你有没有想过,你的安卓手机里那个神秘的安卓5.0系统到底有多大容量呢?别急,今天就来给你揭秘这个谜团...
芒果嗨是安卓系统吗,揭秘这款热... 你有没有听说过“芒果嗨”这个名字?最近,这个名词在手机圈里可是火得一塌糊涂。不过,别急,今天咱们就来...
安卓系统锁屏如何破,破解攻略全... 你是不是也遇到了安卓手机锁屏的烦恼?每次解锁都要输入复杂的密码或者滑动图案,有时候真是急得团团转。别...
安卓系统app开机自启,深度解... 你有没有发现,每次手机开机,那些APP就像一群调皮的小精灵,迫不及待地跳出来和你打招呼?没错,说的就...
安卓系统拨号连接在哪,拨号连接... 你是不是也和我一样,有时候在使用安卓手机时,突然想连接一下网络,却发现不知道怎么操作?别急,今天就来...
安卓系统为什么会赢,技术革新与... 你有没有想过,为什么安卓系统在智能手机市场上如此火爆,几乎成了“手机必备”的存在呢?今天,就让我带你...
电脑可以做安卓系统么,电脑上运... 你有没有想过,电脑能不能装上安卓系统呢?这听起来是不是有点像科幻电影里的情节?别急,让我带你一探究竟...
国产安卓系统碎片化软件,软件生... 你有没有发现,现在手机上的安卓系统越来越丰富多样了?没错,这就是我们今天要聊的话题——国产安卓系统的...
安卓系统的蚂蚁花呗,蚂蚁花呗在... 你知道吗?在安卓系统的世界里,有一个超级方便的支付工具,那就是蚂蚁花呗。它就像你的贴心小助手,让你在...
安卓2系统彩蛋在哪找,揭秘隐藏... 你有没有发现,安卓2系统里竟然隐藏着一些神秘的彩蛋?没错,就是那些让你忍不住想要一探究竟的小惊喜。今...
全球最大的安卓系统,全球最大移... 你知道吗?在智能手机的世界里,有一个系统可是当之无愧的“王者”——那就是安卓系统!它就像一位全能的魔...
安卓系统就没有碎片了,迈向无缝... 你知道吗?最近在科技圈里,安卓系统可是掀起了一阵不小的波澜呢!有人说,安卓系统再也没有碎片化了?这可...
安卓系统平板电脑评测,安卓平板... 你有没有想过,在这个信息爆炸的时代,拥有一台性能卓越的安卓系统平板电脑,简直就是移动办公和娱乐的完美...
双系统安卓自动关机,双系统安卓... 你有没有遇到过这样的情况:手机里装了双系统安卓,一边是工作用的,一边是娱乐用的,结果有时候不小心,手...
圣地安列斯安卓9系统,圣地安列... 亲爱的读者,你是否也像我一样,对科技新动态充满好奇?今天,我要和你分享一个超级有趣的话题——圣地安列...
平果有安卓系统的吗,畅享智能生... 你有没有想过,手机的世界里,竟然还有这样一个有趣的现象?那就是——平果手机,竟然也有安卓系统!是不是...
vivoy27安卓系统下载,畅... 你有没有听说最近Vivo Y27这款手机的新鲜事儿?没错,就是它的安卓系统下载!今天,我就要给你来个...