1. Trang chủ
  2. » Luận Văn - Báo Cáo

Practical arduino engineering (thực hành kĩ thuật Arduino)

350 605 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 350
Dung lượng 23,05 MB

Nội dung

Chương 1: Quá trình của kĩ thuật ArdruinoTrong chương này, chúng ta sẽ thảo luận về các quy trình kỹ thuật và làm thế nào bạn có thể sử dụng nó để hợp lí hóa các mẫu thử bằng cách tránh

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA ĐIỆN TỬ VIỄN THÔNG

THỰC HÀNH KĨ THUẬT

ARDUINO

Trang 2

Sinh viên thực hiện:

D6-DTVT2

Nguyễn Văn Hà

Trang 3

Chương 1: Quá trình của kĩ thuật Ardruino

Trong chương này, chúng ta sẽ thảo luận về các quy trình kỹ thuật và làm thế nào bạn có thể sử dụng nó để hợp lí hóa các mẫu thử bằng cách tránh các vấn đề xảy ra với phần cứng và phần mềm và giữ một tiến trình cố định Trong suốt cuốn sách này, bạn sẽ có những thiết kế  mà sẽ được tổ chức thành một trình tự có thể gọi là các “quá trình kĩ thuật “ Dưới đây là tóm tắt của các trình tự này

Thu thập các yêu cầu

Tạo các tài liệu yêu cầu

để chủ đề; một vài trang web sẽ giúp bạn bắt đầu học arduino là www.Arduino.cc và

http://tronixstuff.wordpress.com/tutorials/

Trang 4

Nhưng cuốn sách này là một cách đợn giản hơn để tham khảo; cuốn sách này sẽ dạy cho bạn về quá trình kĩ thuật arduino - một kỹ năng rất hữu ích cho việc tạo các thiết kế dễ đọc hơn, hiệu quả và đáng tin cậy hơn

Thu Thập Phần Cứng

Trước khi nghiên cứu các bước quy trình kỹ thuật, điều quan trọng là phải biết một số các bộ phận và vật liệu cần có Trong suốt cuốn sách này, bạn sẽ cần những linh kiện kế tiếp của phần cứng để hoàn thành các thiết kế khác nhau.Chúng ta sẽ làm việc trên (đối với một danh sách đầy

đủ của phần cứng được sử dụng trong cuốn sách này, xin vui lòng xem Phụ lục A):

Arduino Duemilanove hoặc UNO : Bạn có thể sử dụng vi điều khiển Duemilanove hoặc

UNO trong cuốn sách này (Hình 1-1) Chúng có nhiều cổng I / O cho các cảm biến và động cơ Chúng ta sẽ sử dụng các điểm I / O để điều khiển và theo dõi các thiết kế khác nhau trong cuốn sách này

Hình 1-1 : Arduino UNO (trái ) and Duemilanove (phải)

Arduino BT hoặc Bluetooth Mate sliver: Ta nên sử dụng modem Bluetooth Mate sliver cho

cuốn sách này bởi vì nó có thể làm cho Arduino Duemilanove hoặc UNO của bạn hành xử như một ArduinoBT với một nửa chi phí Ngoài ra, các ArduinoBT không có điểm đầu ra 3.3V, vì vậy bạn sẽ cần phải thêm mạch để các Arduino để có được 3.3V , cái mà bạn cần trong chương 6của cuốn sách này Hình 1-2 minh họa hai phần của phần cứng

Trang 5

Hình 1-2: ArduinoBT (left) and Bluetooth Mate Silver (right)

Solderless breadboard: Một phần rất quan trọng của phần cứng là breadboard solderless (xem Hình 1-3), được sử dụng để thực hiện mạch của bạn Đối với cuốn sách này, bạn cần phải có mộtbreadboard solderless hạng trung Nó sẽ được sử dụng trong cả hai giai đoạn thiết kế và xử lý sự

cố của dự án

Hình 1-3 : Một ví dụ về một solderless breadboard

Trang 6

Dây: Chúng ta sẽ sử dụng một số lượng lớn các dây trong cuốn sách này; bạn có thể có được

một kit wire jumper ( kit đi dây ) ở hầu như bất kỳ cửa hàng điện tử

Lá chắn Arduino: Chúng tôi sẽ sử dụng một số lá chắn trong cuốn sách này, bao gồm cả lá chắn

động cơ, GPS, GSM, và LCD (xem Hình 1-4)

Hình 1-4 : Một cặp lá chắn Arduino , GPS Shield ở bên trái và lá chắn motor ở bên phải

Lá chắn động cơ : Lá chắn này được sử dụng để điều khiển động cơ lên tới 18V Nó bao gồm

một mặt gắn kết cầu H , cái mà cho phép một mô tơ điện áp cao hơn đc sử dụng tốt cũng như điều khiển hai mô tơ Để biết thêm thông tin về cầu H , chúng ta có thể đọc chương 3

Lá chắn GPS : Lá chắn này được sử dụng để có được thông tin vị trí từ vệ tinh GPS Nó sử

dụng các tiêu chuẩn của Hiệp hội Điện tử Hàng Hải Quốc gia (NMEA) , có thể được phân tích

để cho bạn biết bất kỳ các con số về những thứ như kinh độ và vĩ độ cho dù GPS có một số vấn

