Tải bản đầy đủ (.docx) (47 trang)

thiết kế xe tự tránh vật cản trên nền boardraspberry pi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.71 MB, 47 trang )

XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN – ĐIỆN TỬ


BÁO CÁO MÔN HỌC: HỆ THỐNG NHÚNG
ĐỀ TÀI

THIẾT KẾ XE TỰ TRÁNH VẬT CẢN TRÊN
NỀN BOARDRASPBERRY PI
GVHD:

Thầy Phạm Văn Khoa

Tp.Hồ Chí Minh, ngày 20 tháng 5 năm 2015

Trang 1


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI

LỜI MỞ ĐẦU

Cùng với sự tiến bộ của khoa học và công nghệ, các thiết bị điện tử đang và sẽ
tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả cao trong hầu hết các
lĩnh vực kinh tế kỹ thuật cũng như đời sống xã hội.
Raspberry Pi là cái máy tính giá 35USD kích cỡ như iPhone và chạy HĐH
Linux. Với mục tiêu chính của chương trình là giảng dạy máy tính cho trẻ em. Được
phát triển bởi Raspberry Pi Foundation – là 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 Pi sản xuất bởi 3 OEM: Sony, Qsida, Egoman. Và được phân phối
chính bởi 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 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.
Quyển đồ án này giúp người đọc nắm bắt được phần cứng của Board Raspberry
Pi, có cái nhìn tổng quan về ngôn ngữ lập trình Python. Bên cạnh đó nhóm thực hiện
đề tài còn hướng dẫn giúp người đọc có thể thực hành ngôn ngữ lập trình Python để
khai thác những tài nguyên sẵn có trên Board Raspberry Pi qua hệ điều hành Raspbian.
Quyển đồ án này bao gồm 3 phần:


Phần I: Giới thiệu



Phần II: Nội dung



Phần III: Phụ lục

Trang 2



XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
Mặc dù nhóm thực hiện đề tài đã hoàn thiện được quyển đồ án và mô hình xe tự tránh
vật cản, nhưng do còn hạn chế về kiến thức nên chắc chắn còn thiếu sót. Nhóm thực
hiện đề tài mong nhận nhận được sự đóng góp ý kiến của quý thầy cô cùng các bạn
sinh viên.
Nhóm thực hiện đề tài

Trang 3


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI

LỜI CẢM ƠN
Nhóm thực hiện đề tài xin chân thành cảm ơn Thầy Phạm Văn Khoa đã tận
tình hướng dẫn, chỉ bảo, kinh nghiệm quý báu cũng như hỗ trợ phương tiện vật tư
trong suốt quá trình tìm hiểu, nghiên cứu đề tài.
Đồng thời cũng chúng em xin cảm ơn các thầy cô trong Khoa Điện - Điện Tử
đã tạo điều kiện, cung cấp cho nhóm những kiến thức cơ bản, cần thiết để chúng em có
điều kiện và đủ kiến thức để thực hiện quá trình nghiên cứu
Ngoài ra, nhóm cũng đã nhận được sự chỉ bảo của các anh (chị) đi trước. Các
anh (chị) cũng đã hướng dẫn và giới thiệu tài liệu tham khảo thêm trong việc thực hiện
nghiên cứu.

Trân trọng
Nhóm thực hiện đồ án

Trang 4



XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI

CHƯƠNG I:DẪN NHẬP
1.1 ĐẶT VẤN ĐỀ:
Tự tránh vật cản là một khoa học dẫn hướng xe di chuyển trong không gian làm
việc của nó (đất, nước, không khí ). Trong vấn đề tránh vật cản, bài toán được quan
tâm nhiều nhất là tìm đường về đích mà không chạm vật cản trên đường đi. Môi
trường làm việc của xe hoàn toàn không được biết trước hoặc chỉ biết được một phần,
xe hoàn toàn phải nhờ vào sự cảm nhận môi trường thông qua cảm biến gắn trên nó để
dò đường và tìm ra hướng đi thích hợp nhất để đi. Tuy vậy nó có hạn chế là đòi hỏi
nhiều lệnh tính toán và bộ nhớ, và đặc biệt tình huống xấu có thể xảy ra nếu bản đồ
môi trường làm việc không thích hợp đối với cảm biến gây ra nhiễu cảm biến. Trong
khi đó, xe tự dò đường chỉ biết được thông tin xung quanh qua sensor cảm nhận môi
trường gắn cùng.
Vì thế, xe tự dò đường có thể không hoàn thành việc tới đích (mặc dù thực tế có
đường đi tới đích), khái niệm tối ưu không có ý nghĩa trong bài toán này. Tuy nhiên,
yêu cầu tính toán, dung lượng nhớ thấp cùng tính linh hoạt cao (như tránh được vật
cản ngay cả khi vật đó di động) khiến vấn đề tự động né tránh và tìm kiếm hướng đi
thích hợp là cấp thiết hơn bao giờ hết.

