{"product_id":"exploring-raspberry-pi-isbn-9781119188681","title":"Exploring Raspberry Pi","description":"\u003cb\u003eExpand Raspberry Pi capabilities with fundamental engineering principles\u003c\/b\u003e \u003cp\u003e\u003ci\u003eExploring Raspberry Pi\u003c\/i\u003e is the innovators guide to bringing Raspberry Pi to life. This book favors engineering principles over a 'recipe' approach to give you the skills you need to design and build your own projects. You'll understand the fundamental principles in a way that transfers to any type of electronics, electronic modules, or external peripherals, using a \"learning by doing\" approach that caters to both beginners and experts. The book begins with basic Linux and programming skills, and helps you stock your inventory with common parts and supplies. Next, you'll learn how to make parts work together to achieve the goals of your project, no matter what type of components you use. The companion website provides a full repository that structures all of the code and scripts, along with links to video tutorials and supplementary content that takes you deeper into your project. \u003c\/p\u003e\u003cp\u003eThe Raspberry Pi's most famous feature is its adaptability. It can be used for thousands of electronic applications, and using the Linux OS expands the functionality even more. This book helps you get the most from your Raspberry Pi, but it also gives you the fundamental engineering skills you need to incorporate any electronics into any project. \u003c\/p\u003e\u003cul\u003e \u003cli\u003eDevelop the Linux and programming skills you need to build basic applications\u003c\/li\u003e \u003cli\u003eBuild your inventory of parts so you can always \"make it work\"\u003c\/li\u003e \u003cli\u003eUnderstand interfacing, controlling, and communicating with almost any component\u003c\/li\u003e \u003cli\u003eExplore advanced applications with video, audio, real-world interactions, and more\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003eBe free to adapt and create with \u003ci\u003eExploring Raspberry Pi.\u003c\/i\u003e \u003c\/p\u003e\u003cp\u003eIntroduction xix\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart I Raspberry Pi Basics Chapter 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 Raspberry Pi Hardware 3\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction to the Platform 3\u003c\/p\u003e \u003cp\u003eWho Should Use the RPi 5\u003c\/p\u003e \u003cp\u003eWhen to Use the RPi 5\u003c\/p\u003e \u003cp\u003eWhen to Not Use the RPi 6\u003c\/p\u003e \u003cp\u003eRPi Documentation 7\u003c\/p\u003e \u003cp\u003eThe RPi Hardware 8\u003c\/p\u003e \u003cp\u003eRaspberry Pi Versions 9\u003c\/p\u003e \u003cp\u003eThe Raspberry Pi Hardware 10\u003c\/p\u003e \u003cp\u003eRaspberry Pi Accessories 12\u003c\/p\u003e \u003cp\u003eImportant Accessories 13\u003c\/p\u003e \u003cp\u003eRecommended Accessories 14\u003c\/p\u003e \u003cp\u003eOptional Accessories 16\u003c\/p\u003e \u003cp\u003eHATs 19\u003c\/p\u003e \u003cp\u003eHow to Destroy Your RPi! 20\u003c\/p\u003e \u003cp\u003eSummary 21\u003c\/p\u003e \u003cp\u003eSupport 21\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 Raspberry Pi Software 23\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eLinux on the Raspberry Pi 24\u003c\/p\u003e \u003cp\u003eLinux Distributions for the RPi 24\u003c\/p\u003e \u003cp\u003eCreate a Linux SD Card Image for the RPi 25\u003c\/p\u003e \u003cp\u003eConnecting to a Network 26\u003c\/p\u003e \u003cp\u003eRegular Ethernet 27\u003c\/p\u003e \u003cp\u003eEthernet Crossover Cable 29\u003c\/p\u003e \u003cp\u003eCommunicating with the RPi 31\u003c\/p\u003e \u003cp\u003eSerial Connection with the USB-to-TTL 3.3V Cable 31\u003c\/p\u003e \u003cp\u003eConnecting through Secure Shell (SSH) 33\u003c\/p\u003e \u003cp\u003eTransferring Files Using PuTTY\/psftp over SSH 35\u003c\/p\u003e \u003cp\u003eControlling the Raspberry Pi 36\u003c\/p\u003e \u003cp\u003eBasic Linux Commands 36\u003c\/p\u003e \u003cp\u003eBasic File Editing 41\u003c\/p\u003e \u003cp\u003eWhat Time Is It? 43\u003c\/p\u003e \u003cp\u003ePackage Management 44\u003c\/p\u003e \u003cp\u003eConfiguring the Raspberry Pi 46\u003c\/p\u003e \u003cp\u003eThe Raspberry Pi Configuration Tool 46\u003c\/p\u003e \u003cp\u003eUpdating the RPi Software 48\u003c\/p\u003e \u003cp\u003eVideo Output 49\u003c\/p\u003e \u003cp\u003eInteracting with the Onboard LEDs 50\u003c\/p\u003e \u003cp\u003eShutdown and Reboot 53\u003c\/p\u003e \u003cp\u003eSummary 54\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 Exploring Embedded Linux Systems 55\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing Embedded Linux 56\u003c\/p\u003e \u003cp\u003eAdvantages and Disadvantages of Embedded Linux 57\u003c\/p\u003e \u003cp\u003eIs Linux Open Source and Free? 58\u003c\/p\u003e \u003cp\u003eBooting the Raspberry Pi 58\u003c\/p\u003e \u003cp\u003eManaging Linux Systems 69\u003c\/p\u003e \u003cp\u003eThe Super User 69\u003c\/p\u003e \u003cp\u003eSystem Administration 70\u003c\/p\u003e \u003cp\u003eLinux Commands 89\u003c\/p\u003e \u003cp\u003eLinux Processes 96\u003c\/p\u003e \u003cp\u003eOther Linux Topics 99\u003c\/p\u003e \u003cp\u003eUsing Git for Version Control 99\u003c\/p\u003e \u003cp\u003eA Practice-Based Introduction 101\u003c\/p\u003e \u003cp\u003eGit Branching 105\u003c\/p\u003e \u003cp\u003eCommon Git Commands 107\u003c\/p\u003e \u003cp\u003eUsing Desktop Virtualization 108\u003c\/p\u003e \u003cp\u003eCode for This Book 110\u003c\/p\u003e \u003cp\u003eSummary 111\u003c\/p\u003e \u003cp\u003eFurther Reading 111\u003c\/p\u003e \u003cp\u003eBibliography 111\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Interfacing Electronics 113\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eAnalyzing Your Circuits 114\u003c\/p\u003e \u003cp\u003eDigital Multimeter 114\u003c\/p\u003e \u003cp\u003eOscilloscopes 115\u003c\/p\u003e \u003cp\u003eBasic Circuit Principles 117\u003c\/p\u003e \u003cp\u003eVoltage, Current, Resistance, and Ohm’s Law 117\u003c\/p\u003e \u003cp\u003eVoltage Division 119\u003c\/p\u003e \u003cp\u003eCurrent Division 120\u003c\/p\u003e \u003cp\u003eImplementing RPi Circuits on a Breadboard 121\u003c\/p\u003e \u003cp\u003eDigital Multimeters (DMMs) and Breadboards 123\u003c\/p\u003e \u003cp\u003eExample Circuit: Voltage Regulation 124\u003c\/p\u003e \u003cp\u003eDiscrete Components 126\u003c\/p\u003e \u003cp\u003eDiodes 126\u003c\/p\u003e \u003cp\u003eLight-Emitting Diodes (LEDs) 128\u003c\/p\u003e \u003cp\u003eSmoothing and Decoupling Capacitors 130\u003c\/p\u003e \u003cp\u003eTransistors 132\u003c\/p\u003e \u003cp\u003eOptocouplers\/Opto-isolators 138\u003c\/p\u003e \u003cp\u003eSwitches and Buttons 140\u003c\/p\u003e \u003cp\u003eLogic Gates 143\u003c\/p\u003e \u003cp\u003eAnalog-to-Digital Conversion 150\u003c\/p\u003e \u003cp\u003eSampling Rate 151\u003c\/p\u003e \u003cp\u003eQuantization 151\u003c\/p\u003e \u003cp\u003eOperational Amplifiers 152\u003c\/p\u003e \u003cp\u003eConcluding Advice 155\u003c\/p\u003e \u003cp\u003eSummary 156\u003c\/p\u003e \u003cp\u003eFurther Reading 157\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Programming on the Raspberry Pi 159\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction 160\u003c\/p\u003e \u003cp\u003ePerformance of Languages on the RPi 160\u003c\/p\u003e \u003cp\u003eSetting the RPi CPU Frequency 165\u003c\/p\u003e \u003cp\u003eA First Circuit for Physical Computing 166\u003c\/p\u003e \u003cp\u003eScripting Languages 168\u003c\/p\u003e \u003cp\u003eScripting Language Options 168\u003c\/p\u003e \u003cp\u003eBash 169\u003c\/p\u003e \u003cp\u003eLua 171\u003c\/p\u003e \u003cp\u003ePerl 173\u003c\/p\u003e \u003cp\u003ePython 173\u003c\/p\u003e \u003cp\u003eDynamically Compiled Languages 176\u003c\/p\u003e \u003cp\u003eJavaScript and Node.js on the RPi 176\u003c\/p\u003e \u003cp\u003eJava on the RPi 178\u003c\/p\u003e \u003cp\u003eC and C++ on the RPi 180\u003c\/p\u003e \u003cp\u003eC and C++ Language Overview 182\u003c\/p\u003e \u003cp\u003eLED control in c 194\u003c\/p\u003e \u003cp\u003eThe C of C++ 196\u003c\/p\u003e \u003cp\u003eOverview of Object-Oriented Programming 199\u003c\/p\u003e \u003cp\u003eObject-Oriented LED Control in C++ 203\u003c\/p\u003e \u003cp\u003eInterfacing to the Linux OS 206\u003c\/p\u003e \u003cp\u003eGlibc and Syscall 206\u003c\/p\u003e \u003cp\u003eImproving the Performance of Python 208\u003c\/p\u003e \u003cp\u003eCython 208\u003c\/p\u003e \u003cp\u003eExtending Python with C\/C++ 211\u003c\/p\u003e \u003cp\u003eSummary 215\u003c\/p\u003e \u003cp\u003eFurther Reading 216\u003c\/p\u003e \u003cp\u003eBibliography 216\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II Interfacing, Controlling, and Communicating 217\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Interfacing to the Raspberry Pi Input\/Outputs 219\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction 220\u003c\/p\u003e \u003cp\u003eGeneral-Purpose Input\/Outputs 221\u003c\/p\u003e \u003cp\u003eGPIO Digital Output 222\u003c\/p\u003e \u003cp\u003eGPIO Digital Input 225\u003c\/p\u003e \u003cp\u003eInternal Pull-Up and Pull-Down Resistors 226\u003c\/p\u003e \u003cp\u003eInterfacing to Powered DC Circuits 227\u003c\/p\u003e \u003cp\u003eC++ Control of GPIOs Using sysfs 229\u003c\/p\u003e \u003cp\u003eMore C++ Programming 237\u003c\/p\u003e \u003cp\u003eAn Enhanced GPIO Class 242\u003c\/p\u003e \u003cp\u003eMemory-Based GPIO Control 245\u003c\/p\u003e \u003cp\u003eGPIO Control Using devmem 2 246\u003c\/p\u003e \u003cp\u003eGPIO Control Using C and \/dev\/mem 248\u003c\/p\u003e \u003cp\u003eChanging the Internal Resistor Configuration 250\u003c\/p\u003e \u003cp\u003eWiringPi 252\u003c\/p\u003e \u003cp\u003eInstalling wiringPi 252\u003c\/p\u003e \u003cp\u003eThe gpio Command 253\u003c\/p\u003e \u003cp\u003eProgramming with wiringPi 254\u003c\/p\u003e \u003cp\u003eToggling an LED Using wiringPi 255\u003c\/p\u003e \u003cp\u003eButton Press—LED Response 257\u003c\/p\u003e \u003cp\u003eCommunicating to One-Wire Sensors 260\u003c\/p\u003e \u003cp\u003ePWM and General-Purpose Clocks 263\u003c\/p\u003e \u003cp\u003eGPIOs and Permissions 270\u003c\/p\u003e \u003cp\u003eWriting udev Rules 270\u003c\/p\u003e \u003cp\u003ePermissions and wiringPi 272\u003c\/p\u003e \u003cp\u003eSummary 273\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 Cross-Compilation and the Eclipse IDE 275\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSetting Up a Cross-Compilation Toolchain 276\u003c\/p\u003e \u003cp\u003eThe Linaro Toolchain for Raspbian 277\u003c\/p\u003e \u003cp\u003eDebian Cross-Toolchains 279\u003c\/p\u003e \u003cp\u003eCross-Compilation Using Eclipse 282\u003c\/p\u003e \u003cp\u003eInstalling Eclipse on Desktop Linux 282\u003c\/p\u003e \u003cp\u003eConfiguring Eclipse for Cross-Compilation 283\u003c\/p\u003e \u003cp\u003eRemote System Explorer 286\u003c\/p\u003e \u003cp\u003eIntegrating GitHub into Eclipse 289\u003c\/p\u003e \u003cp\u003eRemote Debugging 289\u003c\/p\u003e \u003cp\u003eAutomatic Documentation (Doxygen) 294\u003c\/p\u003e \u003cp\u003eBuilding Linux 297\u003c\/p\u003e \u003cp\u003eDownloading the Kernel Source 298\u003c\/p\u003e \u003cp\u003eBuilding the Linux Kernel 299\u003c\/p\u003e \u003cp\u003eDeploying the Linux Kernel 303\u003c\/p\u003e \u003cp\u003eBuilding a Linux Distribution (Advanced) 305\u003c\/p\u003e \u003cp\u003eSummary 307\u003c\/p\u003e \u003cp\u003eFurther Reading 308\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 Interfacing to the Raspberry Pi Buses 309\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction to Bus Communication 310\u003c\/p\u003e \u003cp\u003eI\u003csup\u003e2\u003c\/sup\u003eC 310\u003c\/p\u003e \u003cp\u003eI\u003csup\u003e2\u003c\/sup\u003eC Hardware 311\u003c\/p\u003e \u003cp\u003eAn I\u003csup\u003e2\u003c\/sup\u003eC Test Circuit 315\u003c\/p\u003e \u003cp\u003eUsing Linux I2C-Tools 318\u003c\/p\u003e \u003cp\u003eI\u003csup\u003e2\u003c\/sup\u003eC communication in C 325\u003c\/p\u003e \u003cp\u003eWrapping I\u003csup\u003e2\u003c\/sup\u003eC Devices with C++ Classes 328\u003c\/p\u003e \u003cp\u003eSpi 330\u003c\/p\u003e \u003cp\u003eSPI Hardware 330\u003c\/p\u003e \u003cp\u003eSPI on the RPi 332\u003c\/p\u003e \u003cp\u003eA First SPI Application (74HC595) 334\u003c\/p\u003e \u003cp\u003eBidirectional SPI Communication in C\/C++ 339\u003c\/p\u003e \u003cp\u003eMultiple SPI Slave Devices on the RPi 346\u003c\/p\u003e \u003cp\u003eUART 347\u003c\/p\u003e \u003cp\u003eThe RPi UART 348\u003c\/p\u003e \u003cp\u003eUART Examples in c 352\u003c\/p\u003e \u003cp\u003eUART Applications - GPS 357\u003c\/p\u003e \u003cp\u003eLogic-Level Translation 359\u003c\/p\u003e \u003cp\u003eSummary 361\u003c\/p\u003e \u003cp\u003eFurther Reading 361\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 Enhancing the Input\/Output Interfaces on the RPi 363\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction 364\u003c\/p\u003e \u003cp\u003eAnalog-to-Digital Conversion 364\u003c\/p\u003e \u003cp\u003eSPI Analog-to-Digital Converters (ADCs) 365\u003c\/p\u003e \u003cp\u003eADC Application: An Analog Light Meter 368\u003c\/p\u003e \u003cp\u003eTesting the SPI ADC Performance 370\u003c\/p\u003e \u003cp\u003eThe C Library for BCM2835 (Advanced) 373\u003c\/p\u003e \u003cp\u003eDigital-to-Analog Conversion 376\u003c\/p\u003e \u003cp\u003eAn I\u003csup\u003e2\u003c\/sup\u003eC Digital-to-Analog Converter 376\u003c\/p\u003e \u003cp\u003eAn SPI Digital-to-Analog Converter 379\u003c\/p\u003e \u003cp\u003eAdding PWM Outputs to the RPi 381\u003c\/p\u003e \u003cp\u003eExtending the RPi GPIOs 387\u003c\/p\u003e \u003cp\u003eThe MCP23017 and the I 2 C Bus 389\u003c\/p\u003e \u003cp\u003eThe MCP23S17 and the SPI Bus 393\u003c\/p\u003e \u003cp\u003eA C++ Class for the MCP23x17 Devices 394\u003c\/p\u003e \u003cp\u003eAdding UARTs to the RPi 397\u003c\/p\u003e \u003cp\u003eSummary 403\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 Interacting with the Physical Environment 405\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eInterfacing to Actuators 406\u003c\/p\u003e \u003cp\u003eDC Motors 407\u003c\/p\u003e \u003cp\u003eStepper Motors 414\u003c\/p\u003e \u003cp\u003eRelays 418\u003c\/p\u003e \u003cp\u003eInterfacing to Analog Sensors 420\u003c\/p\u003e \u003cp\u003eLinear Analog Sensors 422\u003c\/p\u003e \u003cp\u003eNonlinear Analog Sensors 423\u003c\/p\u003e \u003cp\u003eAnalog Sensor Signal Conditioning 428\u003c\/p\u003e \u003cp\u003eInterfacing to an Analog Accelerometer 431\u003c\/p\u003e \u003cp\u003eInterfacing to Local Displays 433\u003c\/p\u003e \u003cp\u003eMAX7219 Display Modules 433\u003c\/p\u003e \u003cp\u003eCharacter LCD Modules 436\u003c\/p\u003e \u003cp\u003eOLED Dot-Matrix Display 440\u003c\/p\u003e \u003cp\u003eBuilding C\/C++ Libraries 444\u003c\/p\u003e \u003cp\u003eMakefiles 444\u003c\/p\u003e \u003cp\u003eCMake 446\u003c\/p\u003e \u003cp\u003eSummary 452\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 Real-Time Interfacing Using the Arduino 453\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Arduino 454\u003c\/p\u003e \u003cp\u003eAn Arduino Serial Slave 457\u003c\/p\u003e \u003cp\u003eA UART Echo Test Example 457\u003c\/p\u003e \u003cp\u003eUART Command Control of an Arduino 461\u003c\/p\u003e \u003cp\u003eAn Arduino I\u003csup\u003e2\u003c\/sup\u003eC Slave 464\u003c\/p\u003e \u003cp\u003eAn I\u003csup\u003e2\u003c\/sup\u003eC Test Circuit 464\u003c\/p\u003e \u003cp\u003eI\u003csup\u003e2\u003c\/sup\u003eC Register Echo Example 465\u003c\/p\u003e \u003cp\u003eI\u003csup\u003e2\u003c\/sup\u003eC Temperature Sensor Example 467\u003c\/p\u003e \u003cp\u003eI\u003csup\u003e2\u003c\/sup\u003eC Temperature Sensor with a Warning LED 469\u003c\/p\u003e \u003cp\u003eArduino Slave Communication Using C\/C++ 471\u003c\/p\u003e \u003cp\u003eAn I\u003csup\u003e2\u003c\/sup\u003eC Ultrasonic Sensor Application 473\u003c\/p\u003e \u003cp\u003eAn Arduino SPI Slave 476\u003c\/p\u003e \u003cp\u003eProgramming the Arduino from the RPi Command Line 478\u003c\/p\u003e \u003cp\u003eSummary 480\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III Advanced Interfacing and Interaction 481\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12 The Internet of Things 483\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Internet of Things (IoT) 484\u003c\/p\u003e \u003cp\u003eThe RPi as an IoT Sensor 485\u003c\/p\u003e \u003cp\u003eThe RPi as a Sensor Web Server 487\u003c\/p\u003e \u003cp\u003eNginx 488\u003c\/p\u003e \u003cp\u003eGNU Cgicc Applications (Advanced) 494\u003c\/p\u003e \u003cp\u003eA C\/C++ Web Client 498\u003c\/p\u003e \u003cp\u003eNetwork Communications Primer 499\u003c\/p\u003e \u003cp\u003eA C\/C++ Web Client 500\u003c\/p\u003e \u003cp\u003eSecure Communication Using OpenSSL 502\u003c\/p\u003e \u003cp\u003eThe RPi as a “Thing” 503\u003c\/p\u003e \u003cp\u003eThingSpeak 504\u003c\/p\u003e \u003cp\u003eThe Linux Cron Scheduler 506\u003c\/p\u003e \u003cp\u003eSending E-mail from the RPi 510\u003c\/p\u003e \u003cp\u003eIf This Then That (IFTTT) 512\u003c\/p\u003e \u003cp\u003eLarge-Scale IoT Frameworks 513\u003c\/p\u003e \u003cp\u003eMQ Telemetry Transport (MQTT) 514\u003c\/p\u003e \u003cp\u003eIBM Bluemix Internet of Things 515\u003c\/p\u003e \u003cp\u003eAn IBM IoT MQTT Node.js Publish Example 518\u003c\/p\u003e \u003cp\u003eAn IBM IoT MQTT C++ Publish Example 520\u003c\/p\u003e \u003cp\u003eVisualize Data Using IBM Quickstart 521\u003c\/p\u003e \u003cp\u003eThe C++ Client\/Server 523\u003c\/p\u003e \u003cp\u003eIoT Device Management 526\u003c\/p\u003e \u003cp\u003eRemote Monitoring of the RPi 527\u003c\/p\u003e \u003cp\u003eRPi Watchdog Timers 528\u003c\/p\u003e \u003cp\u003eStatic IP Addresses 529\u003c\/p\u003e \u003cp\u003ePower over Ethernet (PoE) 530\u003c\/p\u003e \u003cp\u003eSummary 533\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13 Wireless Communication and Control 535\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction to Wireless Communications 536\u003c\/p\u003e \u003cp\u003eBluetooth Communications 537\u003c\/p\u003e \u003cp\u003eInstalling a Bluetooth Adapter 537\u003c\/p\u003e \u003cp\u003eAndroid App Development with Bluetooth 543\u003c\/p\u003e \u003cp\u003eWi-Fi Communications 544\u003c\/p\u003e \u003cp\u003eInstalling a Wi-Fi Adapter 544\u003c\/p\u003e \u003cp\u003eThe NodeMCU Wi-Fi Slave Processor 547\u003c\/p\u003e \u003cp\u003eZigBee Communications 559\u003c\/p\u003e \u003cp\u003eIntroduction to XBee Devices 559\u003c\/p\u003e \u003cp\u003eXBee Configuration 561\u003c\/p\u003e \u003cp\u003eAn XBee AT Mode Example 563\u003c\/p\u003e \u003cp\u003eAn XBee API Mode Example 568\u003c\/p\u003e \u003cp\u003eNear Field Communication 572\u003c\/p\u003e \u003cp\u003eSummary 575\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14 Raspberry Pi with a Rich User Interface 577\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRich UI RPi Architectures 578\u003c\/p\u003e \u003cp\u003eThe RPi as a General-Purpose Computer 579\u003c\/p\u003e \u003cp\u003eRPi with an LCD Touchscreen 582\u003c\/p\u003e \u003cp\u003eVirtual Network Computing (VNC) 583\u003c\/p\u003e \u003cp\u003eFat-Client Applications 585\u003c\/p\u003e \u003cp\u003eRich UI Application Development 586\u003c\/p\u003e \u003cp\u003eIntroduction to GTK+ on the RPi 586\u003c\/p\u003e \u003cp\u003eIntroduction to Qt on the RPi 590\u003c\/p\u003e \u003cp\u003eQt Primer 592\u003c\/p\u003e \u003cp\u003eQt Concepts 592\u003c\/p\u003e \u003cp\u003eQt Development Tools 596\u003c\/p\u003e \u003cp\u003eA First Qt Creator Example 597\u003c\/p\u003e \u003cp\u003eA Qt Weather GUI Application 598\u003c\/p\u003e \u003cp\u003eRemote UI Application Development 602\u003c\/p\u003e \u003cp\u003eFat-Client Qt GUI Application 603\u003c\/p\u003e \u003cp\u003eMultithreaded Server Applications 606\u003c\/p\u003e \u003cp\u003eThe Multithreaded Weather Server 609\u003c\/p\u003e \u003cp\u003eSummary 612\u003c\/p\u003e \u003cp\u003eFurther Reading 613\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15 Images, Video, and Audio 615\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCapturing Images and Video 616\u003c\/p\u003e \u003cp\u003eThe RPi Camera 616\u003c\/p\u003e \u003cp\u003eUSB Webcams 619\u003c\/p\u003e \u003cp\u003eVideo4Linux2 (V4L2) 621\u003c\/p\u003e \u003cp\u003eStreaming Video 627\u003c\/p\u003e \u003cp\u003eImage Processing and Computer Vision 628\u003c\/p\u003e \u003cp\u003eImage Processing with OpenCV 628\u003c\/p\u003e \u003cp\u003eComputer Vision with OpenCV 631\u003c\/p\u003e \u003cp\u003eBoost 633\u003c\/p\u003e \u003cp\u003eRaspberry Pi Audio 634\u003c\/p\u003e \u003cp\u003eCore Audio Software Tools 635\u003c\/p\u003e \u003cp\u003eAudio Devices for the RPi 635\u003c\/p\u003e \u003cp\u003eText-to-Speech 643\u003c\/p\u003e \u003cp\u003eSummary 644\u003c\/p\u003e \u003cp\u003eFurther Reading 645\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16 Kernel Programming 647\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroduction 648\u003c\/p\u003e \u003cp\u003eWhy Write Kernel Modules? 648\u003c\/p\u003e \u003cp\u003eLoadable Kernel Module (LKM) Basics 649\u003c\/p\u003e \u003cp\u003eA First LKM Example 650\u003c\/p\u003e \u003cp\u003eThe LKM Makefile 652\u003c\/p\u003e \u003cp\u003eBuilding the LKM on a Linux Desktop Machine 653\u003c\/p\u003e \u003cp\u003eBuilding the LKM on the RPi 654\u003c\/p\u003e \u003cp\u003eTesting the First LKM Example 657\u003c\/p\u003e \u003cp\u003eAn Embedded LKM Example 659\u003c\/p\u003e \u003cp\u003eInterrupt Service Routines (ISRs) 661\u003c\/p\u003e \u003cp\u003ePerformance 665\u003c\/p\u003e \u003cp\u003eEnhanced Button GPIO Driver LKM 665\u003c\/p\u003e \u003cp\u003eThe kobject Interface 666\u003c\/p\u003e \u003cp\u003eEnhanced LED GPIO Driver LKM 673\u003c\/p\u003e \u003cp\u003eKernel Threads 674\u003c\/p\u003e \u003cp\u003eConclusions 675\u003c\/p\u003e \u003cp\u003eSummary 676\u003c\/p\u003e \u003cp\u003eIndex 677\u003c\/p\u003e  \u003cp\u003e\"... this is a book worth having on your shelf.\" (\u003cem\u003eI programmer,\u003c\/em\u003e August 2016)    \u003c\/p\u003e\u003cp\u003e\u003cb\u003eD\u003csmall\u003eR\u003c\/small\u003e. DEREK MOLLOY\u003c\/b\u003e is a senior lecturer at the School of Electronic Engineering, Faculty of Engineering and Computing, Dublin City University, Ireland. He is also the author of the hugely popular book on the BeagleBone platform titled \u003ci\u003eExploring BeagleBone\u003c\/i\u003e, also published by Wiley. His popular YouTube video series has introduced millions of people to embedded Linux and digital electronics topics. He has received several awards for teaching and learning, including the 2012 Irish Learning Technology Association (ILTA) national award for Innovation in Teaching and Learning. The same year, he was also awarded the Dublin City University President's Award for Excellence in Teaching and Learning.    \u003c\/p\u003e\u003cp\u003e\u003ci\u003e\"Exploring Raspberry Pi\u003c\/i\u003e is THE book to go to if you are interested in learning about the impressive physical computing capabilities of the Raspberry Pi platform. Derek Molloy imparts the electronics, programming, and embedded Linux skills that are vital to today's innovators in building the next generation of Internet of Things applications.\".\u003cbr\u003e \u003cb\u003e \u003ci\u003eEben Upton,\u003c\/i\u003e\u003c\/b\u003e \u003ci\u003eCo-creator of the Raspberry Pi\u003c\/i\u003e  \u003c\/p\u003e\u003cp\u003e\u003cb\u003eBUILD THE SKILLS YOU NEED TO INNOVATE\u003c\/b\u003e  \u003c\/p\u003e\u003cp\u003eEconomical and versatile, the Raspberry Pi can be adapted for thousands of applications. Open up all its possibilities by applying engineering principles along with Linux programming techniques, and develop the skills you need to design and build an endless array of projects.  \u003c\/p\u003e\u003cp\u003e\u003ci\u003eExploring Raspberry Pi\u003c\/i\u003e first covers the basics of the hardware platform, recommended accessories, software, embedded Linux systems, and Linux programming techniques. Then it takes you deeper into interfacing, controlling, and communicating, with detailed information about Raspberry Pi GPIOs, buses, UART devices, and USB peripherals. You will learn to configure a cross-compilation environment in order to build large-scale software applications, as well as how to combine hardware and software to enable the Raspberry Pi to interact effectively with its physical environment. Finally, you'll discover how to use the Raspberry Pi for advanced interfacing and interaction applications such as the Internet of Things (IoT); wireless communication and control; rich user interfaces; images, video, and audio; and Linux kernel programming.  \u003c\/p\u003e\u003cp\u003eInstead of recipes for a few specific projects, \u003ci\u003eExploring Raspberry Pi\u003c\/i\u003e arms you with the skills needed to build the projects that exist in your imagination. You'll learn to:  \u003c\/p\u003e\u003cul\u003e \u003cli\u003eDevelop essential Linux and programming skills\u003c\/li\u003e \u003cli\u003eBuild Internet of Things (IoT) applications\u003c\/li\u003e \u003cli\u003eMaster interfacing, controlling, and communication\u003c\/li\u003e \u003cli\u003eDesign applications that interact with the physical environment\u003c\/li\u003e \u003cli\u003eUtilize the Arduino platform as a service processor\u003c\/li\u003e \u003cli\u003eBuild wireless communication applications\u003c\/li\u003e \u003cli\u003eWrite and install a custom Linux loadable kernel module\u003c\/li\u003e \u003cli\u003eApply the Raspberry Pi 3 and Raspberry Pi Zero to your projects\u003c\/li\u003e \u003c\/ul\u003e    \u003cp\u003eVisit the companion website at \u003cb\u003ewww.exploringrpi.com\u003c\/b\u003e\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47989188395237,"sku":"NP9781119188681","price":38.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781119188681.jpg?v=1761783143","url":"https:\/\/k12savings.com\/products\/exploring-raspberry-pi-isbn-9781119188681","provider":"K12savings","version":"1.0","type":"link"}