đề về sửa lỗi , loại sửa lỗi , một sự đánh dấu thời gian và tỉ số tín hiệu trên nhiễu Thông tin chi tiết về hệ thống GPS được trình bày ở chương 5

Lá chắn GSM : Lá chắn này sẽ cho phép bạn sử dụng sức mạnh của Hệ Thống Truyền Thông

Di Động Toàn Cầu (GSM) để gửi tin nhắn văn bản qua lại ở khoảng cách lớn ; lá chắn này cũng

sử dụng một giao thức chuẩn, gọi là giao thức GSM

Lá chắn LCD : Được sử dụng để thêm các hình ảnh về cuộc sống vào trong các robot Các lá

chắn LCD cũng có thể được sử dụng để tạo giao diện người dùng của riêng bạn cho robot của bạn hoặc bất kỳ thiết kế nào khác mà bạn muốn persue

Trang 7

Cảm biến : Đây là rất quan trọng vì chúng tạo ra sự sống cho các thiết kế của bạn Một số ví dụ

là cảm biến PIR (hồng ngoại thụ động ), sonar và nhiệt độ (xem Hình 1- 5)

Hình 1-5 : Một cảm biến PIR (trái) và một cảm biến sonar (phải)

Cảm biến PIR: Đây là một bộ cảm biến vượt trội để phát hiện những thay đổi trong ánh sáng

hồng ngoại và có thể phát hiện những thay đổi về nhiệt độ Nó cũng là rất tốt với khả năng phát hiện chuyển động

Cảm biến Sonar: Sonar cảm biến phát hiện tốt các đối tượng trong môi trường xung quanh Các

cảm biến Sonar mà chúng ta sẽ sử dụng là một bộ cảm biến Parallax và cho ta biết khoảng cách bao xa tới các đối tượng

Cảm biến nhiệt độ: Những cảm biến này được sử dụng để đọc nhiệt độ Để sử dụng chúng,

trước tiên bạn cần mở rộng quy mô điện áp với nhiệt độ bạn muốn ghi lại; bạn có thể tìm thêm thông tin về bộ cảm biến này trong chương 6

Servos và motor : điều khiển nhiều khía cạnh của thiết kế (xem Hình 1-6)

Trang 9

Kìm mũi nhọn: Những kìm là rất quan trọng; chúng được sử dụng để giữ dây và mạch tại chỗ,

quấn dây xung quanh mạch, (xem hình 1-9)

Kính phóng đại : Công cụ này được sử dụng để xem tốt hơn mạch.

Kềm (dikes): Chúng được sử dụng để cắt dây (xem hình 1-9).

Kìm cắt tuốt dây: Công cụ này được sử dụng để tách  dây cách điện (xem hình 1-9)

Trang 10

Đồng  hồ vạn năng: Có thể là công cụ quan trọng nhất mà bạn có thể sở hữu, công cụ này cho

phép bạn đọc điện áp AC (dòng xoay chiều) và DC (dòng một chiều), amps (ampe), và ohms (xem Hình 1-9)

Máy tính khoa học: Điều này cho phép bạn làm các phép tính khác nhau (Luật Ohm, chia điện

áp, vv).

Hình 1-9 : Công cụ bổ sung từ trái sang phải: Đồng hồ vạn năng, kìm nhọn , kìm cắt dây (trên) ,

kìm cắt,tuốt dây (dưới )

Tìm hiểu về Quy Trình Kỹ Thuật

Các quy trình kỹ thuật là rất hữu ích trong việc tạo các thiết kế của bạn hiệu quả hơn, sắp xếp hợp lý, và dễ hiểu Quá trình này bao gồm thu thập yêu cầu, tạo ra các tài liệu yêu cầu, tập hợp các phần cứng chính xác, cấu hình phần cứng, viết phần mềm, gỡ lỗi phần mềm, khắc phục sự cốphần cứng, và phát tín hiệu ngừng trên nguyên mẫu hoàn thành

Thu thập yêu cầu

Một ngày, khi bạn là một kỹ sư, bạn có thể được yêu cầu để tới một công ty và đánh giá nhu cầucủa họ  cho một thiết kế cụ thể Phần này  của quá trình kỹ thuật là rất quan trọng; tất cả mọi thứ

sẽ phụ thuộc vào các yêu cầu bạn thu thập tại cuộc gặp đầu tiên này Ví dụ, giả sử bạn biết rằng

Trang 11

khách hàng của bạn cần phải nhấp nháy đèn LED ở một tốc độ nhất định [chèn một trường hợp ví dụ ở đây để tuôn ra các ý tưởng] Và đối với công việc đó, bạn và khách hàng xác định

rằng các bộ vi xử lý Arduino là sự lựa chọn tốt nhất Để sử dụng Arduino nhấp nháy đèn LED

[chèn một ví dụ ở đây], một khách hàng cần một đèn LED nhấp nháy ở khoảng 100ms.

Khởi tạo những tài liệu yêu cầu

Dựa trên nhu cầu của khách hàng và giải pháp đề xuất của bạn, sau đây là một tài liệu yêu cầu rấtđơn giản:

Một chương trình nhấp nháy LED ở khoảng 100ms

