Book Image

Programming the BeagleBone

By : Yogesh Chavan, Amit Pandurang Karpe
Book Image

Programming the BeagleBone

By: Yogesh Chavan, Amit Pandurang Karpe

Overview of this book

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.
Table of Contents (21 chapters)
Programming the BeagleBone
Credits
About the Author
Acknowledgment
About the Reviewers
www.PacktPub.com
Preface
BeagleBone Capes
Index

Appendix B. BeagleBone Capes

Consider a scenario where our electronics project prototyping is done and we are getting the expected results. Now we want to make a production device out of it. We need to remove the breadboard and jumper wires and create printed circuit board (PCB) with an equivalent circuit. This expansion PCB will connect to BeagleBone via the P8 and P9 expansion headers. It will work as a plugin daughterboard for BeagleBone. This type of expansion board is called a cape. A cape for BeagleBone is similar to what a shield is for Arduino. This naming suits it because it looks like a cape around the Ethernet port when plugged in. BeagleBone comes with less peripherals on the board. Capes extend the capabilities of BeagleBone to have extra peripherals such as an LCD, motor driver, or Real-time Clock (RTC). Some capes transform BeagleBone into totally different products like Replicape converts BeagleBone into open source 3D printer. Popular capes are listed here:

Four capes can be stacked on to BeagleBone. The BeagleBone System Reference Manual (SRM) has a full chapter dedicated to capes. It provides you with many guidelines when creating a new cape. Capes needs to have 32 Kbyte I2C EEPROM connected to P9_19 and P9_20 I2C pins. It should contain board information such as the board name, serial number, revision, and so on. This EEPROM also has the information to autoconfigure the required expansion header pins. I2Caddress 0x54 to 0x57 are reserved for a BeagleBone cape. If there are two capes stacked on BeagleBone that have the same address, there will be address conflict. So, I2C addresses should be configurable via a jumper or dips switch. Then, by changing jumper/switch, you will force cape to use another address.

BeagleBone Black shares some expansion pins with the HDMI and emmc chip. BeagleBone Green shares a few pins with the emmc chip. Any cape dealing with these shared pins cannot be used with these boards. Though HDMI and emmc can be disabled, the hardware chips are still present on the board and can create problems. Here is the Wiki page that has a chart of capes of BeagleBone Black:

http://elinux.org/Beagleboard:BeagleBone_Black_Capes

Software part that deals with addition/deletion/controlling capes is called Cape Manager. Cape manager is part of BeagleBone kernel. It can load device tree runtime which is called device tree overlay. Cape manager checks for cape at the time of booting. You can see that in early boot logs:

bone-capemgr bone_capemgr.9: slot #0: No cape found

On BeagleBone Black, emmc storage and HDMI appears as virtual capes. You can also enable/disable cape by kernel command line options. For more information visit http://elinux.org/Capemgr