garrcomm / raspberryphpi
Raspberry Pi 的 PHP 库
dev-master
2023-08-10 12:45 UTC
Requires
- php: >=7.3
Requires (Dev)
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,需要遵循以下步骤;
- 在控制台启用 Raspberry Pi 上的 SPI
$ sudo raspi-config
转到菜单
5 接口选项
->P4 SPI
,确保它已启用。 - 安装 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 使用测试