这本教材主要以实例为主,通过小项目提高读者的实践能力。这对于新手来说,没有很详细的知识点,但我个人认为如果一开始就是从一点点的知识点再往上搭建知识体系,很容易失去学习的乐趣。
另外一点认识是物联网应该是嵌入式+云服务,在嵌入式的基础上,大量的数据在云端能发挥更大的作用。
Smart IoT Projects by Agus Kurniawan
思维导图
Preface
Creating basic IoT projects is common but imagine building smart IoT projects that can extract data from physical devices, thereby making decision itself.
Chapter 1: making your IoT project smart
1.1 introducing basic statics and data science
Static terms: mean, median, variance and standard deviation
1.2 python for computation statics and data science
Python provides simple programming syntax and a lot of APIs
1.3 python libraries for computational statistics and data science
numpy: handle N-dimensional arrays and integrating C/C++ and Fortran code
Pandas: handle table-like structures
Scipy: contain functions for liner algebra, interpolation, integration, clustering and so on
Scikit-learn: machine-learning library
Shogun: a machine-learning library focuses on large-scale kernel methods
Sympy: symbolic mathematical computations
Statsmodels: a python module used to process data, estimate statistical models and test data
1.4 building a simple program for statistics
1.5 IoT devices and platforms
Several IoT platforms that are widely used in client side
Arduino:
The board scheme is shared and make sure you use a board and software from the same company
We can use Arduino shields to extend I/O and functionalities
Arduino boards from Arduino.cc : Arduino Uno/ Arduino 101/ Arduino MKR1000
Raspberry Pi:
A mini-computer for educational purposes
Raspberry Pi boards: Raspberry Pi 3(Wi-Fi and Bluetooth)/ Raspberry Pi Zero(with a micro HDMI and no network module)
BeagleBone Black(BBB):
More powerful than Raspberry Pi
BeagleBone Green(BBG):
Cheaper than BBB
ESP8266 MCU:
A low-cost Wi-Fi with integrated TCP/IP
TI CC3200 MCU:
A Wi-Fi based in the ARM Cortex-M4 Texas Instruments
1.6 Sensing and actuating on IoT devices
Arduino-Sketch language-light sensor/humidity and temperature sensor
Raspberry Pi-OS software/python language/GPIO-/a blinking LED
1.7 Sensing through sensor devices
Raspberry Pi-python-DHT22 sensor
1.8 Building a smart temperature controller for your room
A PID controller program is developed using python and running on the Raspberry Pi
Basic idea of PID controller: read a sensor, then compute the desired actuator output by calculating proportional, integral and derivative responses and summing those three components to compute the output
Translate PID controller formula into python
Chapter2: Design System for IoT projects
2.1 Introduction to decision system and machine learning
A system that makes a decision based on several input parameters
Machine learning is a process in which we teach a machine to understand and achieve a specific goal, varieties of programs are implemented in machines so they can make decision.
2.2 Decision system-based Bayesian
Bayesian uses the manipulation of conditional probabilities approach to interpret data.
Use the python library such as PyMC to build a Bayesian model
Sample: a smart water system
2.3 Decision system-based fuzzy logic
Fuzzy logic is a form of many-valued logic in which the truth values of variables may be any real number between 0 and 1
Several fuzzy logic algorithms have been implemented on the scikit-fuzzy library
Sample: a temperature control system
Chapter3: Building your own machine vision
3.1 Introducing machine vision
A machine vision is a machine with camera capabilities and an understanding of what objects are, the machine acquires, analyzes, and understands a still image or video. This field involves knowledges such as image processing, pattern recognition, and machine learning.
General design of a machine learning: camera-image collection-image processing (remove noise/filter/transform)-feature extraction-classification/identification
3.2 Introducing the OpenCV library
An open source library that is designed for computational efficiency and with a strong focus on real-time applications, providing a complete library from basic computation and image processing to pattern recognition and machine learning
3.3 Deploying OpenCV on Raspberry Pi
Install required libraries-download the OpenCV source via Git-install the OpenCV library
3.4 Building a simple program with OpenCV
Circle detection -CHT method
3.5 Working with camera modules
Camera modules based on CSI interface: official cameras, Raspberry Pi camera/ Raspberry Pi NoIR camera
Camera modules based on USB interface: common, known as web camera
Camera modules based on serial interface: UART/serial pins
Camera modules with multi-interfaces: Pixy CMUcam5
3.6 Accessing camera modules from the OpenCV library
Use the VideoCapture object
3.7 Introducing pattern recognition for machine vision
Haar Cascades, use AdaBoost algorithm with a classifier
3.8 Building a tracking vision system for moving objects
Change a still image to a frame image from a camera
3.9 Building your own IoT machine vision
Build machine vision with Pixy CMUcam5 and track an object
Chapter4: Making your own autonomous car robots
Build a car robot by integrating some sensors and actuator devices to make robot run without human interference
4.1 Introducing autonomous systems
Perform something automatically by self-learning
Key elements in an autonomous system: cognition, perception, planning, control, sensing, actuation
4.2 Introducing mobile robots
MCU (Microprocessor Central Unit) : a programmable board, such as Arduino, Intel Edison, BegleBone Black/Green, Raspberry Pi
Motor drive and motors
Sensors: capture physical inputs and convert to digital data
Actuators: interact with the environment
4.3 Building your own car robot
Checklist: objective, MCU, battery, sensors and actuators
Platform DIY and assembly
A simple robot with simple movements based on avoiding obstacles-HC_SR04-NewPing library
Controlling a car robot from a computer using Bluetooth modules-HC_06-pyserial library
Working with a GPS module for navigation-U_box NEO_6M
Visualize GPS data into latitude and longitude using map engine platforms -Google Maps API-Flask library
Sending the GPS data to the web server-Flask library
4.4 Making your own autonomous car
The biggest issue is the path algorithm-how the robot with no map visits all area
With a semi-autonomous robot, we can use middleware to guide the robot about a cleaning path
Chapter5: Building voice technology on IoT projects
Listen and speak
5.1 Introducing a speech technology
The speech technology is built by speech recognition research, it covers speech2text and text2speech topics and different language models.
5.2 Introducing sound sensors and actuators
Sound sensors: a microphone module
Actuators: passive buzzer or speaker
5.3 Introducing pattern recognition for speech technology
Speech-analog2digital processing-signal processing-pattern recognition-text
In pattern recognition, we do perform speech recognition method, such as HMM to identity sound to word. The input of pattern recognition is feature extraction, the output is applied as speech2text and speech command.
5.4 Reviewing speech and sound modules for IoT devices
Speech module: EasyVR3&EasyVR shield 3 from VeeaR
Sound module: Emic 2
5.5 Building your own voice commands for IoT projects
Build voice commands on Arduino on windows OS to turn om/off a LED: setting up Easy VR shield 3-building voices commands-writing your voice command board-writing sketch program-testing
Make the Arduino speak with Emic 2: setting up-wiring-writing sketch program-testing
Make the Raspberry Pi speak via audio jack: setting up-writing python program
Chapter6: Building data science-based cloud for IoT projects
6.1 Introducing cloud technology
Moving the local computing and data to other servers over an Internet network
Three terms in cloud technology:
SaaS: software as a service
PaaS: platform as a service
IaaS: infrastructure as a service
6.2 Introducing cloud-based data science
In data science, computing such as regression, classification and prediction needs huge sources to perform tasks, data science based on cloud is a solution.
6.3 Connecting IoT boards to cloud-based server
A board with either an Ethernet module or a wireless module has networking capabilities.
Cloud-based platforms: Microsoft Azure IoT/Amazon AWS IoT/Arduino Cloud
Microsoft Azure IoT Hub: setting up Microsoft Azure IoT Hub-registering IoT device-writing program
Arduino Cloud: Setting up Arduino cloud-writing for demo-adding Arduino cloud library-updating Arduino cloud web SSL certificate-writing program for Arduino cloud
6.4 Building data science-based cloud
With the obtained data, we should analyze the data to obtain insight by machine learning or data science-based cloud servers
Deploying Azure machine learning-publishing Azure ML as web service-making IoT application with data science-based cloud
网友评论