You are on page 1of 71

MỤC LỤC

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

1.1. Đặt vấn đề


Xã hội ngày càng phát triển, đồng nghĩa với việc những nhu cầu xã hội cũng
ngày càng nâng cao. Trong đời sống sinh hoạt, ngày càng xuất hiện nhiều những
thiết bị thông minh, xuất hiện nhiều những robot giúp việc làm đời sống hàng ngày
của người dân được tiện lợi hơn, thoải mái hơn an toàn và tiện nghi hơn. Không
dừng ở đó, trong y tế, giáo dục, quốc phòng và cả rất nhiều lĩnh vực khác đặc biệt là
trong công nghiệp sản xuất, vi điều khiển, máy tính, tự động hóa được áp dụng rất
nhiều nhằm mục đích đó là thay thế phần nào được sức lao động của con người.
Hưởng ứng phong trào chuyển đổi số, kỉ nguyên công nghệ 4.0 -> 5.0, việc
đào tạo ra các kỹ sư công nghệ kỹ thuật là rất cấp bách nhằm đáp ứng được sự phát
triển rất nhanh của xã hội. Tuy nhiên, việc cung cấp học liệu liên quan đến kỹ thuật,
điện tử, công nghệ thông tin là rất ít. Những thiết bị trên thị trường là rất đắt đỏ và
không phù hợp với chương trình đào tạo của nhiều trường đại học. Nhận thấy vấn
đề đó, bằng những tích lũy của bản thân trong 4 năm đại học và sự góp ý của giáo
viên hướng dẫn, em quyết định nghiên cứu và thiết kế đề tài “Nghiên cứu máy
tính nhúng Raspberry và ứng dụng” Với mục đích cải thiện kiến thức về chuyên
môn cho bản thân trước tốt nghiệp, góp phần nào đó về học liệu cho các bạn sinh
viên khóa sau và tạo tiền đề, tài liệu nghiên cứu cho các nhóm tác giả nghiên cứu
cùng lĩnh vực đề tài.

1.2. Tính cấp thiết của đề tài


Ứng dụng cho các hệ thống nhúng hiện nay ngày càng trở nên phức tạp, các
nhân điều khiển cần có cấu hình mạnh hơn, hệ thống cần sự linh động, tiêu tốn ít
năng lượng, nhỏ gọn đáp ứng thời gian thực tốt hơn các nhân điều khiển 8 bit đang
dùng.Chúng ta đa phần vẫn sử dụng nhân điều khiển 8 bit cho các ứng dụng, và như
thế, vô tình đã thu hẹp khả năng điều khiển các hệ thống nhúng. Chính sự hạn chế
về dung lượng bộ nhớ chương trình dữ liệu cũng đã ảnh hưởng không ít tới phạm vi
ứng dụng của nó.Ngày nay để chọn được một dòng máy tính nhúng có thể đáp ứng
được mọi yêu cầu của người dùng không còn quá khó khăn như trước, với sự cạnh
tranh phát triển của các hãng sản xuất chip điện tử đã cho ra đời nhiều dòng chip
với nhiều chức năng và ứng dụng đáp ứng được nhu cầu của người dùng, nổi bật
nên đó là máy tính nhúng Raspberry PI, dòng máy tính nhúng này này có hiệu suất
cao, công suất thấp, tốc độ xử lý nhanh gấp nhiều lần so với các dòng chíp khác,
không những thế mà nó còn có kích thước nhỏ gọn và tiết kiệm chi phí.Với những
lý do trên em đã lựa chọn đề tài nghiên cứu của mình là“Xây dựng bài thực hành
trên Raspberry PI”

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.

1.4. Nội dung nghiên cứu:


- Tìm hiểu về Raspberr pi và các linh kiện trên các module ngoại vi.
- Tìm hiểu về phần mềm thiết kế mạch điện tử và trình biên dịch Raspberry pi
- Thiết kế phần cứng hệ thống thực hành với Raspberry pi .
- Xây dựng bài thực hành ứng dụng với các module ngoại vi và Raspberry pi

1.5. Giới thiệu về Raspberry Pi

1.5.1. Lịch sử ra đời và phát triển


Raspberry Pi là từ để chỉ các máy tính bo mạch đơn (hay còn gọi là máy tính
nhúng) kích thước chỉ bẳng một thẻ tín dụng, được phát triển tại Anh bởi Raspberry
Pi Foundation với mục đích ban đầu là thúc đẩy việc giảng dạy về khoa học máy
tính cơ bản trong các trường học và các nước đang phát triển.
Raspberry Pi gốc và Raspberry Pi gốc 2 được sản xuất theo nhiều cấu hình
khác nhau thông qua các thỏa thuận cấp phép sản xuất với Newark element14
(Premier Farnell), RS Components và Egoman. Các công ty này bán Raspberry Pi
trực tuyến. Egoman sản xuất một phiên bản phân phối duy nhất tại Đài Loan, có thể
được phân biệt với các bản Pi khác bởi màu đỏ của chúng và thiếu dấu FCC/CE.
Phần cứng là như nhau đối với tất cả các nhà sản xuất.
Raspberry Pi ban đầu được dựa trên hệ thống trên một vi mạch (SoC)
BCM2835 của Broadcom, bao gồm một vi xử lý ARM1176JZF-S 700 MHz,
VideoCore IV GPU, và ban đầu được xuất xưởng với 256 MB RAM, sau đó được
nâng cấp (model B và B +) lên đến 512 MB. Board này cũng có socket Secure
Digital (SD) (model A và B) hoặc MicroSD (model A + và B +) dùng làm thiết bị
khởi động và bộ lưu trữ liên tục.
Trong năm 2014, Raspberry Pi Foundation đã phát hành Mô-đun Compute,
đóng gói một BCM2835 với 512 MB RAM và một flash chip eMMC vào một
module để sử dụng như một phần của hệ thống nhúng. Tổ chức này cung cấp
Debian và Arch Linux ARM để người dùng tải về. Các công cụ có sẵn cho Python
như là ngôn ngữ lập trình chính, hỗ trợ cho BBC BASIC (thông qua RISC OS

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).

