描述

步骤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精彩内容

点击阅读全文

linux蓝牙小车,蓝牙控制遥控车制作教程相关推荐

  1. STM32蓝牙后驱小车详细制作教程

    前言 忙里偷闲,出于兴趣做了一个STM32蓝牙小车,看了很多教程,要么讲的不清不楚,要么付费下载源码,实属烦人,遂写下本教程,完全开源免费,主要包含以下资源: 1.小车成品图 2.零件购买链接 3.原 ...

  2. 语音+蓝牙控制灯泡的制作教程

    功能原理 教学流程 一.蓝牙配置(两个HC-05蓝牙互连) 配置环境: 串口调试助手(放在压缩包中) 2块HC-05(淘宝搜索即可购买) 2个TTL模块(机芯智能淘宝店可以购买) 步骤: [AT模式] ...

  3. Arduino智能小车——蓝牙小车

    Arduino智能小车--蓝牙小车 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 点 ...

  4. 新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源)

    新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源) 2017年08月21日 12:55:25 XPLab 阅读数:4008 你家里的玩具遥控车坏了?遥控器丢了?先不要急着丢掉 ...

  5. APP Invertor 制作BLE蓝牙APP 控制esp32蓝牙小车

    APP Invertor蓝牙小车制作 1.插件下载 1.1.导入插件 2.APP界面展示 2.1 .可视化编程 3.esp32 蓝牙代码 4.实测效果 4.1 APP控制端 4.2 蓝牙接收端   经 ...

  6. 硬件篇:手把手教你制作属于你的遥控车(51单片机蓝牙小车)

    重要声明 本人为软件工程专业,硬件不是本专业的学习范畴,因为本人对硬件感兴趣,自学了部分51单片机知识,这个小车是20年上半年因为疫情被困在家中突发奇想做的,现在有空闲时间就想着写一篇博客,分享给同样 ...

  7. stm32的语音识别_基于stm32循迹避障语音控制金属探测蓝牙小车设计(原理图+pcb+源码+参考文档)...

    功能描述及设计原理: 小车具有检测里程功能,在金属探测模式,槽型光耦会检测小车车轮的圈数,以此来计算小车行走的里程,并可以通过OLED屏幕显示出来.还可以显示小车的工作模式以及小车距离前方障碍物的距离 ...

  8. 串口控制小车电机转动+蓝牙长按控制

    串口控制小车电机转动+蓝牙长按控制 程序 1.main.c:调用串口初始化函数,循环里调用Stop函数让小车停止 2.Motor.c:小车前进.后退.左转.右转和停止的函数 3.Delay.c:延时函 ...

  9. STM32蓝牙小车制作全过程---刚入门的小白也能会

    首先我本人也是学stm32满打满算也才半个学期的小白,经过半学期的学习总感觉理论啥的虚了点,所以就打算搞辆蓝牙小车来练练手,这就有了现在的这篇文章,来分享一下制作小车时的一些问题和经验希望能帮助到更多 ...

最新文章

  1. python 结束子线程并保证工作完成_python3中在线程中结束工作进程的方法
  2. 【译】Jumping into Solidity — The ERC721 Standard (Part 4)
  3. CentOS 7.4 基于LNMP搭建wordpress
  4. 让人期待的Visual Studio 2010
  5. 局域共享解决——用户账户限制,可能的原因包括不允许空密码,登录时间限制...
  6. 机器学习(一) 基于sklearn库的数据集划分(交叉验证)
  7. Educational Codeforces Round 101 (Rated for Div. 2) C. Building a Fence 思维取范围
  8. InstallSheild 获取系统环境变量,如Desktop路径等
  9. yum更新指定的软件
  10. Ubuntu 下解压tar.xz方法
  11. 关于ISA WPAD的深入探讨
  12. [2019南京网络赛D题]Robots
  13. Java之strictfp关键字
  14. 详述RFID服装智能管理方案
  15. 易达园林注册机_科创易达园林绿化插件免费版
  16. 三维扫描仪[8]——如何设计一台云台式扫描仪(机械结构)
  17. 无线路由当交换机的设置方法
  18. Exp6 信息搜集与漏洞扫描 20164323段钊阳
  19. Fluent最全complied错误原因分析:Error: The UDF library you are trying to load (libudf) is not compiled for
  20. 【阅读笔记】《Catching Both Gray and Black Swans: Open-set Supervised Anomaly Detection》

热门文章

  1. Eclipse编写html——讨论charset设置
  2. 解决Excel打开后灰色没有内容的问题
  3. 电视台搞的知识竞赛原来都用了这些软件硬件设备
  4. 阿里云OCR-身份证/营业执照识别
  5. 51单片机入门学习 第二天
  6. z17原生Android系统,努比亚z17mini系统版本低了点,能升级到安卓7.0吗?
  7. 网络营销实战课-文案实操2
  8. ORM(对象关系映射)
  9. 2022年山东省安全员C证考试题库及山东省安全员C证考试报名
  10. 微搭低代码实现下拉框动态填充值