Network of Things Engineering (NoTE) Lab

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

This book provides a hands-on experience in software and hardware engineering of IoT devices in edge and cloud computing systems, by putting in practice state-of-the-art concepts of hardware devices, networking and computing software. It proposes a Network of Things Engineering (NoTE) Lab, with seven hands-on lab modules covering topics ranging from “Interfacing sensors and actuators” and “Connecting IoT and Edge with MQTT" to “Data pipelining in cloud computing”. All tools and software used in the NoTE Lab are free and open source, and available to the readers. Specifically, Arduino-based boards that support a variety of low-cost sensors and actuators are used in IoT context. In edge computing, NoTE Lab implements off-the-shelf single board computers, Raspberry Pis with corresponding software and hardware. For cloud, well-known and widely used cloud computing open-source tools (e.g., Kubernetes) are deployed, where readers can learn the basics of monitoring and managing containers in cloud computing. Three communication protocols are used in the end-to-end setup, including MQTT, AMQP and HTTP. This lab book is a "must experiment with" for anybody in academia and industry participating in the fascinating IoT-edge-cloud continuum development. 

Author(s): Admela Jukan, Xavi Masip-Bruin, Jasenka Dizdarević, Francisco Carpio
Publisher: Springer
Year: 2023

Language: English
Pages: 212
City: Cham

Preface
Target Audience
What NoTE Lab Does Not Offer
Choosing Hardware and Software Solutions
Devices and Configuration
Overview of the Lab Modules
Structuring Individual Labs
Grading
Free and Open Source
Acknowledgements
About this Book
Contents
About the Authors
List of Figures
List of Tables
1 Introduction
1.1 Hardware Setup
1.2 Communication Protocols
1.3 On Software Tools and Libraries
1.4 Lab Structure and Learning Objectives
2 NoteLab Setup Requirements
2.1 Hardware Requirements
2.1.1 Sensors
2.1.2 Actuators and Auxiliary Components
2.1.3 Auxiliary Components
2.1.4 Single Board Microcontrollers
2.1.5 Single Board Computers
2.1.6 Server
2.1.7 Workstation
2.1.8 WiFi Router
2.2 Software Requirements
2.2.1 Arduino Uno WiFi
2.2.2 Raspberry Pis
2.2.3 Server
2.2.4 Workstation
References
3 Lab 0—Getting Started
3.1 Prerequisites
3.2 Setup
3.3 Part 1: On the Workstation
3.3.1 Task 1: Getting Started with Linux Command Line Interface (CLI)
3.3.2 Task 2: Wireless Router Configuration
3.3.3 Task 3: Remote Access Using SSH
3.4 Part 2: Introduction to Arduino Programing
3.4.1 Task 4: First Arduino Sketch
3.4.2 Task 5: Connect Arduino to the WLAN
3.5 Part 3: Getting Started with Raspberry Pi
3.5.1 Task 6: The First Python Script
3.5.2 Task 7: First Steps with Docker
3.6 Part 4: On the Server
3.6.1 Task 8: Getting Started with Kubernetes
References
4 Lab 1—Interfacing Sensors and Actuators
4.1 Prerequisites
4.2 Setup
4.3 Part 1: Actuating an External LED
4.3.1 Task 1: Connecting External LED
4.3.2 Task 2: Making LED Blink
4.4 Part 2: Actuating an LCD Display
4.4.1 Task 3: Connecting LCD Display
4.4.2 Task 4: Printing Messages on LCD Display
4.5 Part 3: Temperature/Humidity Sensor
4.5.1 Task 5: Connecting DHT11 Sensor
4.5.2 Task 6: Reading Temperature and Humidity
4.6 Part 4: Ultrasonic Distance Sensor
4.6.1 Task 7: Connecting HC-SR04 Sensor
4.6.2 Task 8: Calculating Distance
4.7 Part 5: Motion Sensor
4.7.1 Task 9: Connecting HC-SR501 Sensor
4.7.2 Task 10: Detecting Motion
References
5 Lab 2—Connecting IoT and Edge with MQTT
5.1 Prerequisites
5.2 Setup
5.3 Part 1: Deploying and Testing an MQTT Broker
5.3.1 Task 1: Running Mosquitto
5.4 Part 2: Implementing an MQTT Client in Arduino
5.4.1 Task 2: Implementing an MQTT Client
5.5 Part 3: Sensing and Actuating over MQTT
5.5.1 Task 3: Sending DHT11 Sensor Data over MQTT
5.5.2 Task 4: Activating an External LED and LCD Display over MQTT
References
6 Lab 3—Connecting Edge and Cloud Tools with AMQP
6.1 Prerequisites
6.2 Setup
6.3 Part 1: Deploy and Test RabbitMQ
6.3.1 Task 1: Deploying RabbitMQ
6.3.2 Task 2: Testing RabbitMQ
6.4 Part 2: Implementing an AMQP Client in Python
6.4.1 Task 3: Implementing an AMQP Client
References
7 Lab 4—Connecting Edge and Cloud Tools with REST HTTP
7.1 Prerequisites
7.2 Setup
7.3 Part 1: Deploy and Test Elasticsearch
7.3.1 Task 1: Deploying Elasticsearch
7.3.2 Task 2: Testing Elasticsearch
7.4 Part 2: Implementing an HTTP Client in Python
7.4.1 Task 3: Implementing an HTTP Client
References
8 Lab 5—Prototyping Data Connectors
8.1 Prerequisites
8.2 Setup
8.3 Part 1: Implementing MQTT Client in Python
8.3.1 Task 1: Implementing an MQTT Client
8.4 Part 2: Data Connector—MQTT and AMQP
8.4.1 Task 2: Prototyping the Sensor Controller
8.5 Part 3: Data Connector—HTTP, AMQP and MQTT
8.5.1 Task 3: Prototyping the Actuator Controller
8.6 Part 4: Data Connector—AMQP and HTTP
8.6.1 Task 4: Deploying and Testing Logstash
References
9 Lab 6—Integrating Sensors and Actuators with Edge and Cloud Tools
9.1 Prerequisites
9.2 Setup
9.3 Part 1: Sending Data from Sensors to Edge and Cloud Tools
9.3.1 Task 1: Implementing and Testing the Sensor Controller
9.4 Part 2: Triggering Actuators from Cloud and Edge Tools
9.4.1 Task 2: Implementing and Testing the Actuator Controller
References
10 Lab 7—Network-of-Things Final Setup
10.1 Prerequisites
10.2 Setup
10.3 Part 1: Integrating Different Sensors and Actuators
10.3.1 Task 1: Integrating all Sensors
10.3.2 Task 2: Integrating all Actuators
10.4 Part 2: Final Setup—Integrating IoT, Edge to Cloud
10.4.1 Task 3: Testing and Benchmarking
References
Appendix A Troubleshooting: Arduino Uno
A.1 Connecting Arduinos to Workstation
A.2 Set Serial Port Permission
A.3 Alternative Arduino IDE Installation Method
A.4 Alternative Libraries Installation Method for Arduino IDE
Appendix B Troubleshooting: Raspberry Pi
B.1 Setting Up Ubuntu and Clock Synchronization
B.2 Enable SSH Service
B.3 Docker Timeout Error
B.4 Alternative Python Packages Installation Method
Appendix C Troubleshooting: Server
C.1 Fixing k3s Permissions
C.2 Uninstalling k3s
C.3 Alternative Helm Installation Method
C.4 Alternative K3s Installation Method
C.5 Alternative Hello-World Installation Method
C.6 Alternative RabbitMQ Installation Method
C.7 Alternative Elasticsearch Installation Method
C.8 Alternative Logstash Installation Method