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…

learnpythonthehardway下载_LearnPythonTheHardWay学习笔记1:学习环境搭建

觉得学习这本书应该有笔记,所以就从这里开始吧。 学习资料: 1.《笨办法学Python》(承德-至阳整理 2013/7/19) 2.《Learn Python The Hard Way,3rd Edition》 (Zed A. Shaw 2010) 一、准备学习环境 &#xf…

java ajax多文件上传插件_ajaxFileUpload.js插件支持多文件上传的方法

前提条件:ajaxFileUpload.js插件多文件上传步骤:1、修改源码,(源码只支持单个文件的上传)://修改前代码-------//var oldElement jQuery(# fileElementId);//var newElement jQuery(oldElement).clone();//jQuery(oldElement).…

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

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

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

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

pythonwhile循环怎么修改数据类型_python开发学习day05 (while循环; for循环; 数字类型操作)...

2020-06-05 目录: 一、流程控制之while循环 1.1 什么是while循环? 1.2 为什么要用while循环? 1.3 怎么用while循环? 1.3.1 基本用法 1.3.2 死循环 1.3.3 while循环的结束 1.3.4 while循环的嵌套 1.3.5 whilecontinue 1.3.6 whilee…

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

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

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

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

easyui java管理系统_EasyUI 后台管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)开发工具:VS2015(2012以上)SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 任务调度…

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…

java ruby脚本_Java 程序中直接执行 Ruby 脚本 (JRuby)

1.[代码]MainClass.javaimport java.io.BufferedReader;import java.io.FileReader;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;public class MainClass {public static void main(String[] args) throws Excep…

python win32gui安装_python-无法安装win32gui

我正在尝试使用pip安装win32gui,但出现错误: C:\Users\?????>pip install win32gui Collecting win32gui Using cached https://files.pythonhosted.org/packages/b8/75/7bed82934e51903f9d48b26b3996161bb2dce1731607b4bb7fd26003ed3e/win32gui-221.5.tar.…

时间戳 java_java中获取时间戳的方法

在java开发过程中经常会遇到统计某一天或是某一个月的数据,因此常常需要获取截取数据的两个时间戳(比如统计今天的数据,则需要获取一个开始时间为今天零点以及一个结束时间为明天零点),然后根据数据相关的时间是否在该时间区间内来判断是否将…

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

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

python合并多个pdf_python合并多个pdf文件

假设您有个无聊的工作,将几十个PDF文档合并成一个PDF文件。 他们每个都有封面页作为第一页,但你不希望在最终结果中重复覆盖表。 即使有有很多免费的程序来组合PDF,其中许多只是合并整个文件在一起。 让我们编写一个Python程序来自定义哪些页…