Arduino蓝牙遥控器的制作

电子说

1.3w人已加入

描述

步骤1:控制器电路

蓝牙遥控器

控制器在引脚2和3中具有BT模块,在引脚4和2中具有开关由引脚11和12驱动的LED。

已保留LED,以表明交换机正在执行其工作。

步骤2:小工具电路

蓝牙遥控器

电路中显示了Arduino Uno,因为它更易于测试,但它可能是另一种类型,例如Nano对于移动小工具会更好。引脚连接将相同。

BT模块位于2和3中,和以前一样。

H桥从8,9和10驱动。

LED分别在11和12上。

电机应该有一个小电容来顺利完成操作,H桥连接应具有1K电阻器以帮助保护Arduino。

步骤3:通信

现在可以设计命令了

数据需要有一种固定的格式,以便可以识别命令并知道它是正确的命令,而不仅仅是一些随机数据。这本身就是一个整个行业,但是可以发明一个简单的“协议”来完成这项工作。

每个命令的长度正好为6个字符,并且参数最多为6个字符。/p》

每个命令将以“ @”符号开头,并以“#”符号结尾。该命令本身当然不能包含‘@’或‘#’符号。

因此,现在有效的命令如下所示:

@SPEED 150#

该命令以‘@’开头,后6个字符为‘SPEED’,然后最多6个字符‘150’以‘#’结尾。

此项目有四种命令类型,它们的类型分别为可能的参数:

速度,0到255,设置电动机速度

LEDRED ,打开或关闭,变成红色LED开启或关闭

LEDGRN ,打开或关闭,打开或关闭绿色LED

DIRECT ,FORWRD或REVRSE,控件电机方向

从控制器发送的数据如下:

@SPEED 0#@ LEDREDON#@ LEDGRNOFF#@ DIRECTFORWRD#@ SPEED 120#

依此类推。

步骤4:控制器程序

程序的开头设置了一些引脚分配,并启动了串行监视器和BT模块。

程序的其余部分围绕读取开关和电位器值并将它们发送到BT模块。

字符串变量用于构建“打印”到BT模块的命令行。每次发送命令都会施加延迟。

通信中的重要考虑因素是定时。如果Controller发送数据的速度超过了Gadget接收数据的速度,则会丢失信息,并且遥控器将无法正常工作。

程序会循环循环并每次发送所有输入值,因此4每个循环发送命令。这些的总时间可以使用延迟来调整。程序其他部分所需的时间最少,因为像这样的简单指令将在微秒内执行。

应该有一套完整的控制值,每秒大约发送3次,这将非常快对于我们的简单控制项目来说足够了。如果传输速度太慢,则可以提高BT模块的UART速度。在更复杂的项目中可能会发生这种情况。两个模块都需要设置为相同的UART值,例如38400。请注意,这与串行监视器的9600通讯速率无关。

第5步:小工具程序

蓝牙遥控器

小工具

定义中包含用于保存命令的字符串以及命令的两个部分“命令类型”和“命令参数”。

应避免延迟在这个程序中。如果程序运行太慢,则可能会丢失一些命令。

程序循环将执行以下步骤:

从BT模块获取命令

识别命令类型

执行命令

重复

程序的结构是这样的,以便主循环识别该命令,然后调用一个函数来对其进行处理。这样可以轻松地将新命令添加到主循环中,并具有单独的代码块来执行该命令。例如,可以添加伺服器。良好的程序结构也使查找错误变得更加简单。

创建了一个名为GetDataFunction的函数,用于从BT模块读取命令。

(该函数调用等效于BASIC中的gosub GetDataFunction)。

然后将命令分为cmdtype和cmdpara。

该命令必须位于要执行的“ if”语句列表。任何无效的命令都将被忽略。例如,无效的命令可能是由于数据损坏或通信时序错误造成的。

执行命令的功能与电机控制程序中的功能完全一样。

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分