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.pswp.cn/news/534903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534903.shtml
英文地址,請注明出處:http://en.pswp.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程序來自定義哪些頁…