RVR漫游车-STEM教育机器人平台之资料汇总

举报
zhangrelay 发表于 2021/07/15 01:40:43 2021/07/15
【摘要】 什么是Sphero RVR Rover? https://www.sphero.com/rvr 基本款(如上图所示):RVR是Sphero可编程机器人的革命性产品-即开即用、可驱动、装有多种传感器套件、可定制。通过连接第三方硬件(例如Raspberry Pi、Arduino、BBC micro:bit或Sphero自己的littleBits),进一步扩展RVR...

什么是Sphero RVR Rover

https://www.sphero.com/rvr

基本款(如上图所示):RVR是Sphero可编程机器人的革命性产品-即开即用、可驱动、装有多种传感器套件、可定制。通过连接第三方硬件(例如Raspberry PiArduinoBBC micro:bit或Sphero自己的littleBits),进一步扩展RVR的功能。RVR是移动空白画布。使用它进行编程学习,在上面构建代码,然后解密梦想中的机器人-然后将其带到任何地方。

配件如下:

  • 灵活快捷的可移动盖板和显影板
  • 移动的保护性防滚架
  • 充电电池
  • 通用的4针UART扩展端口,用于连接第三方硬件(Raspberry Pi,Arduino,micro:bit)
  • 5V 2.1A USB-A板载连接器,可使用RVR的电池的项目供电。
  • Sphero Edu应用程序兼容并可编程

多机器人套件:

RVR Multi-Pack是扩展STEAM课程的理想方法。它包括5个可编程RVR,因此在班级中实现理想的学生与机器人的比例。分组工作,以构建移动项目,参加Hackathon竞赛或部署RVR的IR功能,并进行机器人到机器人的通信,机器人跟随和机器人逃避的实验。

共同成长:

激活创意:

第三方扩展支持 3rd Party Time

借助RVR的4针UART扩展端口和板载电源,还可以连接并运行第三方硬件,例如Raspberry Pi,Arduino,micro:bit和Sphero的littleBits。希望RVR成为可以通过互联网控制的家庭安全岗哨,自主金属探测器或环境传感器吗?

一切创意,皆有可能!!!

Sphero SDK

https://sdk.sphero.com/

基础版扩展

SparkFun的RVR基本套件为Sphero RVR平台提供了一组扩展的传感器。

 

套件包括

  • Raspberry Pi Zero  WH
  • SparkFun Qwiic GPS-SAM M8Q
  • 4针至4针0.1“接口电缆
  • Pi相机模组V2
  • PanTilt套件
  • Pi相机线
  • SparkFun Pi伺服
  • 4-40 Nuts
  • 4-40 1/4“螺栓
  • 4-40 1/2“螺栓
  • Qwiic电缆100mm
  • Double Sided Foam Tape Square
  • 具有自定义映像的16GB MicroSD

高级版扩展

RVR自动运行所需的一切(以及一些其他),包括Raspberry Pi Zero W和摄像头。

套件包括

  • Raspberry Pi Zero  WH
  • SparkFun Qwiic GPS-SAM M8Q
  • 4针至4针0.1“接口电缆
  • Pi相机模组V2
  • PanTilt套件 
  • Pi相机线 
  • SparkFun Pi伺服
  • VL53L1X飞行时间传感器Qwiic板 
  • 4-40 Nuts
  • 4-40 1/4“螺栓 
  • 4-40 1/2“螺栓 
  • 4-40直角支架 
  • 3/16“外径六角支架(公-母)4-40 x 3/4” 
  • Qwiic电缆50mm 
  • Qwiic电缆200mm 
  • Double Sided Foam Tape Square
  • 亚克力板 
  • 具有自定义映像的16GB MicroSD

第三方开发资料:


使用Arduino SDK进行设置

Arduino的C ++ SDK

GitHub下载代码!

然后,您可以进入Arduino IDE并转到 Sketch > Include Library > Add Zip Library

在Arduino IDE中下载软件包!

通过导航Sketch > Include Library > Manage Libraries并搜索SpheroRVR

安装完成后,直接在示例中使用案例,或自编代码:


Python库

