APP Invertor蓝牙小车制作

  • 1、插件下载
    • 1.1、导入插件
  • 2、APP界面展示
    • 2.1 、可视化编程
  • 3、esp32 蓝牙代码
  • 4、实测效果
    • 4.1 APP控制端
    • 4.2 蓝牙接收端

  经过几天的学习,终于成功制作了一个属于自己的蓝牙APP,APP可以控制蓝牙小车。
  使用 App Inventor 2 WxBit 汉化增强版 编写APP,建议使用这个,不同的APP Invertor 版本里面会有所差异。我的目的是为esp32 连接蓝牙,所以使用传统的蓝牙客户端是无法连接成功的,如果使用传统的蓝牙客户端会在连接时报 507错误。因为传统的蓝牙模块不是BLE (低功耗模块),在蓝牙4.0之前的都是传统蓝牙模块。因此我们需要下载 BLE插件。需要APP工程文件和代码的留言。

1、插件下载

BLE插件下载:BluetoothLE
截至目前插件最新是version 20200828

1.1、导入插件

2、APP界面展示

界面由文本框、按键、标签结合相应的布局构成。

2.1 、可视化编程

初始化,连接蓝牙:
需要说明一下,收发服务的UUID 是不同的2个值,定义在esp32 代码里面。

接收数据以及按键:


里面的特征UUID在发送端和接收端是不同的,不要混淆使用。
代码里面UUID:
定义于ESP32代码里面。

3、esp32 蓝牙代码

  这个代码里面仅仅有蓝牙接收和发送数据部分,没有实例小车运行代码。小车的控制信号都已经收到了,实例小车的运行只需要根据收到的信号,做出不同的反应就可以。