1.2 LÝ DO CHỌN ĐỀ TÀI
Ngày nay với sự phát triển của Khoa Học Kỹ Thuật các thiết bị ngày càng được
thu nhỏ về kích thước nhưng vẫn đáp ứng tốt được các yêu cầu cần có. Raspberry Pi là
một ví dụ điển hình, với kích thước chỉ bằng một chiếc Iphone nhưng nó có quá nhiều
tính năng cực kỳ hấp dẫn hơn thế nữa nó là một chiếc máy tính. Raspberry Pi khác với
các máy tính ở chổ là nó có tích hợp thêm một hệ thống IO giúp cho người sử dụng có
thể thỏa sức sáng tạo và phát triển các ứng dụng trên nền Raspberry Pi này. Board
Raspberry Pi có giá thành cực kỳ rẽ ( khoảng 35 USD) với bộ vi 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


Trang 5


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
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.
Với một kích thước cực kỳ nhỏ bé so với các máy tính khác và những tính năng
cực kỳ nỗi trội Board Raspberry Pi là lựa chọn hàng đầu để nhóm nghiên cứu và phát
triển đồ án “ THIẾT KẾ XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD
RASPBERRY PI”.
1.3 ĐỐI TƯỢNG NGHIÊN CỨU
Board Raspberry Pi.
Ngôn ngữ lập trình Python.
Cảm biến siêu âm SRF-05.
1.4 GIỚI HẠN ĐỀ TÀI
Nghiên cứu phần cứng của Board Raspberry Pi, thiết kế đơn giản khoảng cách
phát hiện vật cản khoảng 30cm, xe chỉ là một mô hình đơn giản, nhỏ, mang tính chất
thí nghiệm, chưa có nhiều tính năng phức tạp. Vật cản là những vật không có tính chất
hấp thụ hay phản xạ sóng siêu âm.
1.5 DÀN Ý NGHIÊN CỨU
1.5.1 Board Raspberry Pi





Tổng quan về Board Raspberry Pi.
Thông số kỹ thuật của Board Raspberry Pi.
So sánh đặc tính của Board Raspberry Pi so với các Board nhúng khác.
Các kết nối của Raspberry Pi.


1.5.2 Thiết kế XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI





Tìm hiểu thiết kế các “xe tự tránh vật cản”.
Giới thiệu các linh kiện được sử dụng.
Phân tích thiết kế cho các Module .
Tổng hợp các Module riêng biệt thành một hệ thống “xe tự tránh vật cản” hoàn

chỉnh.
− Lập trình ứng dụng cho một số module được thiết kế.
1.6 TÌNH HÌNH NGHIÊN CỨU

Trang 6


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
Vào thời điểm hiện nay các board linux đã trở nên phổ biến và được sản xuất
nhiều hơn. Có thể kể đến các board: BeagleBone, Arduino Yún, DigiX, UDOO,
pcDuino... Sử dụng nhiều loại chip khác nhau và tất nhiên đều có thể chạy được linux.
Có những sản phẩm được hậu thuẫn và PR tốt như BeagleBone (của Texas
Instruments) với cấu hình mạnh hơn (on-board Flash lưu trữ hệ điều hành, chip ARM
Cortex-A8) nhưng vẫn chưa có sức lan toả như RPi.
Để Rasberry hoạt động được bạn chỉ cần cắm nguồn, bàn phím, màn hình. Thực
sự rất đơn giản.Sức mạnh của Linux không đến từ cấu hình mà đến từ phần mềm và
cộng đồng của nó.
Để hệ điều hành chạy được trên 1 (hoặc nhiều) nền tảng phần cứng khác nhau,