https://pypi.org/project/sphero-sdk/

pip3 install -U sphero-sdk


树莓派

https://www.kinvert.com/sphero-rvr-sdk-python-programmable-robot/


部分图集,课程完备,敬请期待:


使用Arduino将RVR变成WeatherBot

(官方案例,机器翻译)

RVR变成自定义的WeatherBot!虽然它无法控制天气,但它可以测量并在字母数字显示器上显示当前温度,还可以将其(RVR的)LED设置为与温度相对应的颜色。

 

本示例将展示如何将几种不同的技术整合到一个项目中。因此,它需要大量的组装!请抽出时间并认真按照说明进行操作,特别是如果之前没有组装过电路的话!

注意:如果暴露在低于-20C(-4F)或高于60C(140F)的温度下,RVR中的电池可能会失效,因此在测试WeatherBot时请不要太疯狂!另外,如果还决定测试湿度,请记住,RVR所处的环境不应比通过湿草驾驶更潮湿。

零件清单

以下是制作自定义的WeatherBot所需的所有内容的列表:

HUZZAH有三种不同版本。使用了Assembled Headers版本(只是因为这就是手头的版本),但是这三个版本中的任何一个都可以。实际上,堆叠接头版本将消除对大量跨接线的需求,并为提供更清洁的最终产品! 
**可以改用DHT11。 
***从电路图片中会注意到,实际上并没有使用跨接导线,而是将切割和剥皮的导线更好地安装在电路中。跳线工作得很好,但是如果您想做我们想做的事,则需要一些连接线剥线钳线钳。另外,根据使用的Feather板的版本,可能需要少于29根电线。

五金组装

从上面的“ 零件清单”中的所有星号中可以看出,要构建电路的精确度还有很大的空间。本教程的其余部分将引导您完成我们做事的方式。如果您对这类项目没有太多经验,我们建议严格按照以下步骤进行操作,但是如果了解面包板的制作方法,请随时进行认为合适的任何更改!

首先,我们需要组装字母数字显示器。这是我们完成该任务所遵循的教程,我们建议您也这样做!但是,我们要补充一点:完成焊接后,在剪短时请务必握住电线(如果有镊子,请使用镊子),以免电线飞散。地点!在此步骤中戴护目镜也是一个好主意。

组装字母数字显示器后,就可以开始组装电路了!请遵循以下接线图:

 

看起来很多!如果要切割和剥线,这是项目中最耗时的部分。因此,请花点时间,仔细按照图表进行操作,并耐心等待!完成后,您应该具有以下内容:

 

软件

深呼吸!困难的部分结束了。

如果还没有这样做,请下载Arduino IDE。我们将这个IDE用于Arduino和Feather。

由于我们正在使用两个不同的开发板(Arduino Uno和Adafruit Feather),因此需要下载两个单独的文件。weather_bot.ino将在Arduino上运行,并weather_bot_display.ino在开发板上运行。让我们从Arduino开始。

Arduino代码

如果您不希望逐步浏览我们将在Arduino上加载的代码,则可以在Arduino IDE中打开weather_bot.ino文件(Sphero Arduino SDK GitHubdemos/weather_bot目录中),然后跳转到将文件加载到你的Arduino。否则,让我们进行一些演练!

我们将首先进行所有必要的导入,以使我们能够设置Arduino上引脚的信息并与RVR通信。然后,我们将使用此信息来设置DHTPIN连接到传感器数据引脚的,并设置DHTTYPE您正在使用的传感器的类型()(如果您使用的不是DHT22温湿度传感器,则您需要在这里将具有与我们不同的价值)。我们还将添加一个位掩码,该位掩码指示RVR我们要设置所有LED。作为导入和定义的最后一部分,我们将启动温度/湿度传感器:


   
  1. #include "DHT.h"
  2. #include <SpheroRVR.h>
  3. #define DHTPIN 4
  4. #define DHTTYPE DHT22
  5. #define ALL_LEDS 0x3FFFFFFF
  6. DHT dht(DHTPIN, DHTTYPE);

代码的下一部分是一种setup方法,其中,我们将打开温度湿度传感器,建立与RVR的连接,并暂停以使RVR唤醒,以便我们可以开始向其发送命令:


   
  1. void setup() {
  2. dht.begin();
  3. rvr.configUART(&Serial);
  4. delay(2000);
  5. }

我们loop是我们实际行动发生的地方。我们loop将每两秒钟举行一次。当loop运行时,我们将阅读temperature从华氏(不过,如果我们得到了一个不好的阅读,我们将开始循环以上)的传感器和翻译读temperature(从0F-100F),以红色或蓝色值范围从0255。要设置与我们对应的LED颜色temperature,我们需要一个由30个值组成的数组(10个LED,每个LED都有1)红色,2)绿色和3)蓝色值),我们将填充这些值,以便每个LED设置为相同的颜色(在所有情况下,绿色值均为0,因为我们只使用红色和蓝色来表示冷热)。填充数组后,我们将其与我们的数组一起使用setAllLeds更改RVR LED指示灯颜色的方法:


   
  1. void loop() {
  2. delay(2000);
  3. float temperature = dht.readTemperature(true);
  4. if (isnan(temperature)) {
  5. return;
  6. }
  7. uint8_t redValue = static_cast<uint8_t>(temperature / 100 * 255);
  8. uint8_t blueValue = static_cast<uint8_t>((100 - temperature) / 100 * 255);
  9. uint8_t ledValues[30] = {0};
  10. for (int i = 0; i < 28; i = i + 3)
  11. {
  12. ledValues[i] = redValue;
  13. ledValues[i + 1] = 0;
  14. ledValues[i + 2] = blueValue;
  15. }
  16. rvr.setAllLeds(ALL_LEDS, ledValues, 30);
  17. }

将文件加载到您的Arduino上

在“ 工具”选项卡下,确保您的开发设置为“ Arduino/Genuino Uno”。还要确保您的端口设置为将Arduino插入的USB端口。使用A / B USB电缆Arduino连接到计算机,然后单击IDE左上角的Upload按钮。等待几秒钟,直到IDE告诉您它已完成上传,然后您就可以开始了!

开发板代码

将Feather与Arduino IDE结合使用会更加复杂。按照本教程进行所有设置。完成后,我们可以添加代码;上传过程与我们的Arduino代码完全相同!这次仅使用Micro B USB电缆代替A / B电缆。

让我们看一下为Feather构建的程序的内幕...(如果您只想使用我们已经创建的程序,则可以demos/weather_botSphero Arduino SDK GitHub目录中找到它)。

我们对Feather代码所做的第一件事还将是导入一些东西,以便允许我们定义Feather和Arduino之间的连接,以及访问Feather本身。我们将再次设置连接到传感器的数据引脚的引脚和传感器的类型,然后设置位掩码,以告诉显示器需要为每个字符打开哪些段。我们还将为字母数字显示创建一个对象,为温度湿度传感器创建一个对象:


   
  1. #include <Wire.h>
  2. #include <Adafruit_GFX.h>
  3. #include "Adafruit_LEDBackpack.h"
  4. #include "DHT.h"
  5. #define DHTPIN 12
  6. #define DHTTYPE DHT22
  7. #define ZERO 0x0C3F
  8. #define ONE 0x0006
  9. #define TWO 0x00DB
  10. #define THREE 0x008F
  11. #define FOUR 0x00E6
  12. #define FIVE 0x2069
  13. #define SIX 0x00FD
  14. #define SEVEN 0x0007
  15. #define EIGHT 0x00FF
  16. #define NINE 0x00EF
  17. #define DECIMAL 0x4000
  18. #define OFF 0x0000
  19. Adafruit_AlphaNum4 output = Adafruit_AlphaNum4();
  20. DHT dht(DHTPIN, DHTTYPE);

在我们的setup方法中,我们将打开字母数字显示屏和温度湿度传感器,然后关闭显示屏的所有部分,以使它们清晰可见并准备显示读数。我们最后的设置步骤是暂停片刻,以使RVR唤醒:


   
  1. void setup() {
  2. output.begin(0x70);
  3. dht.begin();
  4. output.writeDigitRaw(0, OFF);
  5. output.writeDigitRaw(1, OFF);
  6. output.writeDigitRaw(2, OFF);
  7. output.writeDigitRaw(3, OFF);
  8. output.writeDisplay();
  9. delay(2000);
  10. }

现在换好东西!对于我们的loop方法,我们还将其设置为每2秒发生一次,并将temperature以华氏度从传感器读取。同样,如果我们没有很好地阅读,我们将重新开始loop。这一次,temperature我们将创建一个数组,其中每个数字(包括小数!)在数组中都有自己的位置,然后循环遍历该字符,而不是将其转换为颜色,而是将其转换为可以在字母数字显示器上显示的字符。创建并显示每个字符的数组。确定每个字符要显示什么之后,我们将使用整数更新显示内容:


   
  1. void loop() {
  2. delay(2000);
  3. float temperature = dht.readTemperature(true);
  4. if (isnan(temperature)) {
  5. return;
  6. }
  7. char temperatureBuffer[5];
  8. dtostrf(temperature, 5, 2, temperatureBuffer);
  9. for (int i = 0; i < 5; i++)
  10. {
  11. // skip the decimal point
  12. if (i == 2)
  13. {
  14. continue;
  15. }
  16. // set the display index
  17. int index = i;
  18. // offset the display index by 1 if we're past the decimal point in the char array
  19. if (i > 2)
  20. {
  21. index = i - 1;
  22. }
  23. // get the bitmask for the current digit
  24. int digit = getDigit(temperatureBuffer[i]);
  25. // add a decimal point after the second digit
  26. if (i == 1)
  27. {
  28. digit |= DECIMAL;
  29. }
  30. // write digit to the given index of the display
  31. output.writeDigitRaw(index, digit);
  32. }
  33. output.writeDisplay();
  34. }

您可能已经注意到,我们在代码中使用了“ getDigit”方法来定义digit显示上面的温度。让我们定义该方法!getDigit只是将数字(以char的形式)转换为我们在程序开始时定义的数字位掩码之一:


   
  1. int getDigit(char digit) {
  2. switch (digit) {
  3. case '0':
  4. return ZERO;
  5. case '1':
  6. return ONE;
  7. case '2':
  8. return TWO;
  9. case '3':
  10. return THREE;
  11. case '4':
  12. return FOUR;
  13. case '5':
  14. return FIVE;
  15. case '6':
  16. return SIX;
  17. case '7':
  18. return SEVEN;
  19. case '8':
  20. return EIGHT;
  21. case '9':
  22. return NINE;
  23. default:
  24. return OFF;
  25. }
  26. }

这就是我们的Feather程序的全部内容;继续并加载它,这样我们就可以全部测试!

(Psst!如果这些说明对您来说还不够,那么这里有些链接包含有关DHT22使用率字母数字显示用法的更多信息。)

汇集全部

现在我们的电路已经建立,开发板上的代码已经刷新,我们终于可以使用WeatherBot了!您需要做的就是使用A/B USB电缆Arduino插入RVR的USB端口,然后打开RVRRVR的LED更改颜色需要几秒钟,因此请耐心等待。您可能还需要几秒钟才能看到字母数字显示屏亮起。如果已经有一段时间,但您仍然看不到任何内容,请尝试按一下Feather上的重置按钮,然后再等待几秒钟。如果不起作用,则在Arduino上按一下“重设”按钮也可能会有所帮助。

恭喜,活干得漂亮!

 

怎么办?

看看是否可以构建更好的机器人!以下是一些我们可以改进WeatherBot的想法:

  • DHT22有湿度传感器,我们没有用,找到了一种将那!
  • 我们提到了构建电路的几种不同选择。现在,您已经完成了一种方法,看看是否可以采用其他方法来完成!
  • 尝试将此教程与我们的软件序列教程结合使用,以将温度而不是字母数字显示输出到您的计算机。(如果您无法访问使字母数字显示正常工作所需的所有部件,这也可能很有用。)
  • 更改代码,使LED变成彩虹的每种颜色,而不仅仅是从红色到蓝色!

 

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/103144314

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。