<p>About the Author xiii</p> <p>Preface xv</p> <p>Author’s Acknowledgments xix</p> <p>About the Companion Website xxi</p> <p><b>Part I Introduction to Arm® Mbed™ and IoT 1</b></p> <p><b>1 Introduction to Arm® Mbed™ 3</b></p> <p>1.1 What is an Embedded System? 3</p> <p>1.2 Microcontrollers and Microprocessors 4</p> <p>1.3 ARM® Processor Architecture 8</p> <p>1.4 The Arm® Mbed™ Systems 10</p> <p>1.4.1 NXP LPC1768 11</p> <p>1.4.2 NXP LPC11U24 14</p> <p>1.4.3 BBC Micro:bit 15</p> <p>1.4.4 The Arm® Mbed™ Ethernet Internet of Things (IoT) Starter Kit 17</p> <p>1.5 Summary 21</p> <p>1.6 Chapter Review Questions 21</p> <p><b>2 Introduction to the Internet of Things (IoT) 23</b></p> <p>2.1 What is the Internet of Things (IoT)? 23</p> <p>2.2 How Does IoT Work? 24</p> <p>2.3 How Will IoT Change Our Lives? 25</p> <p>2.4 Potential IoT Applications 27</p> <p>2.4.1 Home 27</p> <p>2.4.2 Healthcare 28</p> <p>2.4.3 Transport 28</p> <p>2.4.4 Energy 28</p> <p>2.4.5 Manufacture 28</p> <p>2.4.6 Environment 28</p> <p>2.5 Summary 29</p> <p>2.6 Chapter Review Questions 29</p> <p><b>3 IoT Enabling Technologies 31</b></p> <p>3.1 Sensors and Actuators 31</p> <p>3.2 Communications 31</p> <p>3.2.1 RFID and NFC (Near‐Field Communication) 32</p> <p>3.2.2 Bluetooth Low Energy (BLE) 32</p> <p>3.2.3 LiFi 33</p> <p>3.2.4 6LowPAN 33</p> <p>3.2.5 ZigBee 34</p> <p>3.2.6 Z‐Wave 34</p> <p>3.2.7 LoRa 34</p> <p>3.3 Protocols 35</p> <p>3.3.1 HTTP 35</p> <p>3.3.2 WebSocket 36</p> <p>3.3.3 MQTT 37</p> <p>3.3.4 CoAP 38</p> <p>3.3.5 XMPP 38</p> <p>3.4 Node‐RED 39</p> <p>3.5 Platforms 41</p> <p>3.5.1 IBM Watson IoT—Bluemix (http://www.ibm.com/internet‐of‐things/) 41</p> <p>3.5.2 Eclipse IoT (https://iot.eclipse.org/) 42</p> <p>3.5.3 AWS IoT (https://aws.amazon.com/iot/) 42</p> <p>3.5.4 Microsoft Azure IoT Suite (https://azure.microsoft.com/en‐us/suites/iot‐suite/) 42</p> <p>3.5.5 Google Cloud IoT (https://cloud.google.com/solutions/iot/) 44</p> <p>3.5.6 ThingWorx (https://www.thingworx.com/) 44</p> <p>3.5.7 GE Predix (https://www.predix.com/) 44</p> <p>3.5.8 Xively (https://www.xively.com/) 44</p> <p>3.5.9 macchina.io (https://macchina.io/) 45</p> <p>3.5.10 Carriots (https://www.carriots.com/) 45</p> <p>3.6 Summary 45</p> <p>3.7 Chapter Review Questions 45</p> <p><b>Part II Arm® Mbed™ Development 47</b></p> <p><b>4 Getting Started with Arm® Mbed™ 49</b></p> <p>4.1 Introduction 49</p> <p>4.2 Hardware and Software Required 49</p> <p>4.2.1 Hardware 49</p> <p>4.2.2 Software 50</p> <p>4.3 Your First Program: Blinky LED 53</p> <p>4.3.1 Connect the Mbed to a PC 53</p> <p>4.3.2 Click “<i>mbed.htm</i>” to Log In 53</p> <p>4.3.3 Add the FRDM‐K64F Platform to Your Compiler 54</p> <p>4.3.4 Import an Existing Program 54</p> <p>4.3.5 Compile, Download, and Run Your Program 57</p> <p>4.3.6 What Next? 57</p> <p>4.4 Create Your Own Program 57</p> <p>4.5 C/C++ Programming Language 58</p> <p>4.6 Functions and Modular Programming 58</p> <p>4.7 Manage Platforms 61</p> <p>4.8 Clone Your Program 63</p> <p>4.9 Search and Replace 64</p> <p>4.10 Compile Your Program for Multiple Platforms 65</p> <p>4.11 Delete Your Program 65</p> <p>4.12 Disaster Recovery Procedure 67</p> <p>4.13 Upgrade Firmware 67</p> <p>4.14 Help 67</p> <p>4.15 Summary 69</p> <p><b>5 Inputs and Outputs 71</b></p> <p>5.1 Digital Inputs and Outputs 71</p> <p>5.1.1 Digital Inputs 71</p> <p>5.1.2 Digital Outputs 74</p> <p>5.1.3 BusIn, BusOut, and BusInOut 79</p> <p>5.2 Analog Inputs and Outputs 81</p> <p>5.2.1 Analog Inputs 81</p> <p>5.2.2 Analog Outputs 82</p> <p>5.3 Pulse Width Modulation (PWM) 86</p> <p>5.4 Accelerometer and Magnetometer 88</p> <p>5.5 SD Card 96</p> <p>5.6 Local File System (LPC1768) 99</p> <p>5.7 Interrupts 100</p> <p>5.8 Summary 101</p> <p><b>6 Digital Interfaces 103</b></p> <p>6.1 Serial 103</p> <p>6.2 SPI 106</p> <p>6.3 I2C 108</p> <p>6.4 CAN 111</p> <p>6.5 Summary 113</p> <p><b>7 Networking and Communications 115</b></p> <p>7.1 Ethernet 115</p> <p>7.2 Ethernet Web Client and Web Server 119</p> <p>7.3 TCP Socket and UDP Socket 124</p> <p>7.4 WebSocket 128</p> <p>7.5 WiFi 131</p> <p>7.6 Summary 135</p> <p><b>8 Digital Signal Processing and Control 137</b></p> <p>8.1 Low‐Pass Filter 137</p> <p>8.2 High‐Pass Filter 141</p> <p>8.3 Band‐Pass Filter 143</p> <p>8.4 Band‐Stop Filter and Notch Filter 146</p> <p>8.5 Fast Fourier Transform (FFT) 149</p> <p>8.6 PID Controller 160</p> <p>8.7 Summary 164</p> <p><b>9 Debugging, Timer, Multithreading, and Real‐Time Programming 165</b></p> <p>9.1 Debugging 165</p> <p>9.2 Timer, Timeout, Ticker, and Time 167</p> <p>9.3 Network Time Protocol (NTP) 171</p> <p>9.4 Multithreading and Real‐Time Programming 173</p> <p>9.5 Summary 179</p> <p><b>10 Libraries and Programs 181</b></p> <p>10.1 Import Libraries and Programs 181</p> <p>10.2 Export Your Program 181</p> <p>10.3 Write Your Own Library 182</p> <p>10.4 Publish Your Library 188</p> <p>10.5 Publish Your Program 190</p> <p>10.6 Version Control 192</p> <p>10.7 Collaborations 196</p> <p>10.8 Update Your Library and Program 201</p> <p>10.9 Summary 202</p> <p><b>Part III The IoT Starter Kit and IoT Projects 203</b></p> <p><b>11 Arm® Mbed™ Ethernet IoT Starter Kit 205</b></p> <p>11.1 128×32 LCD 205</p> <p>11.2 Joystick 207</p> <p>11.3 Two Potentiometers 208</p> <p>11.4 Speaker 209</p> <p>11.5 Three‐Axis Accelerometer 211</p> <p>11.6 LM75B Temperature Sensor 211</p> <p>11.7 RGB LED 212</p> <p>11.8 Summary 214</p> <p><b>12 IoT Projects with Arm® Mbed™ 215</b></p> <p>12.1 Temperature Monitoring over the Internet 215</p> <p>12.2 Smart Lighting 224</p> <p>12.3 Voice‐Controlled Door Access 230</p> <p>12.4 RFID Reader 237</p> <p>12.5 Cloud Example with IBM Watson Bluemix 242</p> <p>12.5.1 IBM Quickstart Service 243</p> <p>12.5.2 IBM Registered Service (Bluemix) 245</p> <p>12.5.3 Add IBM Watson IoT Service to Your Application 252</p> <p>12.5.4 Add Your Mbed Device to Your Watson IoT Organization 252</p> <p>12.5.5 Adding Credentials onto Your Mbed Device 257</p> <p>12.5.6 Link Your IBM IoT Watson Application to Your Mbed Device 257</p> <p>12.5.7 Sending Commands from Your IBM IoT Watson Application to Your Mbed Board 261</p> <p>12.5.8 More with Node-RED 261</p> <p>12.6 Real-Time Signal Processing 271</p> <p>12.7 Summary 277</p> <p><b>Part IV Appendices 279</b></p> <p>Appendix A: Example Codes 281</p> <p>Appendix B: HiveMQ MQTT Broker 285</p> <p>Appendix C: Node‐RED on Raspberry Pi 295</p> <p>Appendix D: String and Array Operations 303</p> <p>Appendix E: Useful Online Resources 311</p> <p>Index 313</p>