主要内容

在Raspberry Pi Sense HAT和Android设备之间通过TCP/IP传输数据

这个例子展示了如何使用MATLAB命令通过TCP/IP从树莓派感知HAT发送数据到Android设备,也从Android设备接收RGB颜色值,并在感知HAT的LED矩阵上显示相同的颜色值。

介绍

Raspberry Pi Sense HAT是树莓派硬件的附加板。它有一个8X8 RGB LED矩阵,一个五位置操纵杆,包括以下传感器:

  • 湿度传感器

  • 压力传感器

  • IMU传感器(加速度计,陀螺仪,磁力计)。

在本例中,您将开发一种算法,通过定义TCP/IP客户机从IMU传感器发送数据。您还将开发另一种算法,通过TCP/IP从Android设备接收RGB颜色值,并在8x8 RGB LED矩阵上显示颜色。

先决条件

  • 我们建议完成与树莓派感应帽一起工作的例子。

所需的硬件

要运行此示例,您将需要以下硬件:

  • 覆盆子π硬件

  • 树莓派感应帽

所需的产品下载188bet金宝搏

  • MATLAB支金宝app持包树莓派硬件

  • 金宝appAndr金宝appoid设备的Simulink支持包

步骤1:创建Sense HAT对象和TCP/IP客户端

在MATLAB提示符下执行以下命令,在MATLAB支持包中为树莓派硬件创金宝app建一个Sense HAT对象。

r = raspi ();s = sensehat (r);

年代是sensehat对象的句柄。

创建TCP/IP客户端对象,从树莓派发送数据到Android设备。请根据您的Android设备更换IP地址和端口。

tcpObj_Send = tcpclient (192.168.1.2, 6000);

创建TCP/IP客户端对象从Android设备接收数据。请根据您的Android设备更换IP地址和端口。我们指定从Android设备获取响应的超时时间为2秒。

tcpObj_Recv = tcpclient(“192.168.1.2”,10000年,“超时”,2);

步骤2:从Sense HAT发送IMU传感器数据

在MATLAB支持包金宝app的树莓派硬件,我们将使用一个算法使用从树莓Pi Sense HAT的IMU传感器获取数据时,运行1000次迭代。我们将IMU传感器数据合并到一个[1x3]数组中,并使用TCP/IP客户端对象发送数据。我们还在迭代之间添加了0.2秒的暂停时间。

for count = 1:10 000 %Read IMU Sensor - Accel data accelData = readAcceleration(s);gyroData = readAngularVelocity(s);%Read IMU Sensor - Mag data magData = readMagneticField(s);imuData = [accelData gyroData magData];写(tcpObj_Send imuData);暂停(0.2)

步骤3:在Sense HAT的LED矩阵上读取Android设备的数据

在MATLAB支持包金宝app的树莓派硬件,我们将使用一个算法使用循环运行1000次,同时接收来自应用程序的颜色滑块的数据,你将部署在远程Android设备上。我们将使用方法从TCP/IP接收对象读取数据(从远程Android设备获取数据)。我们还在迭代之间添加了0.2秒的暂停时间。

我们可以在Sense HAT的LED矩阵上显示接收到的数据writePixel函数。在本例中,我们还将添加一个代码来忽略writePixel命令,如果输入数据为零。此外,如果读取在指定的超时值内未成功,TCP/IP客户端将返回0作为输出。

for count = 1:1000 LEDdata = read(tcpObj_Recv, 3, 'double'); / /读取数据if ((LEDdata(1) ~=0) && (LEDdata(2) ~=0) && (LEDdata(3) ~=0)) for row = 1:8 for col = 1:8 writePixel(s, [row col], LEDdata); / /列号End End pause(0.2)结束

步骤4:部署MATLAB函数

您可以部署raspi_sensehat_display ()功能在树莓派硬件上。

raspi_sensehat_display()函数
r = raspi ();s = sensehat (r);
tcpObj_Send = tcpclient (“192.168.1.2”, 6000);tcpObj_Recv = tcpclient (“192.168.1.2”, 10000,“超时”2);
数= 1:1000
accelData = readAcceleration(年代);gyroData = readAngularVelocity(年代);magData = readMagneticField(年代);imuData = [accelData gyroData magData];
写(tcpObj_Send imuData);
= read(tcpObj_Recv, 3, 'double');%
if ((LEDdata(1) ~=0) && (LEDdata(2) ~=0) && (LEDdata(3) ~=0)) for row = 1:8 for col = 1:8 writePixel(s, [row col], LEDdata); / /列号结束结束结束
暂停(0.2);结束

部署raspi_sensehat_display函数作为独立的可执行文件在硬件上使用部署函数。

董事会= targetHardware (“树莓π”)部署(董事会,“raspi_sensehat_display”
代码一代成功:视图报告

部署函数开始生成raspi_sensehat_display函数。在代码生成的最后,MATLAB生成一个代码生成报告。使用此报告调试raspi_sensehat_display函数用于生成代码中的任何构建错误和警告。

成功生成代码后,支持包将代码作为独立的可执行文件加载并在硬件上运行。金宝app可执行文件开始通过TCP/IP发送IMU Sensor数据,并准备接收来自远程Android设备的任何数据。

步骤5:使用Android设备的Simulink支持包准备和部署TCP/IP模型金宝app金宝app

Andr金宝appoid设金宝app备的Simulink支持包提供了一个预先配置的仿真软件模型金宝app可以用来通过TCP/IP接收和发送数据。

在你安装了Android设备的Sim金宝appulin金宝appk Support Package后,在MATLAB命令提示符下运行以下命令:

open_system(“androidraspberrypisensehat”)
  • 模型中的TCP/IP Receive块被配置为在端口6000接收数据(与您指定的端口号相同)tcpObj_Send的MATLAB支持包中的树莓派硬件)金宝app

  • 模型中的TCP/IP发送块被配置为在端口10000(与您指定的端口号相同)发送数据tcpObj_Receive对象的MATLAB支持包中的树莓派硬件)。金宝app

将此模型部署到与主机连接的Android设备(在硬件选项卡,单击金宝app构建、部署和启动).部署模型启动一个应用程序,帮助您读取数据,并使用应用程序上的三个滑块发送所需的RGB值。

在Android设备上,启动您部署的应用程序,并查看加速度计、陀螺仪和磁力计的实时数据,这些数据来自Raspberry Pi Sense HAT的IMU传感器。

在Android设备上,移动应用程序中的三个颜色滑块,以配置各种RGB值。你可以在树莓Pi Sense HAT的8X8 RGB LED矩阵上观察到相应的颜色变化。

其他可以尝试的事情

在MATLAB的树莓派硬件支持包中创建一个连续运行控制的算法金宝app在MATLAB代码中循环。