Professional Documents
Culture Documents
Ngày 1 - IoT Basic-Raspberry Pi
Ngày 1 - IoT Basic-Raspberry Pi
Ngày 1 - IoT Basic-Raspberry Pi
TinaSoft Vietnam
Nội dung chính
2
1
Raspberry Pi
3
1.1 Raspberry Pi là gì ?
5
1.2 Hệ điều hành (OS) cho Pi
6
1.2 Download và Burn OS và thẻ microSD
1. Download OS
2. Burn OS và thẻ microSD
3. Update và upgrade
7
1.2 Download OS
• Ta chọn Raspbian OS
8
1.2 Burn OS vào thẻ microSD
• Download:
https://www.balena.io/e
tcher/
9
1.2 Update và upgrade các ứng dụng
10
1.2 Cài OS
Burn
11
2
SSH – PuTTY,
XRDP và Remote
Desktop Connection 1
2
2.1 SSH và PuTTy
điều khiển server thông qua mạng khiển từ xa cho phép người
Download: https://www.putty.org/
13
2.1 Enable SSH trên Pi
Click vào biểu tượng trên thanh taskbar và chọn như hình
14
2.1 Enable SSH trên Pi
15
2.1 Xác định IP của Pi
Dùng lệnh ifconfig để xác định cấu hình mạng của máy. Như hình dưới ta đã
biết được IP là 192.168.2.125
16
2.1 SSH vào Pi
2. SSH vào Pi
2.1 SSH vào Pi
18
2.2 Remote Desktop Connection
Remote Desktop là một giao thức độc quyền được Microsoft phát triển và được
dùng trong các máy chạy Windows giúp truy cập máy tính từ xa với giao diện đồ
họa chứ không phải giao diện dòng lệnh như PuTTY. Remote Desktop
Connection là phiên bản Remote Desktop Client trên máy Windows.
19
2.2 XRDP
20
2.2 Kết nối
21
3
Terminal và
Command Line 2
2
3.1 Terminal
01 02 03 04
Mở đóng
Sudo Cài đặt
file, folder
Một vài
lệnh cần
(quyền truy cập ứng dụng chỉnh sửa
admin) lưu ý khác
xóa
24
3.2 Cài ứng dụng
Cách
Recommended Software
1
Cách
Qua apt-get trong Terminal
2
Cách
Synaptic Package Manager
3
Cách
Cài từ gói RPM, DEB 4
3.2 Dùng Recommended Software
26
3.2 Terminal và Commanded Line
27
3.2 Synaptic Package Manager
28
3.2 Cài trực tiếp từ gói RPM hoặc DEB
• RPM: dành cho Redhat • Double Click vào gói cài đặt
và openSuse
• sudo dpkg –l + “tên
• DEB: dành cho Ubuntu package.deb”
và Debian
29
3.3 Folder và File
30
3.3 Tạo thư mục
31
3.3 Di chuyển giữa các thư mục
32
3.3 Tạo file
33
3.3 Mở file chỉnh sửa nội dung và lưu lại
• Dùng lệnh:
$ nano/gedit + “tên file” để mở file
• Sau khi chỉnh sửa xong nhấn tổ hợp Ctrl+X, bấm Y và Enter để lưu lại nội dung
34
3.3 Liệt kê các phần tử có trong thư mục
$ ls + option để liệt kê các thư mục con, file có trong thư mục
Option:
-l : hiển thị tên file, size, ngày chỉnh sửa gần nhất, v.v
-a : hiển thi toàn bộ folder, file kể cả khi chúng bị ẩn
-h : hiện thị size folder, file dạng Mb, kb,….
- R : hiển thị file ở các sub-directory
35
3.3 Nén và giải nén file
Nén
$ tar –cvzf + “Tên file nén.tar.gz” + “một hoặc nhiều file, folder cần nén”
Giải nén
$ tar –xvzf + “tên file cần giải nén”
36
3.3 Copy, cut
$ mv + option + “tên file/thư mục cut” + “đường dẫn tới nơi đặt file/thư mục đích”
40
4.1 UART
TX TX
RX RX
41
4.2 I2C
• Là chuẩn giao tiếp được Philips phát triển, sử dụng 2 dây SDA và SCL
kết nối nhiều thiết bị, IC với nhau
42
4.2 I2C
SDA
SCL
Slave Slave Slave
Master
1 2 3
SDA(3) SDA(A4)
SCL(5) SCL(A5)
43
4.3 SPI
44
4.3 SPI
MOSI(19/38) MOSI
MISO(21/35) MISO
SCK(11/40) SCK
SS(24/26) SS
45
5
Python cơ bản 4
6
5. Python cơ bản
47
5.1 Hàm print
48
5.2 Nhập liệu từ bàn phím
49
5.3 Hàm không có đối số, không trả về
50
5.3 Hàm có đối số, không trả về
51
5.3 Hàm có đối số và có trả về
52
5.4 Module def cong(a, b):
return a+b
def tru(a, b):
Tạo file LHV_math.py đóng vai trò return a-b
là module với nội dung sau: def nhan(a, b):
return a*b
def chia(a, b):
return a/b
53
5.5 if-else
54
5.5 Hàm if-else
Tạo file if-else.py với nội dung sau để kiểm tra điểm nhập vào
if a<5:
print("Diem kem")
elif a<8:
print("Can co gang")
elif a<=10:
print("Gioi")
else:
print("Nhap lai diem trong khoang tu 1 toi 10")
55
5.5 Hàm if-else
56
5.6 in ra mảng
5.6 In ra mảng
Tạo file in_mang.py với nội dung
57
5.6 Thêm, xóa
58
5.6 Tính tổng các phần tử trong mảng
59
5.6 Sắp xếp các phần tử của mảng
60
5.7 While
61
5.7 For
62
5.8 OPP (hướng đối tượng)
Loạ i xe
Màu xe
Loạ i lố p
63
5.8 Class
6. Chúng
Viết một class
ta có đơn
class giảnvới các thuộc tính như name, age, address ở trong file opp.py
person
Chạy file với lệnh $ python3 opp.py và được kết quả như sau
64
5.8 Nhập vào class nhiều người cùng lúc
65
5.8 Sắp xếp theo họ tên
Hãy in ra thông tin cơ bản về mình như tên, tuổi, ngày tháng, nơi làm việc
#1
print("B1")
print("====== Ngay2 IoT Basic =====")
print("LHV Company - Tinasoft Vietnam")
print("Dia chi: 110 Trangphu, Hadong, Hanoi")
69
BT 2
Nhập vào năm sinh bất kỳ và tính ra số tuổi tương ứng, nếu số năm vượt quá số năm
hiện tại thì báo lỗi và bắt nhập lại
#2
print("B2")
while 1:
a = int(input("Nhap vao nam sinh: "))
if(a>2019):
print("Nhap lai nam sinh!!!")
else:
print("Ban {} tuoi".format(2019-a))
break
70
BT 3
Viết hàm tính bình phương của một số được nhập vào từ bàn phím
#3
print("B3")
def binh_phuong(a):
return a*a
a = int(input("Nhap a: "))
print("Binh phuong cua {} la: {}".format(a, binh_phuong(a)))
71
BT 4
Viết chương trình in ra một bảng cửu chương được nhập vào từ bàn phím
#4
print("B4")
a = int(input("Nhap vao so a: "))
print("Bang cuu chuong nhan {} la: ".format(a))
for i in range(1, 11):
print("{} x {} = {}".format(a, i, a*i))
72
BT 5
Hãy viết một ứng dụng máy tính đơn giản có thể tính nhân chia công trừ hai số nguyên
và cho ra kết quả
Gợi ý: đầu vào gồm hai số và phép tính
73
BT 5
#5
print("B5")
a = float(input("a = "))
b = float(input("b = "))
while 1:
cal = input("Phep tinh: ")
if( cal == 'tru'):
print("a tru b bang {}".format(a-b))
break
elif( cal == 'cong'):
print("a cong b bang {}".format(a+b))
break
elif( cal == 'nhan'):
print("a nhan b bang {}".format(a*b))
break
elif( cal == 'chia'):
print("a chia b bang {}".format(a/b))
break
else: 74
print("Nhap lai phep tinh")
BT 6
#6
print("B6")
a = int(input("Bay gio la thang may? "))
if a<3 and a>=1:
print("Bay gio dang la mua xuan")
elif a>3 and a<=6:
print("Bay gio dang la mua he")
elif a>6 and a<=9:
print("Bay gio dang la mua thu")
elif a>9 and a<=12:
print("Bay gio dang la mua dong")
else:
print("Thang nhap vao phai tu 1 toi 12") 75
BT 7
Viết chương trình in ra các số chẵn trong khoảng từ 100 tới 600
Gợi ý: dùng hàm range(100, 600)
#7
print("B7")
print("Cac so chan trong khoang tu 100 toi 600 la")
for i in range(100, 600):
if i%2 == 0:
print(i)
76
BT 8
Nhập vào độ dài 3 cạnh và kiểm tra xem chúng có thể tạo ra một tam giác không
#8
print("B8")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
if a+b>c and a+c>b and b+c>a:
print("Ba canh a, b, c co the tao thanh mot tam giac")
else:
print("Ba canh a, b, c khong the tao ra mot tam giac")
77
BT 9
Viết chương trình nhập vào một số và in ra xem nó có chia hết cho 2, 3, 5 không.
Nếu có thì in ra là chia hết cho 2, 3 hay 5 còn nếu không thì in ra là không chia hết
#9
print("B9")
a = int(input("a = "))
if a%5 == 0:
print("a chia het cho 5")
if a%2 == 0:
print("a chia het cho 2")
if a%3 == 0:
print("a chia het cho 3")
if a%2!=0 and a%2!=0 and a%5!=0:
print("a khong chia het cho 2, 3 va 5")
78
BT 10
Nhập vào một câu, chuỗi bất kỳ bao gồm cả chữ hoa và thường, in ra số các ký tự hoa,
số các ký tự chữ thường
Gợi ý: upper() là hàm biến chữ thường thành chữ hoa, hàm lower() ngược lại
#10
print("B10")
a = input("Nhap vao chuoi: ")
up = low = 0
for i in a:
if i.islower():
low += 1
elif i.isupper():
up += 1
else:
pass
print("So ky tu hoa la: {}".format(up)) 79
print("So ky tu thuong la: {}".format(low))
BT 11
Giả sử bạn có một cơ sở dữ liệu, hãy kiểm tra xem dữ liệu nhập vào bao gồm
username và password có trong cơ sở dữ liệu không, nếu không thì in ra không
có, nếu có nhưng password hoặc username sai thì in ra sai password hoặc
username
80
#11
BT 11 print("B11")
#database
BT 11 Database
user1 = "LHV"
pawd1 = "110tranphu"
user2 = "tinasoft"
pawd2 = "vietnam"
#check input
user = input("Username: ")
pawd = input("Password: ")
if user == user1:
if pawd == pawd1:
print("Welcome {}".format(user1))
else:
Kiểm tra điều kiện print("Sai password")
else:
print("User khong ton tai")
BT 12
Nhập vào chuỗi, ký tự, số, v.v chỉ dừng lại khi gặp từ “none”,”NONE hoặc “None” và
in ra các mảng được sắp xếp theo thứ tự từ điển
Gợi ý: dùng hàm sort() để sắp xếp
#12
print("B12")
a = []
while 1:
x = input("nhap chuoi bat ky: ")
if x != 'none' or x != 'NONE' or x != 'None':
a.append(x)
else:
break
a.sort()
print("Chuoi a sau khi sap xep la: {}".format(a))
82
BT 13
Hãy viết một ứng dụng tính tiền đơn giản, nhập mệnh giá tiền vào, giá trị món hàng và
in ra tiền cần phải trả lại
Lưu ý: tiền chỉ đầu vào chỉ có các giá trị như 1000đ, 2000đ, 5000đ, 10.000đ, 20.000đ,
50.000đ, 100.000đ, ….
83
BT 13
#13
print("B13")
b = float(print("Gia tri don hang: "))
while 1:
a = float(input("Khach dua: "))
if a<b:
print("Khach dua thieu tien")
elif a == 1000:
print("Tra lai khach {}d".format(1000-b))
break
elif a == 2000:
print("Tra lai khach {}d".format(2000-b))
break
elif a == 5000:
print("Tra lai khach {}d".format(5000-b))
break
elif a == 10000:
print("Tra lai khach {}d".format(10000-b))
break
elif a == 20000:
print("Tra lai khach {}d".format(20000-b)) 84
break
BT 14
Giả sử bạn là chủ nhà nghỉ, hãy viết chương trình tính số tiền mà một khách phải trả
với ngày thuê, loại phòng và giá dịch vụ đi kèm. Có 3 loại phòng là đơn, đôi và VIP
với giá khác nhau. Loại phòng, số ngày và giá dịch vụ nhập vào từ bàn phím, in ra số
tiền
85
BT 14
#14
print("B14")
ng_thue = int(input("So ngay thue phong: "))
dich_vu = float(input("Tien dich vu: "))
while 1:
loai = input("Loai phong: ")
if loai == 'don':
print("Khach phai tra
{}d".format(ng_thue+100000+dich_vu))
break
elif loai == 'doi':
print("Khach phai tra
{}d".format(ng_thue+150000+dich_vu))
break
elif loai == 'VIP':
print("Khach phai tra
{}d".format(ng_thue+200000+dich_vu))
break
else:
86
print("Nhap lai loai phong")
BT 15
Viết class hcn bao gồm các thuộc tính như chiều dài, chiều rộng được nhập vào từ bàn
phím và in ra diện tích của hình chữ nhật đó
#15
print("B15")
class hcn:
def __init__(self):
self.ch_dai = ""
self.ch_rong = ""
def input(self):
self.ch_dai = float(input("Chieu dai: "))
self.ch_rong = float(input("Chieu rong: "))
def output(self):
return self.ch_dai * self.ch_rong
a = hcn()
a.input() 87
print("Dien tich hinh chu nhat la: {}".format(a.output()))
BT 16
Viết một class nhận vào một chuỗi sau đó in ra chuỗi đó được viết hoa
Gợi ý: dùng hàm upper() để chuyển chữ thường thành chữ in hoa
#16
print("B16")
class in_hoa(object):
def __init__(self):
self.s = ""
def input(self):
self.s = input("Nhap vao chuoi: ")
def chuyen(self):
return self.s.upper()
a = in_hoa()
a.input()
print("Chuoi sau khi chuyen la: {}".a.chuyen()) 88
BT 17
Hãy lập một class hinhtron và in ra diện tích và chu vi của hình tròn đó
#17
print("B17")
pi = 3.14
class hinhtron(object):
def __init__(self):
self.bk = ""
def input(self):
self.bk = float(input("Ban kinh: "))
def cal(self):
c_vi = 2 * pi * self.bk
dt = self*bk * self*bk
return c_vi, dt
b = hinhtron()
b.input()
data = b.cal()
print("Dien tich hinh tron la: {}".format(data[1]))
print("Chu vi hinh tron la: {}".format(data[0])) 89
Tổng kết
• Raspberry Pi
• Cách dung SSH-PuTTY và XRDP-Remote Desktop Connection
• Terminal và Command Line trên Pi
• GPIO pins trên Pi
• Các chuẩn giao tiếp được hỗ trợ trên Pi
• Python cơ bản và bài tập
90
91