使用覆盆子pi的手势控制机器人

你有没有厌倦过按钮控制一切?坐在你的懒人沙发上用简单的手动运动来控制一些东西?如果是,那么你就在右翼网站。在本教程中,我们将通过简单地使用手动移动来控制由两个直流电机驱动的机器人。有不同种类的传感器可以检测手动像磁通传感器,加速度计和其他基于重力的传感器。因此,对于无线传输,我们将使用传输4位数据的RF 434模块。4位数据意味着您可以传输16个不同的组合I.,0000至1111.此外,在本教程中,我们将使用编码器和解码器来避免空中接口的干扰。电机驱动器将驱动电机使用解码器数据。

使用覆盆子pi的手势控制机器人
使用覆盆子pi的手势控制机器人

我们在发射机端使用覆盆子PI来分析传感器数据,并将数据组合传送到电动机驱动器,以相应地驱动电机,使得机器人可以悬停在周围。我们将在机器人上使用12 V电池供电,为解码器模块,接收器模块和电机供电。在发射器端传感器上,发射器编码器模块由Raspberry PI自身供电。

组件

组件 规范 数量
覆盆子PI. 版本3. 1
存储卡 8gb以上 1
加速度计 ADXL 345或MPU6050 1
RF模块 rf tx和rx 434 1
电源供应 用于RPI的5 V Mini USB适配器
12 v电池机器人
1
电线 女性与男性和男性到女性 10各
编码器 ht12e(喜欢模块) 1
解码器 HT12D(喜欢模块) 1
电机驾驶员 L293D(喜欢模块) 1

使用覆盆子pi的手势控制机器人 - 框图

变送器端

使用覆盆子pi  - 发射器端的手势控制机器人
使用覆盆子pi - 发射器端的手势控制机器人

在发射器侧,我们有加速度计,覆盆子PI,编码器模块和RF发射器。手势数据从加速度计流到覆盆子PI,并且在那里处理以确定机器人的移动,并且运动数据通过GPIO引脚传送到编码器模块。编码器模块在RF发射器的帮助下对数据进行编码并传输到空中接口中。

手势控制机器人使用树莓派-接收器结束

手势控制机器人使用覆盆子pi  - 接收器结束
手势控制机器人使用树莓派-接收器结束

来自接收器结束的RF接收器从空中接口获取数据,并将其提供给解码器模块。解码器模块对接收的数据进行解码并将其提供给电机驱动器L293D。从电动机驱动器根据手势数据驱动电机。

加速度计

振荡是测量速度变化,或速度除以时间。例如,如果汽车在10秒内从休息0到60km / hr移动,则汽车以6km / hr加速。那么与我的手势有什么关系?

加速度计是一种用于测量加速度的机电设备。这种力可以是静态的,就像持续不断的重力,也可以是动态的,就像许多移动设备的情况一样,来感知移动或振动。通过测量由重力引起的静态加速度,你可以找出设备相对于地球的倾斜角度。通过感知动态加速度,您可以分析设备移动的方式。

一些加速度计使用压电效应 - 含有通过加速力的施加压力的微观晶体结构,这导致产生电压。另一种方法是通过传感电容的变化。如果彼此相邻有两个微结构,则它们之间具有一定的电容。如果加速力移动其中一个结构,则电容将改变。添加一些电路以将电容转换为电压,并且您将获得加速度计。

加速度计是低功率器件,其以模拟电压的形式和数字形式的一些加速度计输出加速度。像ADXL 335这样的模拟加速度计为您提供了3个模拟输出x,y,z基部在移动的轴上。您可以通过ADC将这些模拟电压转换为数字电压。诸如ADXL345的数字加速度计将通过SPI或I2C协议进行通信。这噪音较小,最可靠

还有另一个传感器MPU6050,其具有加速度计以及其中的陀螺仪。也可以用代替加速度计。ADXL345和MPU6050的地址在使用覆盆子PI中连接到I2C模式,对于ADXL 0x53和MPU,它为0x68。在本教程中,我将解释如何使用ADXL345和MPU6050。

连接加速度计

现在,我们将通过加速度计ADXL 345和MPU 6050界面界面到覆盆子PI并检查传感器的读数。我相信您的Raspberry PI安装了最新的操作系统和Python,因为我们将在此处使用Python代码。

使用覆盆子pi的手势控制机器人

让adxl345 / mpu6050连接到我们的覆盆子pi。在这里,我们将使用I2C协议在设备之间进行通信。在I2C协议中,数据通过SDA(串行数据)和SCL(串行时钟)中的时钟传输数据。它是异步半双工通信协议。主控制器控制整个过程和从站根据主命令响应。数据速率由从属机器的频率决定。Master和Slave之间只有4个连接3V,GND,SCL和SDA。

ADXL345数字加速度计
ADXL345数字加速度计

从GPIO引脚输出图中可以看到Rpi上的SDA和SCL引脚,并将其分别连接到ADXL345/MPU6050 SDA和SCL引脚。使用RPi本身为传感器供电。现在连接完成了。

覆盆子PI 3 GPIO标题
覆盆子PI 3 GPIO标题

在测试传感器之前,让我们在rpi中安装用于I2c协议的python-smbus,并在rpi中启用I2c协议。

安装SMBus:

安装python-smbus i2c-tools

在RPI中启用I2C:

sudo raspi-config

转到接口选项并启用I2C协议。

然后通过这些命令包含i2c规范行。

sudo nano / etc / modules

添加这些行

I2C-BCM2708 I2C-DEV

如果您使用这些命令使用旧RPI从背表中删除I2C

sudo nano /etc/modprobe.d/raspi-blacklist.conf.

注释出(#)黑名单I2C-BCM2708

sudo重新启动

使用此命令测试连接。这将显示连接到我们的pi的传感器的地址。

sudo i2c检测到1

ADXL将在0x53中找到,MPU将在0x68或0x69中找到

现在我们将从Github下载一个预先编写的用于pi的ADXL345库,并测试传感器输出。使用这些命令。

git clone.https://github.com/pimoroni/adxl345-python.CD adxl345-python sudo python exampe.py

example.py是输出x,y和z值的程序,如下所示。

我们可以修改此程序或为我们的项目使用此程序。

对于MPU6050 Pimoroni程序不会工作,因此我们将使用GitHub的不同Python模块。

通过使用这些命令。

git clone.https://github.com/tijndagamer/mpu6050.git.CD MPU6050python setup.py install.

检查我们的传感器连接和地址打开终端并在下面键入该命令。它将在0x68或0x69处显示传感器地址,如下所示。

并测试我们的传感器数据转到Python编辑器并仅键入这些命令,以查看传感器输出。

从mpu6050导入mpu6050mympu = mpu6050(0x69)data = mympu.get_accel_data()

更进一步,您现在可以确定4个不同位置的阈值,用于右、左、前、后移动,并将其记录下来。校准可以做根据你在不同位置传感器值保持在一个位置,你想要向前移动,记下5类似的价值观和圆了一个阈值,如果传感器穿过四舍五入值一个条件语句在程序中可以启用。类似地,校准它的所有其他运动,如左,右,返回和停止。

程序/代码

下载程序/代码

注意:代码在注释本身中解释。

传输数据

现在python程序将输出4个数字输出,根据阈值校准到手势运动/位置。如果超过阈值,则将运动对应的数字输出分配给GPIO引脚。

现在用于数字输出的GPIO引脚连接到编码器的4位数据引脚。编码器与射频发射机相连。如下图所示,推荐编码器模块和发送器。

编码器连接射频发射机
编码器连接射频发射机

使用RPI本身为变送器模块供电。RF将数据串行发送到接收器。在发射器模块中,有8个开关进行加密。必须在接收器中设置相同的开关位置以正确地接收数据。

收到数据

一旦发射模块开始传输运动数据,从我们将用于机器人的电池为接收器模块供电。如何测试接收器是否正在接收数据。当为Rx模块供电时,两个led将被点亮,一个用于供电,另一个用于连接。如果连接未使能,请检查开关位置和发送模块。

使用覆盆子pi的手势控制机器人
使用覆盆子pi的手势控制机器人

在将解码器连接到电机驱动器之前,用万用表交叉检查接收到的数据。如果你没有万用表连接这4个解码器输出引脚到rpi的任何4 gpio引脚,并将这些代码行添加到我们的发送程序,稍后我们注释它。

现在我们将通过编码器打印两个电机输出值,以及从空中接口从解码器接收的数据。这些数据应该匹配。

要操作的数据

一旦数据匹配,我们就会将我们的解码器连接到电机驱动器L293D。4个解码器引脚足以驱动电动机驱动器输出,这又将解码器数据放大到电机。因此,电机根据解码器数据运行。

双H桥电机驱动器L293D
双H桥电机驱动器L293D

因为我们使用了4个引脚的解码器,可以给出16种数据组合,但4个足可以悬停机器人。一个单一的直流电机有两个引脚A和B(说)。要么引脚A必须在比其他引脚B更高的电压,以便它可以使电位差运行电机。通过反转连接来反转旋转方向。所以两个电机4引脚和4解码器输出将驱动电机。

你可以考虑电机A引脚为A+ A-和电机B引脚为B+ B-为您的方便。

电机配置

解码器输出
A1A2B1B2.
电机A.
A1A2
电机B.
B1B2.
机器人
运动
1010. 10. 10. 向前
0101 01. 01. 落后
1001. 10. 01. 正确的
0110 01. 10. 剩下

为了前进,两个电机应在顺时针或逆时针方向上旋转。对于向后移动,应该给出与前向数据相反的相反,使电动机沿相反方向旋转。

为了向左和向右移动机器人,一个轮子应顺时针旋转,另一个轮子逆时针旋转,以便根据您的配置将机器人转向左侧或右侧。

完成配置后,让我们使用我们的手势测试我们的机器人。打开所有模块的电源,并使用传感器通过RF向电机驱动器发送手势的数据。根据您的手势机器人将在演示中延迟延迟毫秒移动。

这是通过在手中固定并改变手的方向来测试加速度计,从而基于阈值,它将打印像左,右侧,向前或向后的运动。更好地在全屏中查看它。

因为电线是缠在一起的,我没有天线,运动不会那么顺利。但这些问题是可以解决的。

作者

3.评论

  1. 特里迪布戴伊

    我可以有一个关于这个项目的视频。意味着如何制作它..连接电线n ..

    • Soji Suresh.

      我怎样才能得到电路的布线细节呢?

  2. Vaibhav shingala

    喜欢它