步驟1:控制器電路
控制器在引腳2和3中具有BT模塊,在引腳4和2中具有開關(guān)由引腳11和12驅(qū)動(dòng)的LED。
已保留LED,以表明交換機(jī)正在執(zhí)行其工作。
步驟2:小工具電路
電路中顯示了Arduino Uno,因?yàn)樗子跍y(cè)試,但它可能是另一種類型,例如Nano對(duì)于移動(dòng)小工具會(huì)更好。引腳連接將相同。
BT模塊位于2和3中,和以前一樣。
H橋從8,9和10驅(qū)動(dòng)。
LED分別在11和12上。
電機(jī)應(yīng)該有一個(gè)小電容來順利完成操作,H橋連接應(yīng)具有1K電阻器以幫助保護(hù)Arduino。
步驟3:通信
現(xiàn)在可以設(shè)計(jì)命令了
數(shù)據(jù)需要有一種固定的格式,以便可以識(shí)別命令并知道它是正確的命令,而不僅僅是一些隨機(jī)數(shù)據(jù)。這本身就是一個(gè)整個(gè)行業(yè),但是可以發(fā)明一個(gè)簡單的“協(xié)議”來完成這項(xiàng)工作。
每個(gè)命令的長度正好為6個(gè)字符,并且參數(shù)最多為6個(gè)字符。/p》
每個(gè)命令將以“ @”符號(hào)開頭,并以“#”符號(hào)結(jié)尾。該命令本身當(dāng)然不能包含‘@’或‘#’符號(hào)。
因此,現(xiàn)在有效的命令如下所示:
@SPEED 150#
該命令以‘@’開頭,后6個(gè)字符為‘SPEED’,然后最多6個(gè)字符‘150’以‘#’結(jié)尾。
此項(xiàng)目有四種命令類型,它們的類型分別為可能的參數(shù):
速度,0到255,設(shè)置電動(dòng)機(jī)速度
LEDRED ,打開或關(guān)閉,變成紅色LED開啟或關(guān)閉
LEDGRN ,打開或關(guān)閉,打開或關(guān)閉綠色LED
DIRECT ,F(xiàn)ORWRD或REVRSE,控件電機(jī)方向
從控制器發(fā)送的數(shù)據(jù)如下:
@SPEED 0#@ LEDREDON#@ LEDGRNOFF#@ DIRECTFORWRD#@ SPEED 120#
依此類推。
步驟4:控制器程序
程序的開頭設(shè)置了一些引腳分配,并啟動(dòng)了串行監(jiān)視器和BT模塊。
程序的其余部分圍繞讀取開關(guān)和電位器值并將它們發(fā)送到BT模塊。
字符串變量用于構(gòu)建“打印”到BT模塊的命令行。每次發(fā)送命令都會(huì)施加延遲。
通信中的重要考慮因素是定時(shí)。如果Controller發(fā)送數(shù)據(jù)的速度超過了Gadget接收數(shù)據(jù)的速度,則會(huì)丟失信息,并且遙控器將無法正常工作。
程序會(huì)循環(huán)循環(huán)并每次發(fā)送所有輸入值,因此4每個(gè)循環(huán)發(fā)送命令。這些的總時(shí)間可以使用延遲來調(diào)整。程序其他部分所需的時(shí)間最少,因?yàn)橄襁@樣的簡單指令將在微秒內(nèi)執(zhí)行。
應(yīng)該有一套完整的控制值,每秒大約發(fā)送3次,這將非常快對(duì)于我們的簡單控制項(xiàng)目來說足夠了。如果傳輸速度太慢,則可以提高BT模塊的UART速度。在更復(fù)雜的項(xiàng)目中可能會(huì)發(fā)生這種情況。兩個(gè)模塊都需要設(shè)置為相同的UART值,例如38400。請(qǐng)注意,這與串行監(jiān)視器的9600通訊速率無關(guān)。
第5步:小工具程序
小工具
定義中包含用于保存命令的字符串以及命令的兩個(gè)部分“命令類型”和“命令參數(shù)”。
應(yīng)避免延遲在這個(gè)程序中。如果程序運(yùn)行太慢,則可能會(huì)丟失一些命令。
程序循環(huán)將執(zhí)行以下步驟:
從BT模塊獲取命令
識(shí)別命令類型
執(zhí)行命令
重復(fù)
程序的結(jié)構(gòu)是這樣的,以便主循環(huán)識(shí)別該命令,然后調(diào)用一個(gè)函數(shù)來對(duì)其進(jìn)行處理。這樣可以輕松地將新命令添加到主循環(huán)中,并具有單獨(dú)的代碼塊來執(zhí)行該命令。例如,可以添加伺服器。良好的程序結(jié)構(gòu)也使查找錯(cuò)誤變得更加簡單。
創(chuàng)建了一個(gè)名為GetDataFunction的函數(shù),用于從BT模塊讀取命令。
(該函數(shù)調(diào)用等效于BASIC中的gosub GetDataFunction)。
然后將命令分為cmdtype和cmdpara。
該命令必須位于要執(zhí)行的“ if”語句列表。任何無效的命令都將被忽略。例如,無效的命令可能是由于數(shù)據(jù)損壞或通信時(shí)序錯(cuò)誤造成的。
執(zhí)行命令的功能與電機(jī)控制程序中的功能完全一樣。
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
188文章
6489瀏覽量
190027 -
藍(lán)牙遙控器
+關(guān)注
關(guān)注
0文章
6瀏覽量
7637
發(fā)布評(píng)論請(qǐng)先 登錄
藍(lán)牙語音遙控器 低功耗芯片選型HS6621CxC/OM6621
藍(lán)牙語音遙控國產(chǎn)適用芯片HS6621
我的DIY遙控器——小擺件遠(yuǎn)程控
四頻拷貝遙控器走俏海外

OM6621E 低功耗BLE5.1協(xié)議Soc芯片 藍(lán)牙語音遙控器原理應(yīng)用
技術(shù)再進(jìn)化——工業(yè)遙控器技術(shù)要求更高
數(shù)字遙控器

定制遙控器主要分為哪些步驟?
RF遙控器廠家:射頻遙控器將成為未來的控制主流
如何選購適合的拷貝遙控器——增配遙控器教程來啦

OM6621E 低功耗BLE5.1協(xié)議Soc芯片 藍(lán)牙語音遙控器原理應(yīng)用

碩博電子藍(lán)牙APP,支持工程機(jī)械遠(yuǎn)程操控 #遙控器 #工程機(jī)械遙控
遙控器解碼器怎么使用
藍(lán)牙語音遙控器方案

老陸測(cè)功耗03 | 遙控器該扔嗎?

評(píng)論