电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>Arduino 101 BLE漫游者遥控器

Arduino 101 BLE漫游者遥控器

2022-12-22 | zip | 0.26 MB | 次下载 | 免费

资料介绍

描述

 

 
poYBAGOibvGAKV5EAACq-oq9nJg578.jpg
 

我购买了一个 Arduino 101 用于 Arduino 兼容性以及内置蓝牙低功耗和 6 轴加速度计/陀螺仪等额外功能。我想用我的 Arduino 101 构建一个基于 Arduino 的远程控制流动站,但很难找到示例代码。我发现了许多使用蓝牙的 RC 漫游者示例,但没有一个使用蓝牙 LE。

通信问题分解成小块,我需要:

  • 确定如何创建一个可行的远程控制以将这些字节发送到流动站的状态机。

我确实解决了这两个问题。我很快发现我可以修改 CurieBLE 库中包含的 LED 和 CallbackLED 示例,以将一个字节传输到 Arduino 101,但很难找到可靠、易于使用的遥控器。经过大量的互联网搜索和一些工作后,我找到了一个新颖的解决方案,在此介绍。

第 1 步:通过 BLE 向 Arduino 101 发送字节

 
 
 
 
poYBAGOibvaAfuQjAABsXTEQgT4706.jpg
 
1 / 3
 

我在 Arduino 论坛上找到了这个基本通信挑战的答案:Arduino 论坛 > 产品 > Arduino 101。这是解释。

在名为 CallbackLED 的 Arduino 101 CurieBLE 示例中 - 定义了一个事件处理程序,以便在写入开关特性时调用。函数中的代码setup()如下所示:

// assign event handlers for characteristic  
switchChar.setEventHandler(BLEWritten, switchCharacteristicWritten);

switchCharacteristicWritten事件处理函数中,代码检查写入的值是零 (0x00) 还是其他值。如果非零,它将“打开”LED,如果为零,它将“关闭”LED。代码如下所示:

if (switchChar.value()) {
    Serial.println("LED on");    digitalWrite(ledPin, HIGH);
else {
    Serial.println("LED off");    digitalWrite(ledPin, LOW);   }

要捕获写入的字节,只需将其保存到一个变量中,然后在串口监视器上打印出来,代码如下所示:

if (switchChar.value()) { 
    Serial.println("LED on"); 
    digitalWrite(ledPin, HIGH); 
    char state =     switchChar.value(); 
    Serial.print("new value written: "); 
    Serial.println(state);  }
else {
    Serial.println("LED off"); 
    digitalWrite(ledPin, LOW);   }

我通过 Nordic Semiconductor 的 nRF Connect 应用程序编写角色来验证此功能是否有效,该应用程序在 Play Store 和 App Store 中均可用。

以下是安装应用程序后的详细步骤:

1.运行nRF Connect应用

2. 按右上角的“扫描”运行扫描仪 - 它通常会自动运行

3. 选择您的命名服务(在示例中它被命名为“LEDCB”)。

4. 按右侧的“连接”。

5. 选择未知服务(服务列表中的最后一个)。

6. 按右边的向上箭头。这会弹出一个写入值对话框。

7. 按“新值”,输入一个十六进制字节值,如 61 - 这是 ASCII 文本中的“a”。

8. 按右下角的“发送”,您的字节就被发送了。

按照这些步骤,我们成功地通过蓝牙 LE 将字节写入 Arduino 101。

第 2 步:创建蓝牙 LE 遥控器

 
 
 
 
poYBAGOifWmAOGTNAABsTxPXnVQ228.jpg
 
1 / 4
 

我喜欢 nRF Connect 应用程序,但我找不到制作可用遥控器的方法。通过 nRF Connect 应用程序手动输入字节不会让我有效地控制流动站。为了试用其他 Arduino 101 示例,我下载了另一个名为 nRF 工具箱的 nRF 应用程序。在工具箱中,最后一个应用程序的名称为“UART”。UART 应用程序有九个用户可定义的按钮,可以配置为在按下按钮时发送命令。按右上角的“编辑”会使所有按钮变为橙色。触摸按钮会弹出一个对话框,将图标与按钮相关联,并定义按下时要发送的命令。

我有一部 Android 手机,可用图标与我的遥控器完美匹配。IOS 设备上,图标不太适合这种用法,但请选择您能记住的图标。我的流动站的运动控制基于使用以下配置的简单单字节代码(我使用了 Deba168 教程中用于“智能手机控制的 Arduino 流动站”的控制序列)。这是命令列表和相应的字符:

一个 - 向前

b - 左

c - 停止

d - 右

e - 反转

1 - 25% 的电机功率

2 - 50% 的电机功率

3 - 75% 的电机功率

4 - 100% 电机功率

当我第一次创建遥控器时,我输入了字符的 ASCII 值 - 这没有用。正确的命令是字母/数字本身,而不是它的 ASCII 值。当我输入所有九个图标和命令时,我按下“完成”。我完成的遥控器看起来像图片。

简单吧?还好没那么快。当我尝试将具有 CallbackLED 开关特性的 Arduino 101 BLE 服务连接到 UART 应用程序时,它会抱怨“该设备没有所需的服务”。我在 Nordic 和 UART 上进行了互联网搜索。我发现 UART 应用程序希望看到非常具体的服务 UUID 和特征。使用以下信息https://www.nordicsemi.com/eng/Products/Nordic-mob ...。我将正确的服务名称、UUID 以及 Tx 和 Rx 特征集成到我的 Arduino 草图中,然后我进行了一些调整以解决该服务可以传输多个字符并因此提供指向第一个元素的指针这一事实一个数组并且它有效。

第 3 步:测试遥控器

 
pYYBAGOifWyALdPQAAB_zO7sqeM774.jpg
 

Sketch 会将传输的字节发送到串行监视器,以验证 UART 应用程序上的每个按钮是否发送了所需的字节。

要使用遥控器,请按照下列步骤操作:

1.打开nRF工具箱

2. 选择串口应用

3. 按“连接”按钮,然后选择您的 BLE 服务的名称 - “BLE_ROV”。

该按钮现在应显示为“断开连接”。您现在已连接,每次按下按钮都会传输该按钮的命令。

注意:在使用旧 IOS 手机测试此草图时,我发现我宣传的本地名称“BLE_ROV”没有出现在要连接的列表中。相反,我看到类似“Arduino 101-xxxx”的内容,其中 xxxx 是 BLE 芯片 Mac 地址的最后 4 个十六进制数字 - 显示在 Arduino 101 板背面的小标签上。只需选择要连接的名称,一切都会正常。

这是我能找到的最简单的解决方案。当您按下遥控器上的每个键然后断开连接时,包含可供下载的 Arduino 草图以及串行监视器的图像。

我希望这是有用的。我将在稍后提供我建造的漫游者的完整说明。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1SL6341B USB3.2 Gen1X1 接口的的4口HUB
  2. 2.94 MB   |  5次下载  |  免费
  3. 2使用CR6850C设计并制作12V5A开关电源
  4. 1.53 MB   |  5次下载  |  2 积分
  5. 3设计院eplan 500多页项目图纸
  6. 21.43 MB   |  3次下载  |  1 积分
  7. 4和芯润德USB3.0HUB芯片SL6341设计资料
  8. 2.58 MB   |  2次下载  |  免费
  9. 5stm32sx1262资料大全
  10. 7.98 MB   |  2次下载  |  免费
  11. 6放大器和位:数据转换器放大器选择简介
  12. 455.89KB   |  1次下载  |  免费
  13. 7P6KE6.8A瞬态抑制二极管 DO-15封装 产品规格书
  14. 0.37 MB   |  1次下载  |  免费
  15. 81.5KE8.2A 瞬态抑制二极管 DO-201AD封装规格书
  16. 0.30 MB   |  1次下载  |  免费

本月

  1. 1新概念模拟电路第四册信号处理电路电子书免费下载
  2. 10.69 MB  |  51次下载  |  免费
  3. 2SW6308V原理图设计指南
  4. 0.75 MB   |  14次下载  |  1 积分
  5. 3SW6308V三口多协议升降压移动电源SOC中文手册
  6. 1.61 MB   |  14次下载  |  1 积分
  7. 4800VA纯正弦波逆变器的参考设计
  8. 2.96MB   |  13次下载  |  免费
  9. 5纯电动汽⻋的主要部件及⼯作原理
  10. 5.76 MB   |  12次下载  |  5 积分
  11. 6GP328和GP88S对讲机的维修实列资料合集免费下载
  12. 0.03 MB   |  10次下载  |  10 积分
  13. 7SW6308V寄存器手册
  14. 1.08 MB   |  10次下载  |  1 积分
  15. 8Type-C VL160数据手册
  16. 0.92 MB   |  9次下载  |  3 积分

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935115次下载  |  10 积分
  3. 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
  4. 1.48MB  |  420061次下载  |  10 积分
  5. 3Altium DXP2002下载入口
  6. 未知  |  233084次下载  |  10 积分
  7. 4电路仿真软件multisim 10.0免费下载
  8. 340992  |  191365次下载  |  10 积分
  9. 5十天学会AVR单片机与C语言视频教程 下载
  10. 158M  |  183329次下载  |  10 积分
  11. 6labview8.5下载
  12. 未知  |  81581次下载  |  10 积分
  13. 7Keil工具MDK-Arm免费下载
  14. 0.02 MB  |  73805次下载  |  10 积分
  15. 8LabVIEW 8.6下载
  16. 未知  |  65985次下载  |  10 积分