lập trình viên cần phải biên dịch nhân hệ điều hành (kernel) tương thích cho phần cứng
đó và các thiết bị ngoại vi khác.
Raspberry làm rất tốt việc này vì khả năng tương thích với nhiều loại USB,
mouse, keyboard, webcam, USB 3G, wifi usb.... Bạn hoàn toàn có thể gặp trường hợp
1 webcam chạy tốt trên desktop Linux 32bit nhưng lại không hoạt động được với 1
board linux.
Raspberry đã có sự lựa chọn đúng đắn khi phát triển kernel tương thích cho
Debian (Ubuntu là 1 nhánh dựa trên Debian), Arch Linux và Fedora. Đây là các hệ
điều hành Linux cực kì phổ biến, dễ tìm hiểu, có sẵn cộng động sử dụng và phát triển.
Điều này giúp việc sửa lỗi nhanh hơn, cũng như việc tìm kiếm giải pháp cho
việc cài đặt gói của người dùng dễ dàng hơn. Người dùng mới dùng Raspian, Pidora;
người dùng có kinh nghiệm hơn có thể dùng Arch Linux... Họ thực hiện các ý tưởng
của mình với 1 board mạch giá rẻ, chỉ có 35USD. Hàng loạt sản phẩm DIY dùng
Raspberry Pi ra đời, và nhờ đó Raspberry lại càng phổ biến hơn.
1.7 Ý NGHĨA THỰC TIỄN
Xe tự tránh vật cản là một chiếc xe thông minh. Nó sẽ tự phát hiện vật cản và tự
động né tránh vật cản trước nó và đưa ra hướng đi thích hợp (thông thoáng không có
vật cản) mà không cần một tác động vật lý hay tác động khác nào. Giúp xe đi đến

Trang 7


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
những nơi nguy hiểm để thực hiện một tác vụ quan trọng nào đó mà con người không
thể đi đến đó được nhằm mục đích bảo vệ con người an toàn, nâng cao chất lượng của
công việc ...
Ngoài ra xe còn có tác dụng phòng tránh những hiểm họa xảy ra trong việc
người điều khiển nhất thời không thể điều khiển xe đến một vị trí an toàn thì hệ thống
sẽ tự động điền khiển xe đến vị trí an toàn đó.


CHƯƠNG II: RASPBERRY PI
2.1 Giới thiệu về Board Raspberry Pi:

Trang 8


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI

Hình 2.1:Board Raspberry Pi

Raspberry Pi là một chiếc máy tính tí hon giá chỉ từ 35$ chạy hệ điều hành
Linux ra mắt vào tháng 2 năm 2012. Ban đầu Raspberry Pi được phát triển dựa trên ý
tưởng tiến sĩ Eben Upton tại đại học Cambridge muốn tạo ra một chiếc máy tính giá rẻ
để học sinh có thể dễ dàng tiếp cận và khám phá thế giới tin học. Dự định khiêm tốn
của ông đến cuối đời là có thể bán được tổng cộng 1000 bo mạch cho các trường học.
Vậy thì điều gì đã làm nên thành công ngoài sức tưởng tượng của Raspberry Pi khi đã
bán được hơn một triệu bo mạch chỉ trong vòng chưa đầy một năm.
Raspberry Pi (RPi) là một máy tính siêu nhỏ, chỉ có kích thước như 1 chiếc thẻ
ATM rút tiền. Bạn chỉ cần 1 bàn phím, 1 tivi hoặc 1 màn hình có cổng HDMI/DVI, 1
nguồn USB 5V và 1 dây micro USB là đã có thể sử dụng RPi như 1 máy tính bình
thường. Với RPi, bạn có thể sử dụng các ứng dụng văn phòng, nghe nhạc, xem phim
độ nét cao (tới 1024p)...

Trang 9


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI

Hình 2.1Những thông số sơ lược về Raspberry Pi B v2.
2.2 Cấu hình của Raspberry Pi:

Trái tim của Pi là vi xử lý Broadcom BCM2835 chạy ở tốc độ 700mHz. Đây là
vi xử lý SoC (system-on-chip) tức là hầu hết mọi thành phần của hệ thống gồm CPU,
GPU cũng như audio, communication chip đều được tích hợp trong một. Chip SoC
này nằm ngay bên dưới chip memory Hynix 512 MB màu đen ở giữa board.
Tùy theo model mà Raspberry sử dụng chip khác nhau:


Raspberry Pi model B v1: Broadcom BCM2835 với 256MB RAM.



Raspberry Pi model B v2: Broadcom BCM2835 với 512MB RAM.



Raspberry Pi model A: Broadcom BCM2835 với 256MB RAM.
Bởi vì RAM được tích hợp sẵn trong đế chip nên bạn không thể nâng cấp RAM
cho Pi. CPU BMC2835 sử dụng nhân ARM1176JZFS (ARM11) cho hiệu năng cao và
giá thành thấp. SoC này khác với CPU ở trong PC thông thường ở chỗ nó được chế tạo
dựa trên kiến trúc tập lệnh (Instruction Set Architect – ISA) là ARM chứ không phải
kiến trúc x86 như của Intel. ARM có ISA dạng rút gọn RISC và tiêu thụ điện năng rất
thấp nên phù hợp với thiết bị di động.

Trang 10


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
ARM dẫn đầu trong mảng thiết bị di động. Lấy ví dụ như chip ARM trên
Raspberry Pi: toàn bộ mạch hoạt động với nguồn 5V, 700mA tức là chỉ tiêu hao 3.5W
mỗi giờ trong khi một laptop cũng ngốn ít nhất vài chục Watt. Thiết kế này bảo đảm

Raspberry Pi hoạt động với sức mạnh vừa phải trong khi vẫn giữ được hình dáng nhỏ
gọn do không cần quạt tản nhiệt và do đó, ARM có mặt trong hầu hết điện thoại di
động thời nay.
Ngoài ra chip BCM2835 dùng thế hệ ARM11 thuộc phiên bản ARMv6. ARMv6
hoạt động hiệu quả và tiết kiệm năng lượng nhưng mặc định lại không tương thích
phần mềm với thế hệ ARMv7. Tuy nhiên, điều này có thể giải quyết bằng cách convert
phần mềm để đạt sự tương thích. Nói như vậy không có nghĩa là lập trình Raspberry Pi
sẽ gặp nhiều khó khăn. Ngược lại, cộng đồng Raspberry Pi phát triển rất nhanh trên
thế giới là nguồn tài nguyên còn phong phú hơn nhiều: hàng loạt dự án, phần mềm
được phát triển cho Pi sẽ làm bạn hài lòng.
Cắm RPi vào cổng USB của máy tính có thể cấp nguồn cho pi hoạt động ở mức
bình thường, không sử dụng các kết nối internet như LAN và wifi.
Raspberry là một máy tính, để máy tính này hoạt động bạn cần cài đặt hệ điều
hành. Trong thế giới nguồn mở linux, có rất nhiều phiên bản hệ điều hành tùy biến
(distro) khác nhau. Tùy theo nhu cầu và mục đích, cũng như khả năng học hỏi mà bạn
sẽ sử dụng distro phù hợp với mình.
Ứng dụng của Rpi: Có nhiều ứng dụng từ đơn giản đến phức tạp có thể kể đến như:
dùng RPI làm trung tâm giải trí đa phương tiện, internet tv, ổ đĩa sao lưu dự phòng trên
mạng nội bộ, kết hợp với webcam làm hệ thống phát hiện chuyển động, nhận diện
khuôn mặt, điều khiển robot, nhận và gửi tin nhắn gsm với usb 3g, điều khiển tắt/mở
đèn trong nhà, và còn rất nhiều ứng dụng khác...
2.3 Kết nối của Raspberry Pi:

Trang 11


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
Khe cắm thẻ nhớ: sử dụng loại thẻ SD Card, đâ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. Dung lượng của thẻ nhớ phải từ 2GB trở
lên để đảm bảo cho hệ thống hoạt động tốt.