Có thể đây là một ví dụ đơn giản , nhưng chúng ta sẽ sử dụng định dạng này cho phần còn lại củacuốn sách Một trong những lý do bạn tạo một tài liệu yêu cầu là để ngăn chặn tính năng biến dạng từ biến Điều này xảy ra khi một khách hàng tiếp tục thêm tính năng cho phần mềm và / hoặc phần cứng Điều nàydĩ nhiên là một vấn đề bởi vì bạn sẽ làm việc nhiều giờ mà không phải trả thêm tiền vào một thiết kế mà có thể không bao giờ kết thúc Bạn nên tạo một tài liệu yêu cầu, vì vậy bạn và khách hàng có thể biết những gì bạn đang làm và các tính năng bạn sẽ tạo cho thiết kế của bạn Sau khi bạn đã tạo ra các tài liệu yêu cầu, bạn có thể tạo một sơ đồ sẽ giúp bạn

gỡ lỗi các phần mềm sau này trong quá trình thiết kế (xem hình 1-10)

Trang 12

Cấu Hình Phần Cứng

Một khi bạn có phần cứng chính xác, đó là thời điểm  để cấu hình nó Tùy thuộc vào phần cứng cần thiết cho thiết kế , cấu hình có thể thay đổi Ví dụ, chúng ta hãy nhìn vào cấu hình phần cứngcho thiết kế LED nhấp nháy

Arduino

Pin 9V

LED

Cổng kết nối Pin 9V

Trang 13

Để thiết lập phần cứng, chúng ta cần phải kết nối các đèn LED tới pin kỹ thuật số 13 và nối đất trên  Arduino (xem hình 1-11), như minh họa trong sơ đồ thể hiện trong hình 1-12.

Hình 1-11 : Các thiết lập phần cứng cho thiết kế nhấp nhát LE

Hình 1-12 : Một sơ đồ nguyên lí của thiết kế nhấp nháy LED

Trang 14

Đầu tiên, chúng ta cần phải cài đặt  Arduino IDE Để làm điều này, đi đến

www.Arduino.cc/en/Main/Software Arduino IDE sẽ làm việc với Windows Vista hoặc 7, Mac

OS X, và các hệ thống Linux Sau khi Arduino IDE sẽ được tải về máy tính để bàn của bạn, nó

sẽ được trong một định dạng nén, do đó giải nén file Arduino-0022 trên máy tính để bàn của bạn Arduino IDE đã được cài đặt

Bây giờ bạn có Arduino IDE được cài đặt trên máy tính của bạn, bạn cần phải chắc chắn rằng nó được cấu hình đúng Để làm điều này, mở Arduino IDE, và vào Tools cổng nối tiếp (Serial port) ; chọn cổng nối tiếp ( Serial port) Arduino của bạn được kết nối với Tiếp theo, chọn Toolsboard , và chọn Arduino board bạn đang sử dụng (cuốn sách này sử dụng Arduino Duemilanove Atmega328) Một khi phần cứng của bạn được cấu hình, nó là thời điểm để viết chương trình phần mềm

Viết Chương trình

Bây giờ, chúng ta hãy xem xét các chương trình   cần phải viết Đây là một phần quan trọng  của quá trình kỹ thuật Chúng ta hãy nhìn vào tài liệu yêu cầu của thiết kế nhấp nháy LED để quyết định những gì chương trình sẽ cần phải làm: đèn LED cần nhấp nháy trong khoảng thời gian 100msn Chương trình có thể viết được dưới dạng sau:

// Nhấp nháy led trong 100ms

const int LEDdelay = 100; // gọi trễ

Trang 15

bit to pin 13 delay(LEDdelay); // trễ 100ms

digitalWrite(13, LOW);

delay(LEDdelay) // điều này sẽ tạo một  lỗi cú pháp do một dấu chấm phẩy bị thiếu 

Chú ý Khi bạn cố gắng để biên dịch chương trình này để Arduino của bạn, nó mang lại cho bạn một lỗi Điều này là do một lỗi cú pháp mà mà chúng ta sẽ gỡ lỗi trong phần tiếp theo.

Sửa Lỗi Chương Trình Arduino

Chương trình cuối cùng thất bại trong việc biên dịch vì một lỗi cú pháp Đây là loại lỗi là do mã định dạng không chính xác, chẳng hạn như một dấu chấm phẩy mất tích (đó là lý do tại sao các chương trình cuối cùng không biên dịch) Dưới đây là mã sửa đổi:

// Nhấp nháy led trong 100ms

const int LEDdelay = 100; // gọi trễ

digitalWrite(13, HIGH); // ghi ở mức cao

bit to pin 13 delay(LEDdelay); // trễ 100ms

Trang 16

Xử lí sự cố phần cứng

Công cụ số một được sử dụng để xử lí sự cố phần cứng là đồng hồ vạn năng Công cụ này có thểcứu phần cứng của bạn khỏi bị hư hỏng Ví dụ, nếu đồng hồ vạn năng của bạn phát hiện rằng nguồn điện  là nhiều hơn là cần thiết, thiết lập phần cứng cho thiết kế  nhấp nháy đèn LED có thể

sử dụng một điện trở 22 Ohm để hạn dòng cho LED

Hoàn Thành Mẫu Thử

Một khi bạn đã hoàn thành việc gỡ lỗi phần mềm và khắc phục sự cố phần cứng, bạn cần phải cómột nguyên mẫu hoàn thành sẽ làm việc trong hầu hết các trường hợp Một khi b đã hoàn thànhviệc gỡ lỗi phần mềm và khắc phục sự cố phần cứng, bạn cần phải có một nguyên mẫu hoàn thành sẽ làm việc trong hầu hết các trường hợp Trong chương này, chúng ta sử dụng một thiết

kế  rất đơn giản, nhưng trong các chương sau, thiết kế sẽ trở nên phức tạp hơn, và các quy trình

kỹ thuật sẽ trở nên cần thiết hơn để đảm bảo mã code là hiệu quả, hợp lý, và dễ hiểu

Tóm Tắt Sơ Lược

Trong chương này, ta đã học được những phần khác nhau của phần cứng và các công cụ khác nhau như: Arduino, Arduino Shields (lá chắn arduino), Đồng hồ vạn năng, và kìm nhọn , sau đó chúng ta đã tìm hiểu về qui trình kĩ thuật Arduino Các bước trong quá trình này là : thu thập yêu cầu, tạo các tài liệu yêu cầu, tập hợp các phần cứng , cấu hình phần cứng, viết phần mềm, gỡlỗi các phần mềm Arduino, khắc phục sự cố phần cứng, và hoàn thành nguyên mẫu Tacũng xác định một số điều khoản mới sẽ giúp hiểu được quy trình kỹ thuật, vàchúng ta đã học được sự khác biệt giữa các lỗi logic và cú pháp

Trang 17

Chương 2: Tìm hiểu về chương trình phần mềm

Arduino

Trong chương này, chúng ta sẽ thảo luận về các khối  lập trình khác nhau sẽ được sử dụng trong cuốn sách này Nếu bạn đã được lập trình trong C, bạn sẽ thấy rằng lập trình cho các Arduino là rất giống nhau Nếu không, chương này sẽ dạy cho bạn những khái niệm cơ bản Tại sao nó quantrọng cho bạn để tìm hiểu những điều cơ bản của lập trình Arduino? Về lâu dài, điều này sẽ giúp giữ mã của bạn thoáng  và dễ đọc Ngoài ra, học tập các vòng lặp cơ bản (loop) và cấu trúc ban đầu sẽ cho phép chúng ta tập trung hơn vào các thư viện sau đó Thư viện có thể có các lớp, loại, hoặc các chức năng và có thể được gọi bằng cách sử dụng các từ khóa trong chương trình Mục đích của thư viện là để dễ dàng thêm nhiều chức năng hơn cho chương trình của bạn bằng cách

sử dụng mã code đã được tạo ra trước Một số thư viện ta sẽ tìm hiểu trong chương này là

NewSoftwareSerial, Thư viện LCD, TinyGPS,và một vài thư viện khác

Bắt Đầu Với setup( ) và loop( )

Tất cả các chương trình Arduino phải có hai thành phần chính để làm việc đúng là setup () và loop () Chúng được thực hiện như sau :

// chương trình Arduino cơ bản

Trang 18

setup ( ) được sử dụng để thiết lập cổng I / O  chẳng hạn như đèn LED, cảm biến, động cơ, và

cổng nối tiếp Cần chú ý thiết lập là rất quan trọng bởi vì để sử dụng các chân trên Arduino, chúng ta cần phải thông báo với Arduino rằng chúng sẽ được sử dụng

loop ( ) nắm giữ tất cả các mã điều khiển các cổng I / O Ví dụ, ở đây bạn sẽ thông báo với

động cơ (motor) của bạn chạy  với một tốc độ nhất định Chúng ta sẽ tìm hiểu  làm thế nào để thiết lập và điều khiển I / O trong các phần tiếp theo Chương trình Arduino cũng có chức năng

bổ sung các chương trình con, rất hữu ích bạn có thể gọi trong vòng lặp loop () hoặc chương trình con của nó Để sử dụng một chương trình con, trước tiên bạn phải khởi tạo nó ở phần đầu của chương trình , đó là một mẫu thử chức năng Dưới đây là một ví dụ :

Khởi Tạo Biến

Biến là các khối xây dựng một chương trình cơ bản nhất; chúng được sử dụng để truyền dữ liệu xung quanh chương trình của bạn và được sử dụng trong tất cả các chương trình chúng tai sẽ tìm hiểu trong cuốn sách này Chúng tacó thể viết một số dạng của các biến ngôn ngữ Arduino trongBảng 2-1 :

Trang 19

Bây giờ bạn cần phải biết làm thế nào để khai báo các biến Để khai báo, bạn cần phải biết những

gì trong phạm vi các biến có thể được sử dụng và sau đó xác định (hoặc liệt kê) phạm vi đáp ứngnhu cầu của bạn Trong cuốn sách này, chúng ta sẽ tìm hiểu  hai loại biến  : biến cục bộ và biến

số chung Một biến cục bộ chỉ hoạt động trong phạm vi nhất định của nó Ví dụ, một vòng lặp giữ các biến khai báo của nó chỉ trong dấu ngoặc đơn của nó, do đó, những biến này là cục bộ  cho một vòng lặp loop Một biến số chung (toàn cục )  có thể được gọi tại bất kỳ điểm nào trongchương trình của bạn Để xác định một biến số chung , khởi tạo nó ở phần đầu của chương trình của bạn Chương trình sau đây minh họa cách khởi tạo các biến cục bộ và biến số chung :

// Khởi tạo biến

int x; // Biến này được là  toàn cục và có sẵn  để truy cập trong suốt chương trình này

Trang 20

int pins[ ] = {13,9,8};

Đó là một ý tưởng tốt để khai báo kích thước của mảng, như trong ví dụ sau:

const int NumOfPins = 3;

int pins[NumOfPins] = {13,9,8};

Điều này sẽ cho phép bạn truy cập thông tin của mảng, và sau đó, bạn có thể truyền thông tin đó

để một pin kỹ thuật số hoặc bất cứ điều gì khác mà bạn muốn Biến bây giờ đã được khai báo, làm thế nào để bạn sử dụng chúng ? Điều này sẽ được thảo luận trong phần tiếp theo của chươngnày

Lưu ý : Whitespacing có nghĩa là bạn đã thêm dòng trống và không gian trong mã code để làm cho nó dễ đọc hơn

Viết Câu Lệnh Có Điều Kiện

Câu lệnh điều kiện có thể được sử dụng để kiểm soát dòng dữ liệu  của chương trình của bạn Ví

dụ, nói rằng bạn muốn chạy  một động cơ chỉ khi một nút được nhấn; bạn có thể làm như vậy bằng cách sử dụng câu lệnh điều kiện Chúng tôi sẽ thảo luận về các câu lệnh  có điều kiện sau

đây: if, if-elseif, if-else, câu lệnh chuyển đổi

Một câu lệnh if   rất quan trọng , dưới đây là một ví dụ về câu lệnh if :

int i;

if (i < 10)

{

Trang 22

switch (potValue){ case 500;

Làm Việc Với Vòng Lặp LOOP

Loops có nhiều công dụng bao gồm cả việc loại bỏ mã dư thừa và lặp qua mảng Các vòng lặp chúng ta sẽ sử dụng là : for , while và do….while Những vòng lặp  sẽ cho phép chúng ta chạy qua mã trong khi một điều kiện là đúng (hay sai, trong một số trường hợp)

Vòng lặp for : Vòng lặp này được sử dụng để lặp lại một khối mã một số cố định của thời gian Các thiết lập cơ bản của vòng lặp này là :

For ( int i=0 ; i<=10 ;i++ )

{ // viết câu lệnh ở đây

}

Một ứng dụng thực tế cho một cho vòng lặp for là sử dụng nó để cập nhật nhiều cài đặt pinMode: int pins [ ] = {13,9,8};

void setup()

Trang 23

Lưu ý pinMode được sử dụng để thiết lập các chân I / O của bạn trên Arduino

Vòng lặp while : vòng lặp này sẽ chạy cho đến khi một điều kiện đã được đáp ứng; nếu điều

kiện đầu tiên  là sai, nó sẽ không chạy ở tất cả Ví dụ, bạn muốn sử dụng một vòng lặp while  nếubạn muốn chạy mã cho đến khi được một giá trị nhất định đến từ một cảm biến Ví dụ sau đây minh họa nguyên tắc này :

int potPin = A1;

Trang 24

Vòng lặp Do while : Nó  giống như các vòng lặp while  ngoại trừ các câu lệnh điều kiện được

kiểm tra ở cuối vòng lặp, vì vậy vòng lặp này sẽ chạy ít nhất một lần Dưới đây là một ví dụ:

Liệt kê 2-1 : Câu lệnh số

Trang 25

Lưu ý : sử dụng các chân số  PWM để kiểm soát tốc độ động cơ và độ sáng LED

Giao Tiếp Với Các Linh Kiện Tương Tự

Bạn cũng có thể sử dụng giao tiếp  tương tự với cảm biến và động cơ, có nghĩa là bạn có thể kết nối chiết áp để điều khiển tốc độ động cơ thông qua một chân điều chế độ rộng xung (PWM)  trên Arduino Các chức năng cho giao tiếp  tương tự là analogRead (giá trị) và analogWrite (chân, giá trị) Điều duy nhất bạn cần phải ghi nhớ là một chiết áp  sẽ cho một giá trị từ 0 đến 1024, do

đó bạn sẽ có quy mô analogWrite từ 0 đến 255, ví dụ:

analogWrite (LED,ledValue/4) ; // 1024/4 = 255

Giao Tiếp Nối Tiếp

Chúng ta sẽ sử dụng giao tiếp nối tiếp trong suốt cuốn sách này Giao tiếp nối tiếp cho phép chúng ta giao tiếp với một máy tính, màn hình LCD, và nhiều thiết bị khác, như bạn sẽ thấy

trong một số chương tiếp theo Một số lệnh nối tiếp là : Serial.begin (baud), Serial.Println

Trang 26

("bất cứ điều gì bạn muốn viết cho chân nối tiếp"), Serial.read ( ), Serial.write (dữ liệu nhị phân), Serial.available ( ) , và Serial.end () Những lệnh này cho phép chúng ta đọc và viết thư cho bất kỳ thiết bị ngoại vi nối tiếp chúng ta muốn Đây là một mô tả ngắn gọn của mỗi lệnh nốitiếp:

Serial.begin (baud): Bạn sẽ đặt lệnh này bên trong cấu trúc setup () và đưa tỷ lệ baud thích hợp

cho các thiết bị có nối tiếp sẽ được giao tiếp, ví dụ:

Serial.read (): Dùng để  đọc một giá trị từ cổng nối tiếp Ví dụ, bạn có thể sử dụng để đọc một

cái gì đó từ máy tính của bạn sau đó bạn muốn viết lệnh  cho một màn hình LCD trên Arduino

Void loop()

{

char var = Serial.read () ; // Đọc byte đến từ cổng nối tiếp

}

Trang 27

Serial.write (): Sử dụng điều này để ghi dữ liệu nhị phân đến một cổng nối tiếp, ví dụ:

Void loop()

{

while(Serial.available() > 0)

{

char var = Serial.read () ; // Đọc byte đến từ cổng nối tiếp

Serial.write (var) ; // ghi dữ liệu nhị phân vào cổng nối tiếp

}

}

Chú ý: Trong cuốn sách này, hầu hết thời gian bạn sẽ sử dụng Serial.println () bởi vì chúng tôi

sẽ ghi các giá trị  int hoặc string cho các bộ giám sát  nối tiếp_ Các Serial.write () chức năng được sử dụng để gửi dữ liệu nhị phân để bộ giám sát  nối tiếp hoặc bất kỳ chương trình cổng nối tiếp khác

Serial.available (): Chức năng này sẽ kiểm tra xem nếu có bất kỳ byte đến vào cổng nối tiếp, ví

Serial.end (): Điều này vô hiệu hóa giao tiếp nối tiếp

Bây giờ bạn đã thấy các tập lệnh cho giao tiếp nối tiếp, chúng ta có thể sử dụng chúng trong các chương trình Bảng liệt kê 2-2 minh họa hầu hết các chức năng chúng ta đã thảo luận

Trang 28

Bảng liệt kê 2-2 : Giao tiếp nối tiếp

incomingByte = Serial.read(); // đọc byte đến

Serial.println(incomingByte, BYTE); // xuất byte đến tới cổng nối tiếp

digitalWrite(ledPin, incomingByte) // ghi tới chân LED

}

}

Chương trình này là nền tảng của giao tiếp nối tiếp: nó khởi tạo  incomingByte và ledPin tới trong cấu trúc setup  tốc độ truyền được thiết lập là  9600 Khi chúng ta nhận được bên trong cấutrúc vòng lặp, vòng lặp while  đang kiểm tra để xem nếu bất cứ điều gì tại cổng nối tiếp Nếu

có, nó gán các thông tin trên cổng nối tiếp đến  incomingByte Cuối cùng, chương trình ghị các

dữ liệu vào cổng nối tiếp và ghi dữ liệu vào ledPin ( trường hợp 1 hoặc 0)

Sử Dụng Thư Viện Arduino

Bây giờ bạn biết những điều cơ bản của lập trình Arduino, chúng ta sẽ điểm qua các thư viện sẽ được sử dụng trong các chương tới Các thư viện chính mà chúng ta sẽ sử dụng là

NewSoftwareSerial, TinyGPS, và thư viện LCD, và một vài thư viện khác sẽ được giải thích trong các chương sau Để sử dụng các thư viện này, bạn sẽ cần phải tải về và giải nén chúng vào

Trang 29

thư mục Libraries trong thư mục Arduino-022 Sau khi bạn làm điều đó, bạn sẽ có thể sử dụng bất kỳ thư viện tương thích với các Arduino.

NewSoftwareSerial

Thư viện NewSoftwareSerial cho phép chúng tôi viết lệnh  cho nhiều chương trình nối tiếp Để

sử dụng thư viện này, điều đầu tiên bạn phải làm là có được thư viện NewSoftwareSerial từ Internet và thêm nó vào thư mục Libraries trong thư mục Arduino IDE Bạn có thể tải

NewSoftwareSerial tại http://arduiniana.org/libraries/newsoftserial

Một khi bạn đã tải về và thêm vào NewSoftwareSerial vào thư mục Arduino IDE điều bạn phải làm là gọi NewSoftwareSerial trong các chương trình mà bạn muốn sử dụng nó như sau :

#include <NewSoftwareSerial.h>

NewSoftwareSerial gps(2,3); / / Điều này tạo ra dạng mới  củaewSoftwareSerial dưới

// Gps tên_

// Định dạng trong dấu ngoặc (rx, tx)

Điều này sẽ bao gồm gps nối tiếp  đến  chân  2 và 3 Trong cấu trúc setup , bạn phải thiết lập tốc

độ truyền nối tiếp mới, như vậy:

void setup()

{

gps.begin(4800);

}

Sau đó, thay vì sử dụng các thư viện Serial, bạn sẽ có chức năng gọi từ thư viện

NewSoftwareSeria bạn có thể gọi những chức năng từ các đối tượng gps nối tiếp  chúng tôi tạo

ra trước đó, ví dụ:

serial.ready () ;

Become…

Gps.read () ;

Trang 30

TinyGPS

Thư viện này phân tích dữ liệu NMEA, như kinh độ, vĩ độ, độ cao, và tốc độ, thành một phong cách thân thiện Chúng ta sẽ đi vào chi tiết hơn nữa về các thư viện TinyGPS trong Chương 5 Tất cả mà bạn cần làm bây giờ là tải về các thư viện TinyGPS từ

http://arduiniana.org/libraries/tinygps

Thư viện ColorLCDShield

Thư viện hình LCD sẽ được sử dụng để đọc và ghi vào một màn hình LCD Chúng ta sẽ tìm hiểucác thư viện LCD trong chương 4 Bây giờ, chỉ cần tải các thư viện LCD từ :

http://www.apress.com/9781430238850

Nghiên Cứu Kết Hợp Ngôn Ngữ Cơ Bản Arduino

Bây giờ bạn sẽ biết làm thế nào để tạo ra các chương trình Arduino cơ bản nhất, vì vậy hãy dành vài phút để tóm tắt lại một số điểm lập trình chìa khóa  cần thảo luận Bạn có thể sử dụng bản tóm tắt này để giúp cho việc viết  chương trình trong suốt cuốn sách này, và thông qua đó  tạo các thiết kế  của riêng bạn Dưới đây là một ví dụ của chương trình:

Chúng tôi cũng thực hiên  khai báo biến và sử dụng biến toàn cục , như trong ví dụ sau:

char ch = 'A'; int pin = 13;

Những giá trị này có loại kí tự  và số nguyên Bạn cũng đã học về lệnh if  ; lệnh if-else và cách

sử dụng chúng:

Trang 31

// đặt code tại đây

Ngoài ra bây giờ bạn có thể thêm câu lệnh elseif để tạo ra lệnh if -elseif để thêm điều kiện , nếu bạn cần chúng

Trang 32

Sau khi câu lệnh  có điều kiện đã được giải thích, chúng tôi thực hiên  các cấu trúc vòng lặp khácnhau mà bạn có thể sử dụng để phân tích hoặc lặp thông qua mã Vòng lặp  đầu tiên chúng tôi thảo luận là vòng lặp for:

For ( initialization;condition; variable ; Manipulation )

Tiếp theo, bạn cần thiết phải tìm hiểu về những cách khác nhau để giao tiếp với các bộ cảm biến

; thiết bị ngoại vi khác, và ta  đã thảo luận về các hàm  digitalRead () và digitalWrite () như sau :

Trang 33

Sau khi tìm hiểu về những cách thức khác nhau để giao tiếp với các bộ cảm biến, chúng ta cần

một cách để giao tiếp với giao tiếp nối tiếp_ Dưới đây là các lệnh cho giao tiếp nối tiếp:

Trang 34

KIỂM SOÁT CHUYỂN ĐỘNG

Trong chương này, chúng ta sẽ thảo luận về điều khiển động cơ, một phần rất quan trọng của thiết kế robot sẽ được dùng trong cuốn sách này Điều khiển động cơ cho phép chúng ta cung cấpcho cuộc sống robot, nhưng chúng tôi sẽ không chỉ đơn giản được nhấn nhím để điều khiển ra robot Thay vào đó, theo yêu cầu của một khách hàng giả định, chúng tôi sẽ kiểm soát tốc độ động cơ và định hướng qua truyền thông nối tiếp

Chúng ta có thể thực hiện điều này bằng cách sử dụng một H-bridge và một biến tần hex CácH-bridge sẽ được sử dụng để điều khiển hai động cơ và biến tần hex sẽ được sử dụng để chuyển đổi một tín hiệu từ 0 sang 1 (từ 1 sang 0) Công ty muốn từng tham số được tách để đi đến nhữngchân cụ thể Một yêu cầu nữa công ty đó là các mẫu thử nghiệm cuối cùng cần phải được cấu hình trên một khung-nhưng không phải cho đến khi các phần cứng và phần mềm đã được thử nghiệm

Để tận dụng tối đa trong dự án này, bạn sẽ cần một sự hiểu biết cơ bản của tiến trình kỹ thuật

và ngôn ngữ lập trình Arduino như đã nói trong hai chương đầu tiên Nếu bạn chưa đọc bài viết nào, xin vui lòng làm điều đó trước khi tiếp tục Trước khi giải quyết yêu cầu của khách hàng, tuy nhiên, bạn sẽ cần một số thông tin cơ bản cung cấp cho bạn những cơ sở cần thiết để tạo ra các dự án cuối cùng Để bắt đầu mọi thứ, chúng ta sẽ thảo luận về H-bridge và mục đích sử dụngkhác nhau của nó tiếp theo là một đánh giá về phần cứng cần dùng trong chương này Sau đó chúng ta sẽ tạo ra 4 dự án nhỏ mà sẽ dạy bạn làm thế nào để bật và tắt một động cơ với một nút bấm Tiếp theo, bạn sẽ tìm hiểu làm thế nào để sử dụng một chiết áp để kiểm soát tốc độ trên mộtđộng cơ Sau đó, bạn sẽ học cách điều khiển nhiều động cơ với H-bridge và làm thế nào để kiểm soát cả tốc độ và hướng với một chiết áp và một nút bấm Trang bị kiến thức mới học của bạn, bạn sẽ tạo ra một robot có sử dụng H-bridge để điều khiển chuyển động của nó

Giải thích phần cứng: Các H-bridge

Trang 35

Các H-bridges là mạch tích hợp rất hữu dụng (IC); chúng cho phép điện áp cao hơn để được kết nối với động cơ mà không cần sử dụng nguồn 5V yếu của Arduino Với một số Các H-cầu, bạn có thể sử dụng lên đến 30V Hình 3-1 cho thấy ba ví dụ về một H-bridge; cho chương này, chúng ta sẽ dùng lá chắn động cơ từ Spark Fun được hiển thị phía trên bên phải.

Hình 3-1 Một vài H-bridges (từ trái sang phải: bề mặt gắn kết H-bridge, thông qua hố

H-bridge, và động cơ từ lá chắn SparkFun)

Các motor Sparkfun lá chắn có hai cổng motor, cổng A và cổng B; các cổng tương ứng với bốn chân trên lá chắn động cơ từ Sparkfun Chúng là chân digital 3: PWMA, cái mà kiểm soát tốc độ của motor A, chân digital 12: DIRA, cái mà điều khiển hướng của motor A, chân digital 11: PWMB, cái mà kiểm soát tốc độ của motor A, và chân digital 13: DIRB , cái mà điều khiển hướng của motor B Chúng ta sẽ dùng một H-bridge để điều khiển tốc độ và hướng của động cơ Các lá chắn động cơ từ Sparkfun có được xây tích hợp trong L298P H-bridge, có thể xử lý lên đến 18V và sử dụng các chân digital 3, 11, 12, và 13 để điều khiển tốc độ và hướng Bạn cũng cóthể sử dụng một H-bridge độc lập như L293D, thiết bị có một điện áp đầu vào lên tới 37V Trongchương này, chúng ta sẽ sử dụng trình điều khiển motor để điều khiển động cơ với một chiết áp

và một nút bấm, kiểm soát tốc độ và hướng điều khiển những thứ khác

Tập hợp các phần cứng cho Chương này

Trang 36

Chúng ta sẽ sử dụng Dagu 2WD Beginner Robot Chassis V2 từ Robotshop.com Sau đó trong chương này, các yêu cầu tài liệu trình bày sẽ có một chuẩn cho khung này Phần này của phần cứng sẽ được sử dụng để giữ mạch, chẳng hạn như Arduino và lá chắn motor Bạn có thể tìm thấy khung này ở www.robotshop.com/dagu-2wd-beginner-robot-chassis-v2-2.html

Tôi đã chọn khung này cho thiết kế hai bánh xe của nó và không gian rộng rãi trên đó nó có mẫu thử nghiệm Nếu bạn đã có một khung hoặc bạn muốn mua một cái khác, chỉ cần đảm bảo nó là một khung xe hai bánh, như chúng ta sẽ dùng hệ thống hai bánh suốt phần còn lại của cuốn sách này

Hình 3-2 Trong chương này, chúng ta sẽ sử dụng Dagu 2WD Beginner Robot Chassis V2.

Sự hiểu biết các vấn đề cơ bản của điều khiển động cơ

Trong phần này, chúng ta sẽ thảo luận về các vấn đề cơ bản của điều khiển động cơ trong bốn dự

án riêng biệt: bật một động cơ với một nút bấm, kiểm soát tốc độ của một động cơ với chiết áp, kiểm soát nhiều động cơ với Arduino, và cuối cùng, kiểm soát tốc độ và hướng Những điều này

sẽ tạo nên nền tảng chúng ta dùng để xây dựng dự án chúng ta khi chúng ta có các tài liệu yêu cầu cho một robot sau chương này

Dự án 3-1: Bật một động cơ với một Switch

Trang 37

Dự án này sẽ chủ yếu tập trung vào các chân digital và sẽ sử dụng một H-bridge vì vậy chúng ta

có thể sử dụng điện áp cao hơn để chạy các động cơ với Arduino Dự án 3-1 sẽ cho phép chúng tôi bật một động cơ trên chuyển động theo một chiều kim đồng hồ

Tập hợp các phần cứng

Hình 3-3 cho thấy phần cứng cho dự án này, trừ pin 9V, kết nối 9V, và solderless breadboard:

• Arduino Duemilanove (hoặc UNO)

• đầu nối pin 9V

• Hai khối thiết bị đầu cuối từ Sparkfun

• Dây phụ

Hình 3-3 Phần cứng cho dự án này

Cấu hình phần cứng

Trang 38

Đầu tiên, hàn các header cái vào lá chắn motor và nối lá chắn động cơ đến header cái trên

Arduino Duemilanove Tiếp theo, cắm đầu cuối trên một lá chắn motor cho động cơ 6V bằng cách hàn một khối đầu cuối để lá chắn motor và động cơ của bạn kết nối với khối đầu cuối (Hình3-4 cho thấy cấu hình này) Cuối cùng, kết nối bật / tắt chuyển đổi từ chân nối đất đến digital 10 trên Arduino, như Hình 3-5 cho thấy Hình 3-6 và 3-7 minh họa cho cấu hình phần cứng cho dự

án này

Hình 3-4 Khối đầu cuối thêm vào lá chắn motor

Trang 39

Hình 3-5 Công tắc được kết nối với chân digital 10 và nối đất trên Arduino.

Hình 3-6 Động cơ được kết nối với cổng motor A trên lá chắn motor, và chuyển đổi được

kết nối với chân digital 10 và nối đất trên Arduino.

Hình 3-7 Các sơ đồ cho dự án này

Trang 40

Bây giờ bạn đã kết nối các nút nhấn và động cơ, bạn cần phải kết nối Arduino của bạn để máy tính của bạn để cho phần mềm có thể được upload vào Arduino Chúng tôi sẽ viết chương trình cho dự án này trong phần tiếp theo.

Viết phần mềm

Các phần mềm cho dự án này sẽ tương tự như các dự án LED nhấp nháy mà chúng ta tạo ra trong Chương 1 Nó sẽ có một đầu vào digital, một đầu ra digital, và một câu lệnh có điều kiện kiểm soát đầu ra Listing 3-1 cung cấp mã cho dự án này

Listing 3-1 Turning on a Motor

const int buttonPin = 10;

const int motorPin = 3;

Ngày đăng: 14/11/2014, 06:02

TỪ KHÓA LIÊN QUAN

w