我之前对嵌入式、开发板的使用没太接触过。这篇文章记录我用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 BLEble = 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-C3开发板制作钉钉蓝牙打卡神器相关推荐

  1. 用安信可ESP32-G开发板制作一个简易路由器

    文章目录 一.前言 二.中继路由器 三.以太网路由器 四.源码及使用方法 联系我们 一.前言 本文介绍用安信可ESP32-G开发板制作一个路由器,有两种玩法; ESP32无线连接路由器后开启热点,周围 ...

  2. 【ESP32S2】把只有4M flash的开发板制作成一个2G的U盘(一)

    文章目录 前言 一.背景 二.制作虚拟磁盘VHD 三.生成磁盘数据 四.生成.h头文件 五.改造read10函数 六.测试 七.工具 八.参考 前言 前面的文章<使用ESP32S2开发板制作U盘 ...

  3. arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器

    摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...

  4. FPGA之道(19)以FPGA为核心的开发板制作

    文章目录 前言 开发板制作 前言 学习FPGA的初期,我们习惯到网上买一款FPGA开发板,这是新手学习FPGA开发的最佳途径,负责任的开发板制作者会提供相应的教程供练习,毕竟能动手操作上板子才是真正玩 ...

  5. Arduino开发板制作

    Arduino UNO 介绍 ,Arduino开发板制作 教程: Arduino制作 Arduino UNO 图 Arduino是什么 Arduino是一款便捷灵活.方便上手的开源电子原型平台.包含硬 ...

  6. STM32G070RBT6迷你开发板制作总结

    STM32G070RBT6迷你开发板制作总结 目录 STM32G070RBT6迷你开发板制作总结 1.组成概述 1.原理图绘制 系统组成 本系统由五部分构成:电源,晶振,复位电路.调试接口,调试芯片电 ...

  7. 基于arduino uno 开发板制作的 智能书包项目

    基于arduino uno 开发板制作的智能书包,当时收短视频启发,集合自动售货机的代码和RC522 读卡模块代码结合制作,现基本功能可以实现 ,目前代码部分尚不稳定需要继续改进 //一个智能书包小发 ...

  8. 硬件学习、高速dsp开发板制作、STM32学习笔记

    1.硬件工程师成长之路(1)--元件基础_[云轩]的博客-CSDN博客_硬件工程师的成长之路 总目录:https://blog.csdn.net/weixin_44407238/category_10 ...

  9. RT-ThreadBearPi 开发笔记 -- 为小熊派开发板制作 RT-Thread BSP 包

    为小熊派开发板制作 RT-Thread BSP 包 前段时间,微联智控工作室向南京厚德物联网有限公司申请了一款物联网开发平台---小熊派物联网开发套件(BearPi-IoT).关于小熊派IoT开发平台 ...

最新文章

  1. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 同时注入普通方法、静态方法、构造方法 )
  2. 深度学习:人脸识别学习笔记
  3. i219v linux,I219V高传播延迟
  4. 卷积神经网络——池化层学习——最大池化
  5. SecurtCRT连接服务器自动断开
  6. IO多路复用之select
  7. [js] 写一个方法,当给定数字位数不足8位时,则在左边补充0以补足8位数的方法
  8. leetcode613. 直线上的最近距离(SQL)
  9. Linux中断线程化的优势,记一个实时Linux的中断线程化问题
  10. java 内存指针_java内存模型详解
  11. 四级口语计算机对话,四级英语口语对话常用的句子
  12. linux下 卸载qt_Windows 下 Qt creator安装和使用
  13. QA:阿里云K8s启动容器后无法访问网络
  14. 批量打印证书 php,巧用WPS2013批量打印证书
  15. 面向光栅薄膜光学性能探究的Rsoft建模与仿真
  16. 离散数学之关系(传递闭包)
  17. 简单实现antd的表单设计
  18. 腾讯地图 地图组件 缩放级别
  19. [Android UI界面] Android UI 设计准则
  20. pydicom 安装与使用

热门文章

  1. CSS篇之波浪形文字
  2. 微享商盟系统功能与小程序开发方案(静态页面制作)
  3. win8中mysql安装包下载地址_win8 mysqlzip install
  4. 个推消息推送SDK技术沉淀(1):如何使SDK包体体积变小?如何实现省电省流量?
  5. linux系统的ora-01034,ORA-01034错误
  6. 新时代手机产品战争打响
  7. 视频怎么转化为gif动图?视频如何做成gif图?
  8. Latex表格紧跟文字下方(不影响下方文本对齐)(含实例讲解)
  9. 激光雷达初体验 == 思岚A1M8 + Ubuntu 18.04 + ROS melodic + hector_slam
  10. 两种取消微信接收文件只读属性方法