microbit编程_使用图形化编程实现主控板与手机蓝牙通讯(2019.3.25)

249e4168f88c86173a5798d16c4c8f02.png

本文转自:DFRobot创客社区

原文链接:

[Mind+]使用图形化编程实现主控板与手机蓝牙通讯-Mind+论坛-DF创客社区​mc.dfrobot.com.cn
c85d9d3fc5ef6a64d922ce4d0a482859.png

本帖最后由 Forgotten 于 2019-3-25 12:58 编辑

做项目时我们经常会遇到蓝牙的问题,例如使用appinventor制作一个app控制板子,或者将板子的数据通过蓝牙传到手机上。

遂决定研究一下手机与主控板的蓝牙通讯。

材料选择:

1、我们选择的是蓝牙通讯,蓝牙通讯的好处是可以很方便的跟手机进行通讯,缺点是点对点通讯(最新的蓝牙会支持多点通讯,不在我们讨论范围内),传输速度比较低(无法传视频图像等)。

2、蓝牙有不同的代数,有不同的功能(类比最开始手机都是大哥大,后面有2G、3G、4G、5G等等),我们当前最常见的是蓝牙2.0(bluetooth)和低功耗蓝牙4.0(BLE,Bluetooth Low Energy),但是两者都可以实现通讯功能。

4、由于BLE无需密码配对,两个设备靠近就可以,安卓和苹果都支持,因此我选择兼容性更好也是更方便的BLE进行操作。一般我们常见的HC-05,HC-06是蓝牙2.0,使用方法略有不同(appinventor界面的程序不同),本教程我们选择DFRobot出品的BLE-Link蓝牙模块作为样例,同时为了接线方便兼容各种不同的主控板,我们需要一个转接模块。

链接:BLE-Link蓝牙模块xbee io扩展板

21636628d8c07e55a921f6cd93135f53.png

bf261848a7917d85a74ded0e5c7d4880.png

本篇我们首先了解一下基础知识。

BLE-Link通讯的接口是串口,因此只要是支持串口的主控板均支持,不管是Arduino还是microbit又或是掌控,同样的板或者不同的板之间,只要支持串口,板子连接一个BLE-Link就可以实现通讯,因此在本教程中不区分板子,以使用最为广泛的arduino uno板进行通讯为例。

(注:尽管microbit、esp32等板子自带了蓝牙,但是由于占用空间大,或是使用不稳定,因此外接一个蓝牙模块也是一个不错的选择)

示意图:

5c7dbf799215b9a64c65c50c1de68a09.png

接下来我们进入实操环节:

实现效果:手机app发送一个消息给主控板,主控板收到消息后把这个消息返回给手机app显示。

1、手机app准备:

我使用appinventor制作了一个手机app方便进行调试,可以直接下载附件apk文件在安卓手机上进行安装,也可以在appinventor里面打开我的aia文件进行修改编辑。

app inventor 2:mit开发的安卓手机端图形化编程软件,目前国内已经有中文服务器了,可以在线编程,手机直接扫描二维码或者使用ai伴侣即可运行,比较方便,推荐两个网址任选:广州电教馆服务器17coding,基本使用功能可以参考17coding的教程。

appinventor的aia文件点击下载

安卓端app软件点击下载

编程界面:

ee3650317ff346ad877b7a28d7843448.png

手机app界面:

584579a05fccef3609834dd8ecf78736.png

2、BLE-Link准备:

首先需要将BLE-Link设置为从机,这样手机才能搜索到,还可以改个名字方便识别。

使用usb线连接BLE-Link上的usb口,打开Mind+上传模式,选择BLE-Link对应的端口,波特率选择115200,打开串口监视器,如下图:

349645f2b7338f3c5500644980451486.png

16ff051643de33679120cebe6f5f7710.png

选择“没有结束符”,输入+++ 发送,此时会显示 Enter AT Mode,极为进入了BLE-Link设置模式

118dc7fc3e84b41f51517b1a4b60618c.png

接下来将“没有结束符”切换成“回车加换行”,依次发送以下三条命令:

AT+SETTING=DEFAULT

AT+NAME=BLE-Link1

AT+RESTART

10ad9c1252df8dc53c7e26d44d5066c1.png