Hình 1.2 Rasberry Pi


Thông số kỹ thuật của Raspberry Pi 4 Model B:

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

1.5.3. Một số ứng dụng của Raspberry Pi 4B


Mục đích của Eben Upton - người sáng tạo ra Raspberry Pi là tạo ra thiết bị
với mức phí thấp nhưng có thể nâng cao kỹ năng lập trình và hiểu biết phần cứng
cho học sinh trong các trường học. Với kích thước nhỏ gọn và mức giá phù hợp,
Raspberry Pi đã nhanh chóng được các nhà sản xuất và những người đam mê điện
tử chấp nhận và sử dụng trong các dự án đòi hỏi nhiều hơn một vi điều khiển cơ bản
(chẳng hạn như thiết bị Arduino). Ngoài ra trên thực tế Raspberry Pi còn có vô vàn
những ứng dụng hữu ích khác
Raspnerry Pi có thể được dùng như máy tính để bàn.
Ngoài Raspberry Pi ta cần có thẻ microSD, nguồn cung cấp điện và cáp
HDMI cùng màn hình hiển thị phù hợp. Thêm vào đó để có thể sử dụng như một
máy tính ta cần có bàn phím và chuột. Với các phiên bản Raspberry Pi 3 đã được
tích hợp sẵn tính năng Wifi, Bluetooth và cổng Ethernet để đáp ứng tối đa nhu cầu
người sử dụng.
Bộ điều khiển robot
Chúng ta có thể sử dụng một gói robot dành riêng cho máy Pi, sử dụng pin
và được dùng để giao tiếp và điều khiển robot. Hoặc có thể tự thiết kế, xây dựng từ
các thành phần đã có. Với robot thì ta chỉ có thể chọn Pi Zero W bởi nó có tính năng
kết nối không dây lí tưởng cho các robot nhẹ.
Các ứng dụng cho máy in

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ở.

Hình 1.6 Sơ đồ kết nối PI


Nhà sản xuất Raspberry sẽ cung cấp một tập hợp các thư viện mã nguồn
đóng cho phép chúng ta truy cập vào các tính năng tăng tốc GPU. Các thư viện sẽ
có sẵn là:
OpenGL ES 2.0 (opengl) là một thư viện 3D, rất thường được sử dụng trên
máy tính để bàn và các hệ thống nhúng. Nó được định nghĩa bởi Khronos Group.

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.

Hình 1.7 Hệ điều hành Raspbian


Hệ điều hành MATE Ubuntu:
Ubuntu MATE là một hệ điều hành ổn định và đơn giản, mang đến một cấu
hình nhưng vẫn nhẹ về tài nguyên MATE máy tính để bàn cho người dùng của nó.
Nó đặc biệt tốt cho các thiết bị thiếu thông số kỹ thuật phần cứng, làm cho nó hoàn
hảo cho các thiết bị Raspberry Pi không thể chạy máy tính để bàn tổng hợp. Máy

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.

Hình 1.8 Hệ điều hành MATE Ubuntu


Hệ điều hành Ubuntu:
Một phiên bản nhẹ của hệ điều hành Ubuntu phổ biến nhắm vào các đám
mây và thiết bị, Snappy Ubuntu Core sử dụng hình ảnh máy chủ tối thiểu với cùng
các thư viện hệ thống. Các ứng dụng chạy nhanh hơn đáng kể và đáng tin cậy và an
toàn hơn do quản lý hệ thống giao dịch (như Docker); do đó thuật ngữ "Snappy".

Hình 1.9 Hệ điều hành Ubuntu


Hệ điều hành Pidora:
Pidora là một bản phối lại của hệ điều hành Fedora nổi tiếng dành cho
Raspberry Pi. Được thiết kế từ bản dựng Fedora mới nhất cho kiến trúc ARMv6,
Pidora cho phép tốc độ cao hơn và mang các ứng dụng và thành phần từ bộ gói
Fedora 20.

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.

Hình 1.11 Hệ điều hành ARM Linux ARM


Hệ điều hành Gentoo Linux:
Một hệ điều hành máy tính dựa trên Linux nguồn mở, Gentoo Linux biên
dịch mã nguồn cục bộ theo sở thích của người dùng để nâng cao hiệu suất. Vì lý do
này, các bản dựng của Gentoo Linux thường được tối ưu hóa cho một loại máy tính
cụ thể, chẳng hạn như Raspberry Pi.

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.

Hình 1.13 Hệ điều hành Android


Chromium OS: Chromium OS có thể được cài đặt trên netbook, máy tính
xách tay và cả Raspberry Pi nữa. Với Chromium OS được cài đặt, bạn sẽ có quyền
truy cập vào cùng các công cụ dựa trên đám mây, như trong Chrome OS.

Hình 1.14 Giao diện Chromium OS

1.7. Ngôn ngữ lập trình


