If you are wondering how to control the Arduino serial port via PHP, here is the solution. The arduino:// wrapper is a easy and straightforward way to write and read data from Arduino.
composer require marabesi/arduino-php-wrapper
To read data from Arduino serial just use the regular I/O functions in PHP such as fread or file_get_contents
\Arduino\Wrapper::register();
//reads data from Arduino
$resource = fopen('arduino://ttyUSB0', 'r+');
print fread($resource, 1024);
Or if you prefer, you can use file_get_contents and get the same result
print file_get_contents('arduino://ttyUSB0');
To write data in the Arduino serial is as easy as it could be
\Arduino\Wrapper::register();
//writes data to Arduino
$resource = fopen('arduino://ttyUSB0', 'r+');
print fwrite('hello Arduino');
\Arduino\Wrapper::register();
print file_put_contents('arduino://hello Arduino');
You can use in your project in a OOP style
$writer = new Arduino\Writer(new Arduino\Wrapper());
$bytes = $writer->out('ttyUSB0', 'from oop');
$arduino = new \Arduino\Wrapper();
$writer = new \Arduino\Reader($arduino);
while (true) {
print $writer->from('/dev/cu.usbmodem1411');
}
As you can see is really simple and we can improve it much more as the sensors are identified.
- Prevent arduino from reload everytime a request is made by PHP
Introduction to IoT and PHP - Nerdzão day #1