20
PHP IOT 4REALZ A PRIMER FOR PERFORMING GPIO WITH PHP

Internet of Things With PHP

Embed Size (px)

Citation preview

Page 1: Internet of Things With PHP

PHP IOT 4REALZA PRIMER FOR PERFORMING GPIO WITH PHP

Page 2: Internet of Things With PHP

HISTORICAL PERSPECTIVEHOW I CAME UP WITH THE HAIR-BRAINED IDEA TO USE PHP FOR IOT

Page 3: Internet of Things With PHP

NODEBOTS DAYPut on by Suz Hinton and Pawel Szymczykowski

Page 4: Internet of Things With PHP

THE LEXICUTIONERDesigned a built using SumoBot Jr. (Pawelbot) by Adam Englander and Lexi Glazer

Page 5: Internet of Things With PHP

PHYSICAL ACCESS SYSTEMComprised of Raspberry Pi B, power converter, electronic door latch, inline switch. Software is Raspbian with Python 2.7 and Twisted.

Page 6: Internet of Things With PHP

PHP IOT STARTER KITRASPBERRY PI FOR THE WIN

Page 7: Internet of Things With PHP

STARTER KIT HARDWARE

• Raspberry Pi

• Micro USB with AC converter for power

• Cat 5 network cable

• USB Keyboard

• HDMI cable

• HDMI capable display – not shown

• 3.3V LED with (2) female to female connectors

Page 8: Internet of Things With PHP

STARTER KIT SOFTWARE

• Raspbian• Pre-installed on SD card

• Download installer (requires SD card reader): https://www.raspberrypi.org/downloads/

• PHP CLI• sudo apt-get install –y php5-cli

Page 9: Internet of Things With PHP

ACCESSING GPIO FROM LINUX BASED SYSTEMSIT’S SO EASY YOU WON’T BELIEVE IT

Page 10: Internet of Things With PHP

GENERAL PURPOSE INPUT/OUTPUT (GPIO)

• A generic pin on an integrated circuit (IC) whose behavior is controlled at runtime

• Use to control and transfer data to and from external devices to the IC

• Available on all general purpose IC boards

Page 11: Internet of Things With PHP

IT’S ALL IN THE FILE SYSTEM

• Linux GPIO Sysfs Interface for Userspace

• Root directory is at /sys/class/gpio

• Control Interfaces

• Pin Interfaces

Page 12: Internet of Things With PHP

CONTROL INTERFACE

• “export” creates a node to expose a GPIO port to the user space

• “echo 18 > /sys/class/gpio/export” will create a gpio18 node at “/sys/class/gpio/gpio18”

• “unexport” removes the node for a GPIO port from the user space• “echo 18 > /sys/class/gpio/unexport” removes

the gpio18 node

Page 13: Internet of Things With PHP

GPIO SIGNALS

• “direction” determines the direction of a pin. Valid values are “in” and “out”. “in” is used for interrupts

• “echo out > /sys/class/gpio/gpio18/direction” will set GPIO pin 18 ’s direction as out

• “value” is the value of a pin. It reads a “0” or “1”. Any on-zero value written will be interpreted as “1”. When reading the value ”high” evaluates to ”1” and “low” evaluates to “0” unless overridden by “active_low”

• “echo 1 > /sys/class/gpio/gpio18/value” sets the value of GPIO 18 to “1” and closes the circuit

• “cat /sys/class/gpio/gpio18/value” would return “1” after the statement above

Page 14: Internet of Things With PHP

GPIO SIGNALS CONTINUED

• “edge” is used to tell the GPIO when to write to ”value” when “direction” is “in”. Valid values are “none”, “rising”, ”falling”, and “both”.

• “echo both > sys/class/gpio/gpio18/edge” will trigger an interrupt when voltage increases or decreases

• “active_low” is used to invert the effect of “edge” of “value”. Valid values are “1`” and “0”. “1” inverts and “0” sets standard.• “echo 1> sys/class/gpio/gpio18/active_low” will

invert the values of high and low

Page 15: Internet of Things With PHP

PHP ACCESS TO GPIOCAT SKINNING 101

Page 16: Internet of Things With PHP

USE FILE SYSTEM ACCESS

• ”file_get_contents”

• “file_put_contents”

• “fopen”

• Streams

Page 17: Internet of Things With PHP

ICICLE.IO

• Event loop

• Single thread

• Asynchronous I/O

• HTTP server

• File system I/O

• Real IoT

Page 18: Internet of Things With PHP

DEMO TIME

Page 19: Internet of Things With PHP

FURTHER READING

• Raspberry Pi: https://www.raspberrypi.org/

• Linux Kernel GPIO Sysfs: https://www.kernel.org/doc/Documentation/gpio/sysfs.txt

• Examples for GPIO in Bash and PHP: https://github.com/aenglander/php-io

• Icicle.io: https://icicle.io/

Page 20: Internet of Things With PHP

CONTACT INFO

• @adam_englander on Twitter

[email protected]

• aenglander on Freenode

• aenglander on GitHub

• adamenglander on Linkedn