CHƯƠNG III
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
assert
break
class
continue
def
− 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, trái lại, 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++:
1.
#include
2.
//...
3.
delta = b * b – 4 * a * c;
4.
if (delta > 0)
5.
{
6.
// Khối lệnh mới bắt đầu từ kí tự { đến }
ĐỒ ÁN TỐT NGHIỆP
23
CHƯƠNG III
7.
8.
x1 = (- b + sqrt(delta)) / (2 * a);
9.
10.
x2 = (- b - sqrt(delta)) / (2 * a);
11.
12.
printf("Phuong trinh co hai nghiem phan biet:\n");
13.
14.
15.
printf("x1 = %f; x2 = %f", x1, x2);
}
16.
Đoạn mã trên có thể được viết lại bằng Python như sau:
1.
import math
2.
#...
3.
delta = b * b – 4 * a * c
4.
if delta > 0:
5.
# Khối lệnh mới, thụt vào đầu dòng
6.
x1 = (- b + math.sqrt(delta)) / (2 * a)
7.
x2 = (- b – math.sqrt(delta)) / (2 * a)
8.
print "Phuong trinh co hai nghiem phan biet:"
9.
print "x1 = ", x1, "; ", "x2 = ", x2
10.
− Khả năng mở rộng:
ĐỒ ÁN TỐT NGHIỆP
24
CHƯƠNG III
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. 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ể.
ĐỒ ÁN TỐT NGHIỆP
25
CHƯƠNG III
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.
ĐỒ ÁN TỐT NGHIỆP
26
CHƯƠNG III
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.
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.
ĐỒ ÁN TỐT NGHIỆP
27
CHƯƠNG III
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).
ĐỒ ÁN TỐT NGHIỆP
28
CHƯƠNG IV
CHƯƠNG IV
CẢM BIẾN SRF04 - MOTOR
SERVO - USB WIFI - SMAST CAR
L298 - PIN LIPO
4.1. Cảm biến SRF04:
4.1.1. Giới thiệu SRF04:
Cảm biến siêu âm Devantech SRF04 được sử dụng để thu các thông tin về
khoảng cách một cách chính xác trong dải từ 3cm đến 4m. Sensor này gồm bộ thu phát
siêu âm tách biệt, sensor có 4 chân nối trong đó hai chân cho nguồn nuôi, hai chân còn
lại một cho xung tín hiệu vào (Trigger Pulse Input), một cho tín hiệu ra (Echo Pulse
Output).
Hình 0.5 Mặt trước và sau của srf04.
SRF04 hoạt động thông qua việc truyền một xung âm thanh có tần số nằm
ngoài dải tần số nghe của con người. Xung này truyền ở tốc độ âm thanh khoảng
340m/giây, dưới dạng một chùm hình nón, âm thanh phản xạ trở lại tới đầu thu từ vật
thể bất kì trên đường đi của sóng siêu âm. Tín hiệu điện tại đầu thu có dạng các xung
với độ kéo dài xung phụ thuộc vào khoảng cách phản xạ kể từ vị trí vật tới đầu thu. Để
việc thu phát làm việc hiệu quả, bộ phát tạm ngừng phát sóng trong khoảng thời gian
siêu âm được truyền sau đó đợi tín hiệu phản xạ.
ĐỒ ÁN TỐT NGHIỆP
29
CHƯƠNG IV
Xung ở đầu ra của sensor được đưa tới chân GPIO của Pi. Việc xác định thời
gian kéo dài xung sẽ giúp cho chúng ta xác định được khoảng cách.
4.1.2. Thông số kỹ thuật:
−
−
−
−
−
−
−
Điện áp sử dụng: 5VDC.
Dòng tiêu thụ: cực đại là: 50mA, thường là 30mA.
Vùng làm việc của sensor: phát hiện khoảng cách từ 3cm tới 4m.
Tần số sử dụng 40Khz.
Xung kích phát 10us mức cao tương thích TTL.
Xung phản xạ mức cao có độ rộng xung tỉ lệ với khoảng cách.
Góc mở của bộ phát : 300.
4.1.3. Nguyên lý hoạt động:
Tín hiệu xung kích phát siêu âm được giữ ở mức thấp (logic 0) và sau đó đưa
lên mức cao (logic 1) trong 10us để khởi phát xung siêu âm. Xung siêu âm được tạo ra
thông qua sườn xuống của tín hiệu lối vào. Sau khi được kích phát, sóng siêu âm sẽ
được phát ra trong 8 chu kì burst. Bộ nhận sẽ giữ khoảng trống trong khoảng thời gian
chừng 100us để tránh nhiễu, ồn từ các âm sắc nhọn của sự khởi phát và sau đó cho
phép nghe âm thanh phản xạ. Đường tín hiệu dội âm ở mức thấp cho đến khi cho phép
nhận âm thanh. Khi quá trình nhận được cho phép, bộ thu sẽ phát hiện sườn xuống của
tín hiệu dội âm (nếu có vật) hoặc timeout (vượt quá thời gian cho phép). Việc đo thời
gian được tiến hành từ sườn xuống của tín hiệu lối vào và kết thúc khi sườn xuống của
tín hiệu dội âm. Nếu không có vật được phát hiện xung phản xạ sẽ vượt quá thời gian
cỡ 36ms.
Độ chính xác của cảm biến siêu âm phụ thuộc lớn vào quá trình chúng ta lập
trình thu phát tín hiệu.
Nếu đo được chính xác khoảng thời gian và không có nhiễu thì mạch cảm biến
trả về giá trị cực kỳ chính xác.điều này phụ thuộc vào cách viết chương trình không sử
dụng các hàm delay.
Sóng siêu âm chỉ dội lại khi gặp một số vật cản nếu phát sóng vào các vật như
chăn, gối nệm thì sẽ không thu về được.
ĐỒ ÁN TỐT NGHIỆP
30
CHƯƠNG IV
Nếu phát sóng siêu âm vào những vật có khả năng phản xạ với sóng siêu âm
hoặc bề mặt bị nghiên thì sẽ dội về dữ liệu thời gian sai dẫn đến quá trình đo khoảng
cách và tính toán sai.
Vận tốc của sóng siêu âm là 340m/s.
4.2. Động cơ servo mini TowerPro SG90:
Hình 0.6 Động cơ servo mini TowerPro SG90.
Các TowerPro SG90 nhỏ servo có trọng lượng nhẹ, chất lượng cao và nhanh
như chớp. Servo được thiết kế để làm việc với hầu hết các hệ thống điều khiển vô
tuyến. Đó là với hiệu suất tuyệt vời sẽ đưa bạn đến một chân trời của các chuyến
bay. Các SG90 nhỏ servo với các phụ kiện hoàn hảo cho máy bay trực thăng R/C, máy
bay, xe hơi, thuyền và xe tải sử dụng.
4.2.1 Thông số kỹ thuật của động cơ servo SG90 9G:
Mô-men xoắn: 1.5kg/cm 4.8V.
Tốc độ chạy không tải: 0.3sec/60° 4.8V.
Dòng tiêu thụ: 200-500mA.
Kích thước: 23*12.2*29mm(dài*rộng*cao).
Trọng lượng: 9g.
ĐỒ ÁN TỐT NGHIỆP
31
CHƯƠNG IV
Loại bánh răng, vỏ: nhựa.
Tương thích với JR & Futaba.
Điện áp hoạt động: 4.2-6V.
Góc quay: 180°.
Chiều dài dây cáp Servo: 250mm.
Phạm vi ứng dụng: Máy bay trực, robot nhỏ, cánh tay robot và thuyền.
Chức năng của dây:
Nâu cáp: âm. Đỏ cáp: dương. Cam cáp: tín wire.
4.2.2 Nguyên lý hoạt động:
Động cơ servo mini TowerPro SG90 hoạt động bằng cách cấp xung vào chân
(dây mầu cam ). Tùy theo độ rộng cạnh lên của xung mà quyết định quay phải (180 0)
quay giữa ( 900) quay trái (00).
00
900
Xung cạnh lên: 0.5ms
1.5ms
1800
2.5ms
Hình 0.7 Các xung và các hướng xoay tương ứng của motor servo.
Chu kỳ xung: 20ms.
Khi động cơ quay với độ rộng xung tương ứng thì Động cơ servo mini
TowerPro SG90 quay đế vị trí tương ứng với độ rộng của xung cạnh lên thì sẽ không
quay nữa cho dù ta vẫn còn cấp xung cho nó.
4.3 USB WIFI TPLINK TLWM 727N:
( 150Mbps Wireless N USB Adapter TL-WN727N )
ĐỒ ÁN TỐT NGHIỆP
32
CHƯƠNG IV
Hình 0.8 Hình ảnh thực tế của 150Mbps Wireless N USB Adapter TL-WN727N
Wireless N USB Adapter TL-WN727N cho phép bạn kết nối một máy tính để
bàn hoặc máy tính xách tay với một mạng không dây và truy cập kết nối Internet tốc
độ cao. Tuân theo chuẩn IEEE 802.11n, họ cung cấp không dây tốc độ lên đến
150Mbps, đó là có lợi cho chơi game trực tuyến hay thậm chí cả video streaming. Trên
cơ sở công nghệ IEEE 802.11n, TL-WN727N cho thấy khả năng tuyệt vời hơn của
việc giảm thiểu mất mát dữ liệu trên một khoảng cách dài và qua những trở ngại trong
một văn phòng nhỏ hoặc một căn hộ lớn, thậm chí trong một tòa nhà thép và bê tông.
Trên tất cả, bạn có thể dễ dàng nhận mạng không dây kết nối trong thời gian dài
mà các sản phẩm di sản 11g có thể không. Kênh Đánh giá Clear (CCA) tự động tránh
xung đột kênh bằng cách sử dụng tính năng lựa chọn kênh rõ ràng và đầy đủ nhận ra
những lợi thế của kênh liên kết, tăng cường rất nhiều hiệu suất không dây. Tốc độ
không dây N lên đến 150Mbps làm cho nó lý tưởng cho video, chơi game trực tuyến
và các cuộc gọi internet. Dễ dàng thiết lập một liên kết không dây bảo mật cao tại một
ấn nút QSS.
Wireless N USB Adapter TL-WN727N
hỗ trợ 64/128 WEP, WPA/
WPA2/WPA-PSK/WPA2-PSK (TKIP / AES), hỗ trợ chuẩn IEEE 802.1X. Hỗ trợ
Windows 8 32/64bits, Windows 7 32/64bits, 32/64bits Vista, Windows XP 32/64bits.
Hỗ trợ ad-hoc và chế độ cơ sở hạ tầng. Hỗ trợ Sony PSP X-Link để chơi game trực
tuyến vui vẻ cho Windows XP. Tiện ích đi kèm cung cấp nhanh chóng và rắc rối miễn
phí cài đặt. Liền mạch tương thích với các sản phẩm 802.11n/b/g. Sử dụng chuẩn kết
nối USB 2.0.
ĐỒ ÁN TỐT NGHIỆP
33
|