Professional Documents
Culture Documents
MỤC LỤC..................................................................................................................1
DANH MỤC HÌNH ẢNH..........................................................................................3
CHƯƠNG 1: CƠ SỞ THỰC HIỆN ĐỀ TÀI..............................................................6
1.1. Đặt vấn đề..............................................................................................................................6
1.2. Tính cấp thiết của đề tài.........................................................................................................6
1.3. Mục tiêu nghiên cứu...............................................................................................................6
1.4. Nội dung nghiên cứu:.............................................................................................................7
1.5. Giới thiệu về Raspberry Pi......................................................................................................7
1.5.1. Lịch sử ra đời và phát triển..............................................................................................7
1.5.2. Raspberry Pi 4B................................................................................................................9
1.5.3. Một số ứng dụng của Raspberry Pi 4B...........................................................................12
1.6. Phần mềm và hệ điều hành..................................................................................................13
1.7. Ngôn ngữ lập trình...............................................................................................................18
1.8. Các phần mềm hỗ trợ làm đồ án..........................................................................................20
1.8.1. Thony Python IDE..........................................................................................................20
1.8.2. phần mềm mô phỏng Proteus.......................................................................................21
CHƯƠNG 2: LINH KIỆN SỬ DỤNG TRONG CÁC BÀI THỰC HÀNH.............24
2.1. Thực hành điều khiển LED đơn, Động cơ, nút bấm..............................................................24
2.1.1. Led đơn..........................................................................................................................24
2.1.2. Nút nhấn........................................................................................................................25
2.1.3. Động cơ:........................................................................................................................25
2.2. Thực hành với cảm biến nhiệt độ, độ ẩm.............................................................................27
2.3. Thực hành Cảm biến siêu âm...............................................................................................28
2.4. Thực hành với camera..........................................................................................................29
2.5. Các linh kiện khác.................................................................................................................30
2.5.1. Nguồn............................................................................................................................30
CHƯƠNG 3: XÂY DỰNG BÀI THỰC HÀNH VỚI RASPBERRY PI 4..............32
3.1. Hướng dẫn kết nối phụ kiện, khởi động Rasspberry pi.........................................................32
3.1.1. Kết nối phụ kiện.............................................................................................................32
3.1.2. Khởi động, cài đặt hệ điều hành cho Raspberry Pi........................................................34
3.2. Giới thiệu module thực hành với Raspberry Pi.....................................................................40
3.3. Thực hành điều khiển LED đơn, Động cơ, nút bấm..............................................................43
1
3.3.1. Lập trình điều khiển 8 Led đơn:.....................................................................................43
3.3.2. Giao tiếp nút nhấn:........................................................................................................45
3.3.3. điều khiển động cơ DC thông qua module L298n.........................................................48
3.4. Thực hành với cảm biến nhiệt độ, độ ẩm.............................................................................52
3.5. Thực hành Cảm biến siêu âm...............................................................................................53
3.6. Thực hành với camera..........................................................................................................55
3.7. Thực hành với cơ sở dữ liệu cơ bản.....................................................................................59
3.8. Thực hành với Server Raspberry...........................................................................................66
ĐÁNH GIÁ KẾT QUẢ............................................................................................70
TÀI LIỆU THAM KHẢO........................................................................................71
2
DANH MỤC HÌNH ẢNH
Hình 1.1. Board Rasperberry Pi 3 Model B ............................................................14
Hình 1.2 Rasberry Pi ...............................................................................................14
Hình 1.3 Tổng quan về Raspberry Pi 4 Model B .....................................................15
Hình 1.4 Vị trí của các chân chức năng của Raspberry Pi 4B ................................16
Hình 1.5 Chức năng từng chân của Raspberry Pi 4B .............................................17
Hình 1.6 Sơ đồ kết nối PI .........................................................................................19
Hình 1.7 Hệ điều hành Raspbian .............................................................................20
Hình 1.8 Hệ điều hành MATE Ubuntu .....................................................................21
Hình 1.9 Hệ điều hành Ubuntu ................................................................................21
Hình 1.10 Hệ điều hành Pidora ...............................................................................22
Hình 1.11 Hệ điều hành ARM Linux ARM ..............................................................22
Hình 1.12 Hệ điều hành Gentoo Linux ....................................................................23
Hình 1.13 Hệ điều hành Android............................................................................. 23
Hình 1.14 Giao diện Chromium OS .........................................................................23
Hình 1.15 Ngôn ngữ python .....................................................................................24
Hình 1.16 Giao diện làm việc .................................................................................25
Hình 1.17 Proteus Labcenter Electronics ................................................................27
Hình1.18 Giao diện chính của Proteus ....................................................................28
Hình 2.1 Led đơn .....................................................................................................29
Hình 2.2 Nút nhấn 2 chân ........................................................................................30
Hình 2.3 Module L298 .............................................................................................30
Hình 2.4 động cơ DC giảm tốc vàng .......................................................................31
Hình 2.5 Cảm biến DHT 11..................................................................................... 32
Hình 2.6 DHT11 pino out. ......................................................................................33
Hình 2.7 cảm biến siêu âm HY-SRF05.................................................................... 33
Hình 2.8 Module Pi camera .....................................................................................34
Hình 2.9 nguồn adapter ...........................................................................................35
3
Hình 3.1 Màn hình 7inch .........................................................................................37
Hình 3.2 Kết nối nguồn, HDMI giữa Raspberry Pi với màn hình ...........................38
Hình 3.3 Kết nối chuột và bàn phím với Raspberry Pi ............................................38
Hình 3.4 Kết nối đầy đủ các phụ kiện với Raspberry PI .........................................39
Hình 3.5 Bộ nguồn chính hãng của Raspberry Pi................................................... 39
Hình 3.6 Kết nối nguồn cho Raspberry Pi ...............................................................40
Hình 3.7 Module thực hành chính ...........................................................................45
Hình 3.8 Khối GPIO và Pi .......................................................................................46
Hình 3.9 Màn hình hiển thị ......................................................................................46
Hình 3.10 Khối led đơn ............................................................................................47
Hình 3.11 Khối phím bấm ........................................................................................47
Hình 3.12 Khối động cơ ...........................................................................................47
Hình 3.13 Khối cảm biến siêu âm ............................................................................47
Hình 3.14 Khối DHT 11 ...........................................................................................48
Hình 3.15 Khối nguồn ..............................................................................................48
Hình 3.16 giao tiếp 8 Led đơn .................................................................................48
Hình 3.17 Lưu đồ thuật toán điều khiển 8 Led .......................................................49
Hình 3.18 Sơ đồ nguyên lý giao tiếp 8 nut bấm .......................................................51
Hình 3.19: Lưu đồ thuật toán giao tiếp 8 nút bấm ..................................................51
Hình 3.20 Sơ đồ nguyên lý giao tiế L298N ..............................................................53
Hình 3.21 Lưu đồ thuật toán giao tiếp L298N .........................................................54
Hình 3.22 Sơ đồ nguyên lý bài 2 .............................................................................57
Hình 3.23 Lưu đồ thuật toán bài 2 ...........................................................................57
Hình 3.24 sơ đồ nguyên lý .......................................................................................58
Hình 3.25 Lưu đồ thuật toán bài 3 ...........................................................................58
Hình 3.26 chân cắm module máy ảnh ......................................................................60
Hình 3.27 module máy ảnh ......................................................................................60
Hình 3.28 Logo phpmyAdmin ..................................................................................63
4
Hình 3.29 Kết quả cấu hình thành công cơ sở dữ liệu ............................................70
Hình 3.30 thiết lập trang web server thành công .....................................................73
5
CHƯƠNG 1: CƠ SỞ THỰC HIỆN ĐỀ TÀI
6
1.3. Mục tiêu nghiên cứu
Nghiên cứu máy tính nhúng Raspberry và ứng dụng phục vụ môn học Máy
tính nhúng và ứng dụng trong chương trình đào tạo của khoa. Giúp sinh viên có thể
hiểu rõ cách thức hoạt động trong việc lập trình cho vi máy tính nhúng, có kiến thức
căn bản cho những môn học về sau.
- Nẵm rõ kiến thức tổng quan kiến trúc về Raspberry Pi và cách hoạt động.
- Có kiến thức nền tảng về lập trình nhúng và quy trình giải quyết bài toán.
- Các sinh viên có điều kiện được thực hành trực tiếp thực hành trên phần
cứng.
7
image hoặc Brandy Basic clone cho Linux), C, C++, Java, Perl và Ruby. Tính đến
ngày 08/06/2015, khoảng 5-6.000.000 mạch Raspberry Pi đã được bán. Khi đã trở
thành máy tính cá nhân bán chạy nhanh nhất của Anh, Raspberry Pi là thiết bị được
giao nhiều thứ hai sau Amstrad PCW, "Personal Computer Word-processor", bán
được 8 triệu chiếc.
Vào đầu tháng 2 năm 2015, thế hệ tiếp theo của Raspberry Pi, Raspberry Pi
2, đã được phát hành. Board máy tính mới này đầu tiên chỉ có một cấu hình (model
B) và trang bị SoC Broadcom BCM2836, với một nhân ARM Cortex-A7 CPU 4 lõi
và một VideoCore IV dual-core GPU; 1 GB bộ nhớ RAM với thông số kỹ thuật còn
lại tương tự như của các thế hệ model B+ trước đó. Raspberry Pi 2 vẫn giữ nguyên
giá $35 so với model B, với model A+ giá $20 vẫn còn được bán.[cần dẫn nguồn]
Hầu hết các mạch Pi được sản xuất tại một nhà máy Sony tại Pencoed, Wales; một
số được sản xuất tại Trung Quốc hoặc Nhật Bản.
Ngày 29/01/2016, Raspberry Pi Foundation chính thức ra mắt Raspberry Pi 3
với rất nhiều điểm cải tiến mới, hỗ trợ Wifi và Bluetooth sẵn trên board
mạch. Thông
tin cấu hình đặc trưng của Raspberry Pi 3:
- Broadcom BCM2837 chipset running at 1.2 GHz.
- 64-bit quad-core ARM Cortex-A53.
- 802.11 b/g/n Wireless LAN; Bluetooth 4.1 (Classic & Low Energy).
- Dual core Videocore IV® Multimedia co-processor; 1 GB LPDDR2
memory.
- Hỗ trợ ARM GNU/Linux distributions và Windows 10 IoT.
- MicroUSB connector for 2.5 A power supply.
- 1 x 10/100 Ethernet port; 1 x HDMI video/audio connector.
- 1 x RCA video/audio connector; 4 x USB 2.0 ports; 40 GPIO pins.
- Chip antenna; DSI display connector; MicroSD card slot.
- Dimensions: 85 x 56 x 17 mm.
8
Hình 1.1. Board Rasperberry Pi 3 Model B
1.5.2. Raspberry Pi 4B
Raspberry Pi 4B là một sản phẩm mới nhất trong họ máy tính nhúng
Raspberry Pi, nó được ra đời vào cuối tháng 6/2019. Cấu hình của Raspberry Pi 4B
nổi bật với vi mạch Broadcom BCM2711, Cortex-A72 (ARM v8) 4 nhân 64 bit với
tốc độ xử lý là 1,5GHz, đây là dòng vi mạch có tốc độ xử lý nhanh nhất từ trước đến
nay của họ máy tính nhúng này. Phiên bản máy tính nhúng Raspberry Pi này hỗ trợ
hai cổng micro-HDMI, hỗ trợ 2 cổng USB 2.0 và 2 cổng USB 3.0, hỗ trợ Wifi
chuẩn IEEE 802.11ac với Dual-Band 2,4GHz và 5GHz, hỗ trợ Bluetooth 5.0, hỗ trợ
cổng Ethernet tốc độ cao (Gigabit Ethernet) và hỗ trợ PoE (Power over Ethernet).
9
- Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz.
- Có 3 lựa chọn RAM: 2GB, 4GB hoặc 8GB LPDDR4-2400 SDRAM.
- Wifi chuẩn 2.4 GHz và 5.0 GHz IEEE 802.11ac. Bluetooth 5.0, BLE.
- Cổng mạng Gigabit Ethernet.
- 2 cổng USB 3.0 và 2 cổng USB 2.0.
- Chuẩn 40 chân GPIO, tương thích với các phiên bản trước.
- Hỗ trợ 2 cổng ra màn hình chuẩn Micro HDMI với độ phân giải lên tới
4K.
- Cổng MIPI DSI.
- Cổng MIPI CSI.
- Cổng AV 4 chân.
- H.265 (4kp60 decode), H264 (1080p60 decode, 1080p30 encode).
- OpenGL ES 3.0 graphics.
- Khe cắm Micro-SD cho hệ điều hành và lưu trữ.
- Nguồn điện DC 5V – 3A DC chuẩn USB-C.
- 5V DC via GPIO header (minimum 3A*).
- Hỗ trợ Power over Ethernet (PoE) (yêu cầu có PoE HAT).
10
Hình 1.3 Tổng quan về Raspberry Pi 4 Model B
Một số điểm nâng cấp của Raspberry Pi 4 Model B
- CPU mạnh hơn.
- Hỗ trợ chuẩn USB 3.0.
- RAM DDR4 thay vì DDR2 như cũ.
- Cổng mạng Ethernet Gigabit.
- Có 2 cổng ra màn hình với độ phân giải 4K.
- Nguồn điện yêu cầu 5V – 3A thay vì 5V 2.5A như cũ.
- Bluetooth nâng cấp từ phiên bản 4.0 lên 5.0.
Raspberry Pi 4B được tích hợp sẵn một đầu nối có 40 chân chức năng, bao
gồm: 26 chân xuất/nhập đa chức năng (GPIO) có một số chân tích hợp thêm các
tính năng đặc biệt (như là PWM, UART, SPI, I2C), 2 chân ID cho I2C EEPROM, 2
chân nguồn 5V, 2 chân nguồn 3,3V, 8 chân GND.
Hình 1.4 Vị trí của các chân chức năng của Raspberry Pi 4B
11
Hình 1.5 Chức năng từng chân của Raspberry Pi 4B
12
Với những chiếc máy in cũ kĩ ta hoàn toàn vẫn có thể giúp nó kết nối không
dây thông qua việc sử dụng Raspberry Pi cùng với một số phần mềm máy chủ in cơ
bản. Thậm chí với việc kết hợp này ta còn có thể thêm tính năng AirPrint cho máy
in để hỗ trợ được nhiều thiết bị khác như máy tính bảng hay smart phone.
Các tiện ích với camera.
Chỉ với một module máy ảnh chuyện dụng kết hợp với Raspberry Pi hoàn
toàn có thể tạo ra các video stop motion, xu thế đang rất phổ biến trên mạng xã hội
hiện nay. Hơn thế nữa nếu như bạn kết hợp thêm chúng với một script khác chúng
ta hoàn toàn có thể tạo các video time lapse. Người dùng có thể thực hiện quay bất
cứ thứ gì như hoa trong vườn, trái cây trong bát, người đi ngang đường, đám mây
trên bầu trời hoặc thời tiết thay đổi, tất cả tùy thuộc vào sức sáng tạo của người
dùng
Raspberry Pi và game
Với những game thủ hay những người đam mê các trò chơi thì Raspberry Pi
thật sự có nhiều ý nghĩa trong lĩnh vực này. Raspberry Pi hoàn toàn có thể trở thành
một chiếc máy chơi game với sự gọn nhẹ và mạnh mẽ đáp ứng các mục đích sử
dụng khác nhau. Không đơn giản là máy trò chơi những game đơn giản, Raspberry
Pi với raspbian có thể được sử dụng như một máy chủ game.
Hệ thống an ninh, giám sát mạng
Với module camera được đính kèm trong Raspberry Pi Camera hoặc một
webcam USB thông thường, ta có thể xây dựng hệ thống an ninh chuyển động để
biết được ai đang đột nhập vào nhà. Những thẻ nhớ dung lượng cao sẽ được sử
dụng để có thể lưu trữ mọi cảnh quay từ thiết bị. Thậm chí ta cũng có thể thiết lập
để hệ thống an ninh gửi cảnh báo qua email.
Bên cạnh đó Raspberry Pi góp phần tích cực trong việc xây dựng các giải
pháp giám sát mạng. ta có thể giám sát thời gian, xem hình ảnh của các thiết bị trên
mạng.
Những chiếc Smart TV
hoàn toàn có thể biến những chiếc TV cũ của nhà mình thành những smart
TV. Để TV trở nên "thông minh", nó có thể phát các phương tiện từ thiết bị lưu trữ
USB hoặc flash, phát trực tuyến từ Netflix, YouTube, các trang web tương tự và
cung cấp điều khiển từ xa. Smart TV cũng cung cấp tin tức và thời tiết và hỗ trợ
PVR, mà một Raspberry Pi có thể quản lý nhờ thẻ USB TV.
Ngoài những ứng dụng tiêu biểu kể trên Raspberry Pi còn có rất nhiều các
ứng dụng khác như: làm máy chủ Web, giúp tự làm hộp NAS, xây dựng hệ thống tự
động hóa giá đình, xây dựng máy thu AirPlay,…
13
1.6. Phần mềm và hệ điều hành
a. Cấu trúc phần mềm
Thiết bị Raspberry Pi sử dụng hệ điều hành dựa trên nền tảng Linux. Phần
cứng GPU được truy cập thông qua Image Firmware được nạp vào GPU vào lúc
khởi động từ thẻ SD. Image Firmware được gọi là đốm màu nhị phân (Binary
Blob), trong khi ARM liên kết với mã trình điều khiển Linux ban đầu được dựa vào
nguồn đóng. Một phần của mã điều khiển đã được giải phóng, tuy nhiên nhiều
chương trình điều khiển thực tế được thực hiện bằng cách sử dụng mã nguồn đóng
GPU. Phần mềm ứng dụng sử dụng các cuộc gọi đến thư viện thời gian chạy nguồn
đóng (OpenMax, OpenGL ES hay OpenVG). Nó sẽ gọi một trình điều khiển nguồn
mở bên trong lõi Linux, sau đó gọi mã điều khiển nguồn đóng GPU VideoCore IV.
Các API của trình điều khiển lõi là cụ thể cho những thư viện đóng. Các ứng dụng
Video sử dụng OpenMax, ứng dụng 3D sử dụng OpenGL ES và ứng dụng 2D sử
dụng OpenVG và cả hai lần lượt sử dụng EGL.OpenMax và EGL sử dụng trình
điều khiển nền tảng mã nguồn mở.
14
OpenVG là một thư viện bản vẽ véc tơ 2D, cũng thường được sử dụng trên
máy tính để bàn và các hệ thống nhúng. Một lần nữa, được định nghĩa bởi Khronos
Group.
EGL là một giao diện lập trình ứng dụng giữa Khronos và API như OpenGL
ES hay OpenVG và hệ thống cửa sổ nền tảng nguồn gốc cơ bản.
Openmax cung cấp một tập hợp các API với khái niệm trừu tượng của người
dùng cho những thói quen sử dụng trong âm thanh, video, và xử lý hình ảnh tĩnh.
OpenMax định nghĩa ba lớp, đây là lớp IL, cung cấp một giao diện giữa các khuôn
khổ đa phương tiện như Gstreamer và một tập hợp các thành phần đa phương tiện
(như bảng mã).
Openmax IL không có một API chuẩn ở giai đoạn này, vì vậy đó là một cài
đặt tùy chỉnh. Các thư viện này được cung cấp bởi chip SoC Broadcom.
b. Hệ điều hành của Raspberry Pi
Hệ điều hành Raspbian:
Một hệ điều hành dựa trên Debian miễn phí được tối ưu hóa cho phần cứng
của Raspberry Pi, Raspbian đi kèm với tất cả các chương trình và tiện ích cơ bản
bạn mong đợi từ một hệ điều hành có mục đích chung. Được hỗ trợ chính thức bởi
nền tảng Raspberry, HĐH này nổi tiếng với hiệu năng nhanh và hơn 35.000 gói.
15
tính để bàn MATE đi kèm ứng dụng thiết yếu như trình quản lý tệp, trình soạn thảo
văn bản, trình xem ảnh, giám sát hệ thống, trình xem tài liệu và thiết bị đầu cuối.
16
Hình 1.10 Hệ điều hành Pidora
Hệ điều hành ARM Linux ARM
Một phiên bản Arch Linux được chuyển cho máy tính ARM, Arch Linux
ARM cung cấp phiên bản 6 và 7 cho Raspberry Pi và Raspberry Pi 2 tương ứng.
Triết lý thiết kế của nó thúc đẩy sự đơn giản và tập trung vào người dùng, đảm bảo
rằng người dùng Linux có toàn quyền kiểm soát hệ thống.
17
Hình 1.12 Hệ điều hành Gentoo Linux
Android: Các phiên bản Android khác nhau có sẵn cho Pi, với các phiên bản
hiện tại dựa trên Android 7.0 Nougat.
21
Hình 1.11 Proteus Labcenter Electronics
Phần mềm bao gồm 2 mảng chính là ISIS cho phép mô phỏng mạch điện tử
và ARES dùng để vẽ mạch in.
22
Hình1.18 Giao diện chính của Proteus
23
CHƯƠNG 2: LINH KIỆN SỬ DỤNG TRONG CÁC BÀI THỰC HÀNH
2.1. Thực hành điều khiển LED đơn, Động cơ, nút bấm
24
Dòng điện phù hợp với đèn LED 5mm thường ở mức 20mA, tối đa có thể tới
30mA. Chúng ta có thể kiểm soát dòng điện bằng cách đặt một điện trở nối tiếp với
đèn LED. Nó giúp dòng điện cấp cho đèn luôn ở mức cho phép.
25
Mạch điều khiển động cơ L298 DC Motor Driver có khả năng điều khiển 2
động cơ DC, dòng tối đa 2A mỗi động cơ, mạch tích hợp diod bảo vệ và IC nguồn
7805 giúp cấp nguồn 5VDC cho các module khác
Thông số kỹ thuật:
+ IC chính: L298
+ Điện áp hoạt động: 5~30VDC
+ Công suất tối đa: 25W 1 cầu (lưu ý công suất = dòng điện x điện áp nên áp
cấp vào càng cao, dòng càng nhỏ, công suất có định 25W).
+ Dòng tối đa cho mỗi cầu H là: 2A
+ Mức điện áp logic: Low -0.3V~1.5V, High: 2.3V~Vss
+ Kích thước: 43x43x27mm
b. Động cơ 5V DC.
26
125 rpm 3VDC (bánh 66mm: 26rpm)
208 rpm 5VDC (bánh 66mm: 44rpm)
+ Kích thước: 64 * 19 * 22.6mm (L * W * H)
+ Trọng lượng: 27g
27
Hình 2.6 DHT11 pino out.
THÔNG SỐ KỸ THUẬT:
+ Ống kính tiêu cự cố định
+ Cảm biến độ phân giải 8 megapixel để chụp ảnh kích thước 3280 x 2464
+ Hỗ trợ video 1080p30, 720p60 và 640x480p90
+ Kích thước 25mm x 23mm x 9mm
+ Trọng lượng chỉ hơn 3g
+ Kết nối với Raspberry Pi qua cáp ribbon dài 15 cm đi kèm
+ Mô-đun máy ảnh được hỗ trợ với phiên bản Raspbian mới nhất
2.5.1. Nguồn
Adapter là một thiết bị điện tử dùng để chuyển đổi dòng điện có điện áp cao
(220V) xuống dòng điện có điện áp thấp (24V,19V,12V,5V) hơn. Thiết bị này gọi
là adapter.
30
Một adapter có 2 thông số chính đó là điện áp và cường độ dòng điện. Mình
sẽ giải thích các thông số này như sau:
Điện Áp:
Đây là mức điện áp tối đa để một thiết bị hoạt động. Ví dụ trên cục nguồn
camera nó ghi 12V thì điều đó có nghĩa là . Một dòng điện xoay chiều (AC)
220V qua cục adapter nó sẽ chuyển đổi xuống thành dòng điện 1 chiều (DC)
12V. Để cung cấp cho thiết bị hoạt động bình thường.
Thông số thứ 2 đó là Cường Độ Dòng Điện:
Cường đồ dòng điện đo bằng đơn vi Ampe (A). Chỉ số 2A được ghi trên
adaptor (adapter) được hiểu là cường độ dòng điện phải đạt 2A thì thiết bị
của bạn mới hoạt động ổn định được.
31
CHƯƠNG 3: XÂY DỰNG BÀI THỰC HÀNH VỚI RASPBERRY PI 4
3.1. Hướng dẫn kết nối phụ kiện, khởi động Rasspberry pi
32
Hình 3.2 Kết nối nguồn, HDMI giữa Raspberry Pi với màn hình
Kết nối bàn phím, chuột cho Rasberry pi:
Ngày nay phát triển rất nhiều các loại bàn phím và chuột hiện đại và
Raspberry Pi thì không thể thiếu những món phụ kiện này. Trên Raspberry Pi trang
bị tới 4 cổng USB và không khó khăn để ta kết nối Pi và bàn phím, chuột
33
Hình 3.4 Kết nối đầy đủ các phụ kiện với Raspberry PI
34
Trên raspberry Pi đã ra sẵn ổ cắm nguồn
36
Thiết bị phần cứng:
+ 1 board mạch Raspberry Pi : trong bài viết này mình sử dụng Raspberry Pi
3 Model B.
+ 1 Thẻ nhớ Micro SD 16GB Class 10. Pi có thể làm việc với thẻ nhớ lên tới
32Gb. Dung lượng thẻ nhớ tối thiểu 8GB. Tốc độ của thẻ nhớ nên từ Class
10 trở lên để hiệu năng sử dụng bộ nhớ của Pi là tốt nhất.
+ 1 Cable HDMI (có thể sử dụng 1 Cable HDMI - VGA)
+ 1 màn hình có cổng HDMI (Có thể sử dụng màn hình desktop với đầu vào
là cổng VGA)
+ 1 bộ nguồn cấp 5V/2A micro-USB cho Raspberry Pi.
+ Bàn phím và chuột : sử dụng trong quá trình setup ban đầu cho Raspberry Pi.
37
Khi đã tải xong, ta cần Flash image vào thẻ nhớ SD để cài hệ điều hành. Có
nhiều phần mềm hỗ trợ chúng ta làm điều này như: Win32DiskImage,Raspberry Pi
Imager, BalenaEtcher (download ở đây: https://www.balena.io/etcher/),… Mình hay
dùng Balena vì nó khá đơn giản để cài đặt và sử dụng, nó hỗ trợ Format thẻ nhớ
trong khi ghi nên bạn không cần dùng đến SD formatter. Đây là giao diện của
BalenaEtcher:
Tiếp theo, ghi image vào SD card (không cần giải nén file image).
Chọn Flash from file, hướng đến thư mục mà bạn đã lưu image, chọn file UnZip,
chọn Open.
38
Tiếp đến, chọn ổ SD card (select target).
Sau khi chọn xong thì click FLASH. Quá trình này sẽ mất khoảng 5-10 phút tùy vào
máy của bạn.
Sau khi cài xong thẻ, rút thẻ ra khỏi máy tính và cắm vào Raspberry Pi. Bạn
sẽ cần một màn hình hiển thị để thực hiện các thiết lập cơ bản ban đầu cho
Raspberyr Pi . Lưu ý nên kết nối HDMI, Touch đến màn hình, cắm thẻ nhớ rồi mới
cắm và cấp nguồn cho Raspberry. Thời gian boot lần đầu tiên sẽ lâu hơn một chút
so với các lần khởi động sau này.
Giao diện Desktop khi khởi động lần đầu tiên.
39
Như vậy là ta đã cài đặt xong hệ điều hành cho Raspberry Pi
40
Khối GPIO:
41
Khối Led đơn:
42
Hình 3.13 Khối cảm biến siêu âm
Khối cảm biến siêu âm bao gồm 4 chân: 5V, GND, TRIG, ECHO
Khối DHT11:
3.3. Thực hành điều khiển LED đơn, Động cơ, nút bấm
43
Hình 3.16 giao tiếp 8 Led đơn
Led mắc theo kiểu tích cực ở mức 1, các chân âm nối với đất, chân dương nối với
Pi.
Kết nối như sau: Led 1 -> GPIO17, Led 2 -> GPIO 18, Led 3 -> GPIO27,
Led 4 -> GPIO 22, Led 5 -> GPIO 23, Led 6 -> GPIO 24, Led 7 -> GPIO25, Led 8 -
> GPIO 4
Lập trình:
Lưu đồ thuật toán:
44
GPIO.setup(27, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(4, GPIO.OUT)
while True :
GPIO.output(17, GPIO.HIGH)
GPIO.output(18, GPIO.HIGH)
GPIO.output(27, GPIO.HIGH)
GPIO.output(22, GPIO.HIGH)
GPIO.output(23, GPIO.HIGH)
GPIO.output(24, GPIO.HIGH)
GPIO.output(25, GPIO.HIGH)
GPIO.output(4, GPIO.HIGH)
time.sleep(500)
GPIO.output(17, GPIO.LOW)
GPIO.output(18, GPIO.LOW)
GPIO.output(27, GPIO.LOW)
GPIO.output(22, GPIO.LOW)
GPIO.output(23, GPIO.LOW)
GPIO.output(24, GPIO.LOW)
GPIO.output(25, GPIO.LOW)
GPIO.output(4, GPIO.LOW)
45
Hình 3.18 Sơ đồ nguyên lý giao tiếp 8 nut bấm
BNT 1 -> GPIO17, BNT 2 -> GPIO 18, BNT 3 -> GPIO27, BNT 4 -> GPIO 22,
BNT 5 -> GPIO 23, BNT 6 -> GPIO 24, BNT 7 -> GPIO25, BNT 8 -> GPIO 4
Lập trình:
Lưu đồ thuật toán
46
Giải thích: Đầu tiên khi bắt đầu chương trình cần khai báo cấu hình chân đầu
vào cho các nút bấm. Chương trình thực hiện kiểm tra lần lượt trạng thái các nút
bấm, nếu nút bấm được nhấn (mức HIGH) thì in ra dòng kí tự trên cửa sổ terminal
Chương trình chính:
import RPi.GPIO as GPIO # Import Raspberry Pi GPIO library
GPIO.setwarnings(False) # Ignore warning for now
GPIO.setmode(GPIO.BCM) # Use physical pin numbering
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True: # Run forever
if GPIO.input(17) == GPIO.HIGH:
print("Button was pushed!")
if GPIO.input(18) == GPIO.HIGH:
print("Button was pushed!")
if GPIO.input(27) == GPIO.HIGH:
print("Button was pushed!")
if GPIO.input(22) == GPIO.HIGH:
print("Button was pushed!")
if GPIO.input(23) == GPIO.HIGH:
print("Button was pushed!")
if GPIO.input(24) == GPIO.HIGH:
print("Button was pushed!")
if GPIO.input(25) == GPIO.HIGH:
47
print("Button was pushed!")
if GPIO.input(4) == GPIO.HIGH:
print("Button was pushed!")
cứ mỗi phím bấm xuống terminnal sẽ hiển thị dòng kí tự: ("Button was pushed!")
48
Lập trình:
Lưu đồ thuật toán
49
in2 = 23
en = 25
temp1=1
GPIO.setmode(GPIO.BCM)
GPIO.setup(in1,GPIO.OUT)
GPIO.setup(in2,GPIO.OUT)
GPIO.setup(en,GPIO.OUT)
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.LOW)
p=GPIO.PWM(en,1000)
p.start(25)
print("\n")
print("The default speed & direction of motor is LOW & Forward.....")
print("r-run s-stop f-forward b-backward l-low m-medium h-high e-exit")
print("\n")
while(1):
x=raw_input()
if x=='r':
print("run")
if(temp1==1):
GPIO.output(in1,GPIO.HIGH)
GPIO.output(in2,GPIO.LOW)
print("forward")
x='z'
else:
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.HIGH)
print("backward")
50
x='z'
elif x=='s':
print("stop")
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.LOW)
x='z'
elif x=='f':
print("forward")
GPIO.output(in1,GPIO.HIGH)
GPIO.output(in2,GPIO.LOW)
temp1=1
x='z'
elif x=='b':
print("backward")
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.HIGH)
temp1=0
x='z'
elif x=='e':
GPIO.cleanup()
break
else:
print("<<< wrong data >>>")
print("please enter the defined data to continue.....")
51
3.4. Thực hành với cảm biến nhiệt độ, độ ẩm
Sơ đồ nguyên lý:
52
Chương trình chính:
import Adafruit_DHT
import time
DHT_SENSOR = Adafruit_DHT.DHT11
DHT_PIN = 7
while True:
humidity, temperature = Adafruit_DHT.read(DHT_SENSOR, DHT_PIN)
if humidity is not None and temperature is not None:
print("Temp={0:0.1f}C Humidity={1:0.1f}%".format(temperature, humidity))
else:
print("Sensor failure. Check wiring.");
time.sleep(3);
53
Hình 3.25 Lưu đồ thuật toán bài 3
Chương trình chính:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO_TRIGGER = 23
GPIO_ECHO = 24
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
GPIO.output(GPIO_TRIGGER, False)
distance = 0
def measureDistance():
GPIO.output(GPIO_TRIGGER, False)
time.sleep(0.5)
GPIO.output(GPIO_TRIGGER, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
54
start = time.time()
while GPIO.input(GPIO_ECHO) == 0:
start = time.time()
while GPIO.input(GPIO_ECHO) == 1:
stop = time.time()
elapsed = stop - start
distance = elapsed * 17150
return distance
try:
distance = measureDistance()
while True:
print (distance)
time.sleep(0.1)
distance = measureDistance()
except:
time.sleep(1)
GPIO.cleanup()
55
Hình 3.26 chân cắm module máy ảnh
Mô-đun máy ảnh Raspberry Pi
56
+ Chèn cáp băng Mô-đun máy ảnh; đảm bảo rằng các đầu nối ở dưới cùng
của cáp ruy băng hướng về phía các điểm tiếp xúc trong cổng.
+ Đẩy kẹp nhựa trở lại vị trí
Khởi động Raspberry Pi của bạn.
Chuyển đến menu chính và mở công cụ Cấu hình Raspberry Pi .
Chọn tab Giao diện và đảm bảo rằng máy ảnh được bật :
57
Mở một tệp mới và lưu nó dưới dạng camera.py.
Lưu ý: điều quan trọng là bạn không bao giờ lưu tệp dưới dạngpicamera.py .
Nhập mã sau đây:
58
Bạn có thể xoay hình ảnh theo 90, 180, hoặc 270độ. Để đặt lại hình ảnh, hãy
đặt rotationthành 0độ.
Tốt nhất là làm cho phần xem trước trong suốt một chút để bạn có thể biết
liệu có xảy ra lỗi trong chương trình của mình khi bật phần xem trước hay không.
Làm cho bản xem trước của máy ảnh nhìn xuyên qua bằng cách đặt một alphamức:
camera.start_preview(alpha=200)
Giá alphatrị có thể là bất kỳ số nào giữa 0và 255
59
+ Hỗ trợ quản lý cơ sở dữ liệu: Khởi tạo, chỉnh sửa, bổ sung các thuộc tính
(bảng, tường, tra cứu khối lượng,..).
+ Xuất và nhập dữ liệu: PHPMyAdmin cho phép người dùng xuất và nhập
dữ liệu thông qua nhiều định dạng như CSV, XML, SQL.
+ Truy vấn MySQL: Phần mềm cho phép giám sát chặt chẽ quá trình theo dõi.
+ Sao lưu và khôi phục: Hỗ trợ thao tác thủ công.
+ Ngoài hệ thống chức năng đa dạng, PHPMyAdmin còn được tích hợp chức
năng quản trị DBMS MySQL. Nhằm hỗ trợ xử lý những tình huống bất ngờ.
Ưu và nhược điểm của PHPMyAdmin:
Ưu điểm:
PHPMyAdmin có thể xem như công cụ lý tưởng để thiết lập, quản lý
hệ cơ sở dữ liệu. Phần mềm lời theo nhiều đặc quyền cho người dùng, cho
phép thực hiện truy vấn SQL, tích hợp đầy đủ chức năng quản trị.
Với PHPMyAdmin, bạn có thể đồng thời làm việc với đối tượng và
xử lý tình huống bất ngờ. Ví dụ như với SQL injection, lỗi từ phía người
dùng và tình huống database dễ dàng xử lý cùng lúc.
Nhược điểm:
Hạn chế lớn nhất của phần mềm PHPMyAdmin làm ở khả năng sao
lưu tự động cài đặt trước và phương thức lưu trữ phương tiện truyền thông.
Cụ thể, chức năng sao lưu tự động cài đặt trước hoạt động chưa thực sự ổn
định.
Phần mềm PHPMyAdmin hiện vẫn chỉ hỗ trợ sao lưu vào Local Drive
tích hợp sẵn trong hệ thống. Lưu trữ của hội thoại Save as hoạt động chưa
được mượt.
Cài đặt và thực hành với cơ sở dữ liệu trên Raspberry pi:
60
Các bước thực hành:
Cập nhật và nâng cấp
Trước khi bắt đầu quy trình cài đặt, hãy mở cửa sổ Terminal và chạy các
lệnh sau để cập nhật số Pi của bạn:
pi@raspberrypi:~ $ sudo apt update && sudo apt upgrade -y
Cài đặt Apache2 trên Raspberry Pi
Apache2 là phần mềm máy chủ web được sử dụng rộng rãi nhất. Tóm lại,
máy chủ web là phần mềm xử lý các yêu cầu truy cập trang web. Sau đó, tùy thuộc
vào trang bạn yêu cầu, máy chủ sẽ tạo tài liệu để phục vụ bạn ( .html , .php , v.v.).
Để cài đặt Apache2 trên Raspberry Pi của bạn, hãy chạy lệnh tiếp theo:
pi@raspberrypi:~ $ sudo apt install apache2 –y
Đó là nó! Apache hiện đã được cài đặt. Để kiểm tra cài đặt của bạn, hãy thay
đổi thành/var/www/htmlthư mục và liệt kê các tập tin:
pi@raspberrypi:~ $ cd /var/www/html
pi@raspberrypi:/var/www/html $ ls -al
index.html
Bạn nên có một tệp index.html trong thư mục đó. Để mở trang đó trong trình
duyệt của bạn, bạn cần biết địa chỉ IP của Raspberry Pi. Sử dụng:
pi@raspberrypi:/var/www/html $ hostname -I
61
Trong trường hợp của tôi, địa chỉ IP của Raspberry Pi là 192.168.1.86. Nếu
bạn mở địa chỉ IP RPi của mình trong bất kỳ trình duyệt nào trong mạng cục bộ của
mình, một trang web tương tự sẽ tải ( http://192.168.1.86 ):
Trong trường hợp của tôi, địa chỉ IP của Raspberry Pi là 192.168.1.86. Nếu
bạn mở địa chỉ IP RPi của mình trong bất kỳ trình duyệt nào trong mạng cục bộ của
mình, một trang web tương tự sẽ tải ( http://192.168.1.86 ):
Để lưu tệp của bạn: nhấn Ctrl+X , tiếp theo là y và nhấn Enter để thoát.
Cuối cùng, khởi động lại Apache2
pi@raspberrypi:/var/www/html $ sudo service apache2 restart
Để kiểm tra xem Apache2 có đang phục vụ các tệp .php hay không, hãy mở
địa chỉ IP của Raspberry Pi và nó sẽ hiển thị thông báo “ hello world ” từ tập lệnh
index.php được tạo trước đó.
Nếu mọi thứ đang hoạt động, bạn có thể xóa tệp index.php
khỏi/var/www/htmldanh mục:
pi@raspberrypi:/var/www/html $ sudo rm index.phpCài đặt MySQL
(MariaDB Server) trên Raspberry Pi
MySQL (thường được phát âm là My S – Q – L ) là một cơ sở dữ liệu quan
hệ mã nguồn mở phổ biến.
Cài đặt các gói Máy chủ MySQL (MariaDB Server) và PHP-MySQL bằng
cách nhập lệnh sau:
pi@raspberrypi:/var/www/html $ sudo apt install mariadb-server php-mysql -y
63
pi@raspberrypi:/var/www/html $ sudo service apache2 restart
Sau khi cài đặt MySQL (MariaDB Server), bạn nên chạy lệnh này để bảo
mật cài đặt MySQL của mình:
pi@raspberrypi:/var/www/html $ sudo mysql_secure_installation
Điều này sẽ xuất hiện trong cửa sổ Terminal của bạn:
Bạn sẽ được yêu cầu Nhập mật khẩu hiện tại cho root (nhập mật khẩu an
toàn): nhấn Enter:
+ Nhập Y và nhấn Enter để Đặt mật khẩu gốc
+ Nhập mật khẩu tại dấu nhắc Mật khẩu mới: và nhấn Enter. Quan trọng: hãy
nhớ mật khẩu gốc này, vì bạn sẽ cần nó sau này
+ Nhập Y để Xóa người dùng ẩn danh
+ Nhập Y để Không cho phép đăng nhập root từ xa
+ Nhập Y để Xóa cơ sở dữ liệu thử nghiệm và truy cập vào nó
+ Nhập Y để Tải lại các bảng đặc quyền ngay bây giờ
Khi quá trình cài đặt hoàn tất, bạn sẽ thấy thông báo: “Cảm ơn vì đã sử dụng
MariaDB!”
Cài đặt phpMyAdmin trên Raspberry Pi
phpMyAdmin là một công cụ phần mềm miễn phí được viết bằng PHP,
nhằm xử lý việc quản trị MySQL bằng giao diện web.
Để cài đặt phpMyAdmin trên Raspberry Pi, hãy nhập lệnh sau vào terminal:
pi@raspberrypi:/var/www/html $ sudo apt install phpmyadmin -y
Chương trình cài đặt PHPMyAdmin sẽ hỏi bạn một số câu hỏi. Chúng tôi sẽ
sử dụng dbconfig-common .Chọn Apache2 khi được nhắc và nhấn phím
Enter
64
+ Cấu hình phpmyadmin ? ok
+ Cấu hình cơ sở dữ liệu cho phpmyadmin với dbconfig-common ? Đúng
+ Nhập mật khẩu của bạn và nhấn OK
Trước khi có thể tải giao diện PHPMyAdmin trên Raspberry Pi, chúng tôi sẽ
cần thực hiện một số thay đổi cấu hình đối với Apache.
Để bắt đầu, chúng tôi cần chỉnh sửa Apache2.conftệp “ ”, chúng tôi có thể
thực hiện việc này bằng cách nhập thông tin sau vào thiết bị đầu cuối
sudo nano /etc/apache2/apache2.conf
Bây giờ chúng ta cần thêm dòng sau vào cuối tệp này.
Dòng này sẽ bao gồm cấu hình của PHPMyAdmin và cho phép Apache tải
và lắng nghe nó.
Include /etc/phpmyadmin/apache.conf
Để thiết lập NGINX hoạt động với PHPMyAdmin, chúng ta cần tạo một liên
kết giữa thư mục phpmyadmin và thư mục HTML gốc của chúng ta.
Để làm điều này, chúng ta cần chạy lệnh sau trên Raspberry Pi.
sudo ln -s /usr/share/phpmyadmin /var/www/html
Bây giờ bạn có thể truy cập giao diện PHPMyAdmin của Raspberry Pi từ
trình duyệt web .
Để kiểm tra điều này, hãy truy cập địa chỉ sau trong trình duyệt web yêu
thích của bạn. Sử dụng người dùng bạn đã tạo trước đó trong hướng dẫn để đăng
nhập. Không sử dụng người dùng root của bạn vì điều này bị tắt theo mặc định
Hãy nhớ thay thế Địa chỉ IP bằng Địa chỉ IP của Raspberry Pi. (Nếu bạn
không có nó, hãy chạy hostname –I lệnh trên Raspberry Pi của bạn)
65
Hình 3.29 Kết quả cấu hình thành công cơ sở dữ liệu
location ~ /\.ht {
deny all;
67
}
}Bên cạnh tên máy chủ, nơi tôi có [IP công khai của bạn], hãy nhập địa chỉ
IP công khai của bạn (bạn có thể tìm địa chỉ này bằng cách hỏi Google hoặc công
cụ tìm kiếm khác).
Sau đó, chúng tôi sẽ kiểm tra điều này và tải lại nginx.
sudo nginx -t
sudo systemctl reload nginx
Đó là tất cả những gì chúng ta cần làm ở phần cuối của số Pi!
Bước 6: Thiết lập cổng chuyển tiếp
Truy cập giao diện quản trị của bộ định tuyến (bạn sẽ cần đặt địa chỉ IP riêng
của bộ định tuyến vào trình duyệt của mình và sau đó, thường đăng nhập – hãy
kiểm tra bộ định tuyến của bạn để biết thêm thông tin). Thiết lập chuyển tiếp cổng
như vậy:
Service Port: 80
Internal Port: 80
IP Address: [your Pi's IP address]
Protocol: TCP
Common Service Port: HTTP Thay thế [địa chỉ IP của Pi của bạn] bằng –
bạn đoán nó – địa chỉ IP của Pi của bạn, bạn có thể tìm thấy địa chỉ này bằng tên
máy chủ của lệnh đầu cuối -I . Sử dụng 80 cho các cổng và RCP cho giao thức của
bạn. Các tùy chọn của bạn có thể trông hơi khác so với điều này, nhưng nó sẽ ít
nhiều dễ nhận ra.
69
ĐÁNH GIÁ KẾT QUẢ
Báo cáo Nghiên cứu máy tính nhúng Raspberry và ứng dụng đã đáp ứng
được mục tiêu, yêu cầu đặt ra của đề tài là xây dựng được các module ngoại vi để
thực hành với Raspberry. Bằng cách xây dựng phần cứng và các chương trình ứng
dụng trên nền tảng Raspberry và phần mềm lập trình IDEThony giúp người học lập
trình dễ dàng tiếp cận với thực tế khi được thực hành trên phần cứng.Dựa vào các
bài thực hành này, người học có thể kết hợp giữa các bài toán với nhau để xây dựng
thêm các bài toán khác hoặc phát triển thêm các KIT mở rộng khác, vừa đa dạng
hóa hệ thống vừa có thể thiết kế các ứng dụng thực tế.
Ưu điểm:
+ Các linh kiện sử dụng tiết kiệm năng lượng.
+ Phần mềm lập trình thân thiện, dễ sử dụng.
Nhược điểm:
+ Chưa ứng dụng được hết các chức năng, phương thức giao tiếp với
Raspberry PI
+ Kích thước của khung còn lớn.
Trong thời gian ngắn tác giả đã tìm hiểu được những chức năng cơ bản để
tạo các module thực hành Raspberry và cũng đã có thể áp dụng vào cuộc sống, do
mới tìm hiểu về Raspberry nên không thể tìm hiểu kỹ được hết các vấn đề vì vậy
vẫn còn thiếu xót các một số chức năng của Raspberry chưa được áp dụng trong các
modunle thực hành. Vì vậy các module cần được đưa vào sử dụng trong các phòng
thực hành để các sinh viên khóa sau của Khoa có thể phát triển thêm các ứng dụng
liên quan đến vấn đề Internet Of Things (IoT). Các module nhỏ trong bài cũng có
thể kết hợp với các module khác để tạo ra nhiều mạch khác ứng dụng vào thực tế
nhất các hệ thống nhà thông minh.
70
TÀI LIỆU THAM KHẢO
1]. Bài giảng Thực hanh hệ thống đo lường và điều khiển nhúng Khoa Công nghệ
điện tử và truyền (tài liệu lưu hành nội bô).
[2]. https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up/4.
[3]. Bài giảng máy tính nhúng và ứng dụng Khoa Công nghệ điện tử và truyền
thông (Tài liệu lưu hành nội bộ).
[4]. Bài giảng môn Cấu kiện điện tử Khoa Công nghệ điện tử và truyền thông (Tài
liệu lưu hành nội bộ).
[9]. https://dientutuonglai.com/
71