注:第一条是恢复出厂设置成从机,第二条是将此模块名字设置为BLE-Link1,第三条是重启模块使设置生效。更多AT命令见wiki

接下来我们将BLE-Link插到io扩展板上,并使用四根杜邦线引出5V RX TX GND

d04ffc1ef538d08a4b1dc49016d867ef.png

3、对主控板进行编程:

我们要实现将手机app发送的消息返回给手机app,因此就是从串口把收到的数据再通过串口输出即可,程序如下图:

58adcdf2701f3d1f191c0a2eb2532f78.png

程序上传到uno之后,连接BLE-Link与Uno板(BLE-Link的TX接uno的D0,RX接uno的D1,5V接VCC,GND接GND),手机app搜素连接BLE-Link,Link灯亮,发送hello,情况如下:

b53e183153b7b457ebfff4fcf949d773.png

59fcd2f7a6a836285b3bb04727082e55.png

发现返回了5个数字,为什么会这样呢?我们就看一下ASCII字符编码表,发现这5个数字对应的是5个字符的十进制编码,因为数据在收发的过程中都是以101010形式的二进制传输的,接收到的时候如果不做转换就是数字了。

a4812045911887777e024360e62911e0.png

因此我们如果要显示字符的形式,那么我们就进行一下转换,Mind+的“运算符”中有对应的模块转成ASCII字符,修改程序如下:

5713923f1e56bf2ac9ae543b0c25317d.png

再次上传,注意因为BLE-Link占用的串口和上传程序是一个串口,因此在每次上传的时候需要拔下D0上的线,否则会报错。

a2703deb6ef7dc7d02a4001a7263bdb3.png

3ba7deed2f894d4471d8247e0c394094.png

再次发送hello,这次正常显示了数据,至于为什么换行了,就是程序发送的情况了,串口发送是每次一个字符的,所以执行下来就换行了5次。

a5e3295de02488b23528f88536d348bb.png

5cdd9eb5338547d03c12733218e17e6b.png

未完待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

山海伏妖录java_山海伏妖录攻略大全 剧情结局加点妖兽大全

山海伏妖录是一款非常经典的ARPG游戏,其中有许多的剧情,结局,妖兽以及加点方案。Remilia为大家带来山海伏妖录攻略大全,各种攻略都能在这里查到,助您畅玩山海伏妖录!山海伏妖录人物介绍配角介绍山海伏妖录结…

spark环境搭建java_Spark MLlib 环境搭建超详细教程

1、系统及环境版本系统:Win7 旗舰版 64位 sp1JDK:1.8.0Spark:2.3.2Hadoop:2.7Scala:2.11.8文章最后,有所有版本的下载链接,不用再去折腾版本之间的问题。2、环境下载2.1 Spark 下载spark2.2 had…

python自动发邮件附件_python自动发送带附件的邮件(163邮箱,亲测可用)

1.设置发送邮件邮箱的SMTP服务 https://www.360kuai.com/pc/927b9f8da3555bb70?cota4&kuai_so1&tj_urlxz&sign360_57c3bbd1&refer_sceneso_1 设置步骤时,记住设置的邮箱的独立密码,在以下脚本中能够用到2. python脚本 import smtplib f…

java 导出bcp文件格式_使用BCP导出导入数据

bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数据文件。 除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL…

鱼骨图分析法实际案例_会用“鱼骨图”的项目经理无难题

项目经理在遇到一些瓶颈问题时,如何突破这些难题?答案就是鱼骨图!项目经理,广州深圳PMP培训,PMP认证考试培训机构,圣略PMP培训考试1、鱼骨图分析法介绍鱼骨图的由来及含义鱼骨图是由日本管理大师石川馨先生所发明出来的,故又名石川…

mysql5.6.msi 百度云_如何安装Mysql数据库类型msi(5.6)

首先让大家看下我下载的数据库有多少哈,还不包括我删除的一些数据库。光是8.0.17.0的数据库我就下载了四五个,经常安装数据报错,我一直找不到是啥原因,所以我就把所有的全部给删掉了,然后一遍一遍的安装。现在想想还真…

mysql如何下载msi_2、Windows下MySQL数据库下载与安装详细教程 MSI方式

