You are on page 1of 35

1

2
HƯƠNG I: TỔNG QUANG VỀ ĐỀ
TÀI NGHIÊN CỨU
1.1. Giới thiệu sơ lược về đề tài mạch đo nhiệt độ
- Đề tài mạch nhiệt độ được thực hiện dựa trên một số tiêu chí như sau:
 Phần cứng:
- Tận dụng những linh kiện, chất liệu có sẵn để giảm thiểu chi phí
- Sản phẩm cần gọn, nhẹ, dễ kết nối và sử dụng.
- Thiết kế đơn giản và bắt mắt.
 Phần mềm:
- Dùng những kiến thức về lập trình đã được học đặt biệt là ngôn ngữ lập trình Python và kế thừa
những dữ liệu, đoạn lệnh của những người đi trước, kết hợp và phát triển thành một phần mềm
phù hợp cho phần cứng.
- Dễ hiểu và dễ nghiên cứu.
- Thời gian đáp ứng ngắn.
 Giao diện:
- Đơn giản, bắt mắt, dễ quan sát các số liệu
- Hiển thị khoảng cách đo được trên LCD
- Với những tiêu chí đó, mạch đo khoảng cách được kết nối như hình sau:

3
Qua đó quá trình hoạt động của mạch hiển thị hiển thị nhiệt độ được tiến hành như sau:
- Sử dụng Laptop cài đặt hệ điều hành Raspian trên thẻ SD Cad (1) sau đó tiến hành gắn vào
Module Raspberry Pi 3 (2)
- Hiển thị giao diện HĐH Raspbian lên laptop (3) thông qua Remote Decktop quá trình này thuận
tiện cho việc nghiên cứu code cũng như dễ dàng di chuyển.
- Sau khi tiến hành Remote và thực hiện đoạn code cho đề tài ta kết nối module cảm biến LM35
và MCP3008 với Raspberry pi 3. (4),(5)
- Cảm biến nhiệt độ trả tính hiệu Raspberry Pi (6) được kết nối với I2C (7) sau đó được Raspberry
xử lí thông qua phương trình toán học và xuất kết quả ra màng hình LCD.
1.2. Các thiết bị phần cứng cần cho quá trình thực hiện nghiên cứu đề tài
1.2.1. Laptop
- Laptop là một thiết bị không thể thiếu trong cuộc sống hiện đại và cả trong nghiên cứu, nhất là -
trong ngành điện tử có lập trình.
- Trong quá trình thực hiện nghiên cứu đề tài, ta cần sử dụng 1 laptop có cấu hình trung bình (chíp
sử lý core 2 duo- ram 2GB) và phải đáp ứng một số yêu cầu cơ bản như sau :
+ Phải cài đặt một số chương trình như SD Cad Fomatter, Putty, Win32 DiskImager (phục vụ cho
quá trình Remote Decktop Connection).
+ Có cổng Ethernet để kết nối địa chỉ IP của Raspberry Pi.
+ Có kết nối mạng Internet đề phục vụ cho quá trình download Raspian, các phần mềm cũng như
cho quá trình tìm tòi tài liệu có liên quan đến nội dung thực hiện đề tài.
1.2.2. Cảm biến nhiệt độ LM35
- LM35 là một cảm biến nhiệt độ analog.
- Nhiệt độ được xác định bằng cách đo hiệu điện thế ngõ ra của LM35.
→ Đơn vị nhiệt độ: °C.
→ Nhiệt độ thay đổi tuyến tính: 10mV/°C

Sơ đồ chân của LM35


- LM35 không cần phải canh chỉnh nhiệt độ khi sử dụng.
- Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng -55°C tới 150°C.
- LM35 có hiệu năng cao, công suất tiêu thụ là 60uA.
- Cảm biến LM35 hoạt động bằng cách cho ra một giá trị hiệu điện thế nhất định tại chân Vout
(chân giữa) ứng với mỗi mức nhiệt độ.
 Như vậy, bằng cách đưa vào chân bên trái của cảm biến LM35 hiệu điện thế 5V, chân phải

5
nối đất, đo hiệu điện thế ở chân giữa bằng các pin A0 trên arduino, bạn sẽ có được nhiệt
độ (0-100ºC) bằng công thức:

float temperature = (5.0*analogRead(A0)*100.0/1024.0);

- Với LM35, bạn có thể tự tạo cho mình mạch cảm biến nhiệt độ sử dụng LM35 và tự động ngắt
điện khi nhiệt độ vượt ngưỡng tối đa, đóng điện khi nhiệt độ thấp hơn ngưỡng tối thiểu thông qua
module rơ le...
- LM35 thay đổi nhiệt độ nhanh và chính xác
- Với ưu điểm như hoạt động khá chính xác với sai số ít, kích thước nhỏ và giá thành thấp, IC cảm
biến nhiệt độ LM35 là một trong những cảm biến tương tự được sử dụng rất nhiều trong các ứng
dụng đo nhiệt độ thời gian thực.
 Thông số kĩ thuật:
 Điện áp hoạt động: 4-20V DC.
 Công suất tiêu thụ: 60uA.
 Khoảng đo nhiệt độ: -55°C đến 150°C.
 Nhiệt độ thay đổi tuyến tính: 10mV/°C.
 Độ chính xác thực tế: 1/4°C ở nhiệt độ phòng và 3/4°C ngoài khoảng 2°C tới 150°C.
 Kiểu chân: TO92.
 Kích thước: 4.30mm × 4.30mm.

1.2.3. LCD Text 16x02


- Màn hình text LCD16x02 xanh lá sử dụng driver HD44780, có khả năng hiển thị 2 dòng với mỗi
dòng 16 ký tự, màn hình có độ bền cao, rất phổ biến, nhiều code mẫu và dễ sử dụng thích hợp cho
những người mới học và làm dự án.

6
Hình 6: Mặt trước và sau của LCD Text 16x02
 Thông số kỹ thuật:
- Điện áp hoạt động là 5 V
 Kích thước: 80 x 36 x 12.5 mm.
 Chữ đen, nền xanh lá.
 Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng khi kết nối với Breadboard.
 Tên các chân được ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối.
 Có đèn led nền, có thể dùng biến trở hoặc PWM điều chình độ sáng để sử dụng ít điện
năng hơn.
 Có thể được điều khiển với 6 dây tín hiệu.
 Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật.
Sơ đồ chân tính hiệu
TT TÊN GIÁ TRỊ MÔ TẢ
1 VSS GND 0V
2 VCC Chân nguồn 5V
3 V0 Độ tương phản
4 RS Lựa chọn thanh RS=0 (mức thấp) chọn thanh ghi lệnh
ghi RS=1 (mức cao) chọn thanh ghi dữ liệu
5 R/W Chọn thanh ghi R/W=0 thanh ghi viết
iết dữ liệu R/W=1 thanh ghi đọc
6 E Enable
7 DB0
8 DB1
9 DB2
10 DB3 Chân truyền dữ 8 bit: DB0DB7
11 DB4 liệu
12 DB5
13 DB6
14 DB7
15 A Cực dương led 0V đến 5V
nền
16 K Cực âm led nền 0V

7
 Chức năng của từng chân LCD 16x02:
 Chân số 1 - VSS : chân nối đất cho LCD được nối với GND của mạch điều khiển.
 Chân số 2 – VDD : chân cấp nguồn cho LCD, được nối với VCC=5V của mạch điều khiển.
 Chân số 3 - VE : điều chỉnh độ tương phản của LCD.
 Chân số 4 - RS : chân chọn thanh ghi, được nối với logic "0" hoặc logic "1":
+ Logic “0”: Bus DB0 - DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi”
- write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read).
+ Logic “1”: Bus DB0 - DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
 Chân số 5 - R/W : chân chọn chế độ đọc/ghi (Read/Write), được nối với logic “0” để ghi
