TECHNOLOGY IN ACTION™ Arduino Applied Comprehensive Projects for Everyday Electronics — Neil Cameron Arduino Applied Comprehensive Projects for Everyday Electronics Neil Cameron Arduino Applied: Comprehensive Projects for Everyday Electronics Neil Cameron Edinburgh, UK ISBN-13 (pbk): 978-1-4842-3959-9 ISBN-13 (electronic): 978-1-4842-3960-5 https://doi.org/10.1007/978-1-4842-3960-5 Library of Congress Control Number: 2018965611 Copyright © 2019 by Neil Cameron 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: Natalie Pao Development Editor: James Markham Coordinating Editor: Jessica Vakili 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-3959-9. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper Table of Contents About the Author �������������������������������������������������������������������������������xiii About the Technical Reviewer ������������������������������������������������������������xv Preface ���������������������������������������������������������������������������������������������xvii Chapter 1: Introduction�������������������������������������������������������������������������1 Arduino Uno ����������������������������������������������������������������������������������������������������������1 Breadboards ����������������������������������������������������������������������������������������������������������3 Arduino IDE Software ��������������������������������������������������������������������������������������������4 Arduino IDE Sketch �����������������������������������������������������������������������������������������������5 Run the Blink Sketch ���������������������������������������������������������������������������������������������6 Electricity Explained ����������������������������������������������������������������������������������������������7 Revise the Blink Sketch ����������������������������������������������������������������������������������������8 Pulse Width Modulation ��������������������������������������������������������������������������������������12 Opening and Saving Sketches ����������������������������������������������������������������������������14 Summary�������������������������������������������������������������������������������������������������������������15 Components List �������������������������������������������������������������������������������������������������15 Chapter 2: Switches ���������������������������������������������������������������������������17 Tactile Switch ������������������������������������������������������������������������������������������������������17 Comparison Operators ����������������������������������������������������������������������������������������21 Debouncing a Switch ������������������������������������������������������������������������������������������22 Hardware Switch Debounce ��������������������������������������������������������������������������������25 iii TTaabbllee ooff CCoonnTTeennTTss Ball Switch ����������������������������������������������������������������������������������������������������������27 Summary�������������������������������������������������������������������������������������������������������������29 Components List �������������������������������������������������������������������������������������������������29 Chapter 3: Sensors �����������������������������������������������������������������������������31 Temperature Sensor ��������������������������������������������������������������������������������������������31 Variables �������������������������������������������������������������������������������������������������������������35 Humidity Sensor ��������������������������������������������������������������������������������������������������37 Library Installation ����������������������������������������������������������������������������������������������39 Library Installation Method 1 �������������������������������������������������������������������������39 Library Installation Method 2 �������������������������������������������������������������������������39 Library Installation Method 3 �������������������������������������������������������������������������40 Light Dependent Resistor ������������������������������������������������������������������������������������42 Light Dependent Resistor and Several LEDs �������������������������������������������������������46 Voltage Divider ����������������������������������������������������������������������������������������������������48 Ultrasonic Distance Sensor ���������������������������������������������������������������������������������50 Speed of Sound ���������������������������������������������������������������������������������������������������56 Hall Effect Sensor �����������������������������������������������������������������������������������������������57 Sound Sensor ������������������������������������������������������������������������������������������������������61 Infrared Sensor ���������������������������������������������������������������������������������������������������64 Infrared Distance Module ������������������������������������������������������������������������������������67 Passive Infrared Sensor ��������������������������������������������������������������������������������������69 Accelerometer and Gyroscope ����������������������������������������������������������������������������72 Summary�������������������������������������������������������������������������������������������������������������77 Components List �������������������������������������������������������������������������������������������������78 iv TTaabbllee ooff CCoonnTTeennTTss Chapter 4: Liquid Crystal Display �������������������������������������������������������79 Contrast Adjustment with PWM ��������������������������������������������������������������������������83 Scrolling Text �������������������������������������������������������������������������������������������������������85 LCD with I2C Bus �������������������������������������������������������������������������������������������������87 I2C with Temperature and Pressure Sensor ��������������������������������������������������������88 16×4 LCD Cursor Positioning ������������������������������������������������������������������������������93 Display Entered Values on LCD ���������������������������������������������������������������������������95 LCD Character Set �����������������������������������������������������������������������������������������������96 Additional Characters ������������������������������������������������������������������������������������������98 Summary�����������������������������������������������������������������������������������������������������������100 Components List �����������������������������������������������������������������������������������������������100 Chapter 5: 7-Segment LED Display ���������������������������������������������������101 Basic Schematic �����������������������������������������������������������������������������������������������102 PWM and LED Brightness����������������������������������������������������������������������������������105 Shift Register ����������������������������������������������������������������������������������������������������107 Shift Register, PWM, and LED Brightness����������������������������������������������������������113 Alphanumeric Characters ���������������������������������������������������������������������������������116 Summary�����������������������������������������������������������������������������������������������������������118 Components List �����������������������������������������������������������������������������������������������118 Chapter 6: 4-Digit 7-Segment Display ����������������������������������������������119 Functions ����������������������������������������������������������������������������������������������������������123 One Shift Register ���������������������������������������������������������������������������������������������126 Two Shift Registers �������������������������������������������������������������������������������������������131 Summary�����������������������������������������������������������������������������������������������������������135 Components List �����������������������������������������������������������������������������������������������136 v TTaabbllee ooff CCoonnTTeennTTss Chapter 7: 8×8 Dot Matrix Display ���������������������������������������������������137 One Shift Register ���������������������������������������������������������������������������������������������143 Two Shift Registers �������������������������������������������������������������������������������������������146 Scrolling Text �����������������������������������������������������������������������������������������������������150 Summary�����������������������������������������������������������������������������������������������������������156 Components List �����������������������������������������������������������������������������������������������156 Chapter 8: Servo and Stepper Motors ����������������������������������������������157 Servo Motors �����������������������������������������������������������������������������������������������������157 Servo Motor and a Potentiometer ���������������������������������������������������������������������161 Stepper Motor ���������������������������������������������������������������������������������������������������165 Stepper Motor and a Potentiometer ������������������������������������������������������������������172 Stepper Motor Gear Ratio����������������������������������������������������������������������������������175 Summary�����������������������������������������������������������������������������������������������������������176 Components List �����������������������������������������������������������������������������������������������176 Chapter 9: Rotary Encoder ����������������������������������������������������������������177 Rotary Encoder and Stepper Motor �������������������������������������������������������������������182 Summary�����������������������������������������������������������������������������������������������������������186 Components List �����������������������������������������������������������������������������������������������187 Chapter 10: Infrared Sensor �������������������������������������������������������������189 Infrared Emitter and Sensor ������������������������������������������������������������������������������195 Infrared Emitter and Receiver ���������������������������������������������������������������������������197 Summary�����������������������������������������������������������������������������������������������������������200 Components List �����������������������������������������������������������������������������������������������201 Chapter 11: Radio Frequency Identification �������������������������������������203 Display Content of MIFARE Classic 1K and 4K ��������������������������������������������������205 Mimic RFID and Secure Site �����������������������������������������������������������������������������208 vi TTaabbllee ooff CCoonnTTeennTTss Master Card Validation ��������������������������������������������������������������������������������������211 Read and Write to Classic 1KB Card �����������������������������������������������������������������213 Summary�����������������������������������������������������������������������������������������������������������217 Components List �����������������������������������������������������������������������������������������������217 Chapter 12: SD Card Module �������������������������������������������������������������219 Temperature and Light Intensity Logging����������������������������������������������������������220 Date and Time Logging �������������������������������������������������������������������������������������226 Logging Weather Station Data ��������������������������������������������������������������������������228 Increment File Name for Data Logging �������������������������������������������������������������232 Listing Files on an SD Card �������������������������������������������������������������������������������234 Summary�����������������������������������������������������������������������������������������������������������236 Components List �����������������������������������������������������������������������������������������������236 Chapter 13: Screen Displays �������������������������������������������������������������237 TFT LCD Screen �������������������������������������������������������������������������������������������������237 Displaying Images from an SD Card �����������������������������������������������������������������242 Screen, Servo Motor, and Ultrasonic Distance Sensor ��������������������������������������243 OLED Display �����������������������������������������������������������������������������������������������������249 Touch Screen ����������������������������������������������������������������������������������������������������252 Summary�����������������������������������������������������������������������������������������������������������258 Components List �����������������������������������������������������������������������������������������������259 Chapter 14: Sensing Colors ��������������������������������������������������������������261 Red Green Blue (RGB) LED ��������������������������������������������������������������������������������262 565 Color Format ����������������������������������������������������������������������������������������������264 Color-Recognition Sensor ���������������������������������������������������������������������������������267 Summary�����������������������������������������������������������������������������������������������������������275 Components List �����������������������������������������������������������������������������������������������275 vii TTaabbllee ooff CCoonnTTeennTTss Chapter 15: Camera ��������������������������������������������������������������������������277 Camera Image Capture Setup ���������������������������������������������������������������������������281 Capturing Camera Images ��������������������������������������������������������������������������������285 Summary�����������������������������������������������������������������������������������������������������������288 Components List �����������������������������������������������������������������������������������������������288 Chapter 16: Bluetooth Communication ���������������������������������������������289 Bluetooth Terminal HC-05 App ��������������������������������������������������������������������������292 ArduDroid App ���������������������������������������������������������������������������������������������������295 Message Scrolling with MAX7219 Dot Matrix Module ��������������������������������������300 MAX7219 and Bluetooth Terminal HC-05 App ���������������������������������������������������302 Message Speed and Potentiometer ������������������������������������������������������������������306 MAX7219 and ArduDroid App ����������������������������������������������������������������������������307 Summary�����������������������������������������������������������������������������������������������������������310 Components List �����������������������������������������������������������������������������������������������310 Chapter 17: Wireless Communication ����������������������������������������������311 Transmit or Receive ������������������������������������������������������������������������������������������315 Transmit and Receive ����������������������������������������������������������������������������������������317 Summary�����������������������������������������������������������������������������������������������������������322 Components List �����������������������������������������������������������������������������������������������323 Chapter 18: Build Arduino ����������������������������������������������������������������325 ATmega328P Pin Layout �����������������������������������������������������������������������������������326 Building an Arduino �������������������������������������������������������������������������������������������328 Installing the Bootloader �����������������������������������������������������������������������������������332 Summary�����������������������������������������������������������������������������������������������������������336 Components List �����������������������������������������������������������������������������������������������337 viii TTaabbllee ooff CCoonnTTeennTTss Chapter 19: Global Navigation Satellite System �������������������������������339 GNSS Messages on Serial Monitor �������������������������������������������������������������������339 u-blox u-center �������������������������������������������������������������������������������������������������341 Arduino and GNSS ���������������������������������������������������������������������������������������������343 GNSS Data Logging to SD Card �������������������������������������������������������������������������357 GNSS and ST7735 Screen ���������������������������������������������������������������������������������360 Displaying GNSS Data ���������������������������������������������������������������������������������������368 Summary�����������������������������������������������������������������������������������������������������������369 Components List �����������������������������������������������������������������������������������������������369 Chapter 20: Interrupts and Timed Events �����������������������������������������371 Interrupts ����������������������������������������������������������������������������������������������������������371 Types of Interrupt ����������������������������������������������������������������������������������������������376 Additional Interrupt Pins �����������������������������������������������������������������������������������379 Interrupts and Rotary Encoder ��������������������������������������������������������������������������380 Timed Events: delay( ) ���������������������������������������������������������������������������������������384 Timed Events: millis( ) ���������������������������������������������������������������������������������������384 Timed Events: Timer1 ����������������������������������������������������������������������������������������387 Timer Register Manipulation �����������������������������������������������������������������������������390 Summary�����������������������������������������������������������������������������������������������������������395 Components List �����������������������������������������������������������������������������������������������395 Chapter 21: Power Saving ����������������������������������������������������������������397 avr/sleep Module ����������������������������������������������������������������������������������������������402 LowPower Library ���������������������������������������������������������������������������������������������405 Power Down and an Infrared Sensor ����������������������������������������������������������������406 Summary�����������������������������������������������������������������������������������������������������������410 Components List �����������������������������������������������������������������������������������������������410 ix