// 包含所必需的库
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>BLEServer *pServer = NULL;
BLECharacteristic *pTxCharacteristic;
bool deviceConnected = false;
bool oldDeviceConnected = false;char BLEbuf[32] = {0};
String data = "";// 定义收发服务的UUID(唯一标识)
#define SERVICE_UUID           "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
// RX串口标识
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
// TX串口标识
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"class MyServerCallbacks: public BLEServerCallbacks {void onConnect(BLEServer* pServer) {deviceConnected = true;};void onDisconnect(BLEServer* pServer) {deviceConnected = false;}
};class MyCallbacks: public BLECharacteristicCallbacks {void onWrite(BLECharacteristic *pCharacteristic) {std::string rxValue = pCharacteristic->getValue();if (rxValue.length() > 0) {Serial.println("*********");//接收数据Serial.print("Received Value: ");for (int i = 0; i < rxValue.length(); i++){Serial.print(rxValue[i]);}Serial.println();data =rxValue.c_str();//Serial.println(data);Serial.println("*********");Serial.println();}}
};// setup()在复位或上电后运行一次:
void setup() {Serial.begin(115200);Serial.println("1- Download and install an BLE scanner app in your phone");Serial.println("2- Scan for BLE devices in the app");Serial.println("3- Connect to MyESP32");Serial.println("4- Go to CUSTOM CHARACTERISTIC in CUSTOM SERVICE and write something");Serial.println("5- See the magic =)");// 初始化蓝牙设备BLEDevice::init("MyESP32");// 为蓝牙设备创建服务器pServer = BLEDevice::createServer();pServer->setCallbacks(new MyServerCallbacks());// 基于SERVICE_UUID来创建一个服务BLEService *pService = pServer->createService(SERVICE_UUID);pTxCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX,BLECharacteristic::PROPERTY_NOTIFY);pTxCharacteristic->addDescriptor(new BLE2902());BLECharacteristic * pRxCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX,BLECharacteristic::PROPERTY_WRITE);pRxCharacteristic->setCallbacks(new MyCallbacks());// 开启服务pService->start();// 开启通知pServer->getAdvertising()->start();Serial.println("Waiting a client connection to notify...");Serial.println();
}// loop()一直循环执行:
void loop() {if (deviceConnected==1&data.length()>0) {memset(BLEbuf, 0, 32);memcpy(BLEbuf, data.c_str(), 32);//数据赋值Serial.println(BLEbuf);pTxCharacteristic->setValue(BLEbuf);   //收到数据后返回数据 pTxCharacteristic->notify();data = "";  //返回数据后进行清空,否则一直发送data}// 没有新连接时if (!deviceConnected && oldDeviceConnected) {// 给蓝牙堆栈准备数据的时间delay(500);pServer->startAdvertising();// 重新开始广播Serial.println("start advertising");oldDeviceConnected = deviceConnected;}// 正在连接时if (deviceConnected && !oldDeviceConnected) {// 正在连接时进行的操作oldDeviceConnected = deviceConnected;}
}

4、实测效果

4.1 APP控制端

APP控制端在连接蓝牙之前需要手机自带的蓝牙提前配对。

4.2 蓝牙接收端


自此一个简单的蓝牙APP控制小车的基本代码和框架就出来了。

APP Invertor 制作BLE蓝牙APP 控制esp32蓝牙小车相关推荐

  1. 无代码app在线制作VS传统app开发,无代码app在线制作有哪些不同之处?

    一.在线制作VS传统开发 传统的app开发流程,比较复杂,需要经过市场分析.需求分析.规划设计.程序开发.测试修改.上线发布.维护修改等等.无代码app在线制作平台,用户可以直接使用各种开发完善的ap ...

  2. APP Invertor 蓝牙BLE 个人案例分享 快速开发自己的蓝牙APP

    APP Invertor 2 蓝牙BLE 个人案例分享 快速开发自己的蓝牙APP 经过几天的学习,期间查找了许多的文章资料.经过研究和总结加实践,终于做出了一个实现简单的接收和发送的Demo.下面将分 ...

  3. 蓝牙BLE(协议栈、OSAL、蓝牙APP工具)

    目录 蓝牙配对和绑定 蓝牙4.0 BLE 信道(RF Channel) BLE协议栈分层 PHY层(Physical layer 物理层) LL层(Link Layer 链路层) HCI层(Host ...

  4. 可编程手机蓝牙App控制直流电机速度

    我们将通过 Android 应用程序 (app) 介绍直流电机速度控制.对于该项目,该应用程序安装在智能手机设备中,该设备使用蓝牙向控制直流电机速度的电路发送命令. 此 Android 应用程序具有引 ...

  5. STM32单片机蓝牙APP自动伸缩遮阳棚雨伞雨滴角度温度光强控制

    实践制作DIY- GC0130-蓝牙APP自动伸缩遮阳棚 一.功能说明: 基于STM32单片机设计-蓝牙APP自动伸缩遮阳棚 二.功能介绍: 基于STM32F103C系列,LCD1602显示器,光敏电 ...

  6. stm32 温湿度_基于STM32单片机大棚温湿度检测无线蓝牙APP控制设计

    本设计由STM32单片机+风扇控制电路+温湿度传感器电路+1602液晶显示电路+蓝牙模块电路+电源电路组成. 通过温湿度传感器检测温湿度,并在液晶上和APP上实时显示. 当湿度超过75度,APP发出报 ...

  7. ESP32:蓝牙BLE控制M3508电机

    ESP32:蓝牙BLE控制M3508电机 先给各位朋友拜个年,祝大家新春快乐,事事顺利,身体健康啊! 还是熟悉的3508,内容概述: ESP32主控 蓝牙BLE通信 使用实时系统(FreeRTOS) ...

  8. 69、基于STM32单片机智能两轮双轮自平衡小车 蓝牙app控制系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.程序源码 六.资料包括 摘要 目前,国内市场上的平衡车琳琅满目,但多数功能单一, 价格 ...

  9. 关于从零开始学习qt制作蓝牙app和PC端的记录

    1.提前准备学习 由于本人在此之前只学习过C语言,了解到QT制作会用到C++的基础部分,所以提前学习了C++,大概花费三天 接下来学习QT 推荐B站学习 基本只需要学习基本使用 后面实践才是最重要的 ...

最新文章

  1. python 简易计算器(只能计算加减乘除和括号)
  2. pytorch处理多维输入的问题
  3. optee堆Virtualization(hypervisor)的支持
  4. 第三次学JAVA再学不好就吃翔(part33)--final关键字
  5. GitHub的CI实践(xUnit / OpenCover /Appveyor / Coveralls.net)
  6. python widnows mysql_Windows下python安装MySQLdb
  7. Oracle or Question Solve(二)
  8. 创建表结构相同的表,表结构相同的表之间复制数据,Oracle 中 insert into XXX select from 的用法...
  9. centos安装mysql-proxy
  10. linux lsattr命令: 显示文件属性
  11. SpringBoot整合mongodb数据库
  12. 对话PPIO联合创始人王闻宇:整合边缘算力资源,开拓更多音视频服务场景
  13. NET、wap网络的区别
  14. 【专栏必读】王道考研408数据结构万字笔记、题目题型总结、注意事项、目录导航和思维导图
  15. delphi android 截屏,Delphi 截图\截屏
  16. 2018/7/31-zznu-oj-问题 F: 手机密码--【裸dfs+for循环即可!——据说三个小时内只有两个人读完了题意并轻松AC了】...
  17. Derek Sivers:我是一个慢思考者(译)
  18. OFD文件怎么转PDF?ofd文件转换为pdf格式教程
  19. daliu_IT学习Android笔记第一篇--Android是什么?安卓的logo来源?安卓的发展过程?
  20. USB OVER Network的使用(共享usb端口)

热门文章

  1. 计算机房等电位接地规范,计算机机房的等电位接地箱有啥作用啊
  2. 用键盘输入-位整数,当输入1~7时,显示对应的英文星期名称的缩写。1表示MON, 2表示TUE, 3表示WED, 4表示THU,5表示FRI, 6表示SAT, 7表示SUN
  3. 新手建站教程:如何建一个网站?
  4. Yammer Starter 免积分下载
  5. opencv (十七)图像透视变换
  6. VMware NAT端口映射 在不同网段外网可访问内网虚拟机配置
  7. 在Mac上录制视频时如何调整音量?
  8. 支撑一个人信念的名言
  9. vue使用nprogress(进度条)
  10. Bootstrap(四十六)