Ngôn ngữ Python được Guido van Rossum tạo ra cuối năm 1990. Python khá
giống Perl, Ruby, Scheme, Smalltalk và Tcl. Python được phát triển trong một dự
18
án mã mở do một tổ chức phi lợi nhuận Python Software Foundation quản lý.
Python được phát triển để chạy trên nền Unix. Nhưng theo thời gian, nó đã "bành
trướng" sang mọi hệ điều hành từ MS-DOS đến MAC OS, OS/2, Windows, Linux
và một số điều hành khác thuộc họ Unix. Python có thể làm những việc sau:
- Lập trình ứng dụng web.
- Khoa học và tính toán.
- Tạo nguyên mẫu phần mềm.
- Ngôn ngữ tốt để dạy lập trình.
- Python là một ngôn ngữ lập trình thông dịch (interpreted).
- Không quá khắt khe.
- Viết code ít hơn.
- Cộng đồng lớn, hỗ trợ tốt.
- Python là ngôn ngữ ưa thích trong ngành khoa học về dữ liệu (data
science), trí tuệ nhân tạo, machine learning.
- Python là ngôn ngữ dễ học, dễ hiểu.
- Python có tương thích cao (highly portable).
- Python là một ngôn ngữ có cấu trúc rõ ràng, cú pháp ngắn gọn.
- Đặc biệt, ngôn ngữ lập trình Python với tốc độ xử lý cực nhanh.

Hình 1.15 Ngôn ngữ python


Một ứng dụng viết bằng ngôn ngữ Python có thể bao gồm một hoặc nhiều
tập tin khác nhau. Các tập tin chứa mã lệnh Python sẽ có phần mở rộng là .py
Mã lệnh Python được viết tuân theo các quy tắc được quy định bởi ngôn ngữ
Python. Chúng ta sẽ lần lượt tìm hiểu các quy tắc này ở các bài học tiếp theo.
Bên cạnh những ứng dụng thực tế nổi bật trên, ngôn ngữ lập trình Python
còn được sử dụng để:
19
- Làm web: Django framework. Udacity, youtube, dropbox được xây dựng
(một phần lớn) sử dụng python.
- Làm game: Pygame. Có một game do người Việt làm, gần đây khá nổi (nếu
bạn là người mê anime/manga/VN sẽ biết) là Millia 44 cũng được xây dựng bằng
python, đương nhiên python không phải là lựa chọn tốt nhất để xây dựng game.
- Máy học: Theano, tensorflow, scikit-learn...
- Khoa học máy tính: Python Opencv, numpys, panda, scipy...
- Lập trình cho bo mạch: Ardruino, raspberry pi

1.8. Các phần mềm hỗ trợ làm đồ án

1.8.1. Thony Python IDE


Thonny là một Môi trường phát triển tích hợp Python (IDE) miễn phí được
thiết kế đặc biệt dành cho Pythonista mới bắt đầu. Cụ thể, nó có một trình gỡ lỗi
tích hợp có thể trợ giúp khi bạn gặp phải các lỗi khó chịu và nó cung cấp khả năng
thực hiện từng bước đánh giá biểu thức, trong số các tính năng thực sự tuyệt vời
khác.
Trong hệ điều hành Raspbian OS Thony Python IDE được cài đặt sẵn, là
phần mềm mặc định để sử dụng để lập trình, biên dịch và chạy code trên phần cứng
Raspberry Pi.

Hình 1.16 Giao diện làm việc


A: Biểu tượng giấy cho phép tạo một tệp mới.
B: Biểu tượng thư mục mở cho phép mở một tệp đã tồn tại trên máy tính của mình.
20
C: Biểu tượng cho phép lưu mã của mình.
D: Biểu tượng phát cho phép chạy mã của mình.
E: Biểu tượng lỗi cho phép gỡ lỗi mã của mình.
FGH: Các biểu tượng mũi tên cho phép chạy chương trình của mình từng bước.
+ Mũi tên F báo cho Python thực hiện một bước tiến lớn, nghĩa là chuyển
sang dòng hoặc khối mã tiếp theo.
+ Mũi tên G yêu cầu Python thực hiện một bước nhỏ, nghĩa là đi sâu vào
từng thành phần của biểu thức.
+ Mũi tên H yêu cầu Python thoát khỏi trình gỡ lỗi.
I: Biểu tượng cho phép dùng chương trình đang chạy
J: Biểu tượng cho phép zoom in, zoom out giao diện làm việc
K: Biểu tượng cho phép thoát khỏi chương trình.
L: vùng này là trình chỉnh sửa mã , nơi sẽ viết tất cả mã của mình.
M: Vùng này là shell nơi sẽ thấy kết quả đầu ra từ mã của mình.

1.8.2. phần mềm mô phỏng Proteus


Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, mô
phỏng cho hầu hết các linh kiện điện tử thông dụng, đặc biệt hỗ trợ cho cả các MCU
như PIC, 8051, AVR, Motorola.
Phần mềm bao gồm 2 chương trình: ISIS cho phép mô phỏng mạch và ARES
dùng để vẽ mạch in. Proteus là công cụ mô phỏng cho các loại Vi Điều Khiển khá
tốt, nó hỗ trợ các dòng VĐK PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430,
ARM7/LPC2000 ... các giao tiếp I2C, SPI, CAN, USB, Ethenet,... ngoài ra còn mô
phỏng các mạch số, mạch tương tự một cách hiệu quả. Proteus là bộ công cụ chuyên
về mô phỏng mạch điện tử.
ISIS đã được nghiên cứu và phát triển trong hơn 12 năm và có hơn 12000
người dùng trên khắp thế giới. Sức mạnh của nó là có thể mô phỏng hoạt động của
các hệ vi điều khiển mà không cần thêm phần mềm phụ trợ nào. Sau đó, phần mềm
ISIS có thể xuất file sang ARES hoặc các phần mềm vẽ mạch in khác.

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.

