esp32-C3开发板制作钉钉蓝牙打卡神器

本文介绍了如何使用ESP32开发板和MicroPython固件,模拟考勤机蓝牙信号来实现远程钉钉打卡。通过烧录固件、广播考勤机相同的蓝牙数据,即使不在考勤机附近也能打卡。主要步骤包括固件烧录、代码编写和蓝牙数据获取。文章适合对嵌入式开发不熟悉但想尝试的读者。
摘要由CSDN通过智能技术生成

我之前对嵌入式、开发板的使用没太接触过。这篇文章记录我用esp32开发板制作钉钉打卡神器的过程,如果能对其他人有一点点小帮助那就更好啦。

关于打卡环境(打卡方式)。我们实验室门口墙上有一个考勤机,考勤机具有扫脸功能,可以通过扫脸进行打卡。同时,考勤机里面配有蓝牙模块,可以打开钉钉APP,在距离打卡机约5m之内的距离处就可以感应(连接)到考勤机的蓝牙信号,然后从钉钉里扫脸打卡。

在esp32制作的过程中发现,其实钉钉打卡并不会验证考勤机蓝牙的MAC地址,手机只要收到考勤机发出的蓝牙广播信息就可以连接到考勤机。基于这一点,我们只需要将esp32开发板启动蓝牙模块 并且广播和考勤机相同的蓝牙数据就可以了(要提前通过nRF Connect APP获得考勤机广播的蓝牙数据,后续介绍),即使开发板蓝牙的MAC地址和考勤机蓝牙的MAC地址不相同也不影响。

其实整个过程很简单,但对于我这种没接触过开发板的来说,确实需要踩踩坑走走弯路。如果打卡环境(打卡方式)和我一样或类似的话,那么可以按下面的步骤同我一起用esp32制作一个打卡神器,做好后即使身处国外也能让手机连接实验室的蓝牙考勤机。

需要的准备

以下是我所用到的所有软硬件工具:

1. YD-ESP32-C3-C(如图)

2. MicroPython固件

下载地址:MicroPython - Python for microcontrollers

下拉找到对应自己的开发板,比如我是ESP32-C3-C,那我就找ESP32-C3然后点进去。我一开始下载的ESP32的固件,所以踩坑踩了好长时间才出来。点进去之后,我的下载地址就对应为:MicroPython - Python for microcontrollers。下拉选择最新版本的即可。

 3. 固件烧录工具

下载地址:工具 | 乐鑫科技

使用的是乐鑫的烧录工具,直接点击下载即可。

下载后解压,无需安装,后面用到的时候直接打开这个exe文件即可。

 4. MicroPython IDE

下载地址:https://randomnerdtutorials.com/uPyCraftWindows

下载下来就是uPyCraft_V1.1.exe可执行文件,无需安装,打开即可使用。

5. USB转串口驱动(无此驱动的需要安装)

如何确定是否需要安装:将esp32C3开发板用数据线(TypeC手机充电线即可)连接到电脑上,注意,ESP32-C3-C开发板有一个USB口和一个COM口,将手机充电线的TypeC端插到COM口中、USB端插到电脑USB接口,后续所有过程均将TypeC端插入esp32的COM口中。打开电脑中的设备管理器,看一下是否多了一个端口(可以反复插拔数据线进行确认),多的这个端口有没有写CH340K以及COM几(如下图所示),如果多的这个端口没这几个字眼,那就是esp32无法找到com口(无驱动),即需要进行安装串口驱动。

不需安装或已经安装好了的话,记住这个COM口是几,比如我要记下来COM5,后面需要用到。接下来介绍安装过程。

​​

下载地址:CP210x USB to UART Bridge VCP Drivers - Silicon Labs

 选择CP210x Windows Drivers with Serial Enumerator进行下载。

 ​​

 下载后解压,双击CP210xVCPInstaller_x64.exe进行安装即可。

​​

此时连接esp32,设备管理器中会出现COM口,记住这个COM口。

6. nRF Connect手机APP

下载地址:nRF Connect

用手机打开该网址,下载并安装即可。

ESP32C3开发板制作蓝牙过程

1. MicroPython固件烧录

首先打开乐鑫的烧录工具(flash_download_tool_3.9.4.exe),Chip Type选择自己的开发板(这里我选择ESP32-C3),WorkMode选择Develop,LodeMode选择UART。点击OK进入。

如下图所示,点击框右侧三个点,在最上面的框中选择下载好的MicroPython固件(.bin),然后要将左侧的对勾√打上。接下来要填的参数必须正确,否则后续会出现错误。

回到之前下载MicroPython固件的网页(这里我是MicroPython - Python for microcontrollers),找到Installation instructions,如下图,看一下Installation instructions中的参数,比如我这里显示 --baud 460800,那么在上图中右下角的BAUD:中就选择460800;我这里显示 write_flash -z 0x0,那么在上图中@符号右侧就填入0x0。之前在设备管理器中还看到了COM口,设备管理器中显示COMx就在上图右下角COM的位置选择COMx。

参数选择好后点击ERASE先进行擦除,等待显示完成后再点击START开始烧录,再次等待显示完成。完成后可以关闭该烧录工具。

2. 打开MicroPython IDE

打开MicroPython IDE(uPyCraft_V1.1.exe),打开后点击OK下载所需的字体。

在顶部导航栏中点击Tools->Serial,然后选择对应的COM口,如下图,我这里要选择COM5。

