Читать книгу Microcontroller Prototypes with Arduino and a 3D Printer - Dimosthenis E. Bolanakis - Страница 4
List of Illustrations
Оглавление1 Chapter 1Figure 1.1 Interdisciplinarity of embedded computers.Figure 1.2 Problem‐solving with microcomputers (a revision of Kordaki's mode...Figure 1.3 (a) TPACK model and (b) its application in microcontroller educat...Figure 1.4 Onion learning framework for μC programming and application devel...Figure 1.5 An example of pseudo‐architecture, pseudo‐timing diagram, and pse...Figure 1.6 (a) μC programming board and (b) UVPROM eraser (from the long‐cyc...Figure 1.7 Custom‐designed PCB of the μC's application circuit.Figure 1.8 (a) Arduino uno board and powerpack shield; (b) Arduino Uno and E...Figure 1.9 Uploading the new firmware code to μC's memory through the Arduin...Figure 1.10 PCB silkscreen of the Arduino Uno stackable headers and the μC's...Figure 1.11 A drone is built around sensors, actuators, and interfaces.
2 Chapter 2Figure 2.1 Example of a 16‐bit register in μC’s memory.Figure 2.2 Two’s (2’s) complement geometrical representation of a 4‐bit bina...Figure 2.3 Arduino Uno board connected to the USB port of a laptop (using ty...Figure 2.4 Arduino Ex.2–1a: output data from the μC to a computer through UA...Figure 2.5 RS 232 terminal consoles: (a) Arduino serial monitor. (b) Termite...Figure 2.6 Arduino Ex.2–1b: (a) SRAM‐memory and (b) Flash‐memory strings....Figure 2.7 Arduino Ex.2–2: datatypes length and typecasting. (a) source code...Figure 2.8 Control flow statements in Arduino (and embedded C) programming. ...Figure 2.9 Flowchart of the for() loop example given in Figure 2.14m.Figure 2.10 Flowchart of the do…while() loop example given in Figure 2...Figure 2.11 (a) Arduino Ex.2–3: for() & while() statements and variable scop...Figure 2.12 Arduino Ex.2–4: for() statement and Boolean operators (upper/low...Figure 2.13 Arduino Ex.2–5: input data to the μC from a computer through UAR...Figure 2.14 Printed results of the original version (and some revisions) of ...Figure 2.15 Arduino Ex.2–6a: arithmetic operations (numeric string to binary...Figure 2.16 Transforming a numeric string to binary value (“128”→128). (a) t...Figure 2.17 Arduino Ex.2–6b: arithmetic operations (binary value to numeric ...Figure 2.18 Transforming a binary value to BCD in reversed order (254→“452”)...Figure 2.19 Arduino Ex.2–7: bitwise operations (unsigned byte to signed byte...Figure 2.20 Bitwise AND, OR, XOR with bitmasks. (a) bitwise AND (b) bitwise ...Figure 2.21 Converting the array elements from BCD to ASCII and printing the...Figure 2.22 Bit‐shift left (<<) and right (>>) of a binary v...Figure 2.23 Three positions bit‐shift left and right (i.e. multiply an...Figure 2.24 Function declaration in Arduino (and Embedded C) programming. (a...Figure 2.25 Arduino Ex.2–8: code decomposition with functions (as applied to...Figure 2.26 Arduino Ex.2–8b: code decomposition with functions and macros. (...
3 Chapter 3Figure 3.1 Pin interface with the outside world: OUTPUT DATA. (a) LED on Ard...Figure 3.2 Blinking LED with user‐defined function and macro. (a) firmware c...Figure 3.3 Pin arrangement in an Arduino Uno board (port B, port C, and port...Figure 3.4 Blinking LED through the direct manipulation of the port register...Figure 3.5 Waveforms on PB5 pin (blinking LED without the one second delay)....Figure 3.6 Concurrent vs. sequential manipulation of the μC’s port pins. (a)...Figure 3.7 Pin interface with the outside world: INPUT DATA. (a) release pus...Figure 3.8 Debounce the spurious switch (open/close) transitions. (a) connec...Figure 3.9 Reading the switch state through the direct manipulation of PINB ...Figure 3.10 Analog signal and PWM arrangement in an Arduino Uno board. (a) e...Figure 3.11 ADC and PWM pin arrangement in an Arduino Uno board.Figure 3.12 Reading the switch state through the analog input pin A0. (a) ha...Figure 3.13 Reading the 3V3 power on an Arduino Uno board through the analog...Figure 3.14 PWM on PIN3 on an Arduino Uno board (data acquisition though PIN...Figure 3.15 PWM on PIN3 (data acquisition though oscilloscope). (a) connecti...Figure 3.16 External interrupt pins on an Arduino Uno board.Figure 3.17 Update DC of the PWM wave on PIN3 via the external interrupt on ...Figure 3.18 Switch bounce on the external interrupt PIN2. (a) hardware setup...Figure 3.19 UART connection of a μC to a μC, module, or computer (8N1 frame)...Figure 3.20 UART hardware interface on an Arduino Uno board (pinout and data...Figure 3.21 Third‐party tools for the Arduino Uno board (FTDI click by Mikro...Figure 3.22 UART hardware interface on an Arduino Uno using third‐party tool...Figure 3.23 Software‐implemented UART on an Arduino Uno board (SoftwareSeria...Figure 3.24 SPI hardware topology and read/write timing diagrams (four modes...Figure 3.25 SPI single‐byte read of the chip id of BME280 sensor device. (a)...Figure 3.26 SPI single‐byte read of the chip id of BME280 sensor device (tim...Figure 3.27 SPI single‐byte write and read (BME280 register 0xF4, aka “ctrl_...Figure 3.28 SPI multiple‐byte read (BME280 temperature coefficients 0x88‐0x8...Figure 3.29 BME280: obtain temperature (T), humidity (H), and pressure (P) t...Figure 3.30 BME280 SPI functions (1 of 3).Figure 3.31 BME280 SPI functions (2 of 3).Figure 3.32 BME280 SPI functions (3 of 3).Figure 3.33 Header file of the custom‐designed SPI library (swSPI.h).Figure 3.34 Source code file of the custom‐designed SPI library (swSPI.cpp –...Figure 3.35 Source code file of the custom‐designed SPI library (swSPI.cpp –...Figure 3.36 swSPI single‐byte read of the chip id of BME280 sensor device. (...Figure 3.37 SCLK period of the swSPI library. (a) SPI clock period using 100...Figure 3.38 BME280: obtain temperature, humidity, and pressure through the s...Figure 3.39 I2C hardware topology and read/write timing diagrams. (a) connec...Figure 3.40 I2C hardware interface (Arduino Uno and BME280/click shield pino...Figure 3.41 I2C single‐byte read of the chip id of BME280 sensor (code and t...Figure 3.42 I2C single‐byte write and read code (BME280 register 0xF4, aka “...Figure 3.43 I2C single‐byte write and read timing diagrams (BME280 “ctrl_mea...Figure 3.44 I2C multiple‐byte read (BME280 temperature coefficients 0x88–0x8...Figure 3.45 BME280: obtain Temperature (T), Humidity (H), and Pressure(P) th...Figure 3.46 BME280 I2C functions (1 of 3).Figure 3.47 BME280 I2C functions (2 of 3).Figure 3.48 BME280 I2C functions (3 of 3).Figure 3.49 Header file of the custom‐designed I2C library (swWire.h).Figure 3.50 Source code file of the custom‐designed I2C library (swWire.cpp ...Figure 3.51 Source code file of the custom‐designed I2C library (swWire.cpp ...Figure 3.52 Source code file of the custom‐designed I2C library (swWire.cpp ...Figure 3.53 Source code file of the custom‐designed I2C library (swWire.cpp ...Figure 3.54 swWire single‐byte read of the chip id of BME280 sensor device. ...Figure 3.55 SCL max frequency of the swWire library on an Arduino Uno board....Figure 3.56 BME280: obtain temperature, humidity, and pressure through the s...Figure 3.57 BME280 revised driver (1 of 3).Figure 3.58 BME280 revised driver (2 of 3).Figure 3.59 BME280 revised driver (3 of 3).
4 Chapter 4Figure 4.1 Amendments to the BME280 driver of the built‐in I2C interface. (a...Figure 4.2 DAQ measurement hardware and firmware (air pressure with BME280 s...Figure 4.3 Pulse on PINA3 (DAQpin) for measuring the time of DAQ process. (a...Figure 4.4 Header file Serial.h for the communication with the PC serial por...Figure 4.5 Header file Serial.h for the communication with the PC serial por...Figure 4.6 DAQ software for the communication with the PC serial port (Seria...Figure 4.7 Arduino Uno connected to COM11 serial port (Windows Device Manage...Figure 4.8 Compilation and execution of the DAQ software.Figure 4.9 Enrichment of the DAQ software Serial_Ex4_01.c to store data to a...Figure 4.10 Free Serial Port Monitor tool for inspecting the data exchanged ...Figure 4.11 DAQ software with graphical monitoring feature (Serial_Ex4_01‐gn...Figure 4.12 Compilation and execution of the Serial_Ex4_01‐gnuplot.c D...Figure 4.13 DAQ measurement hardware and firmware (reading data from two sen...Figure 4.14 DAQ with data monitoring acquired by 2 sensors (Serial_Ex4_02‐gn...Figure 4.15 Teensy 3.2 USB development board (Top and Bottom view).Figure 4.16 Getting started with Teensy 3.2 board (example firmware). (a) fi...Figure 4.17 BNO055+BMP280 Pesky module for Teensy 3.2 motherboard. (a) the P...Figure 4.18 Reading air pressure from BMP280 sensor of Pesky’s module (with ...Figure 4.19 3D orientation of BNO055 device using Euler angles. (a) referenc...Figure 4.20 Gimbal lock phenomenon in Euler angles. (a) independent gimbals....Figure 4.21 BNO055 driver (using the built‐in I2C).Figure 4.22 Orientation detection expressed with Euler angles. (a) applicati...Figure 4.23 Gesture and motion detection firmware.Figure 4.24 Gesture detecting sleeve and gesture types. (a) the various type...Figure 4.25 Gesture detection via Gravity Vector (gestures aligned with the ...Figure 4.26 Gesture recognition graphs.Figure 4.27 Gesture recognition example toward steering an RC car. (a) plot ...Figure 4.28 Motion detection via Linear Acceleration. (a) reference position...Figure 4.29 Motion detection (Linear Acceleration) graphs and revised firmwa...Figure 4.30 Fusing Linear Acceleration and Barometric Altitude toward absolu...Figure 4.31 Updated firmware and DAQ running for Euler angles, Gravity, Line...Figure 4.32 DAQ software for acquiring Euler angles, Gravity, and Linear Acc...Figure 4.33 Compilation and execution of the Open GL example code. (a) real‐...Figure 4.34 Open GL example applying to Euler angles (1 of 2).Figure 4.35 Open GL example applying to Euler angles (2 of 2).Figure 4.36 TinyCircuits vs. Teensy board systems.Figure 4.37 Battery operated system with TinyZero and Teensy (with Adafruit ...Figure 4.38 TinyCircuits SAMD Boards by TinyCircuits installed.Figure 4.39 Teensy USB Serial driver installed for TinyZero board. (a) drive...Figure 4.40 Force TinyZero board into bootloader code (if not automatically ...Figure 4.41 Getting started with “Hello World!” and blinking LED firmware (T...Figure 4.42 Distance measurements and gesture recognition setup & firmware. ...Figure 4.43 Distance measurements with one VL53L0X: (a) serial monitor, (b) ...Figure 4.44 1D gesture recognition by reading two identical VL53L0X sensors....Figure 4.45 1D gesture recognition by reading two identical VL53L0X sensors....Figure 4.46 DAQ software applying to distance detection (illustrating VL53L0...Figure 4.47 mbed driver successfully installed. (a) top view of Micro:bit bo...Figure 4.48 Installing Nordic Semiconductor nRF5 Boards by Sandeep Mistry....Figure 4.49 Configure the Arduino IDE in order to upload code to Micro:bit....Figure 4.50 Approve the code uploading process to Micro:bit.Figure 4.51 Hardware of blinking LED (using push‐buttons) in Micro:bit. (a) ...Figure 4.52 Firmware of blinking LED (using push‐buttons) in Micro:bit. (a) ...Figure 4.53 Color codes of Ozobot.Figure 4.54 Color sensing setup and testing. (a) edge connector breakout boa...Figure 4.55 Firmware and color sensing results. (a) application firmware, (b...Figure 4.56 RGB sensing example with Open GL (1 of 2).Figure 4.57 RGB sensing example with Open GL (2 of 2).Figure 4.58 Execution of the RGB sensing example with Open GL. (a) compilati...Figure 4.59 RGB sensing firmware with BLE connectivity.Figure 4.60 Interfacing with a mobile phone through BLE (Bluefruit Connect a...Figure 4.61 RGB sensing firmware with BLE connectivity (central device read ...
5 Chapter 5Figure 5.1 Tinkering a 360 Cross RC car by Exost. (a) the 360 Cross RC car b...Figure 5.2 Connection diagram of the tinkered RC.Figure 5.3 Connection diagram of the tinkered RC. (a) top and bottom side of...Figure 5.4 Tinkering a 360 Cross RC car by Exost.Figure 5.5 Tinkering an RC car: testing Control Pad commands (Arduino hardwa...Figure 5.6 Tinkering an RC car: testing Control Pad commands (Bluefruit app)...Figure 5.7 Tinkering an RC car: decoding Control Pad commands (Arduino hardw...Figure 5.8 Tinkering an RC car: firmware to control the RC car though a smar...Figure 5.9 Upgrading the control of the RC car via the additional Bluefruit ...Figure 5.10 The proposed interactive game for sensory play. (a) LED ring dis...Figure 5.11 ZIP Halo board with Micro:bit (for the sense of sight). (a) top ...Figure 5.12 Peripheral units used by the prototype game (except ZIP Halo + M...Figure 5.13 Interconnection between the peripheral units of the prototype in...Figure 5.14 Assembly of the system's enclosure (1 of 3).Figure 5.15 Assembly of the system's enclosure (2 of 3).Figure 5.16 Assembly of the system's enclosure (3 of 3).Figure 5.17 Screws, nuts, and spacers required for the system's assembly.Figure 5.18 Bottom‐up design method: decomposing the application firmware in...Figure 5.19 Connection diagram of the prototype system.Figure 5.20 Generate random (green and red) colors to the LED ring.Figure 5.21 Emulate a push‐button via a barometric pressure sensor (firmware...Figure 5.22 Emulate a push‐button via a barometric pressure sensor (plots). ...Figure 5.23 Notes and frequencies of the piano keys.Figure 5.24 Generating by the microcontroller (and playing for 2 s) A4 music...Figure 5.25 Header file declaring the semi‐period (in μs) of each music note...Figure 5.26 Generate random colors to the LED ring and associate sound to ea...Figure 5.27 Template firmware of the prototype interactive game. (a) applica...Figure 5.28 FreeCAD: getting started with primitive shapes and Boolean opera...Figure 5.29 FreeCAD: modeling the floor part of the prototype interactive ga...Figure 5.30 FreeCAD: modeling the floor part of the prototype interactive ga...Figure 5.31 FreeCAD: modeling the floor part of the prototype interactive ga...Figure 5.32 Top/bottom view and rotation of the floor part of the prototype ...Figure 5.33 FreeCAD: rename a 3D part and change its appearance to transpare...Figure 5.34 Free online STL viewer.Figure 5.35 Cura: define settings for Prima Creator P120 3D printer.Figure 5.36 Cura: define settings for setting of the desired 3D printing pro...Figure 5.37 Cura: load the .stl file. (a) Cura software buttons for rotatingFigure 5.38 The Prima Creator P120 3D printer. (a) front view, (b) rear view...Figure 5.39 Bed leveling of the Prima Creator P120 3D printer. (a) menu for ...Figure 5.40 Prepare the printing process in Prima Creator P120. (a) preheat ...Figure 5.41 Fill density of the printed part (i.e. 20%).Figure 5.42 FreeCAD: modeling the Battery.stl part of the prototype game (1 ...Figure 5.43 FreeCAD: modeling the Battery.stl part of the prototype game (2 ...Figure 5.44 FreeCAD: modeling the Battery.stl part of the prototype game (3 ...Figure 5.45 FreeCAD: modeling the Booster.stl part of the prototype game (1 ...Figure 5.46 FreeCAD: modeling the Speaker.stl part of the prototype game (1 ...Figure 5.47 FreeCAD: modeling the Speaker.stl part of the prototype game (2 ...Figure 5.48 FreeCAD: modeling the cover.stl part of the prototype game (1 of...Figure 5.49 FreeCAD: modeling the cover.stl part of the prototype game (2 of...Figure 5.50 FreeCAD: modeling the button.stl part of the prototype game (1 o...Figure 5.51 FreeCAD: modeling the button.stl part of the prototype game (2 o...Figure 5.52 FreeCAD: modeling the sensor.stl part of the prototype game (1 o...Figure 5.53 FreeCAD: modeling the sensor.stl part of the prototype game (2 o...Figure 5.54 FreeCAD: modeling the front.stl part of the prototype game (1 of...Figure 5.55 FreeCAD: modeling the front.stl part of the prototype game (2 of...Figure 5.56 Add wireless charging feature on the prototype interactive game.