Những khả năng khác của ISIS là:


• Tự động sắp xếp đường mạch và vẽ điểm giao đường mạch.
• Chọn đối tượng và thiết lập thông số cho đối tượng dễ dàng.
• Xuất file thống kê linh kiện cho mạch
• Xuất ra file Netlist tương thích với các chương trình làm mạch in thông
dụng.
• Đối với người thiết kế mạch chuyên nghiệp, ISIS tích hợp nhiều công cụ
giúp cho việc quản lý mạch điện lớn, mạch điện có thể lên đến hàng ngàn
linh kiện.
• Thiết kế theo cấu trúc (hierachical design)
• Khả năng tự động đánh số linh kiện

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

2.1.1. Led đơn

Hình 2.1 Led đơn


LED là một biến thể trên diode (điốt) cơ bản. Diode là một thành phần điện
tử chỉ dẫn điện theo một hướng. Nó xác định độ chênh điện áp nhỏ nhất giữa Anode
(+) và Cathode (-). LED là cơ bản giống như một Diode, sự khác biệt ở đây là nó
tạo ra ánh sáng khi dòng điện đi qua.
Đèn LED 5mm thực tế chỉ là một chip LED DIP được bọc trong một cấu trúc
vòm epoxy để bảo vệ. Kết nối nguồn được thực hiện thông qua hai chân nối dưới
cùng. Như chúng tôi đã đề cập, một diode chỉ cho phép dòng điện theo một hướng
lên phải phân biệt giữa cực (+) và cực (-). Với đèn LED 5mm việc này rất dễ dàng,
Chân dài hơn là cực dương và ngắn hơn là cực âm.
Điện áp
Mỗi đèn LED có một mức điện áp đầu vào nhất định để tạo ra ánh sáng. Nếu
cung cấp ít hơn mức này, nó sẽ không phát sáng. Nếu có nhiều đèn được nối tiếp
trong một mạch, phải tính mức điện áp cần cấp cho loạt này.
Ví dụ, ta có một đèn LED 5mm có mức điện áp đầu vào là 3,4V. Chúng ta
lấy cấp nguồn cho nó là một pin AA 1,5V nó sẽ không phát sáng. Tuy nhiên, nếu
chúng ta thêm một pin AA nữa để cấp nguồn, tức là khoảng 3V thì đèn LED sẽ
sáng. Trị số thập phân 0,4 có thể bỏ qua trong trường hợp này.
Dòng điện
Dòng điện cũng là trị số quan trọng hàng đầu cần quan tâm. Nhiệt độ là kẻ
thù của công nghệ LED, nếu cung cấp một dòng điện vượt qua ngưỡng cho phép,
tương đương với việc làm gia tăng nhiệt độ và làm đèn nhanh chóng bị hỏng.

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.

2.1.2. Nút nhấn

Hình 2.2 Nút nhấn 2 chân


Nút nhấn 2 chân là một loại phím điện tử được thiết kế với hai chân đứng
dựa trên một tấm mạch in hoặc bảng mạch để kết nối với các linh kiện khác. Khi
được bấm, hai chân sẽ được kết nối với nhau, tạo ra một mạch điện và gửi tín hiệu
đến vi điều khiển hoặc bộ điều khiển khác. Nút nhấn 2 chân thường được sử dụng
trong các thiết bị điện tử như điều khiển từ xa, bàn phím, chuột, máy tính, đồng hồ
điện tử, và nhiều ứng dụng khác. Chức năng của nút nhấn 2 chân là cho phép người
dùng tương tác với thiết bị điện tử bằng cách bấm để thực hiện các chức năng khác
nhau.

2.1.3. Động cơ:


Động cơ được điều khiển thông qua module L298.
a. Module L298

Hình 2.3 Module L298

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.

Hình 2.4 động cơ DC giảm tốc vàng


Động cơ DC giảm tốc vàng là mẫu động cơ được sử dụng rộng rãi trong thiết
kế robot, mô hình DIY, phục vụ nghiên cứu học tập chế tạo, với dải điện áp từ 3-9v,
với 2 trục, Số vòng/1phút: 125 vòng/ 1 phút tại 3VDC. 208 vòng/ 1 phút tại 5VDC.
Thông số kỹ thuật:
+ Điện áp: 3-12VDC, khuyến nghị ở giải điện áp (6-8VDC)
+ Dòng: 70mA (250mA Max) ở 3V
+ Mô men xoắn: 800gfcm
+ Tỷ số truyền: 1:48
+ Tốc độ:

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

2.2. Thực hành với cảm biến nhiệt độ, độ ẩm


Với bài thực hành này lựa chọn module cảm biến nhiệt độ, độ ẩm DHT11.

Hình 2.5 Cảm biến DHT 11


Cảm biến độ ẩm và nhiệt độ DHT11 Temperature Humidity Sensor là cảm
biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1
wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp
trong cảm biến, có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào.
Thông tin kỹ thuật:
+ Nguồn: 3 -> 5 VDC.
+ Dòng sử dụng: 2.5mA max (khi truyền dữ liệu).
+ Khoảng đo độ ẩm: 20%-90% RH (sai số 5%RH)
+ Khoảng đo nhiệt độ: 0-50°C (sai số 2°C)
+ Tần số lấy mẫu tối đa: 1Hz (1 giây / lần)
+ Kích thước 15mm x 12mm x 5.5mm.

27
Hình 2.6 DHT11 pino out.

2.3. Thực hành Cảm biến siêu âm

Hình 2.7 cảm biến siêu âm HY-SRF05