Micro USB Power: 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 tôi
khuyến cáo bạ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, bạn có thể cấp nguồn trực tiếp vào cổng GPIO (5V và Gnd).
Nếu bạn không am hiểu về điện tử thì cách này không được khuyến cáo. Đ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 để 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, 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,...
2 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.

Trang 12


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
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.
TV: dùng để kết nôi và phát tín hiệu hình ảnh lên Tivi.

GPIO:Raspberry Pi cung cấp nhiều 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 2.3:Sơ đồ chân GPIO của Raspberry Pi Model B+

Trang 13


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI

Hình 2.2 Raspberry Pi và các thiết bị kết nối với
2.4 Giới thiệu hệ điều hành chonó.
Raspberry Pi:
Sau phần giới thiệu Raspberry Pi và cấu tạo của nó, ta sang phần thực hành với Pi.
Khác với vi điều khiển có thể chạy ngay sau khi load chương trình điều khiển, Pi cần
có hệ điều hành để hoạt động. Đây cũng là ưu điểm của Pi vì nó cho phép người dùng
tận dụng rất nhiều phần mềm và thiết bị ngoại vi để lập trình ứng dụng phức tạp một
cách nhanh chóng.
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.

Trang 14


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
-

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.


CHƯƠNG III
NGÔN NGỮ LẬP TRÌNH PYTHON
3.1 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.

Trang 15


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
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.
3.2 Đặ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.



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.


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

Trang 16


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
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ể.
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.

Trang 17



XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
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.

Trang 18


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
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.
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ỗ

liệu Internet như email, HTML, XML và

trợ

các

các ngôn

loại định
ngữ

đánh

dạng dữ
dấu khác.

Trang 19



XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
Pythoncũ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ụ như

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

Trang 20


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI


CHƯƠNG IV
CẢM BIẾN SRF05 - L298 - PIN LIPO
I. Cảm biến siêu âm:
1. Cảm biến siêu âm SRF05 và đặc điểm kỹ thuật:
a. Giới thiệu:

Hình 2.1: Cảm biến siêu âm SRF05
Cảm biến SRF05 là một bước phát triển từ SRF04, được thiết kế để làm tăng
tính linh hoạt, tăng phạm vi, ngoài ra còn giảm bớt chi phí. SRF05 là hoàn toàn tương
thích với SRF04. Khoảng cách được tăng từ 3 mét đến 4 mét.

Trang 21


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
SRF05 cho phép sử dụng một chân duy nhất cho cả kích hoạt và phản hồi, do
đó tiết kiệm giá trị trên chân điều khiển. Khi chân chế độ không kết nối thì SRF05 hoạt
động riêng biệt chân kích hoạt và chân hồi tiếp như SRF04. SRF05 bao gồm một thời
gian trễ trước khi phản hồi để mang lại điều khiển chậm hơn chẳng hạn như bộ điều
khiển thời gian cơ bản Stamps và Picaxe để thực hiện các xung lệnh.
Cảm biến siêu âm SFR05 có giá tương đối rẻ và dễ giao tiếp nên nhóm chọn sử
dụng cảm biến siêu âm SRF05, SRF05 như đôi mắt của xe robot, giúp thu hồi tín hiệu
xem trên đường đi có vật cản hay không để có xe xử lý phù hợp.
b. Các chế độ của SRF05:
- Chế độ 1: tương ứng SRF04 – tách biệt kích hoạt và phản hồi:
Chế độ này sử dụng riêng biệt chân kích hoạt và chân phản hồi, và là chế độ
đơn giản nhất để sử dụng. Tất cả các chương trình điển hình cho SRF04 sẽ làm việc
cho SRF05 ở chế độ này. Để sử dụng chế độ này, chỉ cần chân chế độ không kết nối –
SRF05 có một nội dung trên chân này.


Hình 2.2: Giãn đồ định thời SRF05
- Chế độ 2: Dùng một chân cho cả kích hoạt và phản hồi:

