Chapter 2 is structured with less scientific rigorousness and is addressed for engineers and makers. The reader explores the Arduino software and hardware tools, which have become a viral technology for microcontrollers as they provide a quick jump‐start and flexibility in the implementation of a microcontroller‐based project. The chapter summarizes the fundamental aspects of sequential programming, in consideration of a relative compatibility between the Arduino and C language programming. The authoring strategies of the chapter apply to the motto “less is more” and address the minimalist principles in the design of the software. Additionally to the task of reducing the software development to its necessary elements, the chapter exploits the familiar and simplified board called the Arduino Uno, so as to reduce the use of hardware when there is a need to explore the results occurred by the execution of an example code. Makers and engineers may directly start from this particular chapter, in order to make quick jump‐start into the practical part of learning microcontroller.
Chapter 3 applies to practices related to the hardware interface with the outside world. The chapter starts from the familiarization and utilization of the ready‐to‐use Arduino libraries, and gradually moves to more advanced issues, such as interrupting the regular execution of the code, building libraries from scratch, and so forth. Hence, the chapter incorporates information that intends to satisfy the curiosity of makers, but also engineers and researchers who work with microcontroller devices. The purpose of this chapter is to provide a thorough examination of the hardware interface topics, which are considered of vital importance when building projects around microcontrollers. Through a scholastic examination of the critical, hardware‐related practices on microcontrollers (arranged around carefully designed example codes and explanatory figures) the book provides to the reader a unique experience in establishing a clear link between the software and hardware. This area of study is essential in building the solid background required to make the passage from “have knowledge of” to “mastering” the design of microcontroller‐based projects and applications.
Chapter 4 applies to sensors (used in microcontroller projects) and to the data acquisition process. Because modern sensor devices constantly pave the way for creativity and innovation in embedded solutions, this chapter aims to inspire the interest and curiosity of the reader, through examples that apply to the detection of orientation, motion, gesture, distance, and color sensing. The examples are implemented with some of the most popular and contemporary boards in the worldwide market, that is, Teensy 3.2, TinyZero, and Micro:bit. The examples are designed in a way so that they direct readers in achieving simplicity in design. The process of interfacing with mobile phone through Bluetooth technology is also explored. Once again, the explanatory figures of the chapter are conducted with particular devotion in order to help readers achieve a deep understanding of the explored topics.
Chapter 5 applies to the tinkering practices of μC‐based electronic products using Arduino‐related hardware and software tools, as well as prototyping techniques using 3D printing technology. Having dealt with the theoretical and practical topics covered by the previous chapters (mainly by Chapters 2–4), the reader should be ready to proceed to practices related to real‐world projects, as those covered by this particular chapter. Creativity and simplicity in design are two of main features that are addressed by the carefully thought examples of this chapter.
The freeware tools used by the current project are the following:
Arduino integrated development environment (IDE) Software tool to develop (and upload) μC code.
Termite RS 232 terminal console (data write/read to/from serial port).
Free Serial Port Monitor Software tool to spy data exchanged through the serial port.
Notepad++ Editor for the source code development.
Minimalist GNU for Windows (MinGW) Open source programming tool.
Gnuplot Command‐line driven graphing utility (can be invoked by C code).
OpenGL and GLUT Open graphics library and toolkit for 2D and 3D vector graphics.
FreeCAD General‐purpose parametric 3D computer‐aided design (CAD) modeler.
Ultimaker Cura 3D printing software for preparing prints.
Additionally, the book offers a variety of supplementary resources – including source codes and examples – hosted on an accompanying website to be maintained by the author: www.mikroct.com.
Acknowledgments
I would like to thank God for blessing me with the passion of creation. I am truly thankful for my family, and I wish to thank my sweet wife Katerina who has always been there, supporting me in pursuing my dreams. I would like to sincerely thank Wiley for the opportunity to publish this project with one of the world's leading publishers. I thank from the bottom of my heart my kind commissioning editor, Sandra Grayson, for her trust and all the support with this project, as well as the rest of the team that worked to complete this book. Lastly, I am eternally grateful to my generous Professor Georgios A. Evangelakis for his immense and contribution during my maiden authoring venture.
Abbreviations
Greek‐English Alphabet:
μCmicrocontrollerμCTmicro‐computational thinkingμPmicroprocessorμSmicrosecond(s)kΩkiloohm
English Alphabet:
ACCaccumulatorACCLRMaccelerometerACKacknowledgeACK(M)acknowledge (master)ACK(S)acknowledge (slave)ADCanalog‐to‐digital converterAPIapplication programming interfaceAPPapplicationASCIIAmerican standard code for information interchangeASICapplication‐specific integrated circuitBbyteBATbatteryBCDbinary‐coded decimalBINbinaryBITbinary digitBLEBluetooth low energyBOMbill of materialCADcomputer‐aided designCANcontroller area networkCEcomputer engineeringCSGconstructive solid geometryCKcontent knowledgecmcentimeterCNCcomputer numerical controlCoeffscoefficientsCPHAclock phaseCPLDcomplex programmable logic deviceCPOLclock polarityCPUcentral processing unitCScomputer scienceCTcomputational thinkingDACdigital‐to‐analog converterDAQdata acquisitionDCduty cycle or direct currentDECdecimalDIYdo it yourselfDOFdegrees of freedomEEelectronic engineeringEEPROMelectrically erasable programmable read‐only memoryENenableFfrequencyFDMfused deposition modelingFPGAfield‐programmable gate arrayFWfirmwareGCCGNU compiler collectionGNDgroundGPIOgeneral‐purpose input/outputHheightHDLhardware description languageHEXhexadecimalHWhardwareHzhertzI2Cinter‐integrated circuitICintegrated circuitIDEintegrated development environmentIOinput/outputISPin‐system programmingISRinterrupt service routinekBkilobyteLlengthLEDlight‐emitter diodeLiPolithium polymerLSBleast significant bitLSDleast significant digitMEMSmicro‐electro‐mechanical systemsMinGWminimalist GNU for WindowsMISOmaster input slave outputMITMassachusetts Institute of TechnologyMOSImaster output slave inputmmeter(s)mmmillimeter(s)msmillisecond(s)MSBmost significant bitMSDmost significant digitNACKno‐acknowledgeNACK(M)no‐acknowledge (master)NACK(S)no‐acknowledge (slave)nsnanosecond(s)ODRoutput data rateOEMoriginal equipment manufacturerOpenGLopen graphics libraryOSoperating systemPaPascalPBLproject‐based