Cảm biến siêu âm UltraSonic HY-SRF05 được sử dụng để nhận biết khoảng
cách từ vật thể đến cảm biến nhờ sóng siêu âm, cảm biến có thời gian phản hồi
nhanh, độ chính xác cao, phù hợp cho các ứng dụng phát hiện vật cản, đo khoảng
cách bằng sóng siêu âm.
Cảm biến siêu âm UltraSonic HY-SRF05 có hai cách sử dụng là sử dụng cặp
chân Echo / Trigger hoặc chỉ sử dụng 1 chân Out để phát và nhận tín hiệu
Thông số kỹ thuật:
+ Điện áp hoạt động: 5VDC
+ Dòng tiêu thụ: 10~40mA
+ Tín hiệu giao tiếp: TTL
+ Chân tín hiệu: Echo, Trigger (thường dùng) và Out (ít dùng).
28
+ Góc quét:<15 độ
+ Tần số phát sóng: 40Khz
+ Khoảng cách đo được: 2~450cm (khoảng cách xa nhất đạt được ở điều
khiện lý tưởng với không gian trống và bề mặt vật thể bằng phẳng, trong
điều kiện bình thường cảm biến cho kết quả chính xác nhất ở khoảng cách
<100cm).
+ Sai số: 0.3cm (khoảng cách càng gần, bề mặt vật thể càng phẳng sai số
càng nhỏ).
+ Kích thước: 43mm x 20mm x 17mm

2.4. Thực hành với camera

Hình 2.8 Module Pi camera


Vào tháng 4 năm 2016, Raspberry Pi Foundation đã ra mắt thế hệ thứ hai của
sản phẩm Camera Module với nâng cấp đáng kể nhất là cảm biến Sony IMX219 8
megapixel. Hãy cùng chúng tôi tìm hiểu về sản phẩm 8MP Raspberry Pi Camera
Module V2.
Raspberry Pi Camera Module V2 có cảm biến 8 megapixel của Sony
IMX219
Mô-đun Máy ảnh có thể được sử dụng để quay video độ nét cao cũng như
chụp ảnh tĩnh. Nó khá dễ sử dụng cho người mới bắt đầu, nhưng cũng có rất nhiều
giải pháp mở rộng để cung cấp cho những người dùng có yêu cầu cao. Có nhiều bản
trình diễn của người dùng về việc sử dụng Mô-đun máy ảnh như Time-Lapse, Slow-
Motion và nhiều ứng dụng khác. Bạn có thể tham khảo hướng dẫn sử dụng để tạo
hiệu ứng với camera này.
Raspberry Pi Camera Module V2 là một bước tiến nhảy vọt về chất lượng
hình ảnh, màu sắc trung thực và hiệu suất ánh sáng yếu. Đặc biệt nó hỗ trợ video lên
đến 1080P30, 720P60 và chế độ video VGA90, cũng như chế độ chụp. Tất nhiên,
29
nó vẫn sử dụng đoạn cáp 15cm thông qua cổng CSI trên Raspberry Pi.

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. Các linh kiện khác

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.

Hình 2.9 nguồn 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

3.1.1. Kết nối phụ kiện


Cũng như các máy tính thông thường khác, để làm việc, tương tác với
Raspberry Pi ta cần phải kết nối các phụ kiện cơ bản như: Màn hình, bàn phím,
chuột…
- Kết nối màn hình:

Hình 3.1 Màn hình 7inch


Raspberry Pi tương thích với tất cả các màn hình có sẵn cổng kết nối HDMI
hoặc chuyển dổi HDMI to VGA để kết nối với các màn hình cũ không có cổng kết
nối HDMI.

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

Hình 3.3 Kết nối chuột và bàn phím với Raspberry Pi


Sau khi kết nối thành công màn hình, bàn phím và chuột cho Raspberry Pi là
ta đã có thể khởi động và làm việc với Pi

33
Hình 3.4 Kết nối đầy đủ các phụ kiện với Raspberry PI

3.1.2. Khởi động, cài đặt hệ điều hành cho Raspberry Pi


a. Kết nối nguồn – khởi động Raspberry Pi
Sau khi kết nối thành công màn hình, bàn phím và chuột cho Raspberry Pi ta
tiếp tục cấp nguồn cho Raspberry Pi

Hình 3.5 Bộ nguồn chính hãng của Raspberry Pi

34
Trên raspberry Pi đã ra sẵn ổ cắm nguồn

Hình 3.6 Kết nối nguồn cho Raspberry Pi


