Skip to content

marabesi/arduino-php-wrapper

Repository files navigation

arduino-php-wrapper (inspired by Johnny-Five JS)

Codacy Badge Build Status Latest Stable Version Total Downloads composer.lock

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.

Install

composer require marabesi/arduino-php-wrapper

Usage

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');

OOP

You can use in your project in a OOP style

Sending data

$writer = new Arduino\Writer(new Arduino\Wrapper());
$bytes = $writer->out('ttyUSB0', 'from oop');

Reading data

$arduino = new \Arduino\Wrapper();

$writer = new \Arduino\Reader($arduino);
while (true) {
    print $writer->from('/dev/cu.usbmodem1411');
}

Improvements

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

Slides (talks based on this lib)

SlideShare Introduction to IoT and PHP - Nerdzão day #1

SlideShare IoT powered by PHP and streams - PHPExperience2017

SlideShare Control your house with the elePHPant - PHPConf2016