Rice我叫加饭? · 2021年02月03日

基于RT-THREAD nano的平衡车--微信小程序

首发:Rice 嵌入式开发技术分享
作者:RiceDIY

简要

  • 平衡车文章分为4篇进行说明:
  1. 《平衡车 - 硬件》:讲解平衡车的硬件设计。
  2. 《平衡车 - 软件》:讲解平衡车的软件设计,算法。
  3. 《平衡车 - 上位机》:讲解调参上位机的设计
  4. 《平衡车 - 微信小程序》:讲解微信小程序作为遥控器的实现。
  • github连接:https://github.com/RiceChen/B...\_Car.git * 为了能够方便的控制小车,PC上位机虽然容易开发,但是不方便。安卓原生APP虽然方便,但是不懂安。所以我选择了微信小程序,虽然我不会JS,但是他的选择是最正确的。开发容易,而且方便。
  • 因为平衡车板载BLE,微信小程序也支持BLE,所以完美搭配

软件设计

  1. 其实微信小程序我在之前已经写过一文章:
  1. 上面这篇描述了最基本BLE版本的微信小程序开发。
  2. 而在我的平衡车中,也是基于上面的代码进行补充,包括UUID的过滤,数据包的打包等功能。
  • 过滤UUID, 获取对应UUID(0000FFE0-0000-1000-8000-00805F9B34FB)的属性:
  // 获取要连接设备的服务  
    getBLEDeviceServices(deviceId) {  
      this.printLog("获取设备服务: " + deviceId)  
      wx.getBLEDeviceServices({  
        deviceId,  
        success: (res) => {  
          for (let i = 0; i < res.services.length; i++) {  
            if(res.services[i].uuid == "0000FFE0-0000-1000-8000-00805F9B34FB") {  
              this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid)  
            }  
          }  
        }  
      })  
    },  
  • 数据打包,协议上跟PC上位机与下位机通信协议一致,这样不用定义两套协议:
   //发送前进命令  
    up_command() {  
      var that = this;  
      that.sendData = "bc,02,01,00,00,00,00,00,00,00,00,0a";  
      this.writeBLECharacteristicValue(that.sendData)  
    },  
  
    writeBLECharacteristicValue(sendData) {  
      var that = this;  
      let data = sendData.split(',')  
      let buffer = new ArrayBuffer(data.length)  
      let dataView = new DataView(buffer)  
      for (let j = 0; j < data.length; j++) {  
        dataView.setUint8(j, '0x' + data[j])  
      }  
    
      wx.writeBLECharacteristicValue({  
        deviceId: this._deviceId,  
        serviceId: this._serviceId,  
        characteristicId: this._characteristicId,  
        value: buffer,  
        success (res) {  
          // that.printLog("发送数据成功");  
        },  
        fail (res) {  
          that.printLog("发送数据失败")  
        }  
      })  
    },  

效果:

5701612344512_.pic_hd.jpg

关注微信公众号『Rice嵌入式开发技术分享』,后台回复“微信”添加作者微信,备注”入群“,便可邀请进入技术交流群。

image.png
推荐阅读

更多嵌入式技术干货请关注Rice 嵌入式开发技术分享
推荐阅读
关注数
1756
内容数
51
一个周末很无聊的嵌入式软件工程师,写写经验,写写总结。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息