b. Cài đặt hệ điều hành cho Raspberry Pi
Giới thiệu các hệ điều hành mà Raspberry Pi hỗ trợ:
Các hệ điều hành hỗ trợ cho Raspberry Pi bao gồm : Raspbian, Arch Linux
ARM, OSMC, OpenELEC, Snappy Ubuntu Core, Ubuntu MATE, Debian Jessie,
Windows and Android.
Raspbian : Đây là một hệ điều hành thuận tiện cho việc cài đặt và sử dụng
với sự hỗ trợ lớn từ cộng đồng mã nguồn mở trên thế giới. Raspbian là một hệ điều
hành đơn giản và thân thiện.
Bạn có thể download và sử dụng Raspbian ở 2 dạng : NOOBS hoặc file Raspbian.
Với NOOBS (New Out of Box Software), khi thực hiện cài đặt bạn sẽ được
lựa chọn giữa các hệ điều hành khác nhau cho Raspberry Pi, khi đó bạn cũng có thể
lựa chọn Raspbian.
Với file Raspbian, khi đó sẽ không có quá trình lựa chọn giữa các hệ điều
hành, mà Raspbarry Pi sẽ tự thực hiện nhiệm vụ của mình để chuyển tới việc khởi
động của Linux kernel. (nói tới ở mục 2 : Hoạt động của Raspberry Pi sau khi cắm
nguồn)
35
Debian Jessie : Debian OS thể hiện cho sự phát triển của UNIX trên Raspberry Pi
qua 4 version.
V1. Version đầu tiên của Debian cho Pi có tên Debian Squeeze.
V2. Sau Squeeze, đó là Debian Wheezy.
V3. Raspbian (Debian Wheezy cải tiến) là phiên bản 3 của Debian cho Pi
V4. Phiên bản hiện tại của Debian là Debian Jessie. (Debian 8.0)
Ubuntu MATE : Ubuntu MATE được hỗ trợ cho Pi 2,3.
Window 10 : Hỗ trợ cho các dòng Pi 2,3 . Window 10 là phiên bản free, hỗ
trợ cho cả Raspberry Pi và Intel Galileo. Đây là điều lý tưởng cho các nhà phát triển
ứng dụng có sử dụng các bộ công cụ phát triển của Microsoft. Đây là một platform
linh hoạt hỗ trợ cho số lượng lớn các thiết bị bao gồm : tablet. Smartphone, PC,
Xbox, Internet of Things.
Hoạt động của Raspberry Pi sau khi cắm nguồn
Raspberry Pi thực hiện the power-on self-tests (POSTs) theo các bước như sau :
+ Khi Raspberry Pi đã được shutdown, hoặc không được cấp nguồn : ARM
core không hoạt động, ngừng việc truy cập vào SDRAM.
+ Khi Raspberry Pi được cấp nguồn : GPU (Graphics Processing Unit) được
khởi động.
+ GPU bắt đầu thực hiện chương trình the first-stage boot loader trong SoC
package. (đây là chương trình không thể sửa hoặc thay đổi)
+ Chương trình first-stage boot loader đọc chương trình second-stage boot
loader trong L2 cache ánh xạ tới GPU : chương trình second-stage boot
loader còn được gọi là bootcode.bin.
+ Bootcode.bin cho phép truy cập tới SDRAM. The bootcode.bin đọc
chương trình third-stage bootloader, hay loader.bin. Loader.bin được lấy từ
SD card vào trong SDRAM.
+ Loader.bin đọc file start.elf trong SD card.
+ start.elf đọc các file : config.txt ; cmdline.txt; và Linux kernel.img từ SD
card.
+ Quá trình khởi động giờ là việc của Linux kernel.
Chuẩn bị thiết bị phần cứng và phần mềm hỗ trợ cài đặt

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.

Phần mềm cần thiết


+ Phần mềm format thẻ nhớ :
Trong Window :
Sử dụng phần mềm SD Formatter 4.0 : SD Formatter 4.0
Trong Ubuntu : Các bạn tìm hiểu phần mềm GParted
Phần mềm ghi file .img của hệ điều hành lên thẻ nhớ : Win32DiskImager
File hệ điều hành với version phù hợp với Model của Pi.
Các bước thực hiện:
Bước 1:
Kết nối thẻ nhớ với máy tính window và tải xuống hệ điều hành Raspberry Pi
OS (Raspbian) trực tiếp từ Website của nhà sản xuất:
https://www.raspberrypi.org/downloads/raspberry-pi-os/. Tùy chọn phiên bản phù
hợp với nhu cầu sử dụng của bạn để tải xuống. Ở đây, mình chọn bản RP OS (32-
bit) with desktop and recommended software. Download bản Zip. 3.2

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

3.2. Giới thiệu module thực hành với Raspberry Pi

Hình 3.7 Module thực hành chính

40
Khối GPIO:

Hình 3.8 Khối GPIO và Pi


Khối này gồm có Raspberry Pi, đế ra chân và 40 pin out của Raspberry Pi
Khối hiển thị:

Hình 3.9 Màn hình hiển thị


Khối hiển thị chính là màn hình 7inch kết nối với Raspberry Pi

41
Khối Led đơn:

Hình 3.10 Khối led đơn


Khối phím bấm:

Hình 3.11 Khối phím bấm


Khối động cơ:

Hình 3.12 Khối động cơ


Khối động cơ sử dụng Module L298n. gồm có 5 chân: 12v, GND, EnA, In1,
In2
Khối cảm biến siêu âm:

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:

Hình 3.14 Khối DHT 11


Khối nguồn:

Hình 3.15 Khối nguồn


Gồm có 5 chân GND, 5 chân 5V, 3 chân 12V.

3.3. Thực hành điều khiển LED đơn, Động cơ, nút bấm

3.3.1. Lập trình điều khiển 8 Led đơn:

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:

Hình 3.17 Lưu đồ thuật toán điều khiển 8 Led


Giải thích: Đầu tiên khi bắt đầu trương trình cần khai báo cấu hình chân cho
là chân đầu ra cho 8 chân kết nối với led. Chương trình lập trình điều khiển led chạy
theo hiệu ứng là: sáng nhấy nháy. Để Sáng led thì suất mức cao (HIGH) cho các
chân, tắt led thì xuất mức thấp (LOW).
Chương trình chính:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)

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)

3.3.2. Giao tiếp nút nhấn:


Gồm có 8 phìm bấm, các phím bấm được lập trình điện trở trong kéo lên.
Sơ đồ nguyên lý:

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

Hình 3.19: Lưu đồ thuật toán giao tiếp 8 nút bấm

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!")

3.3.3. điều khiển động cơ DC thông qua module L298n


Sơ đồ nguyên lý:

Hình 3.20 Sơ đồ nguyên lý giao tiế L298N


Sơ đồ nguyên lý kết nối như sau: chân in1 -> GPIO24; in2 -> GPIO 23; en ->
GPIO 25; out1, out2 kết nối với động cơ DC.

48
Lập trình:
Lưu đồ thuật toán

Hình 3.21 Lưu đồ thuật toán giao tiếp L298N


Giải thích: bắt đầu chương trình, khởi tạo các tiền xử lý. Tiếp theo sẽ tiến
hành đọc dữ liệu nhập vào từ bàn phím được lưu trong biến X. Nếu X = ‘r’ thì sẽ
khởi động động cơ, lúc này động cơ quay thuận. nếu không đúng nhận X tiếp theo.
Kiểm tra X = ‘s’ nếu đúng sẽ dừng động cơ, nếu sai kiểm tra tiếp xem X = ‘f” nếu
đúng Động cơ tiếp tục quay thuận, nếu sai kiểm tra tiếp X = ‘b’, nếu đúng động cơ
đảo chiều. nếu sai, kiểm tra X = ‘e’. nếu đúng thoát vòng lặp, kết thúc chương trình.
Nếu sai, tiếp tục vòng lặp kiểm tra X liên tục.
Chương trình chính:
import RPi.GPIO as GPIO
from time import sleep
in1 = 24

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ý:

Hình 3.22 Sơ đồ nguyên lý bài 2


- chân out put của cảm biến được nối vào chân 7. Dữ liệu đọc được xẽ hiển thị lên
màn hình terminal.
Lập trình:

Hình 3.23 Lưu đồ thuật toán bài 2


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ảm biến. Chương trình thực hiện đọc nhiệt độ độ ẩm từ cảm biến sau đó
kiểm tra nếu không có một trong 2 thông số h, t thì báo lỗi. Nếu có dữ liệu thì thực
hiện chuyển đổi sau đó in dữ liệu ra terminal.

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);

3.5. Thực hành Cảm biến siêu âm

Hình 3.24 sơ đồ nguyên lý


Chân TRIG -> GPIO 23; Chân ECHO -> GPIO 24
Lập trình:
Lưu đồ thuật toán

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()

3.6. Thực hành với camera


Máy tính Raspberry Pi có cổng Mô-đun máy ảnh
Tất cả các mẫu Raspberry Pi hiện tại đều có cổng để kết nối Mô-đun máy ảnh.

55
Hình 3.26 chân cắm module máy ảnh
Mô-đun máy ảnh Raspberry Pi

Hình 3.27 module máy ảnh


Có hai phiên bản của Mô-đun máy ảnh:
Phiên bản tiêu chuẩn , được thiết kế để chụp ảnh trong điều kiện ánh sáng
bình thường
Phiên bản NoIR không có bộ lọc hồng ngoại nên bạn có thể sử dụng nó cùng
với nguồn sáng hồng ngoại để chụp ảnh trong bóng tối
Kết nối mô-đun máy ảnh:
+ Đảm bảo Raspberry Pi của bạn đã tắt
+ Xác định vị trí cổng Mô-đun máy ảnh
+ Nhẹ nhàng kéo các cạnh của kẹp nhựa của cổng lên

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 :

Khởi động lại Raspberry Pi của bạn


Cách điều khiển Mô-đun máy ảnh bằng mã Python
Thư viện Python picameracho phép bạn điều khiển Mô-đun máy ảnh của mình và
tạo các dự án tuyệt vời.
Mở trình soạn thảo Python 3, chẳng hạn như Thonny Python IDE :

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:

from picamera import PiCamera


from time import sleep
camera = PiCamera()
camera.start_preview()
sleep(5)
camera.stop_preview(Lưu và chạy chương trình của bạn. Bản xem
trước máy ảnh sẽ được hiển thị trong năm giây rồi đóng lạ
Lưu ý: bản xem trước của máy ảnh chỉ hoạt động khi màn hình được
kết nối với Raspberry Pi của bạn. Nếu bạn đang sử dụng quyền truy cập từ xa
(chẳng hạn như SSH hoặc VNC), bạn sẽ không thấy bản xem trước của
camera.
Nếu bản xem trước của bạn bị lộn ngược, bạn có thể xoay nó 180 độ bằng đoạn mã
sau:
camera = PiCamera()
camera.rotation = 180

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

3.7. Thực hành với cơ sở dữ liệu cơ bản


Thực hành với cơ sở dữ liệu với PHPMYAdmin

Hình 3.28 Logo phpmyAdmin


PHPMyAdmin – phần mềm mã nguồn mở mở viết theo ngôn ngữ lập trình
PHP, hỗ trợ hệ cơ sở quản trị dữ liệu MySQL. Quá trình hỗ trợ để thực hiện thông
qua giao diện web.
Tính đến thời điểm hiện tại, PHPMyAdmin đã thu hút cả triệu lượt sử dụng.
Phần mềm này hỗ trợ hầu hết các hệ điều hành phổ biến và vẫn không ngừng được
cải thiện.
Một vài tính năng chính của PHPMyAdmin
Tiếp nối phần định nghĩa PHPMyAdmin là gì, FPT Cloud sẽ cùng bạn ý
phân tích một vài tính năng cơ bản của phần mềm này. Theo dõi phần mềm
PHPMyAdmin cung cấp đến người dùng sẽ nhiều chức năng sau quá trình lưu trữ,
quản trị dữ liệu. Cụ thể như:
+ Chức năng quản lý người dùng: Bổ sung, chỉnh sửa, loại bỏ, thiết lập phân
quyền.

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:

Thiết bị cần chuẩn bị:


+ Raspberry Pi với hệ điều hành Raspberry
+ Thẻ nhớ
+ Cấp Nguồn
+ Kết nối Internet
+ Bàn phím, chuột, màn hình

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 ):