hoặc nối với logic “1” đọc.
 Chân số 6 - E : chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0- DB7,
các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân này như sau:
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào thanh ghi bên trong khi phát hiện một
xung (high-to-low transition) của tín hiệu chân E
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high
transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp
 Chân số 7 đến 14 - D0 đến D7: 8 đường của bus dữ liệu dùng để trao đổi thông tin với
MPU. Có 2 chế độ sử dụng 8 đường bus này là: Chế độ 8 bit (dữ liệu được truyền trên cả
8 đường, với bit MSB là bit DB7) và Chế độ 4 bit (dữ liệu được truyền trên 4 đường từ
DB4 tới DB7, bit MSB là DB7)
 Chân số 15 - A : nguồn dương cho đèn nền.
 Chân số 16 - K : nguồn âm cho đèn nền.

1.2.4. Module LCD I2C

- Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là đường truyền
dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ để đồng bộ và chỉ theo một hướng. Như
ta thấy trên hình vẽ trên, khi một thiết bị ngoại vi kết nối vào đường bus I2C thì chân SDA của nó
sẽ nối với dây SDA của bus, chân SCL sẽ nối với dây SCL.

8
- Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế độ nhanh (Fast mode).
- Mỗi dây SDA hãy SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở
kéo lên (pullup resistor). Sự cần thiết của các điện trở kéo này là vì chân giao tiếp I2C của các
thiết bị ngoại vi thường là dạng cực máng hở (opendrain hay opencollector). Giá trị của các điện
trở này khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động trong khoảng 1K đến
4.7k.
- Trở lại với hình 1, ta thấy có rất nhiều thiết bị (ICs) cùng được kết nối vào một bus I2C, tuy nhiên
sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được nhận ra bởỉ một địa
chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thể hoạt
động như là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động truyền
hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hãy tớ (slave).
 Chế độ hoạt động (tốc độ truyền):
- Các bus I2C có thể hoạt động ở ba chế độ, hay nói cách khác các dữ liệu trên bus I2C có thể
được truyền trong ba chế độ khác nhau:
1.Chế độ tiêu chuẩn (Standard mode).
2. Chế độ nhanh (Fast mode) .
3. Chế độ cao tốc High-Speed (Hs) mode.
1.2.5. MCP3008

9
 IC Chuyển Đổi ADC 10 Bit
 Điện áp 2.7 - 5.5V
 Dòng điện 500uA
 Dải nhiệt độ: -40 đến 85 độ
 DIP16