做者:叁念mysql写在前言:本文篇幅比较长,可是整体分为三大部分:下载部分、安装部分、环境配置与测试部分 ;读者能够自行选择阅读web1、下载部分MySQL数据库下载与安装详细教程sql1.如何下载MySQL?(本文章以5.6版本实际…

python词云乱码_python词云库wordCloud使用方法详解(解决中文乱码)

文章中的例子主要借鉴wordColud的examples,在文章对examples中的例子做了一些改动。 一、wordColud设计中文词云乱码 使用wordColud设计词云的时候可能会产生乱码问题,因为wordColud默认的字体不支持中文,所以我们只需要替换wordColud的默认字…

linux同时安装python2和python3_linux-Centos7安装python3并与python2共存

1.查看是否已经安装Python CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。 使用 python -V 命令查看一下是否安装Python 然后使用命令 which python 查看一下Python可执行文件的位置可见执行文件在/usr/bin/ 目录下,切换到该…

opencv获取模板旋转角度_OpenCV入门之获取图像的旋转角度

在我们的日常生活中,所碰到的图像往往都有一定的倾斜。那么,如何用OpenCV来获取图像的旋转角度呢?   我们以下面的图片为例,简单介绍如何用OpenCV来获取图像的旋转角度。可以看到,该图像存在着许多噪声,且…

后台使用orm多还是直接sql_Django应用app创建及ORM

Django应用app创建及ORM一.重要知识点回顾:1. form表单提交数据的注意事项:1. 是form不是from,必须要有method和action (action用来指定你的数据提交到后台哪个地方,method用来指定你提交数据的方式)2. 所有获取用户输入的表单标签要放在form表单里面&am…

求一批整数中出现最多的个位数字_C语言经典100例007-求低n-1位的数

系列文章《C语言经典100例》持续创作中,欢迎大家的关注和支持。喜欢的同学记得点赞、转发、收藏哦~后续C语言经典100例将会以pdf和代码的形式发放到公众号欢迎关注:计算广告生态 即时查收1 题目函数:unsigned fun(unsigned w)功能…

java文件序列化_Java序列化与反序列化,文件操作

参考两篇博客:http://blog.csdn.net/moreevan/article/details/6697777http://blog.csdn.net/moreevan/article/details/6698529针对第二篇博客,看了下面的评论,发现子类输出的书号其实是父类的,书名是自己先添加的成员变量&#…

python自定义模块和三方模块_python基础知识8——模块1——自定义模块和第三方开源模块...

模块的认识模块,用一砣代码实现了某个功能的代码集合。类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数…

dhcp只能分配与路由器相同网段么_路由器的桥接详解

网上关于路由器无线桥接的教程很多,让你注意那注意这的,都没有说明白。今天,我来试着缕清它们间的关系!1、主路由器这是我主路由器目前的状态,其中IP地址是我在上级光猫路由的可用ip段192.168.1.2~254里选的一个&#…

java orcl自动_Oracle自动生成编号

祝大家新年快乐,有任何问题可与我联系:今天用JAVA向Oracle数据库中插数据时,每次都要去计算ID,觉得好麻烦,于是想到了用数据库自带的ID来做,具体如下:1、首先得创建一序列序列(SEQUENCE)序列是一…

import java.awt.BorderLayout;_Swing-布局管理器之BorderLayout(边界布局)-入门

边界布局管理器(BorderLayout)把容器的的布局分为五个位置:CENTER、EAST、WEST、NORTH、SOUTH。依次对应为:上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER),如下图所示。特征:l 可以把组件放在这五个位…

java 建造者实际中的用法_java中j建造者模式详解和使用方法

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的…

jsp测试mysql_Jsp登陆与MySQL对接验证

最近在做一个Web项目,账户登陆验证是Web项目中必不可少的环节,所以需要阶段性的记录,帮助自己更好的掌握其中的知识。Jsp登陆涉及到POST方法参数获取,以及MySQL数据库信息的获取。可能因为自己是新手,刚开始写的项目有…

数据归一化处理方法_科研常用的实验数据分析与处理方法

科研常用的实验数据分析与处理方法对于每个科研工作者而言,对实验数据进行处理是在开始论文写作之前十分常见的工作之一。但是,常见的数据分析方法有哪些呢?常用的数据分析方法有:聚类分析、因子分析、相关分析、对应分析、回归分…