让我们少说话,第一个项目演示: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(true, this.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讨论小组,拥有许多资源: