garrcomm/raspberryphpi

Raspberry Pi 的 PHP 库

dev-master 2023-08-10 12:45 UTC

This package is auto-updated.

Last update: 2024-09-10 14:59:44 UTC


README

用于 Raspberry Pi 的 PHP 库

这个库为 PHP 添加了对 Raspberry Pi GPIO 设备的支持。我开始编写这个库是为了自己的(实验性)使用。通过这个库,我对不同引脚驱动方式之间的性能进行了测试,并连接了一些基本硬件组件。

不同的 GPIO 方法

在 Raspberry Pi 上,GPIO 可以用不同的方式驱动。最简单的方式是使用 gpio 控制台工具。但我发现执行控制台工具并不快。因此,我还编写了一个使用文件流的 sysfs 变体。

经过一些测试(参见 examples/speedtest.php),我发现 sysfs 是最快的方法。缺点是它需要写入硬件设备的权限;因此,只有在以 root 用户运行脚本时才可用。

如果没有正确的权限,使用 gpio 控制台工具是更好的(但较慢的)方法。

将来,我希望制作一个 RaspberryPhpi 对象,该对象可以自动选择驱动 GPIO 的最有效方式。

不同的 SPI 方法

SPI 可以通过位带操作来驱动,但这会提供一个不稳定的时钟信号,因此不是很可靠。它也可以通过 spidev 以“原生”方式驱动,但设置时钟需要 ioctl 命令。

要使用 spidev,需要遵循以下步骤;

  1. 在控制台启用 Raspberry Pi 上的 SPI
    $ sudo raspi-config
    

    转到菜单 5 接口选项 -> P4 SPI,确保它已启用。

  2. 安装 PHP 扩展 ext-ioctl。这可以通过以下步骤以 root 用户执行
    # cd ~
    # mkdir ext-ioctl
    # cd ext-ioctl/
    # git clone https://github.com/CismonX/ext-ioctl .
    # apt install php7.3-dev
    # phpize
    # ./configure --enable-ioctl
    # make && make install
    # echo extension=ioctl.so > /etc/php/7.3/mods-available/ioctl.ini
    # ln -s /etc/php/7.3/mods-available/ioctl.ini /etc/php/7.3/cli/conf.d/20-ioctl.ini
    # ln -s /etc/php/7.3/mods-available/ioctl.ini /etc/php/7.3/apache2/conf.d/20-ioctl.ini
    

示例

在示例文件夹中,可以找到一些脚本

  • speedtest.php - 测试几种不同的引脚驱动方式。每当我开发出一种新的方法,我就会将其添加到这个测试中。
  • spitest.php - 简单的 SPI 使用测试