You are previewing Programming the BeagleBone.
O'Reilly logo
Programming the BeagleBone

Book Description

Master BeagleBone programming by doing simple electronics and Internet of Things projects

About This Book

  • Quickly develop electronics projects that interact with Internet applications using JavaScript and Python

  • Learn about electronics components such as sensors and motors, and how to communicate with them by writing programs

  • A step-by-step guide to explore the exciting world of BeagleBone—from connecting BeagleBone to doing electronics projects and creating IoT applications

  • Who This Book Is For

    If you want to learn programming on embedded systems with BeagleBone by doing simple electronics projects, this book is for you. This book is also helpful to BeagleBone owners who want to quickly implement small-scale home automation solutions. It is assumed that you have familiarity with C and Python programming. Some familiarity with electronics is helpful but not essential.

    What You Will Learn

  • Connect your BeagleBone to a computer in different ways and get the Cloud9 IDE running to quick-start programming on the BeagleBone

  • Get to know about BeagleBone extension pins such as GPIO and how to connect various electronics components with BeagleBone

  • Read and write to various electronics components such as LED, Push-button, sensors, and motors

  • Grasp in-depth theory on Analog, PWM, and BUS programming and the electronics components used in programs

  • Handle data to and from various BUS supporting modules such as UART, I2C, and SPI using the Adafruit BBIO Python library

  • Write real-life IoT applications in JavaScript and Python such as shooting an e-mail on overheat and controlling a servo motor remotely

  • Make use of online free cloud services to store and analyze sensor data collected on the BeagleBone

  • Discover what else can be done using the BeagleBone

  • Get to grips with embedded system BUS communication

  • In Detail

    The whole world is moving from desktop computers to smartphones and embedded systems. We are moving towards utilizing Internet of Things (IoT). An exponential rise in the demand for embedded systems and programming in the last few years is driving programmers to use embedded development boards such as Beaglebone.

    BeagleBone is an ultra-small, cost-effective computer that comes with a powerful hardware. It runs a full-fledged Debian Linux OS and provides numerous electronics solutions. BeagleBone is open source and comes with an Ethernet port, which allows you to deploy IoT projects without any additions to the board. It provides plenty of GPIO, Anlaog pins, and UART, I2C, SPI pins which makes it the right choice to perform electronics projects. This gives you all the benefits of Linux kernel such as multitasking, multiusers, and extensive device driver support. This allows you to do programming in many languages including high-level languages such as JavaScript and Python.

    This book aims to exploit the hardware and software capabilities of BeagleBone to create real-life electronics and IoT applications quickly. It is divided into two parts. The first part covers JavaScript programs. The second part provides electronics projects and IoT applications in Python.

    First, you will learn to use BeagleBone as tool to write useful applications on embedded systems. Starting with the basics needed to set up BeagleBone and the Cloud9 IDE, this book covers interfacing with various electronics components via simple programs. The electronics theory related to these components is then explained in depth before you use them in a program. Finally, the book helps you create some real-life IoT applications.

    Style and approach

    An easy-to-follow guide full of real-world electronics programs and quick troubleshooting tips using BeagleBone. All the required electronics concepts are explained in detail before using them in a program and all programs are explained in depth. Most of the theory is covered in the first part; while the second part gives you some quick programs.

    Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at If you purchased this book elsewhere, you can visit and register to have the code file.

    Table of Contents

    1. Programming the BeagleBone
      1. Table of Contents
      2. Programming the BeagleBone
      3. Credits
      4. About the Author
      5. Acknowledgment
      6. About the Reviewers
        1. Support files, eBooks, discount offers, and more
          1. Why subscribe?
          2. Free access for Packt account holders
      8. Preface
        1. What this book covers
        2. What you need for this book
        3. Who this book is for
        4. Conventions
        5. Reader feedback
        6. Customer support
          1. Downloading the example code
        7. Downloading the color images of this book
          1. Errata
          2. Piracy
          3. Questions
      9. 1. Cloud9 IDE
        1. BeagleBone hardware
          1. BeagleBone White (BBW)
          2. BeagleBone Black (BBB)
          3. BeagleBone Green (BBG)
        2. Installing Debian image on SD card
        3. Setting up BeagleBone
          1. Direct connection to monitor and keyboard
          2. Ethernet over USB
          3. Troubleshooting
          4. Ethernet port or USB Wi-Fi adapter
          5. Troubleshooting
          6. VNC
          7. Troubleshooting
          8. Serial Connection
        4. The bone101 page
        5. Cloud9 IDE
        6. Hello World program
          1. Explanation
        7. Summary
      10. 2. Blinking Onboard LEDs
        1. Digital I/O
        2. Digital I/O functions - pinMode() and digitalWrite()
        3. Program to turn onboard LED ON and OFF
          1. Program explanation
        4. Quick program to blink onboard LED
          1. Program explanation
          2. Program execution
        5. Make our program better
          1. Program explanation
        6. Dancing LEDs
          1. Program explanation
        7. Dancing LEDs in both directions
          1. Program explanation
        8. Summary
      11. 3. Blinking External LEDs
        1. What is GPIO?
        2. BeagleBone GPIO map
        3. Blinking external LED circuit setup
          1. Circuit analysis
        4. Program to blink external LED
          1. Explanation
          2. Troubleshooting
        5. Dancing external LEDs circuit setup
          1. Circuit analysis
        6. Program to dance external LEDs in both directions
          1. Explanation
        7. Summary
      12. 4. Controlling LED Using a Push Button
        1. Reading from digital components
        2. Push button circuit setup
          1. Circuit analysis
        3. Program to read from push button
          1. Explanation
        4. Reading via interrupts
        5. Push button LED circuit setup
          1. Circuit analysis
        6. Program to control LED by push button
          1. Explanation
        7. Summary
      13. 5. Reading from Analog Sensors
        1. Analog I/O
        2. Reading from analog components
        3. TMP36 temperature sensor circuit setup
          1. Circuit analysis
        4. Program to print temperature
          1. Explanation
        5. LDR circuit setup
          1. Circuit analysis
        6. Program to check light intensity
          1. Explanation
        7. Summary
      14. 6. PWM – Writing Analog Information
        1. What is PWM?
        2. BeagleBone's PWM
        3. Writing on analog components
        4. Fading LED circuit setup
        5. Program to fade in and fade out LED
          1. Explanation
        6. Micro servo motor circuit setup
        7. Program to control a micro servo motor
          1. Explanation
        8. Summary
      15. 7. Internet of Things with BeagleBone
        1. Why the Internet of Things?
        2. What is the Internet of Things?
        3. Program for creating new Node.js HTTP server
          1. HTML code
          2. JavaScript code
          3. Explanation
          4. Troubleshooting
        4. Program to control an LED through web browser
          1. HTML code
          2. Explanation
          3. JavaScript code
          4. Explanation
        5. Controlling a servo motor through LAN
          1. HTML code
          2. JavaScript code
        6. Sending an e-mail on over-temperature
          1. Explanation
          2. Troubleshooting
          3. What's next?
        7. Summary
      16. 8. Physical Computing in Python
        1. Python programming in BeagleBone
          1. Adafruit BBIO library
        2. Program to blink external LEDs
          1. Explanation
        3. Program to dance external LEDs
          1. Explanation
        4. Program to read from push button
          1. Explanation
            1. Detecting button state using interrupt
            2. Explanation
        5. Program to print temperature
          1. Explanation
        6. A Program to check light intensity
          1. Explanation
        7. Program to fade in and fade out LED
          1. Explanation
        8. Program to control micro servo motor
          1. Explanation
        9. Summary
      17. 9. UART, I2C, and SPI Programming
        1. Bus and bus protocols
        2. What is UART?
        3. Program to read/write on UART
          1. Explanation
          2. Troubleshooting
        4. I2C protocol
        5. Program to read from ADXL345 sensor
          1. Explanation
          2. Troubleshooting
        6. SPI protocol
        7. Program to write display text on Nokia 5110 LCD
          1. Explanation
        8. Summary
      18. 10. Internet of Things using Python
        1. Flask web application framework
          1. Installation
        2. A program to display temperature remotely
          1. Explanation
            1. Troubleshooting
        3. A program to control an LED through a web browser
          1. Explanation
        4. A RESTful web app to control servo motor
          1. Explanation
        5. A program to trigger an e-mail alert on over-temperature
          1. Explanation
            1. Troubleshooting
        6. Upload server data on cloud and visualize
          1. Explanation
        7. What's next?
        8. Security
        9. Summary
      19. A. GPIO Control in Bash
        1. Explanation
        2. Troubleshooting
      20. B. BeagleBone Capes
      21. C. Pinmux and the Device Tree
        1. What is Pinmux?
        2. What is the device tree?
      22. Index