10
HƯƠNG II: LÝ THUYẾ MÁY
TÍNH NHÚNG RASPBERRY PI 3
VÀ NGÔN NGỮ LẬP TRÌNH
PYTHON
2.1. Khái niệm Raspberry Pi
- Raspberry Pi là từ để chỉ các máy tính chỉ có một board mạch (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 – một
tổ chức phi lợi nhuận với tiêu chí xây dựng hệ thống mà nhiều người có thể sử dụng được trong
những công việc tùy biến khác nhau.
- Raspberry 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 sản xuất bởi 3 OEM: Sony, Qsida, Egoman. Và được phân phối chính bởi các công
ty Element14, RS Components và Egoman.
- Nhiệm vụ ban đầu của dự án Raspberry Pi là tạo ra máy tính rẻ tiền có khả năng lập trình cho
những sinh viên , nhưng Pi đã được sự quan tâm từ nhiều đối tượng khác nhau.
- Đặc tính của Raspberry Pi xây dựng xoay quanh bộ xử lí SoC Broadcom BCM2835 (là chip xử
lí mobile mạnh mẽ có kích thước nhỏ hay được dùng trong điện thoại di động) bao gồm CPU,
GPU, bộ xử lí âm thanh /video , và các tính năng khác … tất cả được tích hợp bên trong chip có
điện năng thấp này.
- Raspberry Pi không thay thế hoàn toàn hệ thống để bàn hoặc máy xách tay. Ta không thể chạy
Windows trên đó vì BCM2835 dựa trên cấu trúc ARM nên không hỗ trợ mã x86/x64 , nhưng vẫn
có thể chạy bằng Linux với các tiện ích như lướt web, môi trường Desktop và các nhiệm vụ khác.
-Tuy nhiên Raspberry Pi là một thiết bị đa năng đáng ngạc nhiên với nhiều phần cứng có giá thành
rẻ nhưng rất hoàn hảo cho những hệ thống điện tử, những dự án DIY, thiết lập hệ thống tính toán
rẻ tiền cho những bài học trải nghiệm lập trình.
- Ngày 29/02/2012, Raspberry chính thức được phát hành với phiên bản 256 MB RAM, sau đó
được nâng cấp (model B và B +) lên đến 512 MB RAM và đúng 4 năm sau 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, đặc biệt là hỗ trợ
Wifi và Bluetooth sẵn trên bo mạch. Raspberry Pi 3 với CPU ARM Cortex-A53 Quadcore 1.2GHz
64-bit, RAM 1GB và đặc biệt hỗ trợ chuẩn Wifi 802.11n cùng Bluetooth 4.1, giúp nâng cao hiệu
năng công việc.

Hình 7. Hình ảnh thực tế Raspberry Pi


11
2.2. Cấu hình của Raspberry Pi 3
- Raspberry Pi 3 Model B là thế hệ thứ 3 và mới nhất tính đến thời điểm hiện tại của gia đình.
- Raspberry Pi , nó ra đời vào tháng 2 năm 2016. Cấu hình Raspberry Pi có khá nhiều thay đổi:
 CPU 64 bit quad-core bộ vi xử lý ARM Cortex A53, tốc độ 1.2GHz gấp 10 lần so với thế
hệ đầu tiên.
 Tích hợp wireless chuẩn 802.11n.
 Tích hợp Bluetooth 4.1 ( sở hữu tính năng tiết kiệm năng lượng BLE).
 Broadcom là nhà sản xuất chip (SoC) cho Raspberry Pi 3, với tên mã BCM2837, chúng ta
có thể xem trên board mạch.
 Bộ nhớ RAM 1G.
 4 cổng USB.
 Cổng HDMI, hỗ trợ Full HDMI.
 Cổng Ethernet (hay là cổng mạng LAN).
 Jack cắm audio 3.5mm.
 Giao tiếp Camera qua CSI.
 Hỗ trợ hiển thị DSI.
 Khe gắn Micro SD card được hàn chết trên board theo kiểu Push-Pull (nghĩa là bạn muốn
gắn vào thì đẩy thẻ vào, lấy ra thì kéo ra), theo như hãng giải thích sẽ tốt hơn kiểu Push-
Push trước kia.
 Vi xử lý hình ảnh VideoCore IV 3D.
 Kết nối Raspberry Pi 3

Hình 8. Tổng quan phần cứng của Raspberry Pi 3


- Khe cắm thẻ nhớ: Có thể nhận thấy sẽ không có ổ cứng trên Raspberry Pi và thay vào đó là thẻ nhớ
SD đây là nơi lưu trữ hệ điều hành và tất cả các dữ liệu hoạt động của Raspberry Pi . Tất cả dữ liệu
sẽ được lưu trữ trên thẻ nhớ này. Cần dùng ít nhất là thẻ 4GB class 4 (4MB/s) cho Raspberry Pi (khuyên
dùng thẻ 8GB class 10).
- Micro USB Power: Một trong những điều đầu tiên có thể nhận thấy là Raspberry Pi không có nút
nguồn. Micro USB được chọn làm cổng cấp nguồn. RPi có thể sử dụng đến 700mA tại mức áp 5V khi
bạn sử dụng nhiều thiết bị USB và cổng LAN. Do đó để RPi hoạt động ổn định, chúng chúng ta
nên sử dụng bộ nguồn USB 5V 1A. Ngoài việc cấp nguồn cho Pi thông qua cổng micro USB, ta có
thể cấp nguồn trực tiếp vào cổng GPIO (5V và Gnd). Nhưng lưu ý điện áp quá mức 5V cấp trực tiếp vào
GPIO có thể gây hư hỏng các thiết bị cắm vào cổng USB, chip quản lý USB và LAN. Tốt nhất nên sử dụng
1 nguồn switching chuyển về 5V hoặc sử dụng IC LM7805.
- TFT Touch Screen: nơi đây sẽ giúp cho bạn có thể kết nối Raspberry Pi với màn hình cảm ứng

12
để hiển thị và sử dụng Raspberry một cách trực quan nhất. Chúng ta có thể thực hiện các tác vụ
tương đương như khi sử dụng chuột và bàn phím.
- Camera expansion: khe cắm này là để cắm modem camera vào Raspberry Pi. Khi sản xuất
Raspberry Pi thì nhà sản xuất còn sản xuất thêm một modem camera 5MP nhưng người mua không
được hỗ trợ mà phải mua thêm. Chúng ta có thể chụp hình, quay phim, ... làm việc tất cả các tác
vụ như trên một camera bình thường.
- Cổng HDMI: cổng này dùng để kết nối với các thiết bị có hổ trợ chuẩn kết nối HDMI. Có tới 14
chuẩn video được hỗ trợ và tín hiệu HDMI có thể dễ dàng chuyển đổi thành các chuẩn khác như DVI, RCA,
hoặc SCART. Nếu thiết bị của chúng ta không hổ trợ HDMI mà chỉ hổ trợ VGA thì chúng ta phải
sử dụng một dây cáp chuyển đổi từ HDMI sang VGA. Thường thì cổng này dùng để kết nối ra
màn hình, tivi, máy chiếu, để hiển thị
giao diện của hệ điều hành.
- Cổng kết nối Ethenet: dùng để kết nối internet, mạng Lan, truy cập SSH,...
- Cổng USB: dùng để kết nối với chuột, bàn phím, usb, usb 3g, usb wifi và các thiết bị có hổ trợ
cổng USB.
- STEREO AUDIO: dùng để kết nối với tai nghe, loa, và các thiết bị ân thanh có cổng Jack
3.5mm.
- GPIO: Raspberry Pi 3 cung cấp 40 cổng GPIO, giao tiếp SPI, I2C, Serial. Các cổng GPIO được
sử dụng để xuất/nhận giá trị 0/1 ra/vào từ bên ngoài. Giao tiếp SPI,I2C, Serial có thể được dùng
để kết nối trực tiếp với các vi điều khiển khác. Đặc biệt phù hợp cho những ai cần điều khiển các
thiết bị điện tử ngoại vi.

Hình 9. Raspberry Pi và các thiết bị kết nối với nó.

13
Hình 10. Sơ đồ chân GPIO của Raspberry Pi 3
- Các thiết bị đi kèm: Có 2 phụ kiện bắt buộc phải có để có thẻ chạy Raspberry là : nguồn cung
cấp và thẻ nhớ SD để cài hệ điều hành.
+ Ngoài ra , để sử dụng tốt hơn những ứng dụng của Raspberry chúng ta có thẻ lựa chọn thêm
những sản phẩm hỗ trợ cho Raspberry như:
 Dây HDMI để kết nối với màn hình máy tính, cáp nối mạng hay camera…
 Nguồn cho Raspbery 5V-2A.
 Dây HDMI cabos 1.5m.
 Vỏ hộp Pi2/B+.
 Raspberry Pi Camera Board.
 Kết nối wifi cho Pi : Wireless USB EP-N8508GS.
 Màn hình cảm ứng 7 inch.
 Thẻ nhớ.

Hình 11. Các thiết bị đi kèm với Raspberry Pi

14
2.3. Hệ điều hành của Raspberry Pi 3
- Muốn sử dụng được Raspberry Pi ta cần phải cài đặt hệ điều hành cho nó. Về cơ bản Raspberry
Pi chủ yếu sử dụng các hệ điều hành dựa trên nhân Linux.
- Điểm danh một số HĐH nổi tiếng chạy trên Raspberry Pi như:
- Các hệ điều hành hiện tại mà Raspberry Pi hổ trợ:
+ NOOBS (New Out Of Box Software): đây là hệ điều hành cơ bản nhất của R-Pi, không hổ trợ
giao diện mà chỉ dùng giao diện dòng lệnh.
+ Raspbian: được tạo nên từ hệ điều hành Debian của linux chuyên dùng cho các dòng máy tính,
có giao diện như 1 máy tính, hổ trợ cả về mạng, và giao tiếp vào ra.
+ Pidora: tạo nên từ phiên bản hệ điều hành Fedora của linux, cũng hổ trợ tốt về giao diện, mạng
và giao tiếp vào ra.
+ RaspBMC: tạo ra để chuyên dùng giải trí, sử dụng giao diện XBMC media center, giao diện
thường thấy trong các TIVI internet hiện nay.
+ OpenELEC: một phiên bản dùng giao diện XBMC Mediacenter khác, hổ trợ nhanh và thân
thiện cho người sử dụng.
+ RISC OS: phiên bản hệ điều hành rút gọn với tính năng hoạt động nhanh nhất trong các hệ điều
hành.
+ Arch: phiên bản hệ điều hành phát triển riêng cho các dòng kít dùng chip ARM.

Hình 12. Giao diện hệ điều hành Raspbian


- Trong khuôn khổ thực hiện đề tài, em sử dụng hệ điều hành Raspbian cho Raspberry Pi 3 vì
đây là hệ điều hành chính thức, hơn nữa nó hoạt động dựa trên Debian mà Debian trong thế giới
Linux vô cùng lớn và có nguồn tài liệu phong phú rất có lợi cho quá trình nghiên cứu thực hiện đề
tài.

15
2.4. Ngôn ngữ lập trình Python
 Python là gì?
- Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm 1990. Python
hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như Perl,
Ruby, Scheme, Smalltalk, và Tcl.
- Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software
Foundation quản lý.
- Theo đánh giá của Eric S. Raymond, Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ
ràng, thuận tiện cho người mới học lập trình.
- Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu, như
nhận định của chính Guido van Rossumtrong một bài phỏng vấn ông.
Ban đầu, Python được phát triển để chạy trên nền Unix.
- Nhưng rồi 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à các hệ điều hành khác thuộc họ Unix.
- Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum
hiện nay vẫn là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng
phát triển của Python.

Hình 13. Biểu tượng ngôn ngữ lập trình Python


 Đặc điểm của ngôn ngữ lập trình Python
- Python được thiết kế để trở thành một ngôn ngữ dễ học, mã nguồn dễ đọc, bố cục trực quan, dễ
hiểu, thể hiện qua các điểm sau:
 Từ khóa:
- Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các kí hiệu và cấu trúc cú pháp so với
các ngôn ngữ khác.
- Python là một ngôn ngữ phân biệt kiểu chữ HOA, chữ thường.
- Như C/C++, các từ khóa của Python đều ở dạng chữ thường.

and del for is rasie


assert elif from lambda return
break else global not try
class except if or while
continue exec import pass yield
def finally in print

16
 Khối lệnh:
- Trong các ngôn ngữ khác, khối lệnh thường được đánh dấu bằng cặp kí hiệu hoặc từ khóa. Ví
dụ, trong C/C++, cặp ngoặc nhọn { } được dùng để bao bọc một khối lệnh.
- Python có một cách rất đặc biệt để tạo khối lệnh, đó là thụt các câu lệnh trong khối vào sâu hơn
(về bên phải) so với các câu lệnh của khối lệnh cha chứa nó. Ta có thể sử dụng dấu tab hoặc khoảng
trống để thụt các câu lệnh vào.
- Ví dụ, giả sử có đoạn mã sau trong C/C++:
#include <math.h>//...
delta = b * b – 4 * a * c; if (delta > 0)
{
// Khối lệnh mới bắt đầu từ kí tự { đến }
x1 = (- b + sqrt(delta)) / (2 * a);
x2 = (- b - sqrt(delta)) / (2 * a);
printf("Phuong trinh co hai nghiem phan biet:\n");
printf("x1 = %f; x2 = %f", x1, x2);
}
- Đoạn mã trên có thể được viết lại bằng Python như sau:
import math #...
delta = b * b – 4 * a * c if delta > 0:
# Khối lệnh mới, thụt vào đầu dòng
x1 = (- b + math.sqrt(delta)) / (2 * a)
x2 = (- b – math.sqrt(delta)) / (2 * a)
print "Phuong trinh co hai nghiem phan biet:"
print "x1 = ", x1, "; ", "x2 = ", x2

 Khả năng mở rộng:


- Python có thể được mở rộng: nếu ta biết sử dụng C, ta có thể dễ dàng viết và tích hợp vào Python
nhiều hàm tùy theo nhu cầu. Các hàm này sẽ trở thành hàm xây dựng sẵn (built-in) của Python.
- Ta cũng có thể mở rộng chức năng của trình thông dịch, hoặc liên kết các chương trình Python
với các thư viện chỉ ở dạng nhị phân (như các thư viện đồ họa do nhà sản xuất thiết bị cung cấp).
- Hơn thế nữa, ta cũng có thể liên kết trình thông dịch của Python với các ứng dụng viết từ C và
sử dụng nó như là một mở rộng hoặc một ngôn ngữ dòng lệnh phụ trợ cho ứng dụng đó.
 Trình thông dịch:
- Python là một ngôn ngữ lập trình dạng thông dịch, do đó có ưu điểm tiết kiệm thời gian phát
triển ứng dụng vì không cần phải thực hiện biên dịch và liên kết.
- Trình thông dịch có thể được sử dụng để chạy file script, hoặc cũng có thể được sử dụng theo
cách tương tác.
- Ở chế độ tương tác, trình thông dịch Python tương tự shell của các hệ điều hành họ Unix, tại đó,
ta có thể nhập vào từng biểu thức rồi gõ Enter, và kết quả thực thi sẽ được hiển thị ngay lập tức.
- Đặc điểm này rất hữu ích cho người mới học, giúp họ nghiên cứu tính năng của ngôn ngữ; hoặc
để các lập trình viên chạy thử mã lệnh trong suốt quá trình phát triển phần mềm.
- Ngoài ra, cũng có thể tận dụng đặc điểm này để thực hiện các phép tính như với máy tính bỏ
túi.
 Lệnh và cấu trúc điều khiển:
- Mỗi câu lệnh trong Python nằm trên một dòng mã nguồn. Ta không cần phải kết thúc câu lệnh
bằng bất kì kí tự gì.
- Cũng như các ngôn ngữ khác, Python cũng có các cấu trúc điều khiển.
17
- Chúng bao gồm:
+ Cấu trúc rẽ nhánh: cấu trúc if (có thể sử dụng thêm elif hoặc else ), dùng để thực thi có điều
kiện một khối mã cụ thể.
+ Cấu trúc lặp, bao gồm: Lệnh while: chạy một khối mã cụ thể cho đến khi điều kiện lặp có giá
trị false.
+ Vòng lặp for: lặp qua từng phần tử của một dãy, mỗi phần tử sẽ được đưa vào biến cục bộ để
sử dụng với khối mã trong vòng lặp.
 Lớp, đối tượng:
- Python cũng có từ khóa class dùng để khai báo lớp (sử dụng trong lập trình hướng đối tượng) và
lệnh def dùng để định nghĩa hàm.
 Hệ thống kiểu dữ liệu:
- Python sử dụng hệ thống kiểu duck typing, còn gọi là latent typing (tự động xác định kiểu). Có
nghĩa là, Python không kiểm tra các ràng buộc về kiểu dữ liệu tại thời điểm dịch, mà là tại thời
điểm thực thi. Khi thực thi, nếu một thao tác trên một đối tượng bị thất bại, thì có nghĩa là đối
tượng đó không sử dụng một kiểu thích hợp.
- Python cũng là một ngôn ngữ định kiểu mạnh. Nó cấm mọi thao tác không hợp lệ, ví dụ cộng
một con số vào chuỗi kí tự.
- Sử dụng Python, ta không cần phải khai báo biến. Biến được xem là đã khai báo nếu nó được
gán một giá trị lần đầu tiên. Căn cứ vào mỗi lần gán, Python sẽ tự động xác định kiểu dữ liệu của
biến. Python có một số kiểu dữ liệu thông dụng sau:
 int, long: số nguyên (trong phiên bản 3.x long được nhập vào trong kiểu int). Độ dài của
kiểu số nguyên là tùy ý, chỉ bị giới hạn bởi bộ nhớ máy tính.
 float: số thực
 complex: số phức, chẳng hạn 5+4j
 list: dãy trong đó các phần tử của nó có thể được thay đổi, chẳng hạn [8, 2, 'b', - 1.5]. Kiểu
dãy khác với kiểu mảng (array) thường gặp trong các ngôn ngữ lập trình ở chỗ các phần
tử của dãy không nhất thiết có kiểu giống nhau. Ngoài ra phần tử của dãy còn có thể là một
dãy khác.
 tuple: dãy trong đó các phần tử của nó không thể thay đổi.
 str: chuỗi kí tự. Từng kí tự trong chuỗi không thể thay đổi. Chuỗi kí tự được đặt trong dấu
nháy đơn, hoặc nháy kép.
 dict: từ điển, còn gọi là "hashtable": là một cặp các dữ liệu được gắn theo kiểu {từ khóa:
giá trị}, trong đó các từ khóa trong một từ điển nhất thiết phải khác nhau. Chẳng hạn {1:
"Python", 2: "Pascal"}
 set: một tập không xếp theo thứ tự, ở đó, mỗi phần tử chỉ xuất hiện một lần.
- Ngoài ra, Python còn có nhiều kiểu dữ liệu khác.
 Module:
- Python cho phép chia chương trình thành các module để có thể sử dụng lại trong các chương
trình khác. Nó cũng cung cấp sẵn một tập hợp các modules chuẩn mà lập trình viên có thể sử dụng
lại trong chương trình của họ.
- Các module này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ
thống, trợ giúp lập trình mạng (socket),…
 Đa năng:
- Python là một ngôn ngữ lập trình đơn giản nhưng rất hiệu quả.
- So với Unix shell, Python hỗ trợ các chương trình lớn hơn và cung cấp nhiều cấu trúc hơn.
- So với C, Python cung cấp nhiều cơ chế kiểm tra lỗi hơn. Nó cũng có sẵn nhiều kiểu dữ liệu cấp
cao, ví dụ như các mảng (array) linh hoạt và từ điển (dictionary) mà ta sẽ phải mất nhiều thời gian
nếu viết bằng C.
18
- Python là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của lập trình viên:
+ Python thích hợp với các chương trình lớn hơn cả AWK và Perl.
+ Python được sử dụng để lập trình Web. Nó có thể được sử dụng như một ngôn ngữ kịch bản.
+ Python được thiết kế để có thể nhúng và phục vụ như một ngôn ngữ kịch bản để tuỳ biến và mở
rộng các ứng dụng lớn hơn.
+ Python được tích hợp sẵn nhiều công cụ và có một thư viện chuẩn phong phú, Python cho phép
người dùng dễ dàng tạo ra các dịch vụ Web, sử dụng các thành phần COM hay CORBA,
hỗ trợ các loại định dạng dữ liệu Internet như email, HTML, XML và các ngôn ngữ đánh dấu
khác. Python cũng được cung cấp các thư viện xử lý các giao thức Internet thông dụng như
HTTP,FTP,…
+ Python có khả năng giao tiếp đến hầu hết các loại cơ sở dữ liệu, có khả năng xử lí văn bản, tài
liệu hiệu quả, và có thể làm việc tốt với các công nghệ Web khác.
+ Python đặc biệt hiệu quả trong lập trình tính toán khoa học nhờ các công cụ Python Imaging
Library, pyVTK, MayaVi 3D Visualization Toolkits, Numeric Python, ScientificPython,…
+ Python có thể được sử dụng để phát triển các ứng dụng Desktop. Lập trình viên có thể dùng
wxPython, PyQt, PyGtk để phát triển các ứng dụng giao diện đồ họa (GUI) chất lượng cao.
+ Python cũng có sẵn một unit testing framework để tạo ra các các bộ test (test suites)
 Một số cú pháp cơ bản của ngôn ngữ lập trình Python
 In ra màng hình
- Cú pháp :
print ‘nội dung cần hiển thị’
Biến số
Khai báo biến bằng một câu lệnh gán.
a=1
Ta có thể gán nhiều loại giá trị (số, chuỗi) cho một biến.
a=1
a = 'Hello World' a = [1, 2, 3]
a = [1.2, 'Hello', 'W', 2]
 Toán tử số học
- Python cũng hỗ trợ một số toán tử toán học thông dụng như:
- Phép cộng : +
- Phép trừ : -
- Phép nhân : *
- Phép chia : /
- Phép chia lấy dư : %
- Một số phép so sánh thông thường như < (bé hơn), <= (bé hơn hoặc bằng), > (lớn hơn),
>= (lớn hơn hoặc bằng), == (bằng), != (khác) để so sánh 2 giá trị.
 Cấu trúc điều khiển
- Python hỗ trợ một số cấu trúc điều khiển thông dụng. Hầu hết các cấu trúc điều khiển đều dựa
vào thụt đầu dòng (indention) để tạo thành một block xử lý, thay vì sử dụng { …} như các ngôn
ngữ khác (PHP, Javascript).
Ví dụ :
if condition1:
indentedStatementBlockForTrueCondition1 elif condition2:
indentedStatementBlockForFirstTrueCondition2 elif condition3:
indentedStatementBlockForFirstTrueCondition3 elif condition4:
indentedStatementBlockForFirstTrueCondition4
else:

19
indentedStatementBlockForEachConditionFalse
 Switch…case
- Python không có cấu trúc switch …case
 While
- Cú pháp:
+ while điều kiện đầu :
câu lệnh
Ví dụ:
count = 0
while (count < 9):
print 'The count is: ', count count = count + 1
print "Good bye!"
Kết quả hiển thị của ví dụ trên:
The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!
 Lệnh lặp For…in
- Cú pháp:
+ for vòng lặp in trình tự lâp: câu lệnh
Ví dụ:
for letter in 'Python':
print 'Current Letter : ', letter
fruits = ['banana' , 'apple', 'mango'] for fruit in fruits:
print 'Current fruit : ', fruit print "Good bye!"
Kết quả hiển thị của ví dụ trên:
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
 Hàm
- Khai báo hàm theo cú pháp:
def functionname (thông số 1, thông số 2,..): Câu lệnh
- Hàm nếu không trả dữ liệu thì mặc định sẽ trả về giá trị : None
Ví dụ khai báo hàm tính và trả về giá trị tổng của 2 tham số đầu vào:
def sum(a, b):

20
return (a+b)
Cách gọi hàm:
sum(1, 2) #trả về giá trị là 3
Hàm có hỗ trợ giá trị mặc định cho tham số khi không truyền vào. Ví dụ
def plus(c, d = 10):
return (c+d)
Nếu gọi hàm trên như sau:
plus(2) #kết quả trả về là 12
 Xử lý chuỗi
- Một chuỗi có thể khai báo bằng dấu nháy đôi " hoặc đơn ' .
Ví dụ các chuỗi sau:
str1 = "Hello" str2 = 'world'
- Có thể truy xuất từng ký tự trong một chuỗi theo hình thức index.Ví dụ:
str1[0] , str1[1]
- Có thể sử dụng 3 dấu nháy (đôi hoặc đơn) để khai báo chuỗi trên nhiều dòng. Ví dụ
paragraph = """This is line 1 This is line 2
This is line 3"

21
HƯƠNG III: THIẾT KẾ PHẦN CỨNG VÀ
LẬP TRÌNH PHẦN MỀM

3.1. Thiết kế phần cứng


3.1.1 Các linh kiện điện tử cần thiết
- Để thiết kế hoàn chỉnh phần cứng, ta cần các linh kiện điện tử và các module sau:
 Raspberry Pi 3 với hệ điều hành được cài đặt sẵn.
 Cảm biến nhiệt độ LM35.
 Nguồn điện 5V.
 Điện trở 1KΩ (x3).
 Biến trở 10k.
 LCD 16x02.
 Module I2C LCD.
 MCP3008.

Hình 14. Sơ đồ kết nối phần cứng hoàn chỉnh

22
3.1.2. Kết nối phần cứng

- Để hiển thị LCD16x2 theo cách thông thường, bạn sẽ phải mất rất nhiều GPIO trên Pi (tối thiểu
4 GPIO cho các chân dữ liệu và 3 chân GPIO điều khiển LCD). Với mạch chuyển tiếp Module
I2C LCD, bạn chỉ cần dùng 2 chân I2C trên Pi (SDA và SCL) để giao tiếp với LCD16x2.
- Lý do là mạch LCM1602 sẽ đứng trung gian chuyển đổi tín hiệu dữ liệu gửi từ Pi qua I2C thành
tín hiệu dữ liệu hiển thị và điều khiển LCD.
- Bảng kết nối chân LCD với GPIO của Raspberry Pi 3

Chân LCD Chân Raspberry Pi


GND GND
VCC + 5V
SDA GPIO02
SCL GPIO03

- Như trong hình, ta chỉ sử dụng 3 chân của cảm biến nhiệt độ LM35
Chân 1- nối VCC của nguồn +5V trên raspberry pi .
Chân 2- out
Chân 3- GROUND.
- Giải thích quá trình làm việc của mạch:
- Sau khi hoàn thành kết nối phần cứng, mạch đo nhiệt độ sẽ hoạt động như sau:
23
- Cảm biến nhiệt độ LM35 sẽ truyền tín hiệu đo được dưới dạng analog đến IC chuyển đổi tính
hiệu analog sang tín hiệu digital ( MCP3008).
- Sau khi nhận được tín hiệu trả về từ MCP3008 thì Raspberry sẽ ghi lại xử lý tín hiệu đó bằng
những phương trình toán học đã được viết sẵn trong chương trình code.
- Nhiệt độ cần đo sẽ được hiển thị trong màn hình LCD 16x2.
3.2. Thiết kế phần mềm
3.2.1. Cài đặt hệ điều hành Raspbian cho Raspberry PI 3
- Các phần mềm cần thiết cho quá trình cài đặt.
 SD Formatter
- SD Formatter hỗ trợ người dùng thực hiện công việc định dạng thẻ nhớ, tương thích với nhiều
loại thiết bị khác nhau, giúp phục hồi lại dung lượng của thẻ nhớ và tăng cường khả năng lưu trữ.
- Phần mềm này có khả năng kết nối với các đầu đọc/ghi thẻ USB và ổ đọc thẻ của máy tính.
- Phần mềm này cũng cung cấp các chế độ định dạng thẻ nhớ khác nhau bao gồm: Quick là chế
độ mặc định, chỉ thực thi hệ thống tập tin siêu dữ liệu; Full (Erase OFF) là chế độ thực thi định
dạng đầy đủ; Full (Erase ON) cũng là chế độ định dạng đầy đủ và loại bỏ các phần mềm được cài
đặt trên thẻ.
- Tùy vào trường hợp cụ thể, người dùng nên sử dụng chế độ nào cho phù hợp.
- Các tính năng chính của SD Formatter:
+ Định dạng lại thẻ nhớ và khôi phục lại dung lượng ban đầu.
+ Cung cấp nhiều chế độ định dạng để lựa chọn.
+ Xóa dữ liệu đã được ghi trên thẻ.
+ Hỗ trợ với các đầu đọc hay ghi thẻ USB và ổ đọc thẻ của máy tính.
 Phần mềm Win32 Disk Imager (WDI)
- Win32 Disk Imager là ứng dụng tạo bản sao cho thiết bị thay vì sao chép các tập tin trong thiết
bị đó. Nghĩa là ứng dụng cho phép khôi phục các nội dung trong đĩa về nguyên trạng thái gốc và
ghi hình ảnh khởi động.
- Win32 Disk Imager là ứng dụng di động, vì vậy người dùng không cần mất thời gian cài đặt.
Nghĩa là, không giống các trình cài đặt khác, Win32 Disk Imager không bổ sung các hạng mục
mới vào đăng ký và ổ cứng của Windows, và không để lại dữ liệu rác trong đĩa sau khi người dùng
xóa ứng dụng.
- Ngoài ra, Win32 Disk Imager còn hỗ trợ sao lưu các thiết bị U3 nhằm bảo vệ các cài đặt và tập
tin bên trong. Người dùng chỉ cần chọn thiết bị qua menu kéo xuống và đường dẫn thư mục tới
IMG với sự trợ giúp của trình duyệt tập tin.
- Các tính năng chính:
+ Không yêu cầu cài đặt, không để lại dữ liệu rác trong ổ đĩa.
+ Hỗ trợ tính năng ghi hình ảnh khởi động.
+ Hỗ trợ tính năng khôi phục nội dung trong đĩa về nguyên trạng thái gốc.
+ Hỗ trợ sao lưu thiết bị U3.
+ Tạo mã băm MD5.
 DHCP Server
- DHCP là từ viết tắt của Dynamic Host Configuration Protocol (Giao thức Cấu hình Host Động).
- Nó là giao thức cấp phát địa chỉ IP cho các thiết bị trên một mạng. Mọi thiết bị kết nối vào mạng
đều cần một địa chỉ IP và địa chỉ IP đó thường được cấp phát bởi máy chủ DHCP (DHCP server)
tích hợp trên router.
- Trên các hệ thống mạng lớn, một mình router không thể quản lý tất cả các thiết bị kết nối vào nó
và do đó một máy chủ chuyên dụng sẽ chịu trách nhiệm cấp địa chỉ IP.
- DHCP không chỉ cấp địa chỉ IP, nó còn cấp các thông số cần thiết cho hoạt động của mạng như
subnet mask (mặt nạ mạng), default gateway (gateway mặc định), và dịch vụ DNS.

24
 PuTTY
- PuTTY được hiểu là phần mềm sử dụng để điều khiển server thông qua mạng internet, Nó hỗ
trợ nhiều giao thức mạng, bao gồm SCP, SSH, Telnet, rlogin...
- PuTTY hỗ trợ nhiều biến thể trên "các thiết bị đầu cuối" từ xa an toàn, và cung cấp cho người
dùng trình điều khiển các SSH với khóa mã hóa, các giao thức, thuật toán mã hóa thay thế như
3DES , Arcfour, Blowfish, DES, và khóa công khai xác thực. Các lớp giao tiếp mạng hỗ trợ IPv6,
và các giao thức SSH hỗ trợ các chương trình nén openssh bị trì hoãn. Nó cũng có thể được sử
dụng với các kết nối cổng nối tiếp trong mạng LAN.
Lưu ý: Các phần mềm kể tên trên được sử dụng để phục vụ cho quá trình cài đặt HĐH
Raspberry Pi và quá trình Remote Decktop Connection để điều khiển trực tiếp Raspberry
Pi thông qua mạng Internet và địa chỉ IP của laptop .
3.2.3. Cài đặt HĐH Raspbian
 Format thẻ nhớ:
- Định dạng lại thẻ nhớ và khôi phục lại dung lượng ban đầu.
- Mở phần mềm SD Fomatter chọn vị trị của thẻ nhớ (1) và tiến hành Format thẻ (2).

Hình 16. Format thẻ nhớ


 Ghi hình ảnh vào ổ đĩa :
- Mở Win32DiskImager để bắt đầu quá trình ghi hình ảnh.
- Chọn ổ đĩa cần ghi hình ảnh (1), duyệt đến file hình ảnh của Raspbian (2) và nhấp vào Write để
- bắt đầu quá trình ghi hình ảnh (3).
- Win32DiskImager sẽ thông báo cho bạn khi dữ liệu đã được ghi.

Hình 17. Ghi hình ảnh vào ổ đĩa


 Remote Decktop Connection
- Cài đặt địa chỉ IP tĩnh cho Ethernet.
+ Bước 1: Tích vào ô Use the following IP address.
+ Bước 2: Nhập địa chỉ IP 192.168.1.1 ô IP Address và 255.255.255.0 vào ô Subnet mask
25
+ Bước 3: Nháy OK để hoàn tất.

Hình 18. Cài đặt địa chỉ IP tĩnh cho Ethernet


- Cài đặt địa chỉ IP cho Raspberry Pi
+ Bước 1: Mở chương trình DHCP chọn địa chỉ IP của Ethernet vừa cài đặt ở bước trên.
Chọn Next.

Hình 19. Chọn địa chỉ IP của Ethernet đã cài đặt

+ Bước 2: Tích vào ô Overwrite existing flie (1), nháy Write INI file (2) để xác định và nhấp chọn
Next (3)

Hình 20. Cài đặt ban đầu DHCP sever


+ Bước 3. Chọn Start trong mục Sevice và Configure trong mục Firewall Excaption.
26
+ Bước 4. Tích chọn Run DHCP sever immediately để khởi động DHCP.
+ Bước 5. Nháy chọn Fnish để hoàn tất công việc

Hình 21. Hoàn tất quá trình cấu hình DHCP


- Đăng nhập vào Raspberry Pi
- Mở chương trình PuTTY và nhập địa chỉ IP vừa thiết lập vào ô Host Name

Hình 22. Đăng nhập PuTTY


- Tại cửa sổ đăng nhập PuTTY ta nhập tài khoản mặc định của Raspberry Pi vào.
 Login as : pi
 Password: raspberry
- Tiếp theo ta sử dụng lệnh: Sudo apt-get install xrdp để cài đặt thư viện apt cho Raspberry Pi

Hình 23. Cài đặt thư viện apt cho Raspberry


27
- Mở Remote Decktop bằng cách nhấn tổ hợp phím Windows + R, sau đó gõ mstsc và nhấn OK.
- Nhập địa chỉ 192.168.1.2 vào ô Computer nháy chọn Connect
- Ở bước tiếp theo, Raspberry Pi yêu cầu nhập tài khoản, ta tiếp tục nhập tài khoản mặc định của
Raspberry vào, nháy OK. (hình 25)

Hình 24. Remote desktop connection Hình 25. Đăng nhập vào Raspberry Pi 3

- Khi giao diện màng hình laptop hiển thị như hình 26 dưới đây xem như quá trình Remote decktop
đã thành công

Hình 26. Giao diện HĐH Raspbian trên Raspberry Pi


3.2.4. Một số câu lệnh thông dụng trong Terminal của Raspberry Pi 3
- Các câu lệnh cơ bản:
+ sudo python myprog.py : chạy file python có tên là myprog
+ apt-get update: Cập nhật phiên bản Raspbian.
+ apt-get upgrade: Nâng cấp toàn bộ các gói phần mềm đã cài đặt trên Raspbian.
+ clear: Xóa màn hình terminal và các lệnh bạn đã thực thi trước đó.
+ date: Hiển thị ngày giờ hiện tại.
+ find / -name example.txt: Tìm kiếm các file có tên là example.txt trên toàn hệ thống.
+ nano example.txt: Mở file example.txt trong trình biên tập text Nano
+ poweroff: Tắt Raspberry Pi
+ raspi-config: Mở menu thiết lập cấu hình Raspberry Pi hay Raspbian.
+ reboot: Khởi động lại Raspberry Pi.
+ shutdown -h now: Tắt Raspberry Pi ngay lập tức
+ shutdown -h 01:22: Tắt Raspberry Pi vào lúc 1:22 AM.
+ startx: Mở giao diện đồ họa của Raspbian (nếu bạn đang ở giao diện console)
+ Các câu lệnh liên quan đến file, folder
+ cat example.txt: Hiển thị nội dung của file example.txt.
+ cd /abc/xyz: Di chuyển từ thư mục hiện tại sang thư mục /abc/xyz.
+ cp XXX: Copy file hoặc thư mục XXX và paste vào vị trí mới.
+ ls -la: Hiển thị danh sách các file trong folder với các thông tin file size, ngày sửa, quyền hạn
của file.
28
+ mkdir example_directory: Tạo folder tên example_directory bên trong folder hiện tại.
+ mv XXX: Nội dung cú pháp lệnh như lệnh cp nhưng mục đích của lệnh mv là di chuyển file
thay vì copy..
+ rm example.txt: Xóa file example.txt.
+ rmdir example_directory: Xóa thư mục example_directory (nếu thư mục này đang trống).
+ touch: Tạo file trắng mới trong folder hiện tại. Có thể sử dụng các lệnh khác như nano.
- Các lệnh liên quan đến mạng
+ ifconfig: Kiểm tra tình trạng mạng hiện tại trên Raspberry Pi. Bạn có thể biết IP của Raspberry
+ Pi nếu đang kết nối.
+ iwconfig: Kiểm tra adapter không dây nào đang chạy.
+ iwlist wlan0 scan: Hiển thị danh sách các mạng wifi trong khu vực.
+ iwlist wlan0 scan | grep ESSID: Hiển thị danh sách các mạng wifi trong khu vực có tên theo yêu
cầu.
+ nmap: Quét mạng và hiển thị các thiết bị đang kết nối, cổng, giao thức, trạng thái của hệ thống,
địa chỉ MAC và các thông tin khác.
+ ping: Kiểm tra kết nối giữa các thiết bị trong mạng.
+ wget http://www.website.com/example.txt: Tải file example.txt từ trên mạng về và lưu vào
folder hiện tại.
- Các lệnh liên quan đến hệ thống
+ cat /proc/meminfo: Hiển thị thông tin chi tiết về RAM của Raspberry Pi.
+ cat /proc/partitions: Hiển thị thông tin các phân vùng của thẻ nhớ hoặc ổ cứng hoặc USB cắm
trên Raspberry Pi.
+ cat /proc/version: Hiển thị phiên bản Raspberry Pi đang sử dụng
+ df -h: Hiển thị thông tin dung lượng lưu trữ còn trống.
+ dpkg –get-selections | grep XXX: Hiển thị các gói phần mềm đã cài đặt có liên quan đến từ khóa
XXX.
+ dpkg –get-selections: Hiển thị toàn bộ các phần mềm đã cài trên Raspberry Pi.
+ free: Hiển thị lượng RAM còn trống.
+ hostname -I: Hiển thị IP củaRaspberry Pi.
+ lsusb: Liệt kê các thiết bị USB đang cắm vào Raspberry Pi.
+ UP key: Bấm phím mũi tên lên sẽ hiển thị các lệnh đã từng chạy trước đây.
+ vcgencmd measure_temp: Hiển thị thông tin nhiệt độ GPU. Chi tiết có thể tham khảo thêm Kiểm
tra nhiệt độ Raspberry Pi.
+ vcgencmd get_mem arm && vcgencmd get_mem gpu: Hiển thị thông tin RAM của CPU và
GPU.

29
3.3. Viết code cho đề tài
- Lưu đồ giải thuật:

Hình 27. Lưu đồ giải thuật chương trình chính.


- Code cho chương trình
import smbus
import time
import spidev
I2C_ADDR = 0x27 # dung lenh sudo i2cdetect -y 1 ban se thay dia
chi cua module lcd la 0x27
LCD_WIDTH = 16 # so ki tu tren 1 dong
LCD_CHR = 1 # Gui ki tu
LCD_CMD = 0 # Gui lenh

LCD_LINE_1 = 0x80 # dia chi RAM dong 1


LCD_LINE_2 = 0xC0 # dia chi RAM dong 2

LCD_BACKLIGHT = 0x08 # On
#LCD_BACKLIGHT = 0x00 # Off

ENABLE = 0b00000100 # Enable bit

30
# delay
E_PULSE = 0.0005
E_DELAY = 0.0005

#bus = smbus.SMBus(0) # Pi Rev 1 ban su dung dong nay


bus = smbus.SMBus(1) # Pi Rev 2 ban su dung dong nay

def lcd_init():
# Initialise display
lcd_byte(0x33,LCD_CMD) # ban xem lai nhung lenh co ban o
Buoc 2
lcd_byte(0x32,LCD_CMD) #
lcd_byte(0x06,LCD_CMD) #
lcd_byte(0x0C,LCD_CMD) #
lcd_byte(0x28,LCD_CMD) #
lcd_byte(0x01,LCD_CMD) #
time.sleep(E_DELAY)

# gui 1 byte xuong LCD


def lcd_byte(bits, mode):
bits_high = mode | (bits & 0xF0) | LCD_BACKLIGHT
bits_low = mode | ((bits<<4) & 0xF0) | LCD_BACKLIGHT
#che do 4 bits: gui byte cao truoc byte thap sau
# byte cao
bus.write_byte(I2C_ADDR, bits_high)
lcd_toggle_enable(bits_high)

# byte thap
bus.write_byte(I2C_ADDR, bits_low)
lcd_toggle_enable(bits_low)

# dua chan E len cao roi thap de truyen du lieu di


def lcd_toggle_enable(bits):
bus.write_byte(I2C_ADDR, (bits | ENABLE))
time.sleep(E_PULSE)
bus.write_byte(I2C_ADDR,(bits & ~ENABLE))
time.sleep(E_DELAY)

# gui chuoi ki tu xuong LCD


def lcd_string(message,line):
message = message.ljust(LCD_WIDTH," ")
lcd_byte(line, LCD_CMD)
31
for i in range(LCD_WIDTH):
lcd_byte(ord(message[i]),LCD_CHR)
spi = spidev.SpiDev()
spi.open(0, 0)
def readadc(adcnum):
# read SPI data from MCP3008 chip, 8 possible adc's (0 thru 7)
if adcnum > 7 or adcnum < 0:
return -1
r = spi.xfer2([1, 8 + adcnum << 4, 0])
adcout = ((r[1] & 3) << 8) + r[2]
return adcout
lcd_init()
while True:
value = readadc(0)
volts = (value * 3.3) / 1024
temperature = volts / (10.0 / 1000)
lcd_string("Temp = %4.1f C" % (temperature), LCD_LINE_1)
lcd_string("nice weather *-*", LCD_LINE_2)
time.sleep(3)

32
HƯƠNG IV: KẾT QUẢ, KẾT LUẬN
VÀ HƯỚNG PHÁT TRIỂN

4.1. Bài học kinh nghiệm


- Trong quá trình thực hiện đề tài, có nhiều khó khăn và những bất cập xảy ra. Chính những lúc
đó mới làm cho em học hỏi thêm được nhiều kinh nghiệm và lối giải quyết vấn đề cũng như nhận
thức được sự yếu kém của chính mình. Vì thế cũng xin được nêu ra những kinh nghiệm học được
trước hết là để lưu giữ lại, sau là để làm tài liệu tham khảo cho những người muốn tìm hiểu về
những vấn đề tương tự.
- Những kinh nghiệm về sử dụng Raspberry Pi 3
+ Em cảm nhận được khả năng ứng dụng rất lớn từ việc áp dụng Raspberry Pi 3 vào thực tiễn và
trong học công nghệ hiện đại như hiện nay.
Raspberry Pi là một môi trường mới có khả năng phát triển rất mạnh nhờ sự đơn giản trong cách
lập trình của nó.
+ Những thư viện có sẵn và những đoạn code mẫu giúp cho những người thực hiện đề tài cảm
thấy họ không thực hiện đề tài một mình, mà luôn được hỗ trợ bởi một cộng đồng đông đảo. Lập
trình trên Raspberry chủ yếu sử dụng ngôn ngữ Python vì thế rất dễ hiểu và sử dụng biến đổi code
mẫu làm việc theo ý của mình.
+ Công việc lặp trình điều khiển cũng trở nên dễ dàng hơn với các GPIO của Raspberry vô cùng
da dạng nó giúp cho ta làm chủ được quá trình lập trình mà không phải suy nghĩ phải sử dụng như
thế nào cho hợp lí hay phải mở rộng thêm các chân ngõ ra.
+ Raspberry Pi có các thư viện chuyên dụng cho mỗi chức năng cá biệt hơn thế nó phù hợp với tất
cả các loại cảm biến trên thị trường hiện nay đó là điều kiện cần thiết để phát triển các mô hình
thông minh.
+ Ngoài ứng dụng trong lĩnh vực nghiên cứu dự án, Raspberry Pi còn được biết đến với vai trò là
bộ điều khiển trung tâm vận hành nhiều nhà máy, công trình trong các công ty.
+ Bên cạnh đó Raspberry còn được sử dụng như một chiếc máy tính thông mình chỉ với một màng
hình, bàn phím và chuột ta có thể biết nó thành một chiết laptop có thể chạy hệ điều hành Windown
10 Core với đầy đủ chức năng từ học tập, ứng dụng văn phòng và giải trí.
- Những kinh nghiệm trong quá trình viết code và thực hiện chương trình
+ Python được thiết kế đa mục đích, có thề lập trình web (Django rất tuyệt), devops, Internet of
Things…, hầu như python có thể sử dụng được ở tất cả các lĩnh vực, các hoạt động nghiên cứu.
Các công ty lớn như Uber, PayPal, Google, Facebook, Instagram, Netflix, Dropbox và Reddit đều
sử dụng Python trong quá trình phát triển và thử nghiệm của họ. Hơn nữa, Python cũng được sử
dụng rộng rãi trong lập trình robot và các hệ thống nhúng. Ngay cả các hệ thống kế thừa được viết
bằng C và C ++ cũng dễ dàng giao tiếp với Python.
+ Do ngày càng phổ biến, Python được hỗ trợ trực tuyến tốt ở hầu hết cấp độ. Các trang web như
Stack Overflow thường xuyên đưa ra trợ giúp với các nguyên tắc cơ bản ở cấp độ mới làm quen
với Python. Các lập trình viên làm việc trên các vấn đề phức tạp và cụ thể cũng có thể tìm thấy sự
hỗ trợ hiệu quả hơn cho ngôn ngữ lập trình này, so với các ngôn ngữ khác.
+ Python là một ngôn ngữ lập trình dễ đọc, được thiết kế với các mô tả đơn giản và cú pháp thông
thường. Trải nghiệm người dùng cũng được ưu tiên. Vì vậy, đây là ngôn ngữ rất phù hợp để dạy
cho trẻ em. Đơn giản nhất, trẻ em có thể học Python từ một phiên bản trò chơi Minecraft có tên
gọi Minecraft Pi.
+ Python cũng phù hợp để giáo dục mở rộng. Một số trường đại học dạy ngôn ngữ lập trình này
33
không chỉ trong ngành khoa học máy tính mà còn cho sinh viên toán. Ngoài ra, Matplotlib (một
thư viện Python phổ biến) được sử dụng cho các đối tượng ở tất cả các cấp để thể hiện dữ liệu
phức tạp.
+ Python cũng là một trong những ngôn ngữ phát triển nhanh nhất trên Codecademy, vì rất dễ để
học từ xa.
+ Python sử dụng mã nguồn mở, nó hoàn toàn tương thích với các phần mềm mã nguồn mở như
Open Source và GPL chính trạng thái không ràng buộc của chuỗi Python làm cho nó trở thành
một công cụ hoàn hảo cho tất cả mọi người sử dụng.
4.2. Kết quả, Kết luận
4.2.1. Kết quả đạt được.
Với những gì đã tìm hiểu và thực hiện được cùng với sự chỉ bảo tận tình của thầy Lương Hoài
Thương em đã hoàn thành sản phẩm với ứng dụng như sau :
Do được nhiệt độ. Mạch chạy ổn định với thời gian raset là 0.5s sẽ trở lại hoạt động đo tiếp tục

Hình 28. Khoảng nhiệt độ của mạch đo nhiệt độ

Kết nối mạch trên text borad

34
4.2.2. Kết luận
- Mặc dù đã hoàn thành nhưng sản phẩm của em vẫn còn các điểm hạn chế sau đây:
+ Các chân cắm còn nhiều đễ gây nhằm lẫn cho người xem.
+ Board mạch thiết kế chưa thẩm mỹ, chưa tận dụng hết các khoảng trống trên board mạch.
+ Sai số giá trị còn lớn.
- Tuy còn nhiều điểm hạn chế nhưng em vẫn cảm thấy rất phấn chấn vì đề tài này là lần đầu tiên
mở đường cho những nghiên cứu áp dụng Raspberry Pi thực tiễn trong ngành điện- điện tử.
4.2.3. Hướng phát triển
- Trong đồ án kế tiếp của mình em sẽ:
+ Thiết kế 1 board mạch hoàn chỉnh thẳm mỹ hơn.
+ Tiếp bước trên nền nghiên cứu giao tiếp cảm biến nhiệt độ với Raspberry Pi. Song song đó sẽ là
nhận dạng khuôn mặt thông qua chức năng xử lí ảnh của camera Raspberry Pi 3.
- Qua đây em cũng xin chân thành cảm ơn sự đồng hành và hỗ trợ rất tâm huyết và thân thiện của
các thầy trong khoa điện-điện tử đặc biệt là sự chỉ bảo tận tình của thầy Lương Hoài Thương giúp
em hoàn thành bài nghiên cứu này. Bài báo cáo còn rất sơ sài và chắc chắn còn nhiều thiếu xót,
mong quý thầy cô và bạn đọc góp ý chỉnh sửa để bài báo cáo này thiết thực hơn.
Cuối cùng, xin cảm ơn quý thầy cô và các bạn đã đọc bài báo cáo này.

35
36

You might also like