Discover a complete treatment of microcomputer programming and application development with Arduino and 3D printers
Microcontroller Prototypes with Arduino and a 3D Printer: Learn, Program, Manufacture delivers a comprehensive guide to learning microcontrollers that’s perfectly suited to educators, researchers, and manufacturers. The book provides readers with a seasoned expert’s perspective on the process of microcomputer programming and application development. Carefully designed and written example code and explanatory figures accompany the text, helping the reader fully understand and retain the concepts described within.
The book focuses on demonstrating how to craft creative and innovative solutions in embedded systems design by providing practical and illustrative methods and examples. An accompanying website includes functioning and tested source code and learning exercises and the book relies on freeware development tools for the creation of firmware and software code, 3D printed enclosures, and debugging. It allows the reader to work with modern sensors and collect sensor data to a host PC for offline analysis.
Table of Contents
About the Author xi
List of Figures xii
List of Tables xxvi
Preface xxvii
Acknowledgments xxx
Abbreviations xxxi
Syllabus xxxv
1 The Art of Embedded Computers 1
Overview of Embedded Computers and Their Interdisciplinarity 1
Computer vs. Embedded Computer Programming and Application Development 2
Group 1: Programmable Logic Devices 3
Group 2: Reconfigurable Computers 4
Group 3: Microcomputers 4
Group 4: Single-Board Computers 6
Group 5: Mobile Computing Devices 6
TPACK Analysis Toward Teaching and Learning Microcomputers 7
TPACK Analysis of the Interdisciplinary Microcontroller Technology 7
Content Knowledge (The What) 8
Technology Knowledge (The Why) 9
Pedagogical Knowledge (The How) 11
From Computational Thinking (CT) to Micro-CT (μCT) 12
CT Requirement and Embedded Computers 13
Microcomputers and Abstraction Process 14
The μCT Concept: An Onion Learning Framework 15
“Transparent” Teaching Methods 17
The Impact of Microcontroller Technology on the Maker Industry 19
Hardware Advancement in μC Technology 20
Software Advancement in μC Technology 23
The Impact of Arduino on the μC Community 23
Where Is Creativity in Embedded Computing Devices Hidden? 26
Creativity in Mobile Computing Devices: Travel Light, Innovate Readily! 26
Communication with the Outside World: Sensors, Actuators, and Interfaces 28
Conclusion 30
2 Embedded Programming with Arduino 31
Number Representation and Special-Function Codes 31
Arduino and C Common Language Reference 34
Working with Data (Variables, Constants, and Arrays) 36
Arduino UART Interface to the Outside World (Printing Data) 39
Arduino Ex.2-1 40
Arduino Ex.2-2 44
Program Flow of Control (Arithmetic and Bitwise Operations) 47
Arduino UART Interface (Flow of Control and Arithmetic/Bitwise Examples) 52
Arduino Ex.2-3 52
Arduino Ex.2-4 53
Arduino Ex.2-5 54
Arduino Ex.2-6 59
Arduino Ex.2-7 63
Code Decomposition (Functions and Directives) 69
Arduino Ex.2-8 69
Conclusion 72
Problem 2-1 (Data Output from the μC Device: Datatypes and Bytes Reserved by the hw) 73
Problem 2-2 (Data Output from the μC Device: Logical Operators in Control Flow) 73
Problem 2-3 (Data Input to the μC Device: Arithmetic and Bitwise Operations) 73
Problem 2-4 (Code Decomposition) 73
3 Hardware Interface with the Outside World 75
Digital Pin Interface 75
Arduino Ex.3.1 76
Arduino Ex.3.2 77
Arduino Ex.3.3 81
Arduino Ex.3.4 82
Arduino Ex.3.5 84
Analog Pin Interface 86
Arduino Ex.3.6 87
Arduino Ex.3.7 91
Interrupt Pin Interface 91
Arduino Ex.3.8 94
UART Serial Interface 96
Arduino Ex.3.9 97
Arduino Ex.3.10 98
Arduino Ex.3.11 99
SPI Serial Interface 101
Arduino Ex.3.12 103
Arduino Ex.3.13 110
Arduino Ex.3.14 115
Arduino Ex.3.15 121
I2C Serial Interface 122
Arduino Ex.3.16 125
Arduino Ex.3.17 130
Arduino Ex.3.18 135
Arduino Ex.3.19 142
Conclusion 146
Problem 3.1 (Data Input and Output to/from the μC Using Push-Button and LED IO Units) 147
Problem 3.2 (PWM) 147
Problem 3.3 (UART, SPI, I2C) 147
4 Sensors and Data Acquisition 149
Environmental Measurements with Arduino Uno 149
Arduino Ex.4-1 150
DAQ Accompanying Software of the Ex.4-1 157
DAQ Accompanying Software with Graphical Monitoring Feature Via gnuplot 166
Arduino Ex.4-2 169
Orientation, Motion, and Gesture Detection with Teensy 3.2 171
Arduino Ex.4-3 173
Arduino Ex.4-4 174
Arduino Ex.4-5 177
Arduino Ex.4-6 184
DAQ Accompanying Software for Orientation, Motion, and Gesture Detection with gnuplot 191
Real Time Monitoring with Open GL 193
Distance Detection and 1D Gesture Recognition with TinyZero 200
Arduino Ex.4-7 201
Arduino Ex.4-8 205
DAQ Accompanying Software for Distance Measurements 209
Color Sensing and Wireless Monitoring with Micro:bit 211
Arduino Ex.4-9 212
Arduino Ex.4-10 216
Open GL Example Applying to RGB Sensing 220
Arduino Ex.4-11 222
Conclusion 226
Problem 4-1 (Data Acquisition of Atmospheric Pressure) 226
Problem 4-2 (Fusion of Linear Acceleration and Barometric Altitude) 226
Problem 4-3 (1D Gesture Recognition) 226
Problem 4-4 (Color Sensing) 226
5 Tinkering and Prototyping with 3D Printing Technology 227
Tinkering with a Low-cost RC Car 227
Arduino Ex.5.1 231
Arduino Ex.5.2 236
A Prototype Interactive Game for Sensory Play 237
Hardware Boards of the Prototype System 238
Assembly Process of the 3D Printed Parts of the System’s Enclosure 243
Firmware Code Design and User Instructions 249
Arduino Ex.5.3 250
Arduino Ex.5.4 253
Arduino Ex.5.5 256
Arduino Ex.5.6 260
3D Printing 262
Modeling 3D Objects with FreeCAD Software 262
Preparing the 3D Prints with Ultimaker Cura Software 269
3D Printing with Prima Creator P120 272
Presentation of the Rest 3D Models of the Prototype Interactive Game 276
PrototypeB (Modeling the battery.stl Part) 276
PrototypeC (Modeling the booster.stl Part) 278
PrototypeD (Modeling the speaker.stl Part) 283
PrototypeE (Modeling the cover.stl Part) 284
PrototypeF (Modeling the button.stl Part) 287
PrototypeG (Modeling the sensor.stl Part) 290
PrototypeH (Modeling the front.stl Part) 290
Conclusion 294
Problem 5.1 (Tinkering with a Low-cost RC Car) 294
Problem 5.2 (A Prototype Interactive Game for Sensory Play) 294
Problem 5.3 (A Prototype Interactive Game for Sensory Play) 295
Problem 5.4 (A Prototype Interactive Game for Sensory Play) 296
Problem 5.5 (3D Printing) 296
References 297
Index 301