Tải bản đầy đủ (.pdf) (18 trang)

Sử dụng board mạch nhúng mã nguồn mở (arduino, raspberrypi…) và các thiết bị cảm biến phát hiện vật thể, đ

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 (3.77 MB, 18 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠ</b>I H<b>ỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI </b>

KHOA CÔNG NGH THÔNG TIN <b>Ệ</b>

<b>---KỲ THI KẾT THÚC HỌC PHẦN </b>

<b>Tên đề tài: “Sử dụng board mạch nhúng mã nguồn m (Arduino, ởRaspberryPi…) và các thiết b c m biến phát hiện vật thị ảể, đo khoả</b>ng

<b>cách, dò đường; hãy xây d ng module hựệ thố</b>ng nhúng h tr robot <b>ỗ ỡ</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>MỤC L C Ụ</b>

<b>LỜI MỞ ĐẦU... 1</b>

<b>CHƯƠNG 1 GIỚI THIỆU BÀI TOÁN ... 2</b>

1.1 Mơ <b>tả bài tốn... 2</b>

<b>1.2 Giải quyết bài tốn ... 2</b>

1.2.1 Board mạch nhúng mã nguồn mở Arduino ... 2

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI MỞ ĐẦU </b>

Robot có nghĩa là người máy là một loại máy có thể thực hiện những công việc m t cách t ng b ng s ộ ự độ ằ ự điều khi n c a máy tính ho c các vi mể ủ ặ ạch điệ ử được lập n t trình. Hiện nay, nhi u ngành cơng nghiề ệp đang sử dụng robot do chúng có mức độ hi u suệ ất và độ tin c y cao. Ngồi ra, chúng cịn là s ậ ự trợ giúp đắc l c cho coự n người. Robot t hành tránh v t c n là m t robot tự ậ ả ộ ự động được sử dụng để phát hiện vật cản và tránh va ch m. Vi c thi t kạ ệ ế ế thiết b này c n tích h p nhi u c m bi n tùy theo ị ầ ợ ề ả ế nhi m v c a chúng. M t ví dệ ụ ủ ộ ụ v robot tránh về ật cản mà chúng ta thường được thấy ngay tại gia đình đó là Robot hút bụi.

L p trình nhúng là m t thu t ng lậ ộ ậ ữ ập trình dùng để chỉ đến một hệ thống có khả năng tự trị và nó thường được nhúng vào trong một môi trường hoặc một hệ thống m b t kẹ ấ ỳ nào đó. Đây là các hệ thống tích h p c m t ph n m m và ph n c ng. H ợ ả ộ ầ ề ầ ứ ệ thống nhúng thường rất đa dạng và phong phú về chủng lo i. ạ

Và để ểu hơn về hi cơ chế nh n bi t vậ ế ật cản, dò đường c a robot tránh vủ ật c n, em ả đã lựa chọn đề tài: “Sử d ng board mụ ạch nhúng mã ngu n m (Arduino, ồ ở RaspberryPi…) và các thiết bị c m bi n phát hi n v t thả ế ệ ậ ể, đo khoảng cách, dò đường; hãy xây d ng modul hự ệ thống nhúng hỗ trỡ robot tránh v t c n tậ ả ự động”. Để thực hi n b ng cách s d ng các ki n thệ ằ ử ụ ế ức đã học ở môn học “Xây dựng hệ thống nhúng” và các tài li u tham kh o, nh m mệ ả ằ ục đích hiểu rõ hơn robot tránh vật cản và n m chắ ắc được các kiến th c c a môn h c. ứ ủ ọ

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>CHƯƠNG 1 GIỚI THIỆU BÀI TỐN </b>

<b>1.1 Mơ tả bài tốn </b>

Yêu c u chính c a robot này là phát hiầ ủ ện chướng ngại vật. Chúng sẽ lấy thông tin t khu v c xung quanh thông qua các cừ ự ảm ếbi n. M t sộ ố thiết bị c m biả ến được s ử dụng để phát hiện chướng ngại vật như cảm bi n va ch m, c m bi n h ng ngo i, cế ạ ả ế ồ ạ ảm bi n siêu âm... C m bi n siêu âm phù h p nhế ả ế ợ ất để phát hiện chướng ng i v t và nó ạ ậ có giá thành th p và khấ ả năng thay đổi cao.

Bài toán đặt ra là cần xây dựng một hệ th ng nhúng h trợ robot tránh vật cản ố ỗ tự động. Bao g m các thi t b c m bi n, phát hi n v t thồ ế ị ả ế ệ ậ ể, dò đường. B ng cách s ằ ử dụng các board m ch nhúng mã ngu n mạ ồ ở để thiết k và xây d ng hế ự ệ thống nhúng cho bài tốn này.

<b>1.2 Giải quyết bài tốn </b>

Từ mơ t , yêu c u cả ầ ủa bài toán em phân tích và định hướng gi i quy t bài tốn ả ế bằng các cơng ngh , thi t b và ph n mệ ế ị ầ ềm như sau:

1.2.1 B<i><b>oard mạch nhúng mã nguồn mở Arduino</b></i>

Arduino là m t n n t ng mã ngu n mộ ề ả ồ ở được s dử ụng để xây d ng các ng d ng ự ứ ụ điệ ửn t tương tác với nhau hoặc với môi trường được thuận lợi hơn.

Arduino giống như một máy tính nh ỏ để người dùng có th l p trình và th c hi n ể ậ ự ệ các d ự án điện tử mà khơng c n ph i có các công c chuyên biầ ả ụ ệt để ph c vụ ụ việc nạp code. Phần c ng và phứ ần m m cề ủa Arduino đều là ngu n mồ ở - các sơ đồ đều được public tr c tuy n nên b n hồn tồn có th mua linh ki n v và t làm l y. Arduino ự ế ạ ể ệ ề ự ấ là m t công c h c t p, sáng t o tuy t v i giúp ộ ụ ọ ậ ạ ệ ờ thực hi n b t c d án nào m t cách ệ ấ ứ ự ộ dễ dàng. Ta có th truy c p vào trang web chính th c cể ậ ứ ủa Arduino để tìm hi u thêm ể thơng tin và các hướng dẫn lập trình cơ bản.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Hình 1.1 Mơ hình Simulino Uno

<i><b>1.2.2 Các linh kiện sử dụng</b></i>

- C m bi n h ng ngo i (Infrared Sensor)ả ế ồ ạ : là m t thi t bộ ế ị điệ ửn t có khả năng đo và phát hi n b c x h ng ngoệ ứ ạ ồ ại trong môi trường xung quanh. C m bi n h ng ngoả ế ồ ại sẽ hoạt động b ng cách s d ng mằ ử ụ ột cảm bi n ánh sáng c ế ụ thể để phát hiện bước sóng ánh sáng ch n trong ph h ng ngo i (IR). B ng cách s dọ ổ ồ ạ ằ ử ụng đèn LED tạo ra ánh sáng có cùng bước sóng với cảm biến đang tìm kiếm, bạn có thể xem cường độ của ánh sáng nhận được. Khi m t vộ ật ở ầ g n c m bi n, ánh sáng tả ế ừ đèn LED bật ra khỏi v t thậ ể và đi vào cảm biến ánh sáng. Điều này dẫn đến một bước nhảy l n vớ ề cường độ, mà chúng ta đã biết có thể được phát hiện b ng cách s d ng mằ ử ụ ột ngưỡng.

Hình 1.2 Mơ hình c m bi n h ng ngo i ả ế ồ ạ

- C m bi n siêu âm (Ultrasonic Sensor):ả ế Là công c ụ tuyệt vời để đo khoảng cách mà không c n ti p xúc th c tầ ế ự ế và được s d ng m t sử ụ ở ộ ố nơi như đo mực nước, đo khoảng cách… Đây là một cách hi u quệ ả để đo khoảng cách chính xác. Trong dự án

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

này, em s s d ng m t c m biẽ ử ụ ộ ả ến siêu âm để xác định kho ng cách c a m t v t cả ủ ộ ậ ản t c m bi n. Nguyên từ ả ế ắc cơ bản của phép đo khoảng cách siêu âm d a trên ECHO. ự Khi sóng âm được truyền trong mơi trường thì sóng quay trở ạ ị l i v trí xuất phát dưới dạng ECHO sau khi đập vào vật cản. Vì vậy, chúng tơi chỉ cần tính tốn thời gian di chuyển c a củ ả hai sóng siêu âm t c là thứ ời gian đi và thời gian tr vở ề điểm xu t phát ấ sau khi chạm vào chướng ng i v t. Khi chúng ta biạ ậ ết đượ ốc độ ủc t c a âm thanh, sau khi th c hi n m t s tính tốn, chúng ta có th ự ệ ộ ố ể tính được kho ng cách. ả

Hình 1.3 Mơ hình c m bi n siêu thanh ả ế

- LCD (16x2) là m t màn hình nhiộ ều điểm ảnh hi n th thông tin m t cách d để ể ị ộ ễ dàng hơn. Có nhiều loại LCD, trong bài này chúng ta dùng loại đơn giản 16×2.

Hình 1.4

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

- Mạch m r ng chân I/O Expander PCF8574ở ộ : Được sử dụng để m r ng chân ở ộ giao ti p I/O cế ủa Vi điều khi n qua giao ti p I2C, m ch có khể ế ạ ả năng mở rộng 8 I/O giúp b n giao tiạ ếp được v i nhi u thi t bớ ề ế ị chỉ qua một vài bước thiết đặt đơn giản, m ch tích h p DIP Switch giúp dạ ợ ễ dàng thay đổi địa ch I2C. ỉ

Hình 1.5 Linh ki n PCF8574 ệ

- Servo motor là m t dộ ạng động cơ điện đặc bi t v i góc quay n m trong kho ng t ệ ớ ằ ả ừ 0 – 180°. Servo motor thường dùng để đóng ngắt các hệ thống một cách tự động. Và m t s các chi ti t, thi t bộ ố ế ế ị khác để thực hi n trong vi c gi i quy t bài tốn. ệ ệ ả ế

Hình 1.6 Mơ ph ng c a Serỏ ủ vo

<i><b>1.2.3 Các phần mềm hỗ trợ </b></i>

- Proteus là ph n m m thi t k có s hầ ề ế ế ự ỗ trợ ủa máy tính đượ c c s d ng cho k ử ụ ỹ thuật điện và điện tử. Proteus có thể được sử dụng để tạo chất bán dẫn, mạch tích

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

hợp, b ng dây in, thi t kả ế ế mơ-đun điện áp cao. Trong bài tốn này, ph n m m s ầ ề ẽ giúp xây d ng mô ph ng module hự ỏ ệ thống hỗ trợ robot tránh v t c n. ậ ả

- Arduino IDE là một chương trình phần m m mã ngu n m ề ồ ở cho phép người dùng viết và t i lên mã trong mả ột môi trường làm vi c th i gian thệ ờ ực. Vì mã này sau đó sẽ được lưu trữ trong đám mây, nó thường được sử dụng bởi những người đã tìm kiếm thêm một mức dư thừa. Hệ thống này hồn tồn tương thích với bất kỳ bo mạch ph n ầ m m Arduino nào. ề

Arduino IDE có thể được tri n khai trong các hể ệ điều hành Windows, Mac và Linux. Ph n l n các thành ph n cầ ớ ầ ủa nó được vi t bế ằng JavaScript để chỉnh s a và ử biên d ch d dàng. Mị ễ ặc dù ý định chính của nó là d a trên các mã vi t, có mự ế ộ ốt s tính năng đáng chú ý khác. Nó đã được trang bị một phương tiện để dễ dàng chia sẻ bất k chi ti t nào vỳ ế ới các bên liên quan d ự án khác. Người dùng có th sể ửa đổ ối b trí nội bộ và sơ đồ khi cần thiết. Có hướng dẫn trợ giúp chuyên sâu sẽ hữu ích trong quá trình cài đặt ban đầu. Các hướng dẫn cũng có sẵn cho những ai có th khơng có nhi u ể ề kinh nghi m v i khung công tác Arduino. ệ ớ Phần m m giúp so n th o mã ngu n, biên ề ạ ả ồ dịch để nhúng vào các bo mạch, các thiết bị của hệ thống hỗ trợ Robot tránh v t c n. ậ ả

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>CHƯƠNG 2 THIẾT KẾ VÀ XÂY DỰNG MODULE HỆ THỐNG NHÚNG HỖ TRỢ ROBOT TRÁNH VẬT CẢN TỰ ĐỘNG </b>

<b>2.1 Thiết kế mô phỏng hệ thống </b>

Em s d ng ph n mử ụ ầ ềm Proteus để thiế ết k mô phỏng sơ đồ module hệ thống h ỗ trợ Robot tránh v t c n tậ ả ự động. Đầu tiên em l a ch n các linh ki n c n thi t trong ự ọ ệ ầ ế ph n mầ ềm như sau:

Hình 2.1 Các linh ki n c n thi t ệ ầ ế

Sau đó, bằng cách s d ng các linh ki n c n thi t cùng m t s linh ki n khá và ử ụ ệ ầ ế ộ ố ệ k t n i các linh kiế ố ện đó một cách h p lý, chính xác. Em thi t kợ ế ế được sơ đồ mô phòng hệ thống hỗ trợ robot tránh v t c n tậ ả ự động như sau:

Hình 2.2 Sơ đồ mô phỏng hệ thống

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>2.2 Lập trình cho hệ thống </b>

B ng cách s d ng ph n mằ ự ụ ầ ềm Arduino IDE để soạn th o mã ngu n cho các thiả ồ ết bị, board m ch arduino trong hạ ệ thống. Em có mã ngu n cồ ụ thể như sau:

Hình 2.3 Mã ngu n Arduino c a hồ ủ ệ thống

Tại hình 2.3 là phần đầu c a n i dung mã ngu n, em khai báo ủ ộ ồ các thư viện của các linh ki n b ng câu lệ ằ ệnh Include. Sau đó, khai báo các biến hằng là trig và echo và gán cho giá tr là giá tr c a chân kị ị ủ ết n i c a linh ki n cố ủ ệ ảm ứng siêu âm v i bo m ch. ớ ạ Tương tự với biến hằng sensor. Và khai báo 4 đối tượng Servo tương ứng với 4 linh kiện Servo trong mơ hình đã thiết kế.

Hình 2.4 Mã ngu n Arduino c a hồ ủ ệ thống

Tại hình 2.4 là mã ngu n c a ph n setup() trong n i dung mã ngu n. ồ ủ ầ ộ ồ Những l nh ệ trong setup() sẽ được chạy khi chương trình của b n khạ ởi động. B n có th s d ng ạ ể ử ụ nó để khai báo giá trị của biến, khai báo thư viện, thiết lập các thông số…

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Sau khi setup() ch y xong, nh ng lạ ữ ệnh trong loop() được ch y. Chúng s lạ ẽ ặp đi l p l i liên t c cho t i khi nào b n ng t ngu n c a board Arduino m i thôi. ặ ạ ụ ớ ạ ắ ồ ủ ớ

Hình 2.5 Mã ngu n Arduino c a hồ ủ ệ thống

Hình 2.6 Mã ngu n Arduino c a hồ ủ ệ thống

Bắt đầu trong phương thức loop(), ta sự dụng câu điều kiện if để ểm tra điề ki u kiện khi đọc dữ liệu t c m bi n n u c m bi n chuy n vừ ả ế ế ả ế ề ề giá tr 1 thì s ị ẽ thực hi n các ệ câu lệnh bên trong câu điều ki n ệ như: hiển th dòng chị ữ “Phat hien vat can”, xoay chiều các Servo, tính tốn dữ liệu về khoảng cách được chuyền về t cừ ảm bi n và ế hi n th lên trên màn hình LCD. Tiể ị ếp theo, ta có câu điều kiện để kiểm tra n u kho ng ế ả

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

cách nhỏ hơn 10 thì sẽ báo hi n th dòng ể ị chữ “NGUY HIEM”, còn nh hon 100 s ỏ ẽ hi n th dịng chể ị ữ “Canh bao”.

Hình 2.7 Mã ngu n Arduino c a hồ ủ ệ thống

Tại hình 2.7 nếu câu điều ki n kiệ ểm tra lúc đầu khơng tho mãn thì sả ẽ thực hiện các câu l nh trong hình này, hay n u c m bi n báo v giá tr 0 thì sệ ế ả ế ề ị ẽ thực hi n các ệ câu l nh này. Các câu lệ ệnh như hiển th dòng ch ị ữ “KHONG phat hien vat can”, xoay các Servo một góc 90 độ. Hi n th dịng chể ị ữ “Khong co vat can” trên màn LCD.

Sau khi đã soạn thảo xong mã ngu n, em ti n hành biên d ch mã ngu n sang file ồ ế ị ồ HEX và nhúng vào Board m ch c a hạ ủ ệ thống.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>CHƯƠNG 3 DEMO CHƯƠNG TRÌNH </b>

<b>3.1 Khi khơng có vật cản </b>

Khi khơng có v t c n hay khi giá tr logic mà c m bi n h ng ngo i (infrared ậ ả ị ả ế ồ ạ sensor) truyền v mang giá tr 0. ề ị

Hình 3.1 Tổng quan sơ đồ ệ thố h ng khi khơng có v t c n ậ ả

Tại hình 3.1 ta có thể thấy khi ta thi t l p giá tr nhế ậ ị ận được c a c m bi n h ng ủ ả ế ồ ngo i là 0 thì các Servo quay ngang, hình LCD hi n th dòng ch ạ ể ị ữ “Khong có vat can”. Màn hình Virtual Terminal cũng hiển thị thông báo “KHONG phat hien vat can”.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Hình 3.2 Thơng báo được hiển thị trên màn hình Virtual Terminal

<b>3.2 Khi có vật cản </b>

Khi có v t c n hay khi giá tr logic mà c m bi n h ng ngo i (infrared sensor) ậ ả ị ả ế ồ ạ nhận được và truy n về ề mang giá tr 1. Thì h ị ệ thống s ẽ thay đổi và hoạt động như sau

Hình 3 T.3 ổng quan sơ đồ ệ thố h ng khi có v t c n ậ ả

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Hình 3 Thơng báo hi n th.4 ể ị trên màn hình Virtual Terminal

Hình 3.5 Sơ đồ ệ thố h ng khi cách v t c n 87cm ậ ả

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Hình 3.6 Sơ đồ ệ thố h ng khi cách v t c n 4cm ậ ả

Ta có thể thấy khi ta thi t l p giá tr nh n ế ậ ị ậ được c a c m bi n h ng ngo i là 1 thì ủ ả ế ồ ạ các Servo s quay d c, hình LCD hi n th dòng kho ng cách gi a v t c n và Robot, ẽ ọ ể ị ả ữ ậ ả Màn hình Virtual Terminal cũng hiển thị thơng báo “Phat hien vat can”.

Tại hình 3.5 khi v t c n cách Robot 87 cm màn hình LCD s hi n th kho ng cách ậ ả ẽ ể ị ả và dòng ch ữ “CANH BAO”. Tại hình 3.6 khi v t c n cách Robot 4 cm màn hình LCD ậ ả sẽ hi n th kho ng cách và dịng chể ị ả ữ “NGUY HIEM”.

Qua đó, em nhận định hệ thống mô phỏng đã nhận mã ngu n mà em so n th o. ồ ạ ả Chạy đúng theo những gì đã thiết kế cho bài tồn, tiếp nhận và xử lý các thơng tin thu nh n vậ ề đượ ừc t các c m bi n tả ế ốt, đáp ứng được vi c c nh báo phát hi n v t cệ ả ệ ậ ản từ đó đưa ra những hành động x lý ti p theo cho robot. ử ế

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>KẾT LUẬN </b>

Từ việc phân tích và th c hi n viự ệ ệc giải quy t bài toán b ng ế ằ việc s d ng các ử ụ kiến thức đã học và tìm hi u thêm các tài li u tham khể ệ ảo em thu được nh ng kiữ ến thức và k năng như sau: ỹ

Về kiến thức: Phân tích và trình bày được những nguyên lý cơ bản, các đặc trưng và các ki n th c n n t ng v vi xế ứ ề ả ề ử lý, vi điều khi n. ể Trình bày được mơ hình t ng ổ quát c a hủ ệ thống nhúng. Trình bày được các thành phần phần cứng và ph n mầ ềm của các hệ thống nhúng. Trình bày được các phương pháp thiết kế, cài đặt và kiểm thử các h ống nhúng. Trình bày được phương pháp thiết kế hệ thống nhúng với ệth ph n m m Proteus. Có khầ ề ả năng lập trình Arduino và s d ng các ph n m m hử ụ ầ ề ỗ trợ.

Về kỹ năng: Có kỹ năng lập trình xây dựng trình điều khiển cho vi điều khi n, h ể ệ thống nhúng. Vận dụng kiến thức để thiết k hế ệ ốth ng nhúng với b x lý FPGA -ộ ử Phân tích, thi t k hế ế ệ thống vi xử lý, vi điều khi n, l p ráp và k t n i các thành phể ắ ế ố ần hệ thống. Thi t k m t hế ế ộ ệ thống nhúng ng d ng cứ ụ ụ thể trong th c t . ự ế

Năng lực tự chủ và trách nhiệm: Có năng lực d n d t vẫ ắ ề chuyên môn ph c vụ ụ nghi p vệ ụ về quản lý d án v ự ề công ngh thông tin; có sáng ki n trong q trình thệ ế ực hi n nhi m vệ ệ ụ được giao; có khả năng tự định hướng, thích nghi với các môi trường làm vi c khác nhau; t h c tệ ự ọ ập, tích lũy kiến th c, kinh nghiứ ệm để nâng cao trình độ chuyên môn nghi p v v công nghệ ụ ề ệ thơng tin; có khả năng đưa ra được kết luận về các vấn đề chuyên môn, nghiệp vụ về cơng ngh ệ thơng tin; có năng lực l p k ho ch, ậ ế ạ điều ph i, phát huy trí tuệ tập thể; có năng lực đánh giá và cảố i tiến các hoạt động chuyên môn nghi p v v công ngh thông tin ệ ụ ề ệ

Việc phân tích và trình bày bài tốn có th cịn nhi u sai sót, em r t mong nh n ể ề ấ ậ được nh ng ý kiữ ến đóng góp của thầy cơ bài làm của em được tốt và kiến thức được hoàn thiệt hơn. Em xin chân thành cảm ơn.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>DANH MỤC TÀI LIỆU THAM KHẢO </b>

[3] Edward Lee and Sanjit Seshia, Introduction to Embedded Systems, A Cyber-Physical Systems Approach, 2011

[4] Marilyn Wolf, Computers as Components, Third Edition: Principles of Embedded Computing System Design, 3nd ed. Morgan Kaufmann, 2012.

</div>

×