Trang 22


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
Chế độ này sử dụng một chân duy nhất cho cả tín hiệu kích hoạt và phản hồi, và
được thiết kế để lưu các giả trị trên chân lên bộ điều khiển nhúng. Để sử dụng chế độ
này chân chế độ kết nối vào chân mass. Tín hiệu hồi tiếp sẽ xuất hiện trên cùng một
chân với tín hiệu kích hoạt. SRF05 sẽ không tăng dòng phản hồi cho đến 700uS sau
khi kết thúc các tín hiệu kích hoạt.

Hình 2.3: Kết nối chung của cảm biến siêu âm
Để sử dụng chế độ 2 với các Stamps BS2 cơ bản, ta chỉ cần sử dụng PULSOUT
và PULSIN trên cùng 1 chân như sau:
SRF05 PIN 15

sử dụng pin cho cả 2 và kích hoạt echo

Range VAR Word

xác định phạm vi biến 16 bit

SRF05 = 0

bắt đầu bằng pin thấp

PULSOUT SRF05, 5


đưa ra kích hoạt pulse 10uS

PULSIN SRF05,11Range echo đo thời gian
Range = Range/29

để chuyển đổi sang cm(chia 74 cho inch)

Tính toán khoảng cách:

Trang 23


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
Giản đồ định thời SRF05 thể hiện ở 2 chế độ trên, chỉ cần cung cấp một đoạn
xung ngắn 10uS kích hoạt đầu vào để bắt đầu đo khoảng cách. Các SRF05 sẽ cho ra
một chu kỳ 8 burst của siêu âm ở 40Khz và tăng cao dòng phản hồi của nó (hoặc kích
hoạt chế độ dòng 2). Sau đó chờ phản hồi, và ngay sau khi phát hiện nó giảm các dòng
phản hồi lại. Dòng phản hồi là một xung có chiều rộng tỷ lệ với khoảng cách đến đối
tượng. Bằng cách đo xung ta hoàn toàn có thể tính toán khoảng cách theo
inch/centimet.

c. Kết nối cảm biến siêu âm với Raspberry

Hình 2.4 Sơ đồ kết nối cảm biến siêu âm với Raspberry
Các giá trị và tuân thủ theo tỷ lệ là 2:3 nên có thể chọn và có giá trị theo tỷ lệ tương
ứng là 330:470 Ω.
Cảm biến diêu âm kết nối với Raspberry như sau:




Chân Vcc kết nối với chân 5V DC của Raspberry ( chân số 2 hoặc 4 đều được)
Chân phát xung Trig kết nối với chân thứ tự 15 của Raspberry tức là chân GPIO

22
• Chân nhận xung Echo kết nối với chân thứ tự 7 của Raspberry tức là chân
GPIO 4
• Chân GND kết nối với chân GND của Raspberry (chân 6, 9, 14, 20, 25, 30, 34,
39)
d. Giải thuật xử lý và thu nhận khoảng cách trả về

Trang 24


XE TỰ TRÁNH VẬT CẢN TRÊN NỀN BOARD RASPBERRY PI
Ngôn ngữ sử dụng là Python:
#!/usr/bin/python3
#sonic.py
import wiringpi2
import time
import datetime
ON=1;OFF=0; IN=0;OUT=1
TRIGGER=15; ECHO=7
PULSE=0.00001 #10us pulse
SPEEDOFSOUND=34029 #34029 cm/s
def gpiosetup():
wiringpi2.wiringPiSetupPhys()
wiringpi2.pinMode(TRIGGER,OUT)
wiringpi2.pinMode(ECHO,IN)
wiringpi2.digitalWrite(TRIGGER,OFF)

time.sleep(0.5)
def pulse():
wiringpi2.digitalWrite(TRIGGER,ON)
time.sleep(PULSE)
wiringpi2.digitalWrite(TRIGGER,OFF)
starttime=time.time()
stop=starttime
start=starttime
while wiringpi2.digitalRead(ECHO)==0 and startstart=time.time()
while wiringpi2.digitalRead(ECHO)==1 and stopstop=time.time()
delta=stop-start
print("Start:%f Stop:%f Delta:%f"%(start,stop,delta))
distance=delta*SPEEDOFSOUND
return distance/2.0

Trang 25


×