Rights Contact Login For More Details
- Wiley
More About This Title Exploring BeagleBone: Tools and Techniques for Building with Embedded Linux
- English
English
In-depth instruction and practical techniques for building with the BeagleBone embedded Linux platform
Exploring BeagleBone is a hands-on guide to bringing gadgets, gizmos, and robots to life using the popular BeagleBone embedded Linux platform. Comprehensive content and deep detail provide more than just a BeagleBone instruction manual—you’ll also learn the underlying engineering techniques that will allow you to create your own projects. The book begins with a foundational primer on essential skills, and then gradually moves into communication, control, and advanced applications using C/C++, allowing you to learn at your own pace. In addition, the book’s companion website features instructional videos, source code, discussion forums, and more, to ensure that you have everything you need.
The BeagleBone’s small size, high performance, low cost, and extreme adaptability have made it a favorite development platform, and the Linux software base allows for complex yet flexible functionality. The BeagleBone has applications in smart buildings, robot control, environmental sensing, to name a few; and, expansion boards and peripherals dramatically increase the possibilities. Exploring BeagleBone provides a reader-friendly guide to the device, including a crash course in computer engineering. While following step by step, you can:
- Get up to speed on embedded Linux, electronics, and programming
- Master interfacing electronic circuits, buses and modules, with practical examples
- Explore the Internet-connected BeagleBone and the BeagleBone with a display
- Apply the BeagleBone to sensing applications, including video and sound
- Explore the BeagleBone’s Programmable Real-Time Controllers
Hands-on learning helps ensure that your new skills stay with you, allowing you to design with electronics, modules, or peripherals even beyond the BeagleBone. Insightful guidance and online peer support help you transition from beginner to expert as you master the techniques presented in Exploring BeagleBone, the practical handbook for the popular computing platform.
- English
English
Dr. Derek Molloy is a Senior Lecturer in the School of Electronic Engineering at Dublin City University, Ireland. Derek produces a popular YouTube series on the BeagleBone platform and a wide variety of embedded Linux topics. His videos and personal blog have introduced millions of people to the BeagleBone, embedded Linux, and digital electronics.
- English
English
Part I BeagleBone Basics 1
Chapter 1 The BeagleBone Hardware 3
Introduction to the Platform 3
Who Should Use the BeagleBone 5
When to Use the BeagleBone 6
When You Should Not Use the BeagleBone 6
BeagleBone Documentation 7
The BeagleBone Hardware 8
BeagleBone Versions 9
The BeagleBone Black Hardware 11
BeagleBone Accessories 14
Highly Recommended Accessories 14
Micro?]SD Card (for Flashing the BBB) 14
External 5V Power Supply (for Flashing and Peripherals) 15
Ethernet Cable (for Network Connection) 15
HDMI Cable (for Connection to Monitors/Televisions) 15
USB to Serial UART TTL 3.3 V (for Finding Problems) 16
Optional Accessories 17
USB Hub (to Connect Several USB Devices to a USB Host) 17
Micro-HDMI to VGA adapters (for VGA Video and Sound) 17
Wi-Fi Adapters (for Wireless Networking) 18
USB Webcam (for Capturing Images and Streaming Video) 18
USB Keyboard and Mouse (for General-Purpose Computing) 18
Capes 19
How to Destroy Your BeagleBone! 20
Summary 22
Support 22
Chapter 2 The BeagleBone Black Software 23
Linux on the BeagleBone 24
Linux Distributions 24
Communicating with the BBB 25
Installing Drivers 26
Network Connections 26
Internet?]over?]USB 26
Regular Ethernet 29
Ethernet Crossover Cable 30
Communicating with the BBB 31
Serial Connection over USB 31
Serial Connection with the USB?]to?]TTL 3.3 V Cable 33
Connecting through Secure Shell (SSH) 33
Secure Shell Connections using PuTTY 34
Chrome Apps: Secure Shell Client 34
Transferring Files Using PuTTY/psftp over SSH 35
Controlling the BeagleBone 37
Basic Linux Commands 37
First Steps 37
Basic File System Commands 38
Environment Variables 40
Basic File Editing 41
What Time Is It? 42
Package Management 44
Interacting with the BBB On?]board LEDs 45
Shutdown 47
Node.js, Cloud9, and BoneScript 48
Introduction to Node.js 48
Introduction to the Cloud9 IDE 50
Introduction to BoneScript 51
Summary 52
Further Reading 53
Chapter 3 Exploring Embedded Linux Systems 55
Embedded Linux Basics 55
What Embedded Linux Offers 57
Is Linux Open Source and Free? 57
Booting the BeagleBone 58
The BeagleBone Bootloaders 58
Kernel Space and User Space 62
System V init (SysVinit) 63
Managing Linux Systems 67
The Super User 67
System Administration 68
The Linux File System 68
Linking to Files and Directories 69
Users and Groups 71
File System Permissions 74
Exploring the File System 75
Commands for File Systems 75
find and whereis 81
more or less 82
Linux Commands 82
Standard Input and Output Redirection (>, >>, and <) 82
Pipes (| and tee) 83
Filter Commands (from sort to xargs) 84
echo and cat 86
diff 87
tar 88
md5sum 88
Linux Processes 89
Controlling Linux Processes 89
Foreground and Background Processes 90
The BusyBox Multi?]call Binary 92
Other Linux Topics 93
Git 93
Getting Started with Git 94
Cloning a Repository (git clone) 95
Getting the Status (git status) 96
Adding to the Staging Area (git add) 96
Committing to the Local Repository (git commit) 97
Pushing to the Remote Repository (git push) 97
Advanced Git 98
Creating a Branch (git branch) 98
Merging the Branch (git merge) 100
Deleting a Branch (git branch ?]d) 100
Conclusions on Git 101
Desktop Virtualization 102
Code for This Book 103
Summary 104
Further Reading 104
Chapter 4 Interfacing Electronics 105
Recommended Equipment 105
Digital Multimeter 106
Oscilloscopes 106
Basic Circuit Principles 108
Voltage, Current, Resistance, and Ohm’s Law 109
Voltage Division 110
Current Division 112
Implementing Circuits on a Breadboard 113
Digital Multimeters (DMMs) and Breadboards 114
Example Circuit: Voltage Regulation 115
Discrete Components 117
Diodes 117
Light?]Emitting Diodes (LEDs) 118
Smoothing and Decoupling Capacitors 121
Transistors 123
Transistors as Switches 124
Field Effect Transistors (FETs) as Switches 127
Optocouplers/Opto?]isolators 128
Switches and Buttons 130
Hysteresis 132
Logic Gates 133
Floating Inputs 137
Pull?]Up and Pull?]Down Resistors 138
Open?]Collector and Open?]Drain Outputs 139
Interconnecting Gates 140
Analog?]to?]Digital Conversion 141
Sampling Rate 142
Quantization 142
Operational Amplifiers 143
Ideal Operational Amplifiers 143
Negative Feedback and Voltage Follower 146
Positive Feedback 146
Concluding Advice 147
Summary 147
Further Reading 148
Chapter 5 Practical BeagleBone Programming 149
Introduction 149
Performance of Different Languages 150
Setting the BBB CPU Frequency 153
Scripting Languages 153
Scripting Language Options 154
Bash 155
Perl 157
Python 158
JavaScript and Java 161
JavaScript and Node.js on the BBB 161
Java on the BBB 164
C and C++ on the BeagleBone 167
C and C++ Language Overview 169
Compiling and Linking 170
Writing the Shortest C/C++ Program 172
Variables and Operators in C/C++ 174
Pointers in C/C++ 177
C?]Style Strings 180
LED Flashing Application in C 181
The C of C++ 183
First Example and Strings in C++ 183
Passing by Value, Pointer, and Reference 185
Flashing the LEDs Using C++ (non?]OO) 186
Writing Your Own Multi?]Call Binary 186
C++ with Classes 187
Overview of Object?]Oriented Programming 188
Classes and Objects 188
Encapsulation 189
Inheritance 190
Object?]Oriented LED Flashing Code 191
/Proc—Process Information File System 195
GLIBC and Syscall 195
Summary 197
Further Reading 197
Part II Interfacing, Controlling, and Communicating 199
Chapter 6 Interfacing to the BeagleBone Input/Outputs 201
General?]Purpose Input/Outputs 201
Introduction to GPIO Interfacing 202
GPIO Digital Output 204
GPIO Digital Input 207
GPIO Confi guration 208
Internal Pull?]up and Pull?]down Resistors 208
GPIO Pin Configuration Settings 209
C++ Control of GPIOs 214
The Linux Device Tree 219
The Flattened Device Tree (FDT) 219
Device Tree Overlays (DTOs) 221
Writing an Overlay 221
Compiling and Deploying an Overlay 222
The BBB Cape Manager 222
Loading a Device Tree Overlay 223
Removing an Overlay 225
Loading an Overlay on Boot 226
Analog Inputs and Outputs 226
Analog Inputs 226
Enabling the Analog Inputs 227
Input Application—A Simple Light Meter 228
Analog Outputs (PWM) 231
Output Application—Controlling a Servo Motor 233
Advanced GPIO Topics 235
More C++ Programming 235
Callback Functions 235
POSIX Threads 236
Linux poll (sys/poll.h) 238
Enhanced GPIO Class 239
GPIO?]KEYS 243
Using GPIOs without Using sudo 247
Summary 248
Further Reading 249
Chapter 7 Cross?]Compilation and the Eclipse IDE 251
Setting Up a Cross?]Compilation Toolchain 251
A Toolchain for Debian 252
Testing the Toolchain 254
Cross?]Compilation with Third?]Party Libraries (Multiarch) 255
Installing a Change Root 257
Installing an armhf Change Root 257
Emulating the armhf Architecture 258
Cross?]Compilation Using Eclipse 260
Installing Eclipse on Desktop Linux 260
Configuring Eclipse for Cross?]Compilation 261
Remote System Explorer 263
Integrating GitHub into Eclipse 265
Remote Debugging 266
Automatic Documentation (Doxygen) 269
Adding Doxygen Support in Eclipse 270
Building Debian for the BBB 271
Summary 273
Further Reading 274
Chapter 8 Interfacing to the BeagleBone Buses 275
Introduction to Bus Communication 276
I2C 276
I2C Hardware 277
The ADXL345 Accelerometer 279
Using Linux I2C?]Tools 280
i2cdetect 280
i2cdump 281
i2cget 283
i2cset 285
I2C Communication in C 286
Wrapping I2C Devices with C++ Classes 288
SPI 291
SPI Hardware 291
SPI on the BBB 293
Enabling the First SPI Bus (SPI0) 294
Testing the SPI Bus 295
A First SPI Application (74HC595) 296
Wiring the 74HC595 Circuit 296
SPI Communication Using C 297
Bidirectional SPI Communication in C++ 300
The Second SPI Bus (SPI1) 301
The ADXL345 SPI Interface 301
Connecting the ADXL345 to the BBB 302
Wrapping SPI Devices with C++ Classes 303
Three?]Wire SPI Communication 307
Multiple SPI Slave Devices on the BBB 308
UART 309
UARTs on the BBB 310
The Arduino UART Example 312
BeagleBone to Arduino Serial Communication 314
Echoing the Minicom Program 314
UART Echo Example in C 316
UART Command Control of an Arduino 318
Logic?]Level Translation 321
Summary 324
Further Reading 324
Chapter 9 Interacting with the Physical Environment 325
Interfacing to Actuators 326
DC Motors 327
A BBB DC Motor Driver Circuit 329
Controlling a DC Motor Using sysfs 330
Controlling a DC Motor Using C++ 331
Stepper Motors 333
The EasyDriver Stepper Motor Driver 334
A BBB Stepper Motor Driver Circuit 335
Controlling a Stepper Motor Using C++ 336
Relays 338
Interfacing to Analog Sensors 340
Protecting the BBB ADC Inputs 342
Diode Clamping 342
Op?]Amp Clamping 343
Analog Sensor Signal Conditioning 345
Scaling Using Voltage Division 345
Signal Offsetting and Scaling 346
Analog Interfacing Examples 349
Infrared Distance Sensing 349
ADXL335 Conditioning Example 353
Interfacing to Display Modules 354
Seven?]Segment Displays 354
Character LCD Modules 359
Remote Control BeagleBone 363
Managing Services with Systemd 364
BBB Serial Connection to Desktop 366
Starting a Custom Service on Boot 369
Bluetooth 370
Installing an Adapter 370
Loadable Kernel Modules 371
Configuring a Bluetooth Adapter 372
Making the BBB Discoverable 373
Android Application Development with Bluetooth 374
Building Dynamic Linked Libraries 376
Summary 376
Further Reading 377
Part III Advanced BeagleBone Systems 379
Chapter 10 The Internet of Things 381
The Internet of Things (IoT) 382
More Sensors (Things!) 384
A Room Temperature Sensor 384
Texas Instruments SensorTag 385
Connecting to Bluetooth Smart Devices 385
Building a Linux Package 386
Controlling a Bluetooth Smart Device 387
The BeagleBone as a Web Server 388
Installing a Web Server 389
Configuring an Apache Web Server 389
Creating Web Pages and Web Scripts 390
PHP on the BeagleBone 392
Replacing Bone101 with the Custom Web Server 393
A C/C++ Web Client 394
Network Communications Primer 395
A C/C++ Web Client 396
Secure Communication Using OpenSSL 398
The BeagleBone as a Web Sensor 399
ThingSpeak 400
The Linux Cron Scheduler 402
System crontab 402
User crontab 404
Xively 405
Getting Started with Xively's PaaS 406
The Xively C Library 407
Sending E-mail from the BBB 409
If This Then That (IFTTT) 411
The C++ Client/Server 412
Managing Remote IoT Devices 415
BeagleBone Remote Monitoring 416
Linux Watchdog Timer 416
IoT Physical Networking 418
The BeagleBone and Wi-Fi 418
Wireless Network Adapters 419
Static IP Addresses 422
Power over Ethernet (PoE) 423
PoE Power Extraction Modules (PEMs) (Advanced Topic) 424
Summary 425
Further Reading 426
Note 426
Chapter 11 BeagleBone with a Rich User Interface 427
Rich UI BBB Architectures 428
The BBB as a General?]Purpose Computer 428
Connecting a Bluetooth Input Peripheral 430
BBB with a LCD Touch Screen Cape 431
Virtual Network Computing (VNC) 432
VNC Using VNC Viewer 433
VNC with Xming and PuTTY 433
VNC with a Linux Desktop Computer 434
Fat?]Client Applications 435
Rich UI Application Development 435
Introduction to GTK+ on the BBB 436
The “Hello World” GTK+ Application 436
The Event?]Driven Programming Model 437
The GTK+ Temperature Application 438
Introduction to Qt on the BBB 441
Installing Qt Development Tools on the BBB 442
The “Hello World” Qt Application 442
Qt Primer 444
Qt Concepts 444
The QObject Class 445
Signals and Slots 446
Qt Development Tools 447
A Qt Temperature Sensor GUI Application 448
Simple Qt Cross?]Platform Development 453
Remote UI Application Development 455
Fat?]Client Qt GUI Application 455
Multi?]Threaded Server Applications 458
A Multi?]Threaded Temperature Service 461
The Fat?]Client as a Server 463
Parsing Stream Data 465
The BBB Client Application 467
Cross?]Compiling Qt Applications 468
Building the Qt Libraries from Source 470
Remote Deploying a Test Application 470
Summary 471
Further Reading 472
Chapter 12 Images, Video, and Audio 473
Capturing Images and Video 474
USB Webcams 474
Video4Linux2 (V4L2) 476
Image Capture Utility 477
Video4Linux2 Utilities 479
Writing Video4Linux2 Programs 480
Streaming Video 482
Image Processing and Computer Vision 483
Image Processing with OpenCV 484
Computer Vision with OpenCV 486
Boost 489
BeagleBone Audio 489
Core Audio Software Tools 490
Audio Devices for the BBB 491
HDMI and USB Audio Playback Devices 491
Internet Radio Playback 493
Recording Audio 494
Audio Network Streaming 496
Bluetooth A2DP Audio 496
Text?]to?]Speech 499
Online Text-to-Speech 499
Offline Text-to-Speech 500
A Bluetooth Speaking Clock and Temperature Sensor 500
Summary 502
Further Reading 502
Chapter 13 Real?]Time BeagleBone Interfacing 503
Real?]Time BeagleBone 504
Real?]Time Kernels 504
Real?]Time Hardware Solutions 505
The PRU?]ICSS Architecture 506
Important Documents 508
Getting Started with the PRU?]ICSS 508
PRU?]ICSS Enhanced GPIOs 509
PRU?]ICSS Device Tree Overlay 509
The PRU?]ICSS Package 511
A First PRU Program 512
The PRU?]ICSS in Detail 516
Registers 516
Local and Global Memory 517
PRU Assembly Instruction Set 519
Applications of the PRU?]ICSS 521
PRU?]ICSS Performance Tests 522
Utilizing Regular Linux GPIOs 522
A PRU PWM Generator 525
A PRU Sine Wave Generator 527
An Ultrasonic Sensor Application 530
Additional PRU?]ICSS Tools 535
The PRU Debugger 535
The TI PRU C Compiler 536
Summary 538
Further Reading 539
Index 541