乐鑫科技招聘与ESP32蓝牙功能研究:国内物联网发展新趋势

2025-03-11
来源:网络整理

让我们少说话,第一个项目演示:1。序言;

昨天是我们伟大的祖国成立70周年的国庆日。我的朋友圈充满了祝福,我的鲜血沸腾了,眼泪充满了我的眼睛。我永远不会后悔进入中国,而我仍然会成为下一生中的中国人!呢呢

昨天的前一天,的一名工作人员加入了QQ集团。我很高兴雷克斯()目前正在招募大量人。无论它们是来自背景还是足够好,他们都可以加入公司。当您看到此博客文章时,您可以私下与我聊天并在内部进行宣传!我绝对不能将工作换成埃斯利特,因为我与公司有合同,在我看来,上海似乎真的很遥远(广东的人们认为它是广东省以外的北部哈哈)。当在“中国硅谷” 中建立了一个服务点时,我将考虑尝试。

说了很多话,我开始说出这一点。我目前在中国开始学习的蓝牙功能正在研究。的确,中国物联网一直在蓬勃发展,但是很少有人愿意为视频或专门研究前言技术并分享技术。我在教授网站上的物联网开发的实用视频中很少,例如腾讯教室,极客学院,CSDN学院,电子偷窥学院和。他们基本上是在谈论驾驶员开发和外围用法方法。您听到的大多数是优秀的公司,例如董事会的 Atom。确实,他们在教学委员会中是专业的。但是,结合物联网遥控器,它是一些教程。

我能够为该国提供一些教程感到很自在。因为我发布了博客文章,所以我基本上与项目分享。尽管有些是付费的,但写博客文章确实并不容易。我自己键入并绘制图片至少一个小时就足够了。最麻烦的是组织代码包,但我对此感到满意。出色的程序员的第一步是制定代码规格,以便他们可以舒适地阅读它,而其他人可以清楚地看到它。

2。项目描述; 2.1技术要求

相应的示意图:

2.2板连接

轻板示意图

演示板

2.3通信协议流程2.3.1微信发送数据的格式协议

作为GATT服务器,让微信小程序积极连接,成功连接后,读取服务列表并将数据写入特定服务的特征值;

字段含义

字节[0]

红色值

红色亮度

字节[1]

价值

绿色亮度

字节[2]

蓝色值

蓝色亮度

做微信联接小程序_微信小程序开发实战连接_微信开发者版链接

2.3.2格式协议,用于将数据发送到微信

与上表相同;

3。代码;

关于BLE蓝牙交流的过程,每个人都必须做功课。在线上有很多教程。

我们从BLE开始,单独查看其“”代码,然后将数据发送到某个频道,然后您可以阅读日志打印,因此请缓慢,正确,只需学习此步骤即可;

关于修改蓝牙名称,文件具有宏定义,只需修改广播数据并修改结构的内容即可。

3.1分析由微信系发送的蓝牙数据

更不用说其他事情了,我主要谈论此事件回调:

1//微信端写入数据回调
2case ESP_GATTS_WRITE_EVT:
3
4 if (!param->write.is_prep)
5    {
6        ESP_LOGI(GATTS_TAG, "GATT_WRITE_EVT, value len %d, value :", param->write.len);
7        esp_log_buffer_hex(GATTS_TAG, param->write.value, param->write.len);
8        ESP_LOGE(GATTS_TAG, "param->write.value[0] %d", param->write.value[0]);//就是我们的 red
9        ESP_LOGE(GATTS_TAG, "param->write.value[1] %d", param->write.value[1]);//就是我们的 green
10        ESP_LOGE(GATTS_TAG, "param->write.value[2] %d", param->write.value[2]);//就是我们的 blue
11        rgb_set_pwm(param->write.value[0],param->write.value[1],param->write.value[2]);
12    }
13 example_write_event_env(gatts_if, &a_prepare_write_env, param);
14break;

3.2主动将数据发送到微信小程序

该设备会积极将数据发送到微信终端,并遵循特征通知特征。像下面一样,这意味着发送十六进制阵列数据;

1uint8_t data[3] = {pwmRGB[0], pwmRGB[1], pwmRGB[2]};
2//主动通知客户端
3esp_ble_gatts_send_indicate(gatts_if, param->read.conn_id, param->read.handle, 3, data, false); 

4。微信微编码代码;

长期以来,微信小程序支持BLE发送和接收。上个月,我在公司中做了两个微信小组BLE项目。我非常熟悉使用BLE来控制微信小组或小程序中的蓝牙设备。因此,我花了一天的时间将蓝牙连接封装以控制微信小问题,以及异常的监视和其他操作,以成为图书馆。我将其命名为Xble。后来,我将发布一篇详细的博客文章,以介绍我​​封装的蓝牙库。让我们先使用它!

[步骤1]搜索附近的蓝牙设备:

1//初始化微信蓝牙,后面我会做支付宝小程序适配
2wxBleImplement.initXBLE(); 
3
4//监听全部蓝牙事件,第一个是增加监听回调函数,如果是 false则表示移除这个回调函数
5xBle.listenDeviceMsgEvent(truethis.funListenDeviceMsgEvent); 

[第二步]在回调函数的形式参数中,有(类型,数据,),其中最重要的是类型,而其他类型是与数据相关的;

以下列出了所有类型事件的含义。它非常详细:

1let TYPE_XBLE = {
2    FAIL_INIT: 0//初始化ble失败
3    FAIL_DISCOVERY: 1//搜索设备失败
4    FAIL_CONNECTTING: 2//连接设备失败
5    FAIL_DIS_CONNECTTED: 3//中途断开设备
6    FAIL_READ_SERVICEID: 4//读取设备失败serviceId
7    FAIL_READ_CHARAID: 5//读取设备特征值失败
8    FAIL_NOTIFY_CHARAID: 6//通知连接设备特征值改变失败
9    FAIL_SEND_DATA_CHARAID: 7//发送数据到连接设备失败
10    FAIL_LISTENER_DATA_CHARAID: 8//监听指定特征值数据失败
11    FAIL_STOP_DISCOVERY: 9//停止搜索失败
12    FAIL_DEVICE_USER_DISCONNECT: 10//用户断开指定设备成功
13
14    OK_DISCOVERY_START: 20//搜索设备成功开始
15    OK_DISCOVERY_RESULT: 21//搜索设备成功回调
16    OK_DISCOVERY_STOP: 22//搜索设备成功结束
17    OK_DEVICE_CONNECTED: 23//设备成功连接
18    OK_DEVICE_USER_DISCONNECT: 24//用户断开指定设备成功
19    OK_READ_SERVICEID: 25//读取设备成功serviceId
20    OK_READ_CHARAID: 26//读取设备成功CHARAID
21
22    OK_DISCOVERY_OVER: 50//搜索设备成功回调
23    OK_DEVICE_NEW_DATA: 51//设备成功返回数据
24    OK_SEND_DATA_CHARAID: 52//发送数据到连接设备失败
25};

[步骤3]将设备连接到呼叫,真正意味着连接,是指断开连接,在设备发现列表中输入设备:

1 xBle.notifyConnectEvent(true, deviceId)

[步骤4]获取设备的服务列表:

1    //获取服务列表
2    xBle.notifyReadServiceIdEvent(options.deviceId);

[步骤5]获得服务列表后,从服务中获取特征值:

1 //监听这个特征(表示主要esp32往这个通道发消息,就会被监听到)
2xBle.notifyTheDeviceCharacteristicEvent(deviceId, serviceId,characteristicsId);
3
4 //读取这个特征值,同步状态
5 xBle.notifyReadDeviceCharacteristicEvent(deviceId,serviceId, characteristicsId)

[步骤6]获取功能值,您可以交流!例如,发送0x01 0x01 0x01,请注意,这些参数都是从上述参数获得的,并且都不缺少它们!对于剩余的发送点击事件,请仔细阅读我的代码!

1    var ab = new ArrayBuffer(1)
2    var u8array = new Uint8Array(ab);
3    u8array[0] = 0x01;
4    u8array[1] = 0x01;
5    u8array[2] = 0x01;
6    xBle.notifyWriteDeviceEvent(_this.data.deviceId, serviceId, characteristicsId, ab);

[步骤7]可以通过此回调获得设备侧发送的数据,不要忘记将其转换为十六进制字符串;

1        let rgb = this.ab2hex(data.value);
2        console.log('数据回调data', rgb )
3        //同步ui
4        this.setData({ 
5          lightValueBlue: Number('0x' + rgb[2]),
6          lightValueGreen: Number('0x' + rgb[1]),
7          lightValueRed: Number('0x' + rgb[0]),
8        })

5。下载;

由于我努力开发和组织文档,因此支付了该项目的所有源代码(微信Mini Code + Code),我感谢您支持猪肉rib大米的费用。按照此官方帐户发送下载链接或扫描下面的QR码;

我过去的工作

我是一个完整的程序员,他喜欢共享,熟悉前端微信小程序,PHP服务器开发和嵌入式智能硬件编程。

作为一名经验丰富的开发驱动力,我完成了许多项目,包括与阿里巴巴智能生活平台,类型,的 和的智能平台连接的更多商业项目,以及一些用于驱动红外,彩色灯光和一些数字管的小型项目。我个人认为我有一些有关开发的见解。因此,该微信官方帐户输入“ 8266文件”,以获取我在正常时间概述的最常见的开发问题,并帮助每个人都跳过开发此芯片的陷阱!

我们还处于开源,微信Mini 控制硬件,服务器分销网络和其他物体代码项目中,欢迎使用Star!帮助国内物联网的发展!

如果您有任何技术问题,项目计划或项目外包,请在下面联系我的电子邮件地址!我可以独立完成所有前端和后端硬件工作!

CSDN:

小徐的独家QQ讨论小组,拥有许多资源:

分享