主要内容

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

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

介绍

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

  • 湿度传感器

  • 压力传感器

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

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

先决条件

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

所需的硬件

要运行这个例子,你需要以下硬件:

  • 覆盆子π硬件

  • 树莓派感觉帽子

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

  • 树莓派硬件的M金宝appATLAB支持包

  • 金宝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地址和端口。我们将Timeout指定为2秒,用于从Android设备获取响应。

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

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

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

for count = 1:10 000 %Read IMU Sensor - Accel data accelData = readAcceleration(s);%读取IMU传感器-陀螺数据gyroData = readAngularVelocity(s);%Read IMU Sensor - Mag data magData = readMagneticField(s);imuData = [accelData gyroData magData];写(tcpObj_Send imuData);暂停(0.2)

第三步:通过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 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);
% .读取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传感器数据,并准备接收来自远程Android设备的任何数据。

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

Simu金宝applink金宝app支持包为Android设备提供了一个预先配置的仿真软件模型金宝app你可以使用TCP/IP来接收和发送数据。

安装Simulink Support金宝app Pac金宝appkage for Android设备后,在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值。你可以在Raspberry Pi Sense HAT的8X8 RGB LED矩阵上观察到相应的颜色变化。

其他可以尝试的事情

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