ebook img

Raspberry Pi for Arduino Users: Building IoT and Network Applications and Devices PDF

444 Pages·2018·5.58 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Raspberry Pi for Arduino Users: Building IoT and Network Applications and Devices

TECHNOLOGY IN ACTION™ Raspberry Pi for Arduino Users Building IoT and Network Applications and Devices — James R. Strickland Raspberry Pi for Arduino Users Building IoT and Network Applications and Devices James R. Strickland Raspberry Pi for Arduino Users: Building IoT and Network Applications and Devices James R. Strickland Highlands Ranch, Colorado, USA ISBN-13 (pbk): 978-1-4842-3413-6 ISBN-13 (electronic): 978-1-4842-3414-3 https://doi.org/10.1007/978-1-4842-3414-3 Library of Congress Control Number: 2018946559 Copyright © 2018 by James R. Strickland This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Aaron Black Development Editor: James Markham Coordinating Editor: Jessica Vakili Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www. apress.com/rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book's product page, located at www.apress.com/ 978-1-4842-3413-6. For more detailed information, please visit http://www.apress.com/ source-code. Printed on acid-free paper Table of Contents About the Author ��������������������������������������������������������������������������������xv About the Technical Reviewers ��������������������������������������������������������xvii Introduction ���������������������������������������������������������������������������������������xix How to Use This Book �����������������������������������������������������������������������xxv Chapter 1: Your Shopping List ��������������������������������������������������������������1 Raspberry Pi ����������������������������������������������������������������������������������������������������������2 Raspberry Pi 3 Model B+ ���������������������������������������������������������������������������������2 Why Buy This Pi? ���������������������������������������������������������������������������������������������6 Suppliers ���������������������������������������������������������������������������������������������������������7 Raspberry Pi Zero W ����������������������������������������������������������������������������������������7 Why Buy This Pi? ���������������������������������������������������������������������������������������������9 Suppliers ���������������������������������������������������������������������������������������������������������9 Adapters ����������������������������������������������������������������������������������������������������������9 Suppliers �������������������������������������������������������������������������������������������������������10 Other Raspberry Pis ���������������������������������������������������������������������������������������11 Raspberry Pi GPIO Breakout Board ���������������������������������������������������������������������12 Suppliers �������������������������������������������������������������������������������������������������������14 5 -Volt USB Micro Power Supply �������������������������������������������������������������������������15 Other Power Supply Options ��������������������������������������������������������������������������16 Suppliers �������������������������������������������������������������������������������������������������������17 iii TTaabbllee ooff CCoonnTTeennTTss Integrated Circuits (ICs) ��������������������������������������������������������������������������������������17 ATmega328P-PU ��������������������������������������������������������������������������������������������17 16 MHz TTL Clock Oscillator ��������������������������������������������������������������������������19 74 LVC245A Octal Bus Transceiver ����������������������������������������������������������������22 LEDs ��������������������������������������������������������������������������������������������������������������������23 10 -Segment Bar Graphs �������������������������������������������������������������������������������24 Generic LED ���������������������������������������������������������������������������������������������������25 microSD Cards ����������������������������������������������������������������������������������������������������25 Jargon Breakdown ����������������������������������������������������������������������������������������26 USB Flash Device ������������������������������������������������������������������������������������������������27 Resistors �������������������������������������������������������������������������������������������������������������27 Hookup Wire ��������������������������������������������������������������������������������������������������������28 Pre-Made Jumpers ����������������������������������������������������������������������������������������29 Tactile Switch ������������������������������������������������������������������������������������������������������31 Soldering Tools and Knowhow ����������������������������������������������������������������������������31 Some Words About Suppliers ������������������������������������������������������������������������������32 Some Words on Parts Cost ����������������������������������������������������������������������������������32 All the Parts, All Together ������������������������������������������������������������������������������������33 Chapter 2: Meet the Raspberry Pi�������������������������������������������������������35 Introduction ���������������������������������������������������������������������������������������������������������35 Windows ��������������������������������������������������������������������������������������������������������35 MacOS X ��������������������������������������������������������������������������������������������������������35 Linux ��������������������������������������������������������������������������������������������������������������36 The Stuff You Need ����������������������������������������������������������������������������������������������36 iv TTaabbllee ooff CCoonnTTeennTTss Hardware Setup ��������������������������������������������������������������������������������������������������37 Raspberry Pi 3 Model B+ �������������������������������������������������������������������������������38 Raspberry Pi Zero W ��������������������������������������������������������������������������������������39 Both Pis ���������������������������������������������������������������������������������������������������������40 Install Raspbian with NOOBS ������������������������������������������������������������������������������40 What Is NOOBS? ��������������������������������������������������������������������������������������������40 What Is Raspbian? �����������������������������������������������������������������������������������������41 Format Your microSD Card ����������������������������������������������������������������������������42 Download NOOBS ������������������������������������������������������������������������������������������50 Install NOOBS ������������������������������������������������������������������������������������������������52 Boot NOOBS ��������������������������������������������������������������������������������������������������������55 Troubleshooting ��������������������������������������������������������������������������������������������������57 Install Raspbian ��������������������������������������������������������������������������������������������������58 Conclusion ����������������������������������������������������������������������������������������������������������61 Chapter 3: Survival Linux �������������������������������������������������������������������63 Orientation ����������������������������������������������������������������������������������������������������������64 The Desktop ���������������������������������������������������������������������������������������������������65 The Terminal App �������������������������������������������������������������������������������������������66 The Web Browser ������������������������������������������������������������������������������������������67 Behind the Curtain �����������������������������������������������������������������������������������������67 Rebooting and Shutting Down ����������������������������������������������������������������������������69 GUI/Desktop ���������������������������������������������������������������������������������������������������70 Terminal ���������������������������������������������������������������������������������������������������������70 Command Summary ��������������������������������������������������������������������������������������73 Configuration�������������������������������������������������������������������������������������������������������73 Raspberry Pi Configuration App ���������������������������������������������������������������������73 WiFi and Network Configuration ��������������������������������������������������������������������77 v TTaabbllee ooff CCoonnTTeennTTss Installing and Updating Software ������������������������������������������������������������������������78 The GUI Software Installer �����������������������������������������������������������������������������78 The Apt-Get Package Manager ����������������������������������������������������������������������78 Filesystem Navigation �����������������������������������������������������������������������������������������87 GUI/Desktop ���������������������������������������������������������������������������������������������������87 Terminal ���������������������������������������������������������������������������������������������������������93 Where Am I? ��������������������������������������������������������������������������������������������������94 What’s in This Directory? �������������������������������������������������������������������������������97 Creating Files �����������������������������������������������������������������������������������������������101 Deleting Files �����������������������������������������������������������������������������������������������103 Creating Directories �������������������������������������������������������������������������������������104 Deleting Directories and Files ���������������������������������������������������������������������104 Summary �����������������������������������������������������������������������������������������������������108 Permissions and Privileges �������������������������������������������������������������������������������109 Users and Groups ����������������������������������������������������������������������������������������110 Root and Sudo ���������������������������������������������������������������������������������������������115 Drivers and Memory ������������������������������������������������������������������������������������������119 Memory �������������������������������������������������������������������������������������������������������119 Drivers ���������������������������������������������������������������������������������������������������������120 Jargon ���������������������������������������������������������������������������������������������������������������121 Conclusion ��������������������������������������������������������������������������������������������������������122 Chapter 4: Meet C++ ������������������������������������������������������������������������123 What the Arduino Package Really Is �����������������������������������������������������������������123 Install Arduino on Raspberry Pi �������������������������������������������������������������������123 IDE ���������������������������������������������������������������������������������������������������������������127 Compiler ������������������������������������������������������������������������������������������������������129 Libraries�������������������������������������������������������������������������������������������������������132 Uploader ������������������������������������������������������������������������������������������������������133 vi TTaabbllee ooff CCoonnTTeennTTss Meet Geany �������������������������������������������������������������������������������������������������������134 Geany versus the Arduino IDE ���������������������������������������������������������������������134 Configuring Geany ���������������������������������������������������������������������������������������������138 Install Lint (cppcheck) ���������������������������������������������������������������������������������139 Write Your First C++ Program ���������������������������������������������������������������������������145 The C++ Way �����������������������������������������������������������������������������������������������145 TicTac ����������������������������������������������������������������������������������������������������������152 Conclusion ��������������������������������������������������������������������������������������������������������177 Chapter 5: Meet WiringPi ������������������������������������������������������������������179 What Is WiringPi? ����������������������������������������������������������������������������������������������179 WiringPi Functions ��������������������������������������������������������������������������������������������180 Setup �����������������������������������������������������������������������������������������������������������180 Wiring ����������������������������������������������������������������������������������������������������������181 Threads ��������������������������������������������������������������������������������������������������������184 Interrupts �����������������������������������������������������������������������������������������������������186 Time �������������������������������������������������������������������������������������������������������������188 GPIO Command �������������������������������������������������������������������������������������������������191 Pinouts ���������������������������������������������������������������������������������������������������������191 GPIO Group and Privileges ��������������������������������������������������������������������������������193 Hooking Up WiringPi in Geany ���������������������������������������������������������������������������194 Build the Larson (Memorial) Scanner ����������������������������������������������������������������195 The Stuff You Need ��������������������������������������������������������������������������������������196 Survival Ohm’s Law �������������������������������������������������������������������������������������197 Schematic ����������������������������������������������������������������������������������������������������199 Construction ������������������������������������������������������������������������������������������������200 The Project ��������������������������������������������������������������������������������������������������203 The Program ������������������������������������������������������������������������������������������������203 vii TTaabbllee ooff CCoonnTTeennTTss First Run ������������������������������������������������������������������������������������������������������207 The Code ������������������������������������������������������������������������������������������������������208 Conclusion ��������������������������������������������������������������������������������������������������������211 Chapter 6: Input and Output �������������������������������������������������������������213 The Stuff You Need ��������������������������������������������������������������������������������������������213 The Revised Circuit �������������������������������������������������������������������������������������������214 Some Words About Pushbutton Tactile Switches ����������������������������������������214 Some Words About Pullup and Pulldown Resistors �������������������������������������216 Button_Polled ����������������������������������������������������������������������������������������������������217 The Project ��������������������������������������������������������������������������������������������������217 Code Modification ����������������������������������������������������������������������������������������218 The Code ������������������������������������������������������������������������������������������������������220 Button_Interrupt ������������������������������������������������������������������������������������������������223 The Project ��������������������������������������������������������������������������������������������������224 Modifying the Code ��������������������������������������������������������������������������������������225 The Code ������������������������������������������������������������������������������������������������������230 Conclusion ��������������������������������������������������������������������������������������������������������234 Chapter 7: One Pi, Multiple Processes ����������������������������������������������235 Processes ����������������������������������������������������������������������������������������������������������236 Scheduling ���������������������������������������������������������������������������������������������������236 Designing Larson_Multiprocess ������������������������������������������������������������������������238 Fork �������������������������������������������������������������������������������������������������������������238 Signals ���������������������������������������������������������������������������������������������������������239 Code Changes ����������������������������������������������������������������������������������������������240 The Code �����������������������������������������������������������������������������������������������������������247 Running the Program ����������������������������������������������������������������������������������������253 viii TTaabbllee ooff CCoonnTTeennTTss Processes in Linux ��������������������������������������������������������������������������������������������254 Listing Running Processes ��������������������������������������������������������������������������255 Conclusion ��������������������������������������������������������������������������������������������������������258 Chapter 8: One Process, Multiple Threads ����������������������������������������259 Processes and Memory�������������������������������������������������������������������������������������260 Kernel Space �����������������������������������������������������������������������������������������������260 The Stack �����������������������������������������������������������������������������������������������������261 Memory Mapping Segment �������������������������������������������������������������������������261 The Heap �����������������������������������������������������������������������������������������������������261 The BSS Segment ����������������������������������������������������������������������������������������262 The Data Segment ���������������������������������������������������������������������������������������262 The Text Segment ����������������������������������������������������������������������������������������262 Threads at Last �������������������������������������������������������������������������������������������������262 Thread Functions �����������������������������������������������������������������������������������������263 Thread IDs ���������������������������������������������������������������������������������������������������264 Creating Threads �����������������������������������������������������������������������������������������264 Cancelling Threads ��������������������������������������������������������������������������������������265 Flow Control ������������������������������������������������������������������������������������������������265 Protecting Memory: Mutexes �����������������������������������������������������������������������266 POSIX versus WiringPi Threads �������������������������������������������������������������������������268 Larson_pthread �������������������������������������������������������������������������������������������������269 The Plan �������������������������������������������������������������������������������������������������������269 The Modifications ����������������������������������������������������������������������������������������269 The Code ������������������������������������������������������������������������������������������������������272 Larson_wiringPithread ��������������������������������������������������������������������������������������280 The Code ������������������������������������������������������������������������������������������������������280 Conclusion ��������������������������������������������������������������������������������������������������������287 ix

Description:
Leverage your Arduino skills in the Raspberry Pi world and see how to cross the two platforms into sophisticated programs. The Arduino and Raspberry Pi communities overlap more than you might think. Arduinos can be expanded to have network capabilities with a variety of “shields,” all of which i
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.