Exploring Your Environment with Arduino Microcontrollers

      This web page supports the 2020 book by IESRE President David Brooks, Exploring Your Environment with Arduino Microcontrollers. The book is printed in 8-1/2" × 11" format with a spiral binding so it will open and lie lat. The front and back covers are full color on laminated stock. The text is entirely black and white, but full-color versions of many of the figures are available at the link below – these full-color images are helpful for laying out the projects, invariably on breadboards.
            This book isn't intended as a tutorial on Arduino programming (there are literally hundreds of online tutorials and books that do that), although I have tried to explain programming concepts as they arise and promote good programming practices throughout the many code examples. I have paid more attention to the opportunities and limitations provided by the large number of sensors that are no available within the globally supported open-source Arduino "ecosystem." I believe the book is an excellent way to learn about environmental monitoring with Arduinos and it could serve as a supplemental text in any STEM-related course, from upper middle school through college.
      The price for a single copy is $25 to U.S. addresses, including shipping. For multiple copies or shipping to addresses outside the U.S., please contact David Brooks at brooksdr@instesre.org. All book proceeds go entirely to support IESRE's projects.


Some comments about the book...
"I found the applications I need... more people should know about it. Thank you for writing it and for the great job!"

ERRATA!
p. 110
SCK SPI clock digital 3
should be
SCK SPI clock digital 13

(a comment rather than an error!) In line 9 of the code in Figure 17.2, a template for using an ADS1115 A-to-D converter, the statement defining the delay time:
const int delayTime=5000;
should be
const long int delayTime= 5000L; because the delay() function expects a long integer rather than just an integer. It doesn't matter for delay times less than about 30,000 milliseconds, but it will for longer delay times. Even a one-minute delay time is 60,000 ms, which does need to be specified as a long integer, 60000L. This comment applies to all code where delay times are used.
p. 107: In the "What you will need..." list for Chapter 21, and in several other places in the book, pololu.com is misspelled polulu.com.
p. 147: Line 9 should be:
9 pinMode(TMPpin1,INPUT); pinMode(TMPpin2,INPUT);
This error doesn't affect the code because INPUT is the default mode for analog pins. Also, there shouldn't be an "s" at the end of line 6. The code in the file containing code from the book, linked below, is correct.

Supporting information for users of the book:
HERE is a sample chapter from the book.
Text file containing all the code from the book.
Web page containing full color versions of many figures in the book.

Updates and other thoughts: