GOT PYTHON I/O IOT DEVELOPMENT IN PYTHON VIA GPIO
HISTORICAL PERSPECTIVE HOW I CAME UP WITH THE HAIR-BRAINED IDEA TO USE PYTHON FOR IOT
NODEBOTS DAY Put on by Suz Hinton and Pawel Szymczykowski
THE LEXICUTIONER Designed a built using SumoBot Jr. (Pawelbot) by Adam Englander and Lexi Glazer
PHYSICAL ACCESS SYSTEM Comprised of Raspberry Pi B, power converter, electronic door latch, inline switch. Software is Raspbian with Python 2.7 and Twisted.
PYTHON IOT STARTER KIT RASPBERRY PI FOR THE WIN
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
STARTER KIT SOFTWARE • Raspbian • Pre-installed on SD card • Download installer (requires SD card reader): https://www.raspberrypi.org/downloads/ • Python 2.7 • Pre-installed on Raspbian
ACCESSING GPIO FROM LINUX BASED SYSTEMS IT’S SO EASY YOU WON’T BELIEVE IT
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
IT’S ALL IN THE FILE SYSTEM • Linux GPIO Sysfs Interface for Userspace • Root directory is at /sys/class/gpio • Control Interfaces • Pin Interfaces
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
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
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
PYTHON ACCESS TO GPIO CAT SKINNING 101
USE FILE SYSTEM ACCESS • ”open” • “read” • “write”
TWISTED • Event loop • Single thread • Asynchronous I/O • HTTP server • Websocket server • File system I/O • Real IoT
DEMO TIME
PLATFORM COMPARISON HOW TO PICK THROUGH THE MYRIAD OF OPTIONS
RASPBERRY PI Pros • Moderately Inexpensive (~35 USD) • Flexible platform • Lots of guides and tutorials • GUI interface for beginners • Aptitude package manager • Great starter platform Cons • Requires special cable to do away with keyboard and monitor • Under powered • No built in Analog to Digital Converter (ADC) • A bit on the large side • ARM processor
INTEL EDISON Pros • X86 based Atom processor • Ample power, RAM, and storage • Multiple form factors • Arduino developer board can use standard Arduino backplanes • Easy to setup Wi-Fi • Arduino board has Analog to Digital Converter and Python library Cons • Can be a bit pricy (~110 USD) • Not as many guides and tutorials • Documentation is a bit confusing at times • Evolving platform • Sysfs GPIO is flakey
DRONESMITH LUCI Pros • Easy to build unmanned vehicles • No real electrical understanding needed • Just uses some simple scripting • Based on Intel Edison Cons • Expensive • Still in early development phase • No real direct development – just scripting routes.
CHIP Pros • Super inexpensive (~10 USD) • Wi-Fi • Bluetooth Cons • Low power • Pre-order only
BEAGLEBONE BLACK Pros • Inexpensive (~50 USD) • Can be a full computer • Has add-on ecosystem • Lots of connectivity • On-board Analog to Digital Converter (ADC) Cons • Low power • ARM chipset
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/iot-examples • Twisted: http://twistedmatrix.com/ • Intel Edison: http://www.intel.com/content/www/us/en/do-it-yourself/edison.html • CHIP: https://getchip.com/pages/chip • Luci: http://www.dronesmith.io/luci/
CONTACT INFO • @adam_englander on Twitter • adam@launchkey.com • aenglander on Freenode • aenglander on GitHub • adamenglander on Linkedn

Got Python I/O: IoT Develoment in Python via GPIO

  • 1.
    GOT PYTHON I/O IOTDEVELOPMENT IN PYTHON VIA GPIO
  • 2.
    HISTORICAL PERSPECTIVE HOW ICAME UP WITH THE HAIR-BRAINED IDEA TO USE PYTHON FOR IOT
  • 3.
    NODEBOTS DAY Put onby Suz Hinton and Pawel Szymczykowski
  • 4.
    THE LEXICUTIONER Designed abuilt using SumoBot Jr. (Pawelbot) by Adam Englander and Lexi Glazer
  • 5.
    PHYSICAL ACCESS SYSTEM Comprisedof Raspberry Pi B, power converter, electronic door latch, inline switch. Software is Raspbian with Python 2.7 and Twisted.
  • 6.
    PYTHON IOT STARTERKIT RASPBERRY PI FOR THE WIN
  • 7.
    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
  • 8.
    STARTER KIT SOFTWARE •Raspbian • Pre-installed on SD card • Download installer (requires SD card reader): https://www.raspberrypi.org/downloads/ • Python 2.7 • Pre-installed on Raspbian
  • 9.
    ACCESSING GPIO FROMLINUX BASED SYSTEMS IT’S SO EASY YOU WON’T BELIEVE IT
  • 10.
    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
  • 11.
    IT’S ALL INTHE FILE SYSTEM • Linux GPIO Sysfs Interface for Userspace • Root directory is at /sys/class/gpio • Control Interfaces • Pin Interfaces
  • 12.
    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
  • 13.
    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
  • 14.
    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
  • 15.
    PYTHON ACCESS TOGPIO CAT SKINNING 101
  • 16.
    USE FILE SYSTEMACCESS • ”open” • “read” • “write”
  • 17.
    TWISTED • Event loop •Single thread • Asynchronous I/O • HTTP server • Websocket server • File system I/O • Real IoT
  • 18.
  • 19.
    PLATFORM COMPARISON HOW TOPICK THROUGH THE MYRIAD OF OPTIONS
  • 20.
    RASPBERRY PI Pros • ModeratelyInexpensive (~35 USD) • Flexible platform • Lots of guides and tutorials • GUI interface for beginners • Aptitude package manager • Great starter platform Cons • Requires special cable to do away with keyboard and monitor • Under powered • No built in Analog to Digital Converter (ADC) • A bit on the large side • ARM processor
  • 21.
    INTEL EDISON Pros • X86based Atom processor • Ample power, RAM, and storage • Multiple form factors • Arduino developer board can use standard Arduino backplanes • Easy to setup Wi-Fi • Arduino board has Analog to Digital Converter and Python library Cons • Can be a bit pricy (~110 USD) • Not as many guides and tutorials • Documentation is a bit confusing at times • Evolving platform • Sysfs GPIO is flakey
  • 22.
    DRONESMITH LUCI Pros • Easyto build unmanned vehicles • No real electrical understanding needed • Just uses some simple scripting • Based on Intel Edison Cons • Expensive • Still in early development phase • No real direct development – just scripting routes.
  • 23.
    CHIP Pros • Super inexpensive(~10 USD) • Wi-Fi • Bluetooth Cons • Low power • Pre-order only
  • 24.
    BEAGLEBONE BLACK Pros • Inexpensive(~50 USD) • Can be a full computer • Has add-on ecosystem • Lots of connectivity • On-board Analog to Digital Converter (ADC) Cons • Low power • ARM chipset
  • 25.
    FURTHER READING • RaspberryPi: 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/iot-examples • Twisted: http://twistedmatrix.com/ • Intel Edison: http://www.intel.com/content/www/us/en/do-it-yourself/edison.html • CHIP: https://getchip.com/pages/chip • Luci: http://www.dronesmith.io/luci/
  • 26.
    CONTACT INFO • @adam_englanderon Twitter • adam@launchkey.com • aenglander on Freenode • aenglander on GitHub • adamenglander on Linkedn

Editor's Notes

  • #19 curl -i -H "content-typeson" --data '{"value": 1}' localhost:8080/gpio/18