这个例子展示了如何使用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矩阵上显示颜色。
我们建议完成与树莓派感应帽一起工作的例子。
要运行此示例,您将需要以下硬件:
覆盆子π硬件
树莓派感应帽
MATLAB支金宝app持包树莓派硬件
金宝appAndr金宝appoid设备的Simulink支持包
在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);
在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)
在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)结束
您可以部署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设备的任何数据。
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代码中循环。