描述
步骤1:为Android设备编写应用程序,以将数据发送到蓝牙模块。
我们使用MIT应用程序发明家2网站来编写应用程序。在此网站上,您无需编程知识即可轻松创建带有编程块的应用程序。
汽车的基本行驶方向是左,右,前进和后退。要指定4个不同的动作,2位就足够了。指定汽车的方向移动之后,让我们设置汽车的速度。我们可以将速度调整为4种不同的设置,而2个二进制位就足够了。数据以8位数据包的形式发送到Bluetooth模块,而5位数据对我们来说就足够了。
现在,我们可以创建有关这些计算的应用程序。 4个用于定义旋转的按钮,一个用于设备和速度控制的列表选择器以及一个用于连接的按钮就足够了。另外,我们必须添加蓝牙客户端和蓝牙服务器模块以建立蓝牙连接。要查看方向按钮是否对齐,请使用表格排列。
在设计之后,我们通过单击块部分来通过编程。使用Mix Application Inverter 2进行编程非常容易。您可以通过单击左侧的组件来添加所需的块。在这一部分中,我们填写列表选择器的内容,然后将蓝牙设备排成一行,以便前者与设备匹配,因此,为了提高速度,我们将数字排列为“ 1、2、3、4”。您可以在此处找到此Android应用程序的项目。
步骤2:从蓝牙模块获取数据
《用于蓝牙通信的p》 HC06模块使用UART作为通信协议。 HC06默认发送1个起始位,8个数据位和1个停止位,并且波特率为9600。 Silego GreenPAK具有SPI模块。我们将对SPI模块进行一些补充,以允许从HC06模块获取数据。最初,SPI协议需要一个外部时钟。但是,在UART协议下,数据以恒定速率传输。另一个区别是SPI通信中没有启动或停止位。我们将使用一个起始位来获取SPI时钟。 UART协议在空闲时处于高功率状态,在开始通信时(进入低位)进入低功率状态。
我们可以使用下降沿检测器来识别通信的开始。我们将此信号连接到DFF的时钟引脚,将VDD连接到数据引脚,以使连接在连接期间保持活动状态。因此,PDLY0块将在通信开始时通过捕捉下降沿来设置连接标志。 UART协议具有9600波特率,这意味着它能够每秒传输9600位。要找到一个周期的时间,您必须将1秒除以9600。如果立即开始运行时钟,则数据和时钟信号将同时更改,这可能会导致数据丢失。因此,时钟信号必须延迟半个周期。我们使用CNT6/DLY6块应用了此延迟。通过将OSC模块中的RC OSC频率设置为2000 kHz,我们获得了更高的频率。从中获得较高频率的周期具有较短的周期,并且计数器的绝对定时分辨率提高。因此,我们降低了计数器的错误率。
CNT6块设置为延迟半个周期(0,1042/2 = 0,0520 ms)。我们使用另一个计数器(CNT2)获得一个周期的持续时间(0,142 ms)。我们将此计数器的时钟设置为External Clock0。通过应用逻辑和处理,我们将来自OSC的OUT1信号和CLK BEGIN信号连接到OSC的外部Clock0输入。因此,CNT2仅在连接开始时才开始计数。为了提供更多细节,计数器模块对时钟信号的边沿进行计数。如果计数器不断向CLK引脚发送高电平或低电平信号,则计数器停止计数。在这里,我们将CLK Begin信号与OUT1信号进行“与”运算,并将它们连接到外部CLK0输入。这样,在没有连接的时刻,ANDing CLK Begin信号和OUT1信号将始终等于0,并且CNT2将停止计数。
但是,当提供连接时,CLK Begin信号将为“ 1“,逻辑和运算的结果将是OUT1信号,并将使CNT2继续计数。我们将CNT2计数器的输出(其周期持续时间已预先计算)连接到SPI模块的SCLK引脚。因此,我们为来自HC06的每个字节数据生成了一个时钟周期。
最后,我们设置延迟以计算连接的到期时间并将连接清零。连接开始后,该计数器将开始测量持续时间,并在数据传送完成后结束连接。在测量9个字节的持续时间后,我们将连接归零。在停止字节期间将连接清零可使SPI模块在形成新连接之前准备就绪。否则,如果打算在10个字节的持续时间结束时将其清零,则可能无法捕获新连接的起始字节。我们将来自PLY5模块的SPI引脚的输出引脚,计算出的1个周期持续时间的计数器以及用作连接标志的DFF0复位。但是,与其他信号不同,我们在复位DFF0之前将信号延迟了一段时间。如果您重置SLG46620V芯片的反延迟模块,则该模块的输出芯片将保持高电平1个周期。如果您同时重置CNT2和DFF0,则CLK Begin信号将保持低电平,从而停止CNT2的时钟停止。由于CNT2将保持高电平1个周期,并且时钟将不断变为低电平状态,因此CNT2将无法完成1个周期,而是将稳定地保持在高电平状态。因此,我们首先重置CNT2块,然后在几个周期后重置DFF0。
步骤3:电动机/汽车的控制
在此阶段,我们通过更改直流电动机的输出来更改汽车的速度和方向。通过蓝牙接收汽车的方向和速度信息。当我们通过SPI模块接收到来自UART协议的数据时,将在这里使用SPI并行输出模块。
UART和SPI通信之间的区别之一是发送字节的顺序。当最初使用SPI协议发送MSB(最高有效位)时,最后使用UART协议发送它。因此,我们将以相反的顺序接收数据的字节。我们将S1和S0字节字节链接到PWM0块。如上所示应用了PWM0的设置后,就配置了CNT8/DLY8模块。 。 SLG46620V CMIC无法直接驱动直流电动机。因此,我们将使用电源和电机驱动器来控制它们。直流电动机驱动器通过根据通常称为M1-A,M1-B,M2-A和M2-B的控制销向电动机的销通电来运行电动机。我们在设计中建立了连接,如表6所示。
LUT为电机驱动器输入提供适当的逻辑信号。因此,当开合信号处于低电平状态时,电机输出引脚将保持低电平,并且电机将不会旋转。
打开APP阅读更多精彩内容
点击阅读全文