Cài đặt PHP trên Raspberry Pi


PHP là một ngôn ngữ kịch bản phía máy chủ. PHP ( Bộ xử lý H ypertext P re
p ) được sử dụng để phát triển các ứng dụng web động. Một tệp PHP chứa<?php
… ?>thẻ và kết thúc bằng phần mở rộng “ .php “.
Để cài đặt PHP trên Raspberry Pi, hãy chạy:
pi@raspberrypi:/var/www/html $ sudo apt install php -y
Bạn có thể xóa index.html và tạo tập lệnh PHP để kiểm tra cài đặt:
pi@raspberrypi:/var/www/html $ sudo rm index.html
pi@raspberrypi:/var/www/html $ sudo nano index.php
62
Trong tệp index.php của bạn , hãy thêm đoạn mã sau để lặp lại thông báo “
hello world ”:
<?php echo "hello world"; ?>

Để 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

3.8. Thực hành với Server Raspberry


Lưu trữ một trang web của riêng bạn không khó – trên thực tế, bạn có thể
làm điều đó trên Raspberry Pi của mình mà không cần cài đặt Raspbian và một chút
thao tác dòng lệnh. Raspberry Pi của bạn cung cấp một cách đơn giản để lưu trữ
một trang web cá nhân hoặc chuyên nghiệp và mọi thứ bạn cần biết để hoàn thành
nó đều có trong hướng dẫn hữu ích này. Đây là cách thiết lập máy chủ web trên
Raspberry Pi.
Cách thiết lập máy chủ web trên Raspberry Pi
Để chạy máy chủ web của chúng tôi, chúng tôi đang sử dụng cái thường
được gọi là ngăn xếp LEMP: Linux, nginx, MySQL và PHP. Tóm lại, LEMP sử
dụng Linux làm hệ điều hành trên thiết bị lưu trữ máy chủ, nginx làm chính máy
chủ, MySQL làm hệ thống quản lý cơ sở dữ liệu và PHP để xử lý động.
Trong trường hợp của chúng tôi, bản phân phối Linux được đề cập sẽ là
Raspbian. Sau khi Raspbian được thiết lập và chạy trên Raspberry Pi của bạn, bạn
sẽ thấy rằng thật dễ dàng để mọi thứ khác hoạt động!
Bước 1: Cài đặt Raspbian
Cài đặt Raspbian bằng thẻ SD, giống như cách bạn làm với bất kỳ dự án dựa
trên Raspbian nào khác. Để xem lại cách cài đặt hệ điều hành, hãy xem bài đăng của
chúng tôi về cách cài đặt Raspbian trên Raspberry Pi .
Bước 2: Cài đặt Nginx
Chữ “E” trong LEMP là “nginx”, tin hay không tùy bạn. Hãy làm điều đó
tiếp theo. Chúng tôi sẽ cập nhật các gói của chúng tôi và sau đó cài đặt nginx. Mở
terminal và lần lượt chạy các lệnh sau:
sudo apt-get update
sudo apt-get install nginx
Nói có khi được nhắc. Nginx chính là máy chủ và nó rất hiệu quả.
Bước 3: Cài đặt MySQL
Chúng tôi cần MySQL, một hệ thống quản lý cơ sở dữ liệu, để lưu trữ và
quản lý dữ liệu cho trang web của chúng tôi. Như với nginx, MySQL được cài đặt
với một vài dòng dễ dàng trong thiết bị đầu cuối.
sudo apt-get install mysql-server
Trong quá trình cài đặt, bạn sẽ được yêu cầu đặt mật khẩu gốc (để trống vị trí
có nghĩa là bạn sẽ không có mật khẩu).
66
sudo mysql_secure_installation
Trong giai đoạn này, bạn sẽ có tùy chọn thay đổi mật khẩu gốc của mình. Vì
bạn chỉ mới đặt nó, bạn cũng có thể nói không. Nói có với mọi thứ khác.
Bước 4: Cài đặt PHP
Chúng tôi cuối cùng đã ở cuối từ viết tắt của chúng tôi! PHP chịu trách
nhiệm về nội dung động của trang web của chúng tôi. Quay lại thiết bị đầu cuối, bây
giờ, với lệnh này:
sudo apt-get install php5-fpm php5-mysql
Sau đó, bạn sẽ chỉ cần khởi động lại PHP:
sudo systemctl restart php5-fpm
Bước 5: Cấu hình nginx để sử dụng PHP
Hãy để hai người này chơi đẹp với nhau. Thời gian để chỉnh sửa một tập tin
khác:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name [your public IP];
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

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.

Hình 3.30 thiết lập trang web server thành công


Nếu bạn đã làm đúng mọi thứ, hãy nhập địa chỉ IP công khai của bạn vào
thanh địa chỉ của trình duyệt sẽ cung cấp cho bạn trang này.
68
Đó là nó! Bây giờ bạn có một máy chủ web đang hoạt động. Truy cập trang
web của bạn bằng cách nhập địa chỉ IP công khai của bạn vào thanh địa chỉ của
trình duyệt web từ bất kỳ thiết bị kết nối internet nào. Hiện tại, trang web của bạn sẽ
chỉ có trang chào mừng nginx, nằm ở /var/www/html. Bạn có thể xóa nó và tạo một
tệp có tên index.php (sudo nano index.php) – hoặc index.html, nếu bạn biết rằng
mình sẽ không sử dụng PHP – và tiếp tục từ đó

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

You might also like