Skip to content


Repository files navigation

Carica Io

Build Status License Total Downloads Latest Stable Version Latest Unstable Version

License: The MIT License

Copyright: 2013-2019 Thomas Weinert

Carica Io is a collection of experimental php classes and scripts for non-blocking I/O. It provides the basic building blocks for hardware control using Firmata (Arduino) and GPIO (Raspberry PI).


The repository provides the API needed for non-blocking I/O. A simple event loop and event emitter are included. The loop implementation is not performance optimized. However it is possible to use an adapter for ReactPHP or AMPHP.

It includes an (incomplete) HTTP server that should be enough for the first steps. It supports GET requests and WebSocket connections.

Related Projects

           |  Carica\Chip  |
        |                     |
+-------+-------+    +--------+-------+
|  Carica\GPIO  |    | Carica\Firmata |
+-------+-------+    +--------+-------+
        ^                     ^
        |                     |
           |   Carica\Io   |

Carica/Io provides the classes for event based programming and a simple web server. It defines interfaces for hardware control (Pin, ShiftOut, ...). Carica/Firmata is a client library for the Firmata protocol it allows to control Arduino boards over a serial or a network connection. Carica/GPIO implements GPIO into PHP using the file system or the WiringPI library for the Raspberry PI.

Carica/Chip implements classes for hardware objects. Like a LED, a RGB-LED, a Servo,...


You will need to get the loop instance from the factory, attach events and run it.

$loop = Carica\Io\Event\Loop\Factory::get();
  static function () {
    static $i = 0;
    echo $i++;