电子发烧友App

硬声App

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

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

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用nRF52832连接到Android和ESP826的机器人

使用nRF52832连接到Android和ESP826的机器人

2023-01-03 | zip | 0.65 MB | 次下载 | 免费

资料介绍

描述

概述

我的机器人ArduinoMEGA2560 控制。

使用了 MEGA2560 的所有功能:3 个串行接口I2C、SPI、PWM、ADC 和 2 个中断。这就是为什么我选择了提供如此多接口的MEGA2560。但请注意,MEGA2560 在中断方面有一点限制,因为如果使用 I2C 和 Serial2,则 6 个中断中有 4 个不可用。

MEGA2560 唯一缺少的功能是蓝牙和 WIFI 连接。为此,我添加了一个 nRF52832 来处理蓝牙和一个 ESP8266 来处理 WIFI。第一个管理从 Android 上运行的用户界面接收到的命令,第二个将数据和图片发送到 Raspberry PI

最初我还使用了一个 ESP8266 来管理从我的 Windows PC 接收到的命令,但是 WIFI 太耗电了,所以我已经将这部分迁移到 Android 和 BLE 蓝牙,所以现在命令是从我的手机发送的。

设备

现在让我们更详细地讨论所实施的设备。在设备列表下方。

  • nRF52832
  • ESP8266
  • 4 motors
  • 2 H-bridges
  • 2 Contact sensors
  • Sharp IR
  • Servo for IR
  • 3 ToF
  • Compass
  • LCD
  • RGB led
  • Buzzer
  • Camera
  • Tilt&Pan servos for Camera
  • SD Card
  • RTC
  • Brightness sensor
  • Temperature & Humidity sensor
  • Motion sensor
  • Sound sensor

首先,有 4 个电机由 2 个 H 桥控制,使用 PWM 和数字引脚进行管理。他们有专用的锂离子电池,以免干扰 MEGA2560,但不要忘记接地,否则 PWM 将无法工作。

为了让机器人能够独立运行,实现了以下装置:

  • 3 连接到 I2C 的飞行时间 TOF 可以非常精确地指示机器人与潜在障碍物之间的距离(最大 1、20 m)。一个TOF设置在机器人的正面,另外2个设置在左右两侧,与正面成45°角。它们的管脚 Shutdown 被管理以便为每个设备设置不同的 I2C 地址。如果需要,它们被配置为允许每 33 毫秒测量一次。为了避免不稳定的措施,只考虑措施样本的中位数。
  • 一个连接到 ADC 并安装在伺服系统上的 IR Sharp 检查机器人周围障碍物(左右)的距离(最大 0.80 米)。请注意,它不如 TOF 精确。伺服由 PWM 控制,允许将 IR Sharp 从 -180° 移动到 + 180°,超过静态的 TOF。
  • 左右两侧安装了 2 个接触传感器检测撞击,以防机器人没有及时检测到障碍物!

每 165 毫秒(33*5:nb 样本测量),Front TOF 测量机器人与潜在障碍物之间的距离。

如果距离小于Distance minimum,则机器人向没有障碍物的方向转45°,如果检测到左右两侧有障碍物则返回。安装在 Tilt&Pan 上的 IR Sharpis 用于检查周围的障碍物。连接到 I2C 的罗盘提供方向以控制转弯。如果接触传感器检测到提示,机器人也会遵循此过程。

如果距离介于 Distanceminimum 和 Distance nominal 之间,则机器人会检查左右 TOF 测量的距离,并通过加速/减速一侧的电机将其推向最佳方向。

如果距离大于标称的距离,则机器人继续直线向前运行。

机器人还可以检查环境并在异常变化时发出警报。监测的参数如下:

· 运动由触发 MEGA2560 中断的传感器检测。所以这个警报是实时的。

· 连接到 Digitalpin 的温度和湿度可以检测温度或湿度的异常变化

· 亮度也由连接到 I2C 的传感器监控

· 我已经尝试了几种声音传感器,但是没有一个是足够的:当我增加扬声器的音量时,它们不会检测到。不要犹豫,推荐一个!

在出现警报的情况下,机器人会使用安装在倾斜盘上的相机拍照。因此相机可以水平和垂直从-180°到+180°移动。相机连接到 Serial3,Tilt pan 的 2 servos 由 PWM 控制。

图片存储在与 SPI 连接的 SD 卡上的 jpeg 文件中。然后 MEGA2560 通过 Serial1 以 38400 波特将它们发送到 ESP8266 客户端,然后通过 WIFI 将机器人捕获的数据发送到 Raspberry PI

Raspberry PI 上有 PHP 程序,将接收到的数据存储在 TXT 文件和 MySQL 数据库中。如果出现警报,Raspberry PI 会发送包含这些数据和相应图片的电子邮件。

除了所有这些设备之外,还有一些其他组件可以监控系统:连接到数字引脚的 RGB LED 和蜂鸣器、连接到 I2C 的实时时钟 RTC 和 LCD。

主要用于实时了解系统在做什么,因为当机器人运行时不再连接和记录到 IDE 标准串口。日志被写入 SD 卡上的一个文件中,带有跟踪和 RTC 时间戳,因此可以在以后进行分析。

 

命令

该机器人可以独立运行,但也可以通过在 Android 或 Windows 上运行的用户界面 UI 进行管理。

在 Windows 上,UI 是使用 google widgets 用 HTML/jQuery 编写的。如前所述,命令通过 WIFI 发送到专用的 ESP8266 服务器,该服务器在通过 Serial2 发送命令之前中断 MEGA2650。所以 MEGA2650 不会阻塞等待命令,但他可以在需要时尽快管理它。

响应被传输回 ESP8266,然后传输到 UI。请注意,ESP8266 最大的不便之处在于功耗,大约 80mAh。所以几个小时后 LIPO 780mAh 就没电了,所以我需要在不再需要任何 UI 时手动关闭 ESP8266 服务器。

这就是为什么我又建立了一个基于安卓和蓝牙的界面的原因。

这个 UI 是使用 MIT App Inventor 编写的,可以轻松地为 Android 创建软件应用程序。命令通过 BLE 蓝牙使用串行服务发送到 nRF52832,在通过串行 2 发送命令之前中断 MEGA2650。所以 MEGA2650 不会阻塞等待命令,但他可以在需要时尽快管理它。

请注意,与 WIFI 相比,蓝牙缓冲区非常小(20 字节)。

命令如下:

  • 测试物联网
  • 每n秒检查一次
  • 停止
  • 图片
  • 移动倾斜和平移
  • 四处看看
  • 获取数据
  • PI通讯方式

与 Raspberry PI 的通信

ESP8266 Client负责通过WIFI向树莓派发送数据和图片。

为了降低功耗,它始终处于深度睡眠模式,并在通过串行接口发送任何数据或图片之前,由 Arduino 触发的 pinDTR/RTS 的 10ms 低脉冲唤醒。请注意,由于 ESP 启动过程也使用串行来记录一些信息,ESP 的启动有时会被阻止,我在启动后立即交换 ESP 的串行引脚以避免与 Arduino 发生冲突。

发送数据后,Arduino 立即向 ESP 发送睡眠命令以返回深度睡眠模式。

 

软件

在软件方面,我用 C++ 为每个设备编写了一个库,并且有一个主程序Robot处理 MEGA2560 的核心处理并调用库中的函数。

最后这个程序非常大,希望 MEGA 2560 有足够的内存来运行它,但你肯定不能在 Uno 上运行它。请注意,所有用于记录的字符串都存储在闪存中以赢得数据存储器空间。

此外,还有 2 个主要程序用于ESP 服务器(基于蓝牙或 WIFI ESP 客户端

还有一些工具:

  • 设置 RTC 的时间
  • 将 WIFI 凭据存储在 ESP 的闪存中(因此它们不会显示在 Git 中!)
  • 校准罗盘

大多数代码源已在网上找到(感谢开源!),然后进行定制/改进。一个关键点是大多数时候在网上找到的资源没有正确处理错误,所以我完成了这部分,主要是在 I2C 部分。

每个设备在集成到核心程序之前都经过专用草图单独测试。这对于更好地理解行为和了解限制非常有用。例如,有时设备会提供不稳定的测量结果,因此获取测量样本并计算中位数会更加安全。

初始化部分也非常关键,我在这个阶段为每个设备添加了一些测试用例,以便在开始之前验证一切是否准备就绪。例如,更改 TOF 的 I2C 地址以避免总线冲突。

我还构建了一个库来定义 nRF、ESP 和 Arduino 之间的协议,以确保串行接口上​​的传输质量良好并避免死锁。这是强制性的,因为串行接口不安全,如果串行缓冲区已满且读取器未准备好,一些字节可能会丢失。

 

 


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

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费