{"product_id":"exploring-beaglebone-9781119533160","title":"Exploring BeagleBone","description":"\u003cb\u003eBook Synopsis\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cb\u003eTable of Contents\u003c\/b\u003e\u003cbr\u003e\u003cp\u003eIntroduction xxix\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I Beagle Board Basics 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 The Beagle Hardware Platform 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction to the Boards 3\u003c\/p\u003e \u003cp\u003eWho Should Use the Beagle Platform 6\u003c\/p\u003e \u003cp\u003eWhen to Use Beagle Boards 7\u003c\/p\u003e \u003cp\u003eWhen Should You Not Use the Beagle Boards 7\u003c\/p\u003e \u003cp\u003eBeagleBone Documentation 8\u003c\/p\u003e \u003cp\u003eThe Beagle Hardware 10\u003c\/p\u003e \u003cp\u003eBeagleBone Versions 10\u003c\/p\u003e \u003cp\u003eThe Beagle Hardware 12\u003c\/p\u003e \u003cp\u003eBeagle Accessories 19\u003c\/p\u003e \u003cp\u003eHighly Recommended Accessories 19\u003c\/p\u003e \u003cp\u003eHeaders for the PocketBeagle 20\u003c\/p\u003e \u003cp\u003eMicro-SD Card (for Booting or Flashing eMMCs) 20\u003c\/p\u003e \u003cp\u003eExternal 5V Power Supply (for Peripherals) 22\u003c\/p\u003e \u003cp\u003eEthernet Cable (for Wired BBB Network Connection) 22\u003c\/p\u003e \u003cp\u003eHDMI Cable (for Connection to Monitors\/Televisions) 22\u003c\/p\u003e \u003cp\u003eUSB to Serial UART TTL 3.3 (for Finding Problems) 23\u003c\/p\u003e \u003cp\u003eOptional Accessories 24\u003c\/p\u003e \u003cp\u003eUSB Hub (to Connect Several USB Devices to a USB Host) 25\u003c\/p\u003e \u003cp\u003eMicro-HDMI to VGA Adapters (for VGA Video and Sound) 25\u003c\/p\u003e \u003cp\u003eWi-Fi Adapters (for Wireless Networking) 25\u003c\/p\u003e \u003cp\u003eUSB Webcam (for Capturing Images and Streaming Video) 25\u003c\/p\u003e \u003cp\u003eUSB Keyboard and Mouse (for General-Purpose Computing) 26\u003c\/p\u003e \u003cp\u003eCapes 26\u003c\/p\u003e \u003cp\u003eHow to Destroy Your Board! 27\u003c\/p\u003e \u003cp\u003eSummary 29\u003c\/p\u003e \u003cp\u003eSupport 29\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Beagle Software 31\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eLinux on the Beagle Boards 32\u003c\/p\u003e \u003cp\u003eLinux Distributions for Beagle Boards 32\u003c\/p\u003e \u003cp\u003eCreate a Linux Micro-SD Card Image 33\u003c\/p\u003e \u003cp\u003eCommunicating with the Boards 34\u003c\/p\u003e \u003cp\u003eInstalling Drivers 34\u003c\/p\u003e \u003cp\u003eWired Network Connections 35\u003c\/p\u003e \u003cp\u003eInternet-over-USB (All Boards) 36\u003c\/p\u003e \u003cp\u003eRegular Ethernet (BBB and BeagleBoard Only) 39\u003c\/p\u003e \u003cp\u003eEthernet Crossover Cable (BBB and BeagleBoard Only) 40\u003c\/p\u003e \u003cp\u003eCommunicating with Your Board 42\u003c\/p\u003e \u003cp\u003eSerial Connection over USB 42\u003c\/p\u003e \u003cp\u003eSerial Connection with the USB-to-TTL 3.3 V Cable 43\u003c\/p\u003e \u003cp\u003eConnecting Through Secure Shell 44\u003c\/p\u003e \u003cp\u003eSecure Shell Connections Using Putty 45\u003c\/p\u003e \u003cp\u003eChrome Apps: Secure Shell Client 45\u003c\/p\u003e \u003cp\u003eTransferring Files Using Putty\/psftp over SSH 46\u003c\/p\u003e \u003cp\u003eControlling the Beagle Board 48\u003c\/p\u003e \u003cp\u003eBasic Linux Commands 48\u003c\/p\u003e \u003cp\u003eFirst Steps 49\u003c\/p\u003e \u003cp\u003eBasic File System Commands 50\u003c\/p\u003e \u003cp\u003eEnvironment Variables 52\u003c\/p\u003e \u003cp\u003eBasic File Editing 53\u003c\/p\u003e \u003cp\u003eWhat Time Is It? 54\u003c\/p\u003e \u003cp\u003ePackage Management 56\u003c\/p\u003e \u003cp\u003eBeagle-Specific Commands 58\u003c\/p\u003e \u003cp\u003eExpand the File System on an SD Card 59\u003c\/p\u003e \u003cp\u003eUpdate the Kernel 60\u003c\/p\u003e \u003cp\u003eInteracting with the On-Board LEDs 61\u003c\/p\u003e \u003cp\u003eShutdown 63\u003c\/p\u003e \u003cp\u003eNode.js, Cloud9, and BoneScript 64\u003c\/p\u003e \u003cp\u003eIntroduction to Node.js 64\u003c\/p\u003e \u003cp\u003eIntroduction to the Cloud9 IDE 66\u003c\/p\u003e \u003cp\u003eIntroduction to BoneScript 67\u003c\/p\u003e \u003cp\u003eSummary 69\u003c\/p\u003e \u003cp\u003eFurther Reading 69\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Exploring Embedded Linux Systems 71\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing Embedded Linux 72\u003c\/p\u003e \u003cp\u003eAdvantages and Disadvantages of Embedded Linux 73\u003c\/p\u003e \u003cp\u003eIs Linux Open Source and Free? 74\u003c\/p\u003e \u003cp\u003eBooting the Beagle Boards 74\u003c\/p\u003e \u003cp\u003eBootloaders 74\u003c\/p\u003e \u003cp\u003eKernel Space and User Space 83\u003c\/p\u003e \u003cp\u003eThe systemd System and Service Manager 85\u003c\/p\u003e \u003cp\u003eManaging Linux Systems 90\u003c\/p\u003e \u003cp\u003eThe Superuser 90\u003c\/p\u003e \u003cp\u003eSystem Administration 92\u003c\/p\u003e \u003cp\u003eThe Linux File System 92\u003c\/p\u003e \u003cp\u003eLinks to Files and Directories 94\u003c\/p\u003e \u003cp\u003eUsers and Groups 95\u003c\/p\u003e \u003cp\u003eFile System Permissions 98\u003c\/p\u003e \u003cp\u003eThe Linux Root Directory 102\u003c\/p\u003e \u003cp\u003eCommands for File Systems 103\u003c\/p\u003e \u003cp\u003eThe Reliability of SD Card\/eMMC File Systems 111\u003c\/p\u003e \u003cp\u003eLinux Commands 113\u003c\/p\u003e \u003cp\u003eOutput and Input Redirection (\u0026gt;, \u0026gt;\u0026gt;, and \u0026lt;) 113\u003c\/p\u003e \u003cp\u003ePipes (| and tee) 114\u003c\/p\u003e \u003cp\u003eFilter Commands (from sort to xargs) 115\u003c\/p\u003e \u003cp\u003eecho and cat 117\u003c\/p\u003e \u003cp\u003ediff 118\u003c\/p\u003e \u003cp\u003etar 119\u003c\/p\u003e \u003cp\u003emd5sum 120\u003c\/p\u003e \u003cp\u003eLinux Processes 121\u003c\/p\u003e \u003cp\u003eHow to Control Linux Processes 121\u003c\/p\u003e \u003cp\u003eForeground and Background Processes 122\u003c\/p\u003e \u003cp\u003eOther Linux Topics 124\u003c\/p\u003e \u003cp\u003eUsing Git for Version Control 124\u003c\/p\u003e \u003cp\u003eA Practice-Based Introduction 126\u003c\/p\u003e \u003cp\u003eCloning a Repository (git clone) 126\u003c\/p\u003e \u003cp\u003eGetting the Status (git status) 128\u003c\/p\u003e \u003cp\u003eAdding to the Staging Area (git add) 128\u003c\/p\u003e \u003cp\u003eCommitting to the Local Repository (git commit) 129\u003c\/p\u003e \u003cp\u003ePushing to the Remote Repository (git push) 129\u003c\/p\u003e \u003cp\u003eGit Branching 130\u003c\/p\u003e \u003cp\u003eCreating a Branch (git branch) 130\u003c\/p\u003e \u003cp\u003eMerging a Branch (git merge) 132\u003c\/p\u003e \u003cp\u003eDeleting a Branch (git branch -d) 132\u003c\/p\u003e \u003cp\u003eCommon Git Commands 133\u003c\/p\u003e \u003cp\u003eDesktop Virtualization 134\u003c\/p\u003e \u003cp\u003eCode for This Book 135\u003c\/p\u003e \u003cp\u003eSummary 136\u003c\/p\u003e \u003cp\u003eFurther Reading 136\u003c\/p\u003e \u003cp\u003eBibliography 137\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Interfacing Electronics 139\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAnalyzing Your Circuits 140\u003c\/p\u003e \u003cp\u003eDigital Multimeter 140\u003c\/p\u003e \u003cp\u003eOscilloscopes 141\u003c\/p\u003e \u003cp\u003eBasic Circuit Principles 143\u003c\/p\u003e \u003cp\u003eVoltage, Current, Resistance, and Ohm’s Law 143\u003c\/p\u003e \u003cp\u003eVoltage Division 145\u003c\/p\u003e \u003cp\u003eCurrent Division 146\u003c\/p\u003e \u003cp\u003eImplementing Circuits on a Breadboard 147\u003c\/p\u003e \u003cp\u003eDigital Multimeters and Breadboards 149\u003c\/p\u003e \u003cp\u003eExample Circuit: Voltage Regulation 150\u003c\/p\u003e \u003cp\u003eDiscrete Components 152\u003c\/p\u003e \u003cp\u003eDiodes 152\u003c\/p\u003e \u003cp\u003eLight-Emitting Diodes 153\u003c\/p\u003e \u003cp\u003eSmoothing and Decoupling Capacitors 156\u003c\/p\u003e \u003cp\u003eTransistors 158\u003c\/p\u003e \u003cp\u003eTransistors as Switches 159\u003c\/p\u003e \u003cp\u003eField Effect Transistors as Switches 162\u003c\/p\u003e \u003cp\u003eOptocouplers\/Optoisolators 164\u003c\/p\u003e \u003cp\u003eSwitches and Buttons 166\u003c\/p\u003e \u003cp\u003eHysteresis 168\u003c\/p\u003e \u003cp\u003eLogic Gates 169\u003c\/p\u003e \u003cp\u003eFloating Inputs 173\u003c\/p\u003e \u003cp\u003ePull-Up and Pull-Down Resistors 173\u003c\/p\u003e \u003cp\u003eOpen-Collector and Open-Drain Outputs 174\u003c\/p\u003e \u003cp\u003eInterconnecting Gates 175\u003c\/p\u003e \u003cp\u003eAnalog-to-Digital Conversion 177\u003c\/p\u003e \u003cp\u003eSampling Rate 177\u003c\/p\u003e \u003cp\u003eQuantization 178\u003c\/p\u003e \u003cp\u003eOperational Amplifi ers 178\u003c\/p\u003e \u003cp\u003eIdeal Operational Amplifiers 178\u003c\/p\u003e \u003cp\u003eNegative Feedback and Voltage Follower 181\u003c\/p\u003e \u003cp\u003ePositive Feedback 181\u003c\/p\u003e \u003cp\u003eConcluding Advice 182\u003c\/p\u003e \u003cp\u003eSummary 182\u003c\/p\u003e \u003cp\u003eFurther Reading 183\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Practical Beagle Board Programming 185\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction 186\u003c\/p\u003e \u003cp\u003ePerformance of Different Languages 186\u003c\/p\u003e \u003cp\u003eSetting the CPU Frequency 190\u003c\/p\u003e \u003cp\u003eScripting Languages 192\u003c\/p\u003e \u003cp\u003eScripting Language Options 192\u003c\/p\u003e \u003cp\u003eBash 193\u003c\/p\u003e \u003cp\u003eLua 196\u003c\/p\u003e \u003cp\u003ePerl 197\u003c\/p\u003e \u003cp\u003ePython 198\u003c\/p\u003e \u003cp\u003eDynamically Compiled Languages 201\u003c\/p\u003e \u003cp\u003eJavaScript and Node.js on the Beagle boards 201\u003c\/p\u003e \u003cp\u003eJava on the Beagle Boards 203\u003c\/p\u003e \u003cp\u003eC and C++ on the Beagle Boards 207\u003c\/p\u003e \u003cp\u003eC and C++ Language Overview 210\u003c\/p\u003e \u003cp\u003eCompiling and Linking 211\u003c\/p\u003e \u003cp\u003eWriting the Shortest C\/C++ Program 213\u003c\/p\u003e \u003cp\u003eStatic and Dynamic Compilation 215\u003c\/p\u003e \u003cp\u003eVariables and Operators in C\/C++ 215\u003c\/p\u003e \u003cp\u003ePointers in C\/C++ 219\u003c\/p\u003e \u003cp\u003eC-Style Strings 221\u003c\/p\u003e \u003cp\u003eLED Flashing Application in C 223\u003c\/p\u003e \u003cp\u003eThe C of C++ 224\u003c\/p\u003e \u003cp\u003eFirst Example and Strings in C++ 225\u003c\/p\u003e \u003cp\u003ePassing by Value, Pointer, and Reference 226\u003c\/p\u003e \u003cp\u003eFlashing the LEDs Using C++ (non-OO) 227\u003c\/p\u003e \u003cp\u003eWriting a Multicall Binary 228\u003c\/p\u003e \u003cp\u003eOverview of Object-Oriented Programming 229\u003c\/p\u003e \u003cp\u003eClasses and Objects 229\u003c\/p\u003e \u003cp\u003eEncapsulation 230\u003c\/p\u003e \u003cp\u003eInheritance 231\u003c\/p\u003e \u003cp\u003eObject-Oriented LED Flashing Code 233\u003c\/p\u003e \u003cp\u003eInterfacing to the Linux OS 236\u003c\/p\u003e \u003cp\u003eGlibc and Syscall 237\u003c\/p\u003e \u003cp\u003eImproving the Performance of Python 239\u003c\/p\u003e \u003cp\u003eCython 239\u003c\/p\u003e \u003cp\u003eBoost.Python 242\u003c\/p\u003e \u003cp\u003eSummary 244\u003c\/p\u003e \u003cp\u003eFurther Reading 244\u003c\/p\u003e \u003cp\u003eBibliography 244\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II Interfacing, Controlling, and Communicating 245     \u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Interfacing to the Beagle Board Input\/Outputs 247\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eGeneral-Purpose Input\/Outputs 248\u003c\/p\u003e \u003cp\u003eIntroduction to GPIO Interfacing 248\u003c\/p\u003e \u003cp\u003eGPIO Digital Output 250\u003c\/p\u003e \u003cp\u003eGPIO Digital Input 255\u003c\/p\u003e \u003cp\u003eGPIO Confi guration 257\u003c\/p\u003e \u003cp\u003eInternal Pull-Up and Pull-Down Resistors 258\u003c\/p\u003e \u003cp\u003eGPIO Pin Configuration Settings 258\u003c\/p\u003e \u003cp\u003eInterfacing to Powered DC Circuits 265\u003c\/p\u003e \u003cp\u003eC++ Control of GPIOs 267\u003c\/p\u003e \u003cp\u003eThe Linux Device Tree 271\u003c\/p\u003e \u003cp\u003eFlattened Device Tree on the Beagle Boards 272\u003c\/p\u003e \u003cp\u003eModifying a Board Device Tree 276\u003c\/p\u003e \u003cp\u003eBoot Confi guration Files 278\u003c\/p\u003e \u003cp\u003eAnalog Inputs and Outputs 280\u003c\/p\u003e \u003cp\u003eAnalog Inputs 280\u003c\/p\u003e \u003cp\u003eEnabling the Analog Inputs 280\u003c\/p\u003e \u003cp\u003eAnalog Input Application—A Simple Light Meter 282\u003c\/p\u003e \u003cp\u003eAnalog Outputs (PWM) 285\u003c\/p\u003e \u003cp\u003eOutput Application—Controlling a Servo Motor 289\u003c\/p\u003e \u003cp\u003eBoneScript 290\u003c\/p\u003e \u003cp\u003eDigital Read and Write 290\u003c\/p\u003e \u003cp\u003eAnalog Read 292\u003c\/p\u003e \u003cp\u003eAnalog Write (PWM) 293\u003c\/p\u003e \u003cp\u003eGPIO Performance 294\u003c\/p\u003e \u003cp\u003eAdvanced GPIO Topics 295\u003c\/p\u003e \u003cp\u003eMore C++ Programming 295\u003c\/p\u003e \u003cp\u003eCallback Functions 295\u003c\/p\u003e \u003cp\u003ePOSIX Threads 297\u003c\/p\u003e \u003cp\u003eLinux poll (sys\/poll.h) 298\u003c\/p\u003e \u003cp\u003eEnhanced GPIO Class 299\u003c\/p\u003e \u003cp\u003eUsing GPIOs without Using sudo 302\u003c\/p\u003e \u003cp\u003eRoot Permissions with setuid 304\u003c\/p\u003e \u003cp\u003eSummary 306\u003c\/p\u003e \u003cp\u003eFurther Reading 306\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 Cross-Compilation, Eclipse, and Building Linux 307\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSetting Up a Cross-Compilation Toolchain 308\u003c\/p\u003e \u003cp\u003eCross-Compiling Under Debian 309\u003c\/p\u003e \u003cp\u003eTesting the Toolchain 311\u003c\/p\u003e \u003cp\u003eEmulating the armhf Architecture 312\u003c\/p\u003e \u003cp\u003eCross-Compilation with Third-Party Libraries (Multiarch) 314\u003c\/p\u003e \u003cp\u003eCross-Compilation Using Eclipse 315\u003c\/p\u003e \u003cp\u003eInstalling Eclipse on Desktop Linux 315\u003c\/p\u003e \u003cp\u003eConfi guring Eclipse for Cross-Compilation 316\u003c\/p\u003e \u003cp\u003eRemote System Explorer 318\u003c\/p\u003e \u003cp\u003eIntegrating GitHub into Eclipse 322\u003c\/p\u003e \u003cp\u003eRemote Debugging 322\u003c\/p\u003e \u003cp\u003eAutomatic Documentation (Doxygen) 328\u003c\/p\u003e \u003cp\u003eAdding Doxygen Editor Support in Eclipse 330\u003c\/p\u003e \u003cp\u003eCross-Building Linux 330\u003c\/p\u003e \u003cp\u003eDownloading the Kernel Source 331\u003c\/p\u003e \u003cp\u003eBuilding the Linux Kernel 332\u003c\/p\u003e \u003cp\u003eBuilding a Poky Linux Distribution (Advanced) 335\u003c\/p\u003e \u003cp\u003eSummary 340\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 Interfacing to the Beagle Board Buses 341\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction to Bus Communication 342\u003c\/p\u003e \u003cp\u003eI2C 343\u003c\/p\u003e \u003cp\u003eI2C Hardware 343\u003c\/p\u003e \u003cp\u003eI2C on the Beagle Boards 344\u003c\/p\u003e \u003cp\u003eI2C Devices on the Beagle Boards 345\u003c\/p\u003e \u003cp\u003eAn I2C Test Circuit 346\u003c\/p\u003e \u003cp\u003eA Real-Time Clock 346\u003c\/p\u003e \u003cp\u003eThe ADXL345 Accelerometer 347\u003c\/p\u003e \u003cp\u003eWiring the Test Circuit 348\u003c\/p\u003e \u003cp\u003eUsing Linux I2C-Tools 348\u003c\/p\u003e \u003cp\u003ei2cdetect 348\u003c\/p\u003e \u003cp\u003ei2cdump 349\u003c\/p\u003e \u003cp\u003ei2cget 353\u003c\/p\u003e \u003cp\u003ei2cset 354\u003c\/p\u003e \u003cp\u003eI2C Communication in C 356\u003c\/p\u003e \u003cp\u003eWrapping I2C Devices with C++ Classes 358\u003c\/p\u003e \u003cp\u003eSPI 360\u003c\/p\u003e \u003cp\u003eSPI Hardware 361\u003c\/p\u003e \u003cp\u003eSPI on the Beagle Boards 363\u003c\/p\u003e \u003cp\u003eTesting an SPI Bus 363\u003c\/p\u003e \u003cp\u003eA First SPI Application (74HC595) 365\u003c\/p\u003e \u003cp\u003eWiring the 74HC595 Circuit 366\u003c\/p\u003e \u003cp\u003eSPI Communication Using C 367\u003c\/p\u003e \u003cp\u003eBidirectional SPI Communication in C\/C++ 370\u003c\/p\u003e \u003cp\u003eThe ADXL345 SPI Interface 370\u003c\/p\u003e \u003cp\u003eConnecting the ADXL345 to the Beagle Boards 372\u003c\/p\u003e \u003cp\u003eWrapping SPI Devices with C++ Classes 373\u003c\/p\u003e \u003cp\u003eThree-Wire SPI Communication 375\u003c\/p\u003e \u003cp\u003eMultiple SPI Slave Devices 376\u003c\/p\u003e \u003cp\u003eUART 377\u003c\/p\u003e \u003cp\u003eThe Beagle Board UART 378\u003c\/p\u003e \u003cp\u003eUART Examples in C 380\u003c\/p\u003e \u003cp\u003eBeagle Board Serial Client 381\u003c\/p\u003e \u003cp\u003eLED Serial Server 383\u003c\/p\u003e \u003cp\u003eUART Applications: GPS 386\u003c\/p\u003e \u003cp\u003eCAN Bus 388\u003c\/p\u003e \u003cp\u003eBeagle Board CAN Bus 389\u003c\/p\u003e \u003cp\u003eSocketCAN 390\u003c\/p\u003e \u003cp\u003eA CAN Bus Test Circuit 392\u003c\/p\u003e \u003cp\u003eLinux CAN-utils 393\u003c\/p\u003e \u003cp\u003eA SocketCAN C Example 394\u003c\/p\u003e \u003cp\u003eLogic-Level Translation 396\u003c\/p\u003e \u003cp\u003eSummary 398\u003c\/p\u003e \u003cp\u003eFurther Reading 399\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 Interacting with the Physical Environment 401\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eInterfacing to Actuators 402\u003c\/p\u003e \u003cp\u003eDC Motors 403\u003c\/p\u003e \u003cp\u003eDriving Small DC Motors (up to 1.5 A) 406\u003c\/p\u003e \u003cp\u003eControlling a DC Motor Using sysfs 407\u003c\/p\u003e \u003cp\u003eDriving Larger DC Motors (Greater Than 1.5 A) 409\u003c\/p\u003e \u003cp\u003eControlling a DC Motor Using C++ 411\u003c\/p\u003e \u003cp\u003eStepper Motors 412\u003c\/p\u003e \u003cp\u003eThe EasyDriver Stepper Motor Driver 413\u003c\/p\u003e \u003cp\u003eA Beagle Board Stepper Motor Driver Circuit 414\u003c\/p\u003e \u003cp\u003eControlling a Stepper Motor Using C++ 415\u003c\/p\u003e \u003cp\u003eRelays 417\u003c\/p\u003e \u003cp\u003eInterfacing to Analog Sensors 418\u003c\/p\u003e \u003cp\u003eProtecting the ADC Inputs 420\u003c\/p\u003e \u003cp\u003eDiode Clamping 421\u003c\/p\u003e \u003cp\u003eOp-Amp Clamping 422\u003c\/p\u003e \u003cp\u003eAnalog Sensor Signal Conditioning 427\u003c\/p\u003e \u003cp\u003eScaling Using Voltage Division 427\u003c\/p\u003e \u003cp\u003eSignal Offsetting and Scaling 428\u003c\/p\u003e \u003cp\u003eAnalog Interfacing Examples 431\u003c\/p\u003e \u003cp\u003eInfrared Distance Sensing 431\u003c\/p\u003e \u003cp\u003eADXL335 Conditioning Example 436\u003c\/p\u003e \u003cp\u003eInterfacing to Local Displays 438\u003c\/p\u003e \u003cp\u003eMAX7219 Display Modules 438\u003c\/p\u003e \u003cp\u003eCharacter LCD Modules 441\u003c\/p\u003e \u003cp\u003eBuilding C\/C++ Libraries 445\u003c\/p\u003e \u003cp\u003eMakefi les 446\u003c\/p\u003e \u003cp\u003eCMake 447\u003c\/p\u003e \u003cp\u003eA Hello World Example 448\u003c\/p\u003e \u003cp\u003eBuilding a C\/C++ Library 449\u003c\/p\u003e \u003cp\u003eUsing a Shared (.so) or Static (.a) Library 452\u003c\/p\u003e \u003cp\u003eSummary 453\u003c\/p\u003e \u003cp\u003eFurther Reading 454\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 Real-Time Interfacing Using External Slave Processors 455\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReal-Time Beagle Board 456\u003c\/p\u003e \u003cp\u003eReal-Time Kernels 456\u003c\/p\u003e \u003cp\u003eReal-Time Hardware Solutions 458\u003c\/p\u003e \u003cp\u003eExtended GPIO Availability 458\u003c\/p\u003e \u003cp\u003eThe MCP23017 and the I2C Bus 460\u003c\/p\u003e \u003cp\u003eControlling the GPIO LED Circuit 461\u003c\/p\u003e \u003cp\u003eReading the GPIO Button State 462\u003c\/p\u003e \u003cp\u003eAn Interrupt Configuration Example (Advanced) 463\u003c\/p\u003e \u003cp\u003eThe MCP23S17 and the SPI Bus 464\u003c\/p\u003e \u003cp\u003eA C++ Class for the MCP23x17 Devices 465\u003c\/p\u003e \u003cp\u003eAdding External UARTs 468\u003c\/p\u003e \u003cp\u003eThe Arduino 471\u003c\/p\u003e \u003cp\u003eAn Arduino Serial Slave 474\u003c\/p\u003e \u003cp\u003eA UART Echo Test Example 475\u003c\/p\u003e \u003cp\u003eUART Command Control of an Arduino 478\u003c\/p\u003e \u003cp\u003eAn Arduino I2C Slave 481\u003c\/p\u003e \u003cp\u003eAn I2C Test Circuit 481\u003c\/p\u003e \u003cp\u003eI2C Register Echo Example 482\u003c\/p\u003e \u003cp\u003eI2C Temperature Sensor Example 484\u003c\/p\u003e \u003cp\u003eI2C Temperature Sensor with a Warning LED 486\u003c\/p\u003e \u003cp\u003eArduino Slave Communication Using C\/C++ 488\u003c\/p\u003e \u003cp\u003eAn I2C Ultrasonic Sensor Application 490\u003c\/p\u003e \u003cp\u003eSummary 493\u003c\/p\u003e \u003cp\u003eFurther Reading 493\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III Advanced Beagle Board Systems 495\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 The Internet of Things 497\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Internet of Things 498\u003c\/p\u003e \u003cp\u003eA Beagle Board IoT Sensor 499\u003c\/p\u003e \u003cp\u003eThe Beagle Board as a Sensor Web Server 501\u003c\/p\u003e \u003cp\u003eInstalling and Configuring a Web Server 502\u003c\/p\u003e \u003cp\u003eConfiguring the Apache Web Server 503\u003c\/p\u003e \u003cp\u003eCreating Web Pages and Web Scripts 503\u003c\/p\u003e \u003cp\u003ePHP on the Beagle Board 506\u003c\/p\u003e \u003cp\u003eGNU Cgicc Applications (Advanced) 508\u003c\/p\u003e \u003cp\u003eReplacing Bone101 with Apache 511\u003c\/p\u003e \u003cp\u003eA C\/C++ Web Client 512\u003c\/p\u003e \u003cp\u003eNetwork Communications Primer 513\u003c\/p\u003e \u003cp\u003eA C\/C++ Web Client 514\u003c\/p\u003e \u003cp\u003eSecure Communication Using Open SSL 516\u003c\/p\u003e \u003cp\u003eA Beagle Board as a “Thing” 518\u003c\/p\u003e \u003cp\u003eThing Speak 518\u003c\/p\u003e \u003cp\u003eThe Linux Cron Scheduler 521\u003c\/p\u003e \u003cp\u003eSystem crontab 521\u003c\/p\u003e \u003cp\u003eUser crontab 523\u003c\/p\u003e \u003cp\u003eSending E-mail from the Beagle Board 524\u003c\/p\u003e \u003cp\u003eIf This Then That 526\u003c\/p\u003e \u003cp\u003eIoT Frameworks 528\u003c\/p\u003e \u003cp\u003eMQ Telemetry Transport 529\u003c\/p\u003e \u003cp\u003eMQTT Server\/Broker 531\u003c\/p\u003e \u003cp\u003eMQTT Publisher\/Subscriber on a Beagle Board 533\u003c\/p\u003e \u003cp\u003eThe mqtt-spy Debug Tool 534\u003c\/p\u003e \u003cp\u003eWriting MQTT Code 535\u003c\/p\u003e \u003cp\u003eA Paho MQTT Publisher Example 535\u003c\/p\u003e \u003cp\u003eA Paho MQTT Subscriber Example 537\u003c\/p\u003e \u003cp\u003eAdafuit IO 539\u003c\/p\u003e \u003cp\u003eConfiguring the Adafruit IO Account 540\u003c\/p\u003e \u003cp\u003eConnecting to Adafruit IO with MQTT 542\u003c\/p\u003e \u003cp\u003eAn MQTT Node.js Publish Example 543\u003c\/p\u003e \u003cp\u003eThe C++ Client\/Server 545\u003c\/p\u003e \u003cp\u003eIoT Device Management 548\u003c\/p\u003e \u003cp\u003eRemote Monitoring of a Beagle Board 548\u003c\/p\u003e \u003cp\u003eBeagle Board Watchdog Timers 549\u003c\/p\u003e \u003cp\u003eStatic IP Addresses 551\u003c\/p\u003e \u003cp\u003ePower over Ethernet 551\u003c\/p\u003e \u003cp\u003ePoE Power Extraction Modules (Advanced Topic) 553\u003c\/p\u003e \u003cp\u003eSummary 554\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12 Wireless Communication and Control 555\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction to Wireless Communications 556\u003c\/p\u003e \u003cp\u003eBluetooth Communications 557\u003c\/p\u003e \u003cp\u003eInstalling a Bluetooth Adapter 558\u003c\/p\u003e \u003cp\u003eChecking the LKM 559\u003c\/p\u003e \u003cp\u003eConfiguring a Bluetooth Adapter 560\u003c\/p\u003e \u003cp\u003eMaking the Beagle Board Discoverable 561\u003c\/p\u003e \u003cp\u003eAndroid App Development with Bluetooth 563\u003c\/p\u003e \u003cp\u003eWi-Fi Communications 564\u003c\/p\u003e \u003cp\u003eInstalling a Wi-Fi Adapter 564\u003c\/p\u003e \u003cp\u003eThe NodeMCU Wi-Fi Slave Processor 568\u003c\/p\u003e \u003cp\u003eFlashing with the Latest Firmware 569\u003c\/p\u003e \u003cp\u003eConnecting the NodeMCU to Wi-Fi 570\u003c\/p\u003e \u003cp\u003eProgramming the NodeMCU 571\u003c\/p\u003e \u003cp\u003eThe NodeMCU Web Server Interface 574\u003c\/p\u003e \u003cp\u003eJSON 575\u003c\/p\u003e \u003cp\u003eThe NodeMCU and MQTT 577\u003c\/p\u003e \u003cp\u003eZigBee Communications 579\u003c\/p\u003e \u003cp\u003eIntroduction to XBee Devices 579\u003c\/p\u003e \u003cp\u003eAT versus API Mode 581\u003c\/p\u003e \u003cp\u003eXBee Confi guration 582\u003c\/p\u003e \u003cp\u003eXCTU 582\u003c\/p\u003e \u003cp\u003eConfiguring an XBee Network Using XCTU 583\u003c\/p\u003e \u003cp\u003eAn XBee AT Mode Example 584\u003c\/p\u003e \u003cp\u003eSetting Up the Arduino XBee Device (XBeeA) 584\u003c\/p\u003e \u003cp\u003eSetting Up the PocketBeagle XBee Device (XBeePB) 586\u003c\/p\u003e \u003cp\u003eAn XBee API Mode Example 589\u003c\/p\u003e \u003cp\u003eSetting Up the PocketBeagle XBee Device (XBee1) 589\u003c\/p\u003e \u003cp\u003eSetting Up the Stand-Alone XBee Device (XBee2) 589\u003c\/p\u003e \u003cp\u003eXBee API Mode and Node.js 590\u003c\/p\u003e \u003cp\u003eXBee and C\/C++ 592\u003c\/p\u003e \u003cp\u003eNear Field Communication 593\u003c\/p\u003e \u003cp\u003eSummary 596\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13 Beagle Board with a Rich User Interface 599\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRich UI Beagle Board Architectures 600\u003c\/p\u003e \u003cp\u003eBeagle Boards as General-Purpose Computers 601\u003c\/p\u003e \u003cp\u003eConnecting a Bluetooth Input Peripheral 603\u003c\/p\u003e \u003cp\u003eBeagleBone with a LCD Touchscreen Cape 604\u003c\/p\u003e \u003cp\u003eVirtual Network Computing 605\u003c\/p\u003e \u003cp\u003eVNC Using VNC Viewer 605\u003c\/p\u003e \u003cp\u003eVNC with Xming and PuTTY 606\u003c\/p\u003e \u003cp\u003eVNC with a Linux Desktop Computer 607\u003c\/p\u003e \u003cp\u003eFat-Client Applications 608\u003c\/p\u003e \u003cp\u003eRich UI Application Development 608\u003c\/p\u003e \u003cp\u003eIntroduction to GTK+ on the Beagle Boards 609\u003c\/p\u003e \u003cp\u003eThe “Hello World” GTK+ Application 609\u003c\/p\u003e \u003cp\u003eThe Event-Driven Programming Model 610\u003c\/p\u003e \u003cp\u003eThe GTK+ Temperature Application 611\u003c\/p\u003e \u003cp\u003eIntroduction to Qt for the Beagle Board 612\u003c\/p\u003e \u003cp\u003eInstalling Qt Development Tools 613\u003c\/p\u003e \u003cp\u003eThe “Hello World” Qt Application 613\u003c\/p\u003e \u003cp\u003eQt Primer 615\u003c\/p\u003e \u003cp\u003eQt Concepts 615                                                                                                   \u003c\/p\u003e \u003cp\u003eThe QObject Class 617\u003c\/p\u003e \u003cp\u003eSignals and Slots 617\u003c\/p\u003e \u003cp\u003eQt Development Tools 618\u003c\/p\u003e \u003cp\u003eA First Qt Creator Example 620\u003c\/p\u003e \u003cp\u003eA Qt Temperature Sensor GUI Application 621\u003c\/p\u003e \u003cp\u003eRemote UI Application Development 625\u003c\/p\u003e \u003cp\u003eFat-Client Qt GUI Application 626\u003c\/p\u003e \u003cp\u003eMultithreaded Server Applications 629\u003c\/p\u003e \u003cp\u003eA Multithreaded Temperature Service 632\u003c\/p\u003e \u003cp\u003eParsing Stream Data 634\u003c\/p\u003e \u003cp\u003eThe Fat Client as a Server 635\u003c\/p\u003e \u003cp\u003eParsing Stream Data with XML 638\u003c\/p\u003e \u003cp\u003eThe Beagle Board Client Application 639\u003c\/p\u003e \u003cp\u003eSummary 641\u003c\/p\u003e \u003cp\u003eFurther Reading 641\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14 Images, Video, and Audio 643\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCapturing Images and Video 644\u003c\/p\u003e \u003cp\u003eUSB Webcams 644\u003c\/p\u003e \u003cp\u003eVideo4Linux2 (V4L2) 646\u003c\/p\u003e \u003cp\u003eImage Capture Utility 647\u003c\/p\u003e \u003cp\u003eVideo4Linux2 Utilities 648\u003c\/p\u003e \u003cp\u003eWriting Video4Linux2 Programs 650\u003c\/p\u003e \u003cp\u003eStreaming Video 652\u003c\/p\u003e \u003cp\u003eImage Processing and Computer Vision 654\u003c\/p\u003e \u003cp\u003eImage Processing with Open CV 654\u003c\/p\u003e \u003cp\u003eComputer Vision with Open CV 656\u003c\/p\u003e \u003cp\u003eBoost 659\u003c\/p\u003e \u003cp\u003eBeagleBone Audio 660\u003c\/p\u003e \u003cp\u003eCore Audio Software Tools 661\u003c\/p\u003e \u003cp\u003eAudio Devices for the Beagle Boards 661\u003c\/p\u003e \u003cp\u003eHDMI and USB Audio Playback Devices 661\u003c\/p\u003e \u003cp\u003eInternet Radio Playback 664\u003c\/p\u003e \u003cp\u003eRecording Audio 664\u003c\/p\u003e \u003cp\u003eAudio Network Streaming 666\u003c\/p\u003e \u003cp\u003eBluetooth A2DP Audio 666\u003c\/p\u003e \u003cp\u003eText-to-Speech 669\u003c\/p\u003e \u003cp\u003eSummary 670\u003c\/p\u003e \u003cp\u003eFurther Reading 670\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15 Real-Time Interfacing with the PRU-ICSS 673\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe PRU-ICSS 674\u003c\/p\u003e \u003cp\u003eThe PRU-ICSS Architecture 674\u003c\/p\u003e \u003cp\u003eThe Remote Processor Framework 675\u003c\/p\u003e \u003cp\u003eImportant Documents 676\u003c\/p\u003e \u003cp\u003eDevelopment Tools for the PRU-ICSS 676\u003c\/p\u003e \u003cp\u003eThe PRU Code Generation Tools 677\u003c\/p\u003e \u003cp\u003eThe PRU Debugger 677\u003c\/p\u003e \u003cp\u003eUsing the AM335x PRU-ICSS 679\u003c\/p\u003e \u003cp\u003eSetting Up the Board for Remoteproc 679\u003c\/p\u003e \u003cp\u003eTesting Remoteproc under Linux 680\u003c\/p\u003e \u003cp\u003eA First PRU Example 683\u003c\/p\u003e \u003cp\u003ePRU-ICSS Enhanced GPIOs 683\u003c\/p\u003e \u003cp\u003eA First PRU Program 686\u003c\/p\u003e \u003cp\u003eA First PRU Program in C 686\u003c\/p\u003e \u003cp\u003eA First PRU Program in Assembly 688\u003c\/p\u003e \u003cp\u003eThe PRU-ICSS in Detail 691\u003c\/p\u003e \u003cp\u003eRegisters 691\u003c\/p\u003e \u003cp\u003eLocal and Global Memory 692\u003c\/p\u003e \u003cp\u003ePRU Assembly Instruction Set 696\u003c\/p\u003e \u003cp\u003ePRU-ICSS Applications 698\u003c\/p\u003e \u003cp\u003ePRU-ICSS Performance Tests 698\u003c\/p\u003e \u003cp\u003eUtilizing Regular Linux GPIOs 702\u003c\/p\u003e \u003cp\u003eA PRU PWM Generator 704\u003c\/p\u003e \u003cp\u003eA PRU Sine Wave Generator 708\u003c\/p\u003e \u003cp\u003eAn Ultrasonic Sensor Application 709\u003c\/p\u003e \u003cp\u003eSummary 714\u003c\/p\u003e \u003cp\u003eFurther Reading 714\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16 Embedded Kernel Programming 717\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction 718\u003c\/p\u003e \u003cp\u003eWhy Write Kernel Modules? 718\u003c\/p\u003e \u003cp\u003eLoadable Kernel Module Basics 719\u003c\/p\u003e \u003cp\u003eA First LKM Example 720\u003c\/p\u003e \u003cp\u003eThe LKM Make file 722\u003c\/p\u003e \u003cp\u003eBuilding the LKM on a Beagle Board 723\u003c\/p\u003e \u003cp\u003eTesting the First LKM Example 724\u003c\/p\u003e \u003cp\u003eTesting the LKM Parameter 726\u003c\/p\u003e \u003cp\u003eAn Embedded LKM Example 727\u003c\/p\u003e \u003cp\u003eInterrupt Service Routines 729\u003c\/p\u003e \u003cp\u003ePerformance 733\u003c\/p\u003e \u003cp\u003eEnhanced Button GPIO Driver LKM 733\u003c\/p\u003e \u003cp\u003eThe object Interface 734\u003c\/p\u003e \u003cp\u003eEnhanced LED GPIO Driver LKM 741\u003c\/p\u003e \u003cp\u003eKernel Threads 742\u003c\/p\u003e \u003cp\u003eConclusions 744\u003c\/p\u003e \u003cp\u003eSummary 744\u003c\/p\u003e \u003cp\u003eIndex 745\u003c\/p\u003e","brand":"John Wiley \u0026 Sons Inc","offers":[{"title":"Default Title","offer_id":49407074828631,"sku":"9781119533160","price":24.79,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0817\/1739\/5799\/files\/9781119533160.jpg?v=1730498089","url":"https:\/\/bookcurl.com\/products\/exploring-beaglebone-9781119533160","provider":"Book Curl","version":"1.0","type":"link"}