若连接成功,则下方会显示>>>,如下图所示。若此时弹出Burn Firmware对话框或者出现其他错误(诸如open serial error, please try again. hope to connect internet and try again.),给两种可能的解决方法,一是查看之前下载的MicroPython固件与自己的开发板是否对应,二是烧录过程所选择的参数是否正确!

连接成功后,点击顶部导航栏中的File->New,然后写入下面的代码。这段代码很简单,首先创建一个蓝牙类,通过activate激活蓝牙,然后用gap_advertise()广播数据,100表示每100ms广播一次,adv_data就是要广播的十六进制数据。因此,只要把考勤机的广播数据raw data复制过来替换掉这里的adv_data即可。

from ubluetooth import BLE

ble = BLE()
ble.active(True)

ble.gap_advertise(100, adv_data = b'\x02\x01\x1A\x17\xFF\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x00\x03\x03\x33\x33')

Ctrl+S保存该代码,然后按下右侧第四个按钮(DownloadAndRun),若控制台出现下图所示内容,则代表运行成功,esp32开发板正在以每100ms的速度广播指定的adv_data数据。

接下来是获取考勤机的广播数据raw data的方式。

3. 获取考勤机蓝牙的广播数据

用手机打开下载好的nRF Connect APP,手机我记得必须安卓手机才可以看到一些信息,苹果手机不行。按一下右上角扫描(SCAN)按钮,在显示出来的这么多蓝牙设备中选择自己的目标蓝牙。对于钉钉蓝牙,展开蓝牙的详细信息,对应的Company应该是Tom Tom,如下图所示,MAC地址为18:xx:xx:xx:xx:33的是我的目标考勤机的蓝牙。

找到我们的目标蓝牙后,点击右下角的RAW,出现如下图所示的对话框,此时我们可以看到完整的raw data数据,只需点一下raw data框右侧的复制按钮即可。

接下来,把复制下来的raw data数据替换掉前面代码部分的adv_data重新点击DownloadAndRun即可。如果在替换adv_data之前已经点过了DownloadAndRun,那么在nRF Connect中可以找到esp32开发板所发出的蓝牙广播数据,如下图所示,raw data即为前面代码中的adv_data。我们也可以借此知道开发板对应的MAC地址。

重新点击DownloadAndRun后,开发板将以自己的MAC地址广播我们设置的adv_data数据,可以在nRF Connect中重新点击右上角的扫描(SCAN),然后找到开发板广播的数据,看一下raw data是不是对应我们设置的adv_data。

由于钉钉蓝牙在打卡时不检测MAC地址是否匹配,只要接收正确的raw data就可以进行打卡。因此,现在打开钉钉APP,进入打卡界面,就已经显示成功连接考勤机了!

现在还剩下最后一步,我们通过upycraft把程序下载到esp32后可以让esp32广播蓝牙数据,但将esp32开发板断电后,再重新接入电源,程序不会自动运行,也就是说想要esp32继续广播数据,需要重新DownloadAndRun。这时候只需要在左侧菜单中,展开device文件夹,在对应的.py文件上右键,然后点击Default Run即可,如下图所示。点击后,对应的.py文件就会变成红色。

将esp32断电重启,程序即可自动运行。

然后就可以把所有软件全部关闭啦,此时一个esp32蓝牙开发板就制作完成啦,如果为了打卡方便,我们可以买一个typeC公口转公口的转接头,如下图所示,其中一头插入esp32,另一头插入手机为其供电,我们就可以方便地随时随地打卡啦!

整个过程实现起来没有特别难,但对于小白的话可能还是比较费劲的,有些地方需要摸索摸索,这篇文章记录我的esp32开发板制作蓝牙打卡工具的过程,希望对看到的伙伴有一点点小小的帮助,如需引用或转发,请注明出处,谢谢!

麻烦点个赞吧~!!!

ESP32-S3开发板有多种选择,以下是几款常见的开发板: 1. ESP32-S3-DevKitC-1:这是官方正品开发板,价格较高,但质量有保证,适合入门学习ESP32S3。\[1\] 2. WeAct ESP32-S3核心板:这款开发板价格较低,约为官方开发板的一半,但引脚兼容性较好,性价比较高。\[1\] 3. ESP32-S3-DevKitC-1 ESP32-S3核心板:这款开发板价格与WeAct相同,引脚兼容性也很好,性价比较高。\[1\] 4. ESP32-S3 LVGL 核心板SP 开发板:这款开发板与官方价格相近,但集成了SD卡槽、数字麦克风和一个1.3寸TFT屏幕,性价比较高。作者还提供了不少IDF开发方式的例程和视频,方便学习。\[1\] 5. Freenove ESP32 S3 WROOM开发板:这款开发板与官方价格相近,但集成了SD卡槽和摄像头,并配备了一个1G的SD卡和一个读卡器,性价比较高。适合使用Arduino和Micropython进行开发,对初学者比较友好。\[1\] 以上是一些常见的ESP32-S3开发板选择,具体选择可以根据自己的需求和预算来决定。\[1\] #### 引用[.reference_title] - *1* [第二章 ESP32S3介绍](https://blog.csdn.net/weixin_38476200/article/details/130248490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [启明智显分享|基于ESP32-S3方案的4寸86盒开发板快速开发及烧录](https://blog.csdn.net/ami82/article/details/126874117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 75
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值