这个例子向您展示了如何开发一个Simulink模型来实现一个算法来读取加速度计板金宝app上感应HAT和控制显示在LED矩阵上的图像的旋转。
Raspberry Pi Sense HAT是树莓派硬件的附加板。它有一个8X8 RGB LED矩阵,一个五位置操纵杆,包括以下传感器:
湿度传感器
压力传感器
IMU传感器(加速度计,陀螺仪,磁力计)
在本例中,您将开发一个Simulink模型来根据Sense HAT的方向金宝app自动旋转显示在LED矩阵上的图像。加速度计数据用于确定Sense HAT的方向。
我们建议您完成入门Simulink支持包的树莓派硬件金宝app金宝app的例子。
要运行此示例,您将需要以下硬件:
覆盆子π硬件
树莓派感应帽
图像自动旋转是指在现代智能手机和平板电脑中广泛使用的技术,它可以根据手持设备的位置旋转设备的显示。这些设备使用车载加速度计来确定位置。通过读取加速度计的数据,我们可以确定重力作用的主轴。
在这个例子中,我们将读取Sense HAT上可用的加速度计。根据加速度的大小,我们可以确定重力所作用的主轴。然后,这些信息将用于设置在Sense HAT的LED矩阵上显示的图像的方向。
在本节中,我们将讨论自动旋转算法。
当树莓派保持垂直时(指树莓派的HDMI端口向下的位置),重力只作用在加速度计的X轴或Y轴上。
根据重力作用的轴,我们可以决定显示图像的方向。
如果板旋转指向上方,则重力沿负y轴作用。
如果板旋转指向下,则重力沿正y轴作用。
如果棋盘向左旋转,则重力沿正X轴作用。
如果板向右旋转,则重力沿负X轴作用。
我们将启发式地检测Sense HAT板的方向,通过将沿X和Y轴的加速度值与0.75g的阈值进行比较。如果沿着其中一个轴的加速度超过0.75g,我们就认为木板大致是沿着这个轴方向的。
在自动旋转算法的传统设计中,我们不会考虑沿Z轴的加速度来决定方向的值。
在确定了主轴之后,我们现在可以将方向值映射到每个位置。
如果板旋转指向上方,则重力沿负y轴作用。在这个例子中,Orientation = 0。
如果板旋转指向下,则重力沿正y轴作用。在这种情况下,方向= 180。
如果棋盘向左旋转,则重力沿正X轴作用。在这种情况下,方向= 90。
如果板向右旋转,则重力沿负X轴作用。在这种情况下,方向= 270。
在本节中,我们将使用状态流程图在Simulink中实现自动旋转算法。金宝app
1,创建一个新的金宝app模型。
2.从金宝app模型库浏览器,将状态流图添加到模型中。这可以在statflow库下找到。
3.在状态流图中,创建四个状态对应于Sense HAT的四个位置。
4.在这四种状态之间画出过渡线。每个过渡对应于沿着X和Y轴的不同加速度值。
5.在每个状态中,将方向值赋给输出。要分配的方向值在上面的“自动旋转算法”一节中描述。
6.添加“默认过渡”到图像方向为0的状态。
使用状态流程图实现的完整算法如下图所示:
在本节中,我们将在任务1中开发的Simulink模型中添加树莓Pi Sense HAT特定模块。金宝app
1.在Simuli金宝appnk库浏览器中,导航到金宝appSimu金宝applink支持包树莓派图书馆。在此下,双击Sense HAT组。这将打开金宝appSimulink Sense HAT库.
2.将Sense HAT库中的IMU传感器块添加到您的Simulink模型中。金宝app通过将“Active sensor”参数设置为“Accelerometer”,配置此块读取加速度。将此块的输出连接到状态流图的输入。
3.将Sense HAT库中的LED矩阵块添加到您的模型中。为了配置它以显示图像,将“模式”参数设置为“显示图像”,并将“方向源”设置为“输入端口”。
4.LED矩阵块显示8x8x3的RGB图像。向模型中添加一个常量块,并将其值设置为'imread('senseHAT_demo.png')'。senseHAT_demo.png是作为本示例的一部分提供的示例图像。
5.要显示的图像的方向由状态流程图决定。将状态流程图的输出连接到LED矩阵块的“方向”端口。
执行Monitor和Tune动作,将图像显示在LED矩阵上,该矩阵将根据持有Sense HAT的位置进行定向。
1.打开在LED矩阵上自动旋转图像模型。
2.标记IMU Sensor块的输出和状态流程图进行日志记录。通过记录信号,您可以检查和比较来自多个模拟的数据,以验证模型设计。有关信号记录的信息,请参阅标记记录信号.
3.选择应用程序>运行在硬件板>选项….查看打开页面的参数,确保树莓Pi板的连接参数是正确的。同时,确保通信接口参数目标硬件资源>外部模式被设置为的XCP TCP / IP
.
4.在模型中,单击监视和优化按钮,以在树莓派硬件上运行模型。
5.观察图像的自动旋转,当你改变的位置,感觉帽被持有。
6.当模型运行时,双击状态流图并观察旋转Sense HAT时的状态转换。当前状态用蓝色边界突出显示。当新的仿真数据在仿真数据检查器(SDI)中可用时,仿真数据检查器按钮将高亮显示。
7.更改阈值并观察输出中的变化。
8.您可以通过单击模型工具栏上的Simulation data Inspector按钮来检查和比较来自多个模拟的数据。有关SDI的更多信息,请参见检查和分析仿真结果.
9.按下停止按钮以停止模型执行。
1.打开在LED矩阵上自动旋转图像模型。
2.选择应用程序>运行在硬件板>选项….查看打开页面的参数,确保树莓Pi板的连接参数是正确的。
3.在模型中,单击构建、部署和启动按钮,以便在树莓派硬件上运行模型。
4.在MATLAB®命令行上执行以下命令,停止模型在树莓派硬件上运行
stopModel (r,“raspberrypi_sensehat_autorotate”);
这个例子展示了一个实现自动旋转算法的Simu金宝applink模型。
采用IMU传感器和树莓Pi Sense HAT库中的LED矩阵块来实现该算法。
该示例展示了模型如何在外部模式下运行,以及如何在Raspberry Pi硬件上部署为独立的应用程序。