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

什么是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功能,并进行机器人到机器人的通信,机器人跟随和机器人逃避的实验。

扫描二维码关注公众号,回复: 8515292 查看本文章

共同成长:

激活创意:

第三方扩展支持 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。作为导入和定义的最后一部分,我们将启动温度/湿度传感器:

#include "DHT.h"
#include <SpheroRVR.h>


#define DHTPIN 4

#define DHTTYPE DHT22

#define ALL_LEDS 0x3FFFFFFF


DHT dht(DHTPIN, DHTTYPE);

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

void setup() {
  dht.begin();

  rvr.configUART(&Serial);

  delay(2000);
}

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

void loop() {
  delay(2000);

  float temperature = dht.readTemperature(true);

  if (isnan(temperature)) {
    return;
  }

  uint8_t redValue = static_cast<uint8_t>(temperature / 100 * 255);
  uint8_t blueValue = static_cast<uint8_t>((100 - temperature) / 100 * 255);

  uint8_t ledValues[30] = {0};

  for (int i = 0; i < 28; i = i + 3)
  {
    ledValues[i] = redValue;
    ledValues[i + 1] = 0;
    ledValues[i + 2] = blueValue;
  }

  rvr.setAllLeds(ALL_LEDS, ledValues, 30);
}

将文件加载到您的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本身。我们将再次设置连接到传感器的数据引脚的引脚和传感器的类型,然后设置位掩码,以告诉显示器需要为每个字符打开哪些段。我们还将为字母数字显示创建一个对象,为温度湿度传感器创建一个对象:

#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
#include "DHT.h"


#define DHTPIN  12

#define DHTTYPE DHT22

#define ZERO    0x0C3F
#define ONE     0x0006
#define TWO     0x00DB
#define THREE   0x008F
#define FOUR    0x00E6
#define FIVE    0x2069
#define SIX     0x00FD
#define SEVEN   0x0007
#define EIGHT   0x00FF
#define NINE    0x00EF
#define DECIMAL 0x4000
#define OFF     0x0000


Adafruit_AlphaNum4 output = Adafruit_AlphaNum4();

DHT dht(DHTPIN, DHTTYPE);

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

void setup() {
  output.begin(0x70);
  dht.begin();

  output.writeDigitRaw(0, OFF);
  output.writeDigitRaw(1, OFF);
  output.writeDigitRaw(2, OFF);
  output.writeDigitRaw(3, OFF);
  output.writeDisplay();

  delay(2000);
}

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

void loop() {
  delay(2000);

  float temperature = dht.readTemperature(true);

  if (isnan(temperature)) {
    return;
  }

  char temperatureBuffer[5];
  dtostrf(temperature, 5, 2, temperatureBuffer);

  for (int i = 0; i < 5; i++)
  {
    // skip the decimal point
    if (i == 2)
    {
      continue;
    }

    // set the display index
    int index = i;

    // offset the display index by 1 if we're past the decimal point in the char array
    if (i > 2)
    {
      index = i - 1;
    }

    // get the bitmask for the current digit
    int digit = getDigit(temperatureBuffer[i]);

    // add a decimal point after the second digit
    if (i == 1)
    {
      digit |= DECIMAL;
    }

    // write digit to the given index of the display
    output.writeDigitRaw(index, digit);
  }

  output.writeDisplay();
}

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

int getDigit(char digit) {
  switch (digit) {
    case '0':
      return ZERO;
    case '1':
      return ONE;
    case '2':
      return TWO;
    case '3':
      return THREE;
    case '4':
      return FOUR;
    case '5':
      return FIVE;
    case '6':
      return SIX;
    case '7':
      return SEVEN;
    case '8':
      return EIGHT;
    case '9':
      return NINE;
    default:
      return OFF;
  }
}

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

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

汇集全部

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

恭喜,活干得漂亮!

 

怎么办?

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

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

发布了460 篇原创文章 · 获赞 1190 · 访问量 206万+

猜你喜欢

转载自blog.csdn.net/ZhangRelay/article/details/103144314