Trang 1 TRƯỜNG ĐẠI HỌC QUY NHƠN KHOA KỸ THUẬT VÀ CÔNG NGHỆ --- --- TÀI LIỆU THỰC HÀNH HỆ THỐNG NHÚNG VÀ IOT Bộ môn: Điện tử - Viễn thông Trang 3 HỌC PHẦNThực hành Hệ thống nh
Trang 1TRƯỜNG ĐẠI HỌC QUY NHƠN
KHOA KỸ THUẬT VÀ CÔNG NGHỆ
- -
TÀI LIỆU THỰC HÀNH
HỆ THỐNG NHÚNG VÀ IOT
Bộ môn: Điện tử - Viễn thông
Tài liệu lưu hành nội bộ
Trang 3HỌC PHẦN Thực hành Hệ thống nhúng
và IOT
ĐẠI HỌC QUY NHƠN Khoa Kỹ thuật và Công nghệ
Trang 51.1 Giới thiệu về KIT thực hành
• KIT gồm bộ phận chính là Raspberry Pi 4 và các ngoại vi khác
4 5
11.Light-dependent resistor 12.Switch
Trang 61.1 Giới thiệu về KIT thực hành (tt)
• KIT gồm bộ phận chính là Raspberry Pi 4 và các ngoại vi khác
2x USB 2.0
2x USB 3.0
Gigabit Ethernet
40 GPIO Pins
DSI Display Connector
SD Card
Trang 72.1 Hệ điều hành Raspian
• Raspbian là một hệ điều hành dựa trên Debian( Debian GNU/Linux) cho Raspberry Pi.
• Có một số phiên bản của Raspbian bao gồm Raspbian Stretch và Raspbian Jessie….
• Từ năm 2015, nó đã được Raspberry Pi Foundation chính thức cung cấp như là hệ điều
hành chính cho Raspberry Pi .
Trang 82.2 Cài đặt hệ điều hành Raspian
Cài đặt hệ điều hành Rasbian sử dụng công cụ Raspberry Pi Imager
• Raspberry Pi Imager là một công cụ hỗ trợ cho người dùng cài đặt Raspberry Pi OS một các đơn giản và nhanh chóng nhất.
thể download tại
Trang 92.2 Cài đặt hệ điều hành Raspian (tt)
• Sau khi tải về công cụ “Raspberry Pi Imager”, chạy file cài đặt với
quyền admin
Trang 102.2 Cài đặt hệ điều hành Raspian (tt)
• Sau khi hoàn tất quá trình cài đặt phần mềm, mở giao diện
Trang 112.2 Cài đặt hệ điều hành Raspian (tt)
(NOTE: các dữ liệu hiện
có trên thẻ nhớ sẽ bị xoá hoàn toàn.)
Ấn Choose OS và chọn
“Raspberry Pi OS”
Trang 122.2 Cài đặt hệ điều hành Raspian (tt)
Trang 132.2 Cài đặt hệ điều hành Raspian (tt)
điều hành lên thẻ nhớ.
6 Khi hoàn thành quá trình cài
đặt, một popup sẽ xuất hiện lên, chọn Continue để tiếp tục
Trang 143.1 Kết nối Raspbery PI với Laptop qua LAN Cable
SSH (Secure Shell)
• Là một giao thức quản trị từ xa cho phép người dùng truy cập,
kiểm soát và sửa đổi các máy chủ từ xa của họ qua internet.
• SSH cho phép hai máy tính giao tiếp (c.f http hoặc giao thức
truyền siêu văn bản, là giao thức được sử dụng để truyền siêu văn bản như trang web) và chia sẻ dữ liệu.
Trang 153.1 Kết nối Raspbery PI với Laptop qua LAN Cable
(tt)
Putty
• PuTTY là phần mềm giả lập terminal, ứng dụng truyền dữ liệu mạng …
• PuTTY hỗ trợ một số giao thức mạng, bao gồm SCP, SSH, Telnet,
rlogin …
Win 64 bit ver Win 32 bit ver
Trang 163.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
Trang 173.1 Kết nối Raspbery PI với Laptop qua LAN Cable
(tt)
Đợi cho quá trình cài đặt hoàn thành, mở phần mềm lên và thực hiện các bước tiếp theo
Trang 183.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
Thực hiện tuần tự các bước sau để thiết lập kết nối với Raspberry Pi
• Điền vào Host Name hoặc địa chỉ IP của
thiết bị cần kết nối Raspberrypi.local
• Chọn chuẩn kết nối với thiết bị (chọn SSH)
• Click Open để mở kết nối với Raspberry Pi
1
2
Trang 193.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
• Trong quá trình kết nối, popup sẽ hiện lên,
nhấn Accept để xác nhận mở kết nối.
• Khi terminal được mở lên, điền username
vào dòng login as: mặc định ở đây là pi và
nhấn enter
• Điền mật khẩu: 123/raspberry -> nhấn
enter
• Khi đăng nhập thành công, giao diện
terminal sẽ hiển thị như dòng bên dưới.
Trang 203.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
• Nhập lệnh sau để cấu hình raspberry
• Chọn “Interface option”, enable VNC để cho
phép chia sẻ màn hình Raspberry qua VNC
Trang 213.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
• Chọn VNC => YES để bật VNC Server
Trang 223.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
• Xác nhận bật VNC thành công, chọn OK => finish để trở về màn hình terminal.
Trang 233.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
Trang 243.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
Trang 253.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
Trang 263.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
Trang 273.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
• Điền host name vào ô tìm
kiếm và nhấn Enter để kết
nối với Raspberry pi.
• Khi popup hiện lên, nhấn
Continue để xác nhận mở
kết nối.
Trang 283.1 Kết nối Raspbery PI với Laptop qua LAN Cable (tt)
• Điền Username và Password để đăng nhập vào Raspberry.
• Màn hình desktop khi đăng nhập thành công
Trang 293.2 Kết nối Raspbery PI với Laptop qua Wifi
• Kiểm tra địa chỉ PI của
Raspberry bằng câu lệnh:
$ ifconfig
• Tìm phần wlan0 và lấy địa chỉ
của Raspberry
Trang 303.2 Kết nối Raspbery PI với Laptop qua Wifi (tt)
• Mở VNC viewer và điền
địa chỉ IP vào để kết nối
tương tự như làm với
dây LAN
Trang 314.1 Một số thao tác làm quen với Linux
• Với hệ điều hành Raspian,
hầu hết các thao tác sẽ được thực hiện qua các câu lệnh trên terminal
• Raspian vẫn có các giao
diện tương đồng với windows tuy nhiên Terminal vẫn là nơi phù hợp nhất để thực hiện toàn quyền kiểm soát trên thiết bị
Trang 324.1 Một số thao tác làm quen với Linux (tt)
Trang 334.1 Một số thao tác làm quen với Linux (tt)
Trang 344.1 Một số thao tác làm quen với Linux (tt)
Trang 354.1 Một số thao tác làm quen với Linux (tt)
Trang 364.1 Một số thao tác làm quen với Linux (tt)
Trang 374.2 Cài đặt thư viện cho Pi
apt-get là một công cụ quản lý các package trong Linux thông qua dòng lệnh
command line, được sử dụng để làm việc với thư viện APT (Advanced Packaging Tool)
của Linux và thực hiện các thao tác như:
• Cài đặt các gói phần mềm mới
• Xóa các gói phần mềm hiện có
• Nâng cấp các gói phần mềm hiện có
• Thậm chí được sử dụng để nâng cấp toàn bộ hệ điều hành.
$ sudo apt-get update
• Lệnh update được sử dụng để đồng bộ lại các file được chỉ định trong file
/etc/apt/sources.list Lệnh update sẽ tìm nạp các gói từ vị trí của chúng và cập nhật các gói lên phiên bản mới hơn.
$ sudo apt-get upgrade
đặt trên hệ thống.
Trang 384.2 Cài đặt thư viện cho Pi (tt)
$ sudo apt-get install xxx
Lệnh install dùng để cài đặt hoặc nâng cấp package.
$ sudo apt-get install xxx yyy
Để cài đặt một lúc nhiều package thì tên các package được ghi cách nhau bởi khoản trống
$ sudo apt-get install vsftpd=2.3.5-3ubuntu1
Cài đặt một version cụ thể nào đó của package.
Trang 394.2 Cài đặt thư viện cho Pi (tt)
$ sudo apt-get install wiringpi
Cài đặt thư viện WiringPi
Trang 404.2 Cài đặt thư viện cho Pi (tt)
$ sudo gpio readall
Cài đặt thư viện WiringPi
Trang 415.1 Thực hành sử dụng thư viện WiringPi điều khiển còi
• Tạo file python tên buzzer.py
1
1 Mở File Explorer.
2 Tại thư muc home/pi,
click chuột phải vào
Trang 425.1 Thực hành sử dụng thư viện WiringPi điều khiển còi (tt)
• Mở file buzzer.py bằng phần mềm Thonny
• Sau khi hoàn thành phần code, click Run để chạy phần code vừa điền.
Trang 435.2 Thực hành sử dụng thư viện WiringPi điều khiển động cơ
• Tạo file dcmotor.py bằng phần mềm Thonny
• Sau khi hoàn thành phần code, click Run để chạy phần code vừa điền.
Trang 44Kết thúc
ĐẠI HỌC QUY NHƠN
Khoa Kỹ thuật và Công nghệ
Trang 45- Sơ đồ mạch điều khiển LED 7 đoạn:
o LED 7 đoạn sử dụng trong mạch có cấu trúc như sau:
Hình 2 1 Cấu trúc LED 7 đoạn
Trang 47`
B1: Tạo module tên segment_module.py
Trang 48`
Khai báo thư viện WiringPi
Khai báo thư viện Time
Khai báo biến segment_data kiểu Tuple chứa các phần tử là các GPIO nối với từng thanh LED
Khai báo biến segment_sel kiểu Tuple chứa các phần tử là các GPIO nối với chân enable/Disable từng cell LED
Khai báo biến num có kiểu list chứa 10 list con là tổ hợp các tín hiệu điều khiển kết hợp thành chữ số trên LED
Trang 49`
Khai báo chân trong Tuple segment_data hoạt động ở chế độ Output
Xuất tín hiệu mức 0 ra các chân trong Tuple segment_data
Khai báo chân trong Tuple segment_sel hoạt động ở chế độ Output
Xuất tín hiệu mức 1 ra các chân trong Tuple segment_sel
Khởi tạo biến i có giá trị bằng 0
Xuất tín hiệu mức 0 ra các chân trong Tuple segment_sel
Khai báo chương trình con tên DisplayNumber(number), yêu cầu tham số tên number Xuất giá trị lần lượt ra 8 chân trong Tuple segment_data, trong đó giá trị được lấy từ
phần tử thứ loop trong list thứ number của list num
Trang 50`
Khai báo chương trình con tên DisplayAll()
Hiển thị các số từ 1-10
B2: Tạo module tên segment.py
Import module vừa tạo ở bước 1
Nhập số cần hiển thị trong khoảng từ 0-10 từ bàn phím, số này sẽ được lưu vào biến
number
Nếu số nhập vào = 10 thì gọi chương trình con DisplayAll(), nếu số nhập vào khác 10 thì gọi chương trình con DisplayNumber()
Trang 51`
b Đọc giá trị cảm biến nhiệt độ
Hình 2 4 Kết nối giữa Raspberry Pi và MCP3208
B1: Tạo file tên temperature.py
Trang 52`
IV BÀI TẬP ĐÁNH GIÁ
1 Viết chương trình hiển thị số 9999
2 Viết chương trình hiển thị giá trị nhiệt độ lên LED 7 đoạn
Trang 53Hình 4 1 Sơ đồ nguyên lý của biến trở trên KIT
Hình 4 2 Sơ đồ nguyên lý của LED RGB
Trang 55`
B2: Tạo file tên rgb_led.py
Bài tập: Viết chương trình đọc giá trị của biến trở, điều chỉnh cường độ sáng
Trang 56`
Buổi 05-06: ỨNG DỤNG CÔNG NGHỆ XỬ LÝ ẢNH
GIẢI QUYẾT BÀI TOÁN PHÂN LOẠI ĐỐI TƯỢNG
I MỤC ĐÍCH
Làm quen với khái niệm xử lý ảnh cơ bản Các bài toán Object detection
Làm quen với thư viện OpenCV và giải quyết bài toán Object detection
Thực hành đưa ảnh có trái cà chua và trả ra kết quả phân loại đối tượng
II CHUẨN BỊ THỰC HÀNH
KIT Raspberry
Dữ liệu đào tạo: Ảnh có đối tượng cần phân loại
Dữ liệu kiểm tra: Ảnh chụp của bất kì có chứa hoặc không chứa đối tượng cần phân loại
III TIẾN TRÌNH THỰC HÀNH:
a Training model nhận dạng các đối tượng
Bước 1 Cài đặt thư viện cvzone, numpy
$ pip install cvzone
$ pip install numpy Bước 2 Cài đặt thư viện tensorflow theo hướng dẫn tại đây
python3 -m pip install -U wheel mock six
sudo raspi - config # chọn Advanced Options -> Expand Filesystem
sudo dphys - swapfile swapoff # Disable Swap
sudo nano / etc / dphys - swapfile # tìm dòng CONF_SWAPSIZE 100 thay 100 thành 512
sudo dphys - swapfile swapon # Enable Swap
sudo apt install build - essential libatomic1 zip unzip
sudo apt install openjdk - 11 - jdk - headless sudo update - java - alternatives - s java
-1.11 - openjdk - armhf
wget https : //github.com/bazelbuild/bazel/releases/download/3.7.2/bazel-3.7.2-dist.zip unzip bazel-3.7.2-dist.zip
Trang 57`
Bước 3 Chuẩn bị dữ liệu đào tạo (bỏ qua trong bài này)
Quay video ngắn (khoảng 5s) về đối tượng cần nhận dạng (quay rõ đối tượng nhất có thể)
Tạo file VideoToFrame.py lưu cùng thư mục với video đã quay
Thay đổi các parameter:
o pathIn = đường dẫn đến thư mục chứa video
o pathOut = đường dẫn đến thư mục chứa các frame đã tách
Bước 4 Truy cập trang web https://teachablemachine.withgoogle.com/, chọn
“Get Stared”
Trang 58`
Trang 59`
Bước 5 Chọn “Image Project” -> “Standard image model”
Bước 6 Upload dữ liệu training cho model:
Đặt tên “class 1”, “class 2”…… thành tên các object (chai dau, bat lua, keo)
Chọn Upload và chọn 40 ảnh chứa object cần nhận dạng
Trang 60`
Bước 7 Đợi cho quá tình Training Model hoàn tất, chọn “Export Model”
Bước 8 Chọn Tensorflow, ấn “Download my model”
Trang 61`
b Lập trình sử dụng Model vừa đào tạo
Bước 1 Sử dụng chức năng File Transfer để chuyển Model vừa đào tạo từ
máy tính sang Raspberry
Bước 2 Sau khi chuyển, các file sẽ nằm ở desktop, Tạo folder MyModel
trong thư mục home/pi/ coppy file vừa chuyển vào đây và giải nén nó
Trang 62`
Bước 3 Tạo file code có tên main.py
Bước 4 Coppy ảnh thử nghiệm có tên “test1.jpg” vào thư mục home/pi
Bước 5 Chạy và kiểm tra kết quả
Trang 63`
IV BÀI TẬP ĐÁNH GIÁ
Viết chương trình thực hiện phân loại nếu class1 thì bật còi, class2 thì sáng đèn RGB
*Gợi ý:
Biến index sẽ lưu giá trị của class khi nó được nhận dạng thành công (index=1 nếu trong ảnh có class 1, index=0 neeus trong ảnh có class0)
Trang 64`
Buổi 07-08: BÀI THÍ NGHIỆM GIÁM SÁT THAM SỐ
MÔI TRƯỜNG NƯỚC
Tìm hiểu về các phương án truyền dữ liệu không dây như LoRa, ZigBee…
Tìm hiểu về Web Server và public dữ liệu thu thập được từ cảm biến
1 Xây dựng Node thu thập dữ liệu
a Đọc dữ liệu độ PH và nhiệc độ bằng PH Module Logo-Rnaenaor V2.0 Xem hướng dẫn tại đây
Sơ đồ nối dây:
Trang 65`
b Truyền thông dữ liệu không dây giữa node thu thập và node xử lý sử dụng Lora
Sơ đồ nối dây:
c Lập trình truyền thông dữ liệu qua Loa
Cài đặt thư viện RadioHead
Download thư viện từ đây
Trang 66Khởi tạo các chân và tầng số hoạt động của module là 434Hz
Reset moduel LoRa bằng cách cho chân RST xuống mức thấp trong 10ms, sau đó khởi tạo module LoRa với thư viện Radio head
Xử lý dữ liệu
Trang 67`
Truyền dữ liệu trong mảng d
Thử nghiệm truyền dữ liệu
Trang 68`
2 Xây dựng Node xử lý dữ liệu
a Truyền thông dữ liệu không dây giữa node thu thập và node xử lý sử dụng Lora
Trang 69`
- Cài đặt các gói thư viện cần thiết:
pip install RPi.GPIO
pip install spidev
pip install pyLoRa
sudo apt-get install git
sudo git clone https://github.com/rpsreal/pySX127x
Trang 70`
Trang 71`
Trang 72`
Buổi 09-10: BÀI THÍ NGHIỆM GIÁM SÁT THAM SỐ
MÔI TRƯỜNG NƯỚC
I MỤC ĐÍCH
Làm quen với Node RED, một công cụ lập trình dùng để kết nối các thiết bị phần cứng, API và các dịch vụ trực tuyến với nhau
II CHUẨN BỊ THỰC HÀNH
III Node RED là một công cụ lập trình dùng để kết nối các thiết bị phần cứng, API và
các dịch vụ trực tuyến với nhau Về cơ bản, đây là một công cụ trực quan được thiết
kế cho IoT (Internet of Things), nhưng cũng có thể được sử dụng cho các ứng dụng khác nhằm liên kết nhanh các luồng (flow) dịch vụ khác nhau
a Cài đặt Rode-RED trên Raspberry
b Truy cập vào địa chỉ server của Node-RED và lập trình cho giao diện giám sát
c Cài đặt ứng dụng Node-RED Dashboard để thuận tiện cho việc giám sát
IV TIẾN TRÌNH THỰC HÀNH:
a Cài đặt Rode-RED trên Raspberry
- Cài đặt thư viện essential
$ sudo apt install build-essential
- Cài đặt node – red
$ bash (curl -sL
- Nhấn “y” và enter khi được hỏi
có đồng ý tiếp tục cài đặt hay không
Trang 73`
- Khi được hỏi có
muốn thay đổi
Trang 74`
- Giao diện
node-red sau khi hoàn
thành cài đặt
b Lập trình node-red đọc dữ liệu
Cài đặt Node-RED DashBoard
Tương tự, cài đặt “node-red-contrib-string”
Xây dựng giao diện:
Trang 75(3)
(4)
(5)
Trang 76`
Sử dụng khối string để tách các đoạn dữ liệu:
Giữa “Data_read” và “;” Giữa “sign_strength:” và “@”
Sử dụng khối Function để chuyển dữ liệu dạng string sang dạng Number:
(4)
Trang 77`
Thêm Tab tên “Data”, tạo Group “data_1” trong đó
Gán các giá trị “Label”, “Unit”, “Range” cho đối tượng
(5)