Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng tỏ được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng đồng nguồn mở. Arduino thực sự đã gây sóng gió trên thị trường người dùng trên toàn thế giới trong vài năm gần đây, số lượng người dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại học đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về mức độ phổ biến.Tuy nhiên tại Việt Nam Arduino vẫn còn chưa được biết đến nhiều, các tài liệu liên quan đến nó vẫn còn rất hạn chế. Được sự giới thiệu và chỉ dẫn của thầy Nguyễn Thanh Dũng, sau một thời gian tìm hiểu tác giả đã biên soạn tài liệu “HƯỚNG DẪN SỬ DỤNG CƠ BẢN ARDUINO”. Trong tài liệu này cung cấp cho bạn đọc một lượng kiến thức cơ bản nhất về Arduino cũng như các ứng dụng thực tế của nó
HỌC VIỆN HÀNG KHÔNG VIỆT NAM KHOA ĐIỆN TỬ VIỄN THÔNG - - HƯỚNG DẪN SỬ DỤNG CƠ BẢN ARDUINO TP.HCM, Tháng 5, Năm 2014 MỤC LỤC: Lời nói đầu Chương 1: Tổng quan Arduino Uno 1 Tổng quan Sơ đồ chân Arduino Chương 2: Cài đặt chương trình Arduino IDE Driver cho Arduino Cài đặt chương trình Arduino IDE Cài đặt Driver Arduino IDE Chương 3: Hướng dẫn cài đặt mô Arduino Proteus 11 Chương 4: Giao tiếp Arduino với số linh kiện điện tử 13 1) Project 1: Led nhấp nháy 13 2) Project : Đèn sáng nhấn phím 18 3) Project : Led sáng dần từ led đến led 10 ngược lại 21 4) Project : Led sáng dần từ led đến led 10 ngược lại thời gian delay thay đổi 24 5) Project 5: Điều khiển tốc độ động PWM 27 6) Project : Điều khiển động L293D 31 7) Project 7: Giao tiếp Arduino với LCD 16x2 34 8) Project 8: Giao tiếp với máy tính 47 9) Project Đo nhiệt độ môi trường dùng LM35D hiển thị LCD Serial Monitor 49 10) Project 10: Giao tiếp Arduino với Servo motor 54 Tài liệu tham khảo 56 Lời Nói Đầu Arduino sử dụng rộng rãi giới, ngày chứng tỏ sức mạnh chúng thông qua vô số ứng dụng độc đáo người dùng cộng đồng nguồn mở Arduino thực gây sóng gió thị trường người dùng tồn giới vài năm gần đây, số lượng người dùng cực lớn đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại học làm cho người tạo chúng phải ngạc nhiên mức độ phổ biến.Tuy nhiên Việt Nam Arduino chưa biết đến nhiều, tài liệu liên quan đến cịn hạn chế Được giới thiệu dẫn thầy Nguyễn Thanh Dũng, sau thời gian tìm hiểu tác giả biên soạn tài liệu “HƯỚNG DẪN SỬ DỤNG CƠ BẢN ARDUINO” Trong tài liệu cung cấp cho bạn đọc lượng kiến thức Arduino ứng dụng thực tế Tài liệu gồm có nội dung sau: Chương 1: Tổng quan Arduino Uno Chương 2: Cài đặt chương trình Arduino IDE Driver cho Arduino Chương 3: Hướng dẫn cài đặt mô Arduino Proteus Chương 4: Giao tiếp Arduino với số linh kiện điện tử Khi biên soạn, tác giả tham khảo số tài liệu nước để tài liệu vừa đảm bảo mặc nội dung vừa tiếp cận với bạn đọc Khi viết tác giả có gắng để tài liệu hoàn chỉnh song chắn khơng tránh khỏi sai sót, mong nhận góp ý bạn đọc Mọi ý kiến đóng góp xin liên hệ: trungtin.vaa@gmail.com Tác giả SV: NGUYỄN TRUNG TÍN Chương 1: Tổng quan Arduino Uno Tổng quan Arduino thật bo mạch vi xử lý dùng để lập trình tương tác với thiết bị phần cứng cảm biến, động cơ, đèn thiết bị khác Đặc điểm bật Arduino môi trường phát triển ứng dụng dễ sử dụng, với ngôn ngữ lập trình học cách nhanh chóng với người am hiểu điện tử lập trình Và điều làm nên tượng Arduino mức giá thấp tính chất nguồn mở từ phần cứng tới phần mềm Arduino Uno sử dụng chip Atmega328 Nó có 14 chân digital I/O, chân đầu vào (input) analog, thạch anh dao động 16Mhz Một số thông số kỹ thuật sau : Chip ATmega328 Điện áp cấp nguồn 5V Điện áp đầu vào (input) (kiến 7-12V nghị ) Điện áp đầu vào(giới hạn) 6-20V Số chân Digital I/O 14 (có chân điều chế độ rộng xung PWM) Số chân Analog (Input ) DC Current per I/O Pin 40 mA DC Current for 3.3V Pin 50 mA Flash Memory 32KB (ATmega328) với 0.5KB sử dụng bootloader SRAM KB (ATmega328) EEPROM KB (ATmega328) Xung nhịp HỌC VIỆN HÀNG KHÔNG 16 MHz SV: NGUYỄN TRUNG TÍN Sơ đồ chân Arduino Hình 1: Arduino Uno a) USB (1) Arduino sử dụng cáp USB để giao tiếp với máy tính Thơng qua cáp USB Upload chương trình cho Arduino hoạt động, ngồi USB cịn nguồn cho Arduino b) Nguồn ( ) Khi không sử dụng USB làm nguồn sử dụng nguồn ngồi thơng qua jack cắm 2.1mm ( cực dương giửa ) sử dụng chân Vin GND để cấp nguồn cho Arduino Bo mạch hoạt động với nguồn điện áp từ – 20 volt Chúng ta cấp áp lớn nhiên chân 5V có mực điện áp lớn volt Và sử dụng nguồn lớn 12 volt có tượng nóng làm hỏng bo mạch Khuyết cáo bạn nên dùng nguồn ổn định đến 12 volt HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN Chân 5V chân 3.3V (Output voltage) : chân dùng để lấy nguồn từ nguồn mà cung cấp cho Arduino Lưu ý : khơng cấp nguồn vào chân làm hỏng Arduino GND: chân mass c) Chip Atmega328 Chip Atmega328 Có 32K nhớ flash 0.5k sử dụng cho bootloader Ngồi cịn có 2K SRAM, 1K EEPROM d) Input Output ( 4, 6) Arduino Uno có 14 chân digital với chức input output sử dụng hàm pinMode(), digitalWrite() digitalRead() để điều khiển chân đề cập chúng phần sau Cũng 14 chân digital cịn số chân chức là: Serial : chân (Rx ), chân ( Tx) Hai chân dùng để truyền (Tx) nhận (Rx) liêu nối tiếp TTL Chúng ta sử dụng để giao tiếp với cổng COM số thiết bị linh kiện có chuẩn giao tiếp nối tiếp PWM (pulse width modulation): chân 3, 5, 6, 9, 10, 11 bo mạch có dấu “~” chân PWM sử dụng để điều khiển tốc độ động cơ, độ sáng đèn… SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK), chân hỗ trợ giao chuẩn SPI I2C: Arduino hỗ trợ giao chuẩn I2C Các chân A4 (SDA) A5 (SCL) cho phép chúng tao giao tiếp giửa Arduino với linh kiện có chuẩn giao tiếp I2C e) Reset (7): dùng để reset Arduino HỌC VIỆN HÀNG KHÔNG SV: NGUYỄN TRUNG TÍN Chương 2: Cài đặt chương trình Arduino IDE Driver cho Arduino Cài đặt chương trình Arduino IDE Các bạn truy cập vào trang web http://arduino.cc/en/Main/Software tải chương trình Arduino IDE phù hợp với hệ điều hành máy bao gồm Windown, Mac OS hay Linux Đối với Windown có cài đặt (.exe) Zip, Zip cần giải nén chạy chương trình khơng cần cài đặt Sau cài đặt xong giao diện chương trình sau: Hình 2: Arduino IDE HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN Cài đặt Driver Sử dụng cáp USB kết nối Arduino với máy tính, lúc bạn thấy đèn led power bo sáng Máy tính nhận dạng thiết bị bạn nhận thông báo: “Device driver software was not successfully installed” Hình 3: Driver Software Installation Bây bạn click vào Start Menu chọn Control Panel chọn System and Security, click System sau chọn Device Manager Hình 4: Device Manager HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN Chúng ta thấy cảnh báo màu vàng thiếu driver Arduino Click chuột phải Arduino Uno icon sau chọn “Update Driver Software” Hình 5: Right click chọn ”Update Driver Software” Chọn “Browse my computer for driver software” Hình 6: Click chọn “Browse my computer for driver software” Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino lưu trữ Hình 6: Driver Click “Next” Windown tự động cài đặt driver, qua trình cài đặt driver hồn tất HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN Arduino IDE Arduino IDE nơi để soạn thảo code, kiểm tra lỗi upload code cho arduino Hình 7: Arduino IDE a) Arduino Toolbar: có số button chức chúng sau : Hình 8: Arduino Toolbar Verify : kiểm tra code có lỗi hay khơng Upload: nạp code soạn thảo vào Arduino New, Open, Save : Tạo mới, mở Save sketch Serial Monitor : Đây hình hiển thị liệu từ Arduino gửi lên máy tính b) Arduino IDE Menu: Hình 9: IDE Menu HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN Chương trình thứ 4: setCursorDemo() Hình 31: LCD 16x2 Chương trình hướng dẫn câu lệnh dịch chuyển vị trí trỏ theo ý muốn, câu lệnh cần quan tâm là: lcd.setCursor(5,0); lcd.print("5,0"); Dịch trỏ đến cột thứ hàng thứ Sau xuất hình LCD “5,0” từ cột thứ hàng trở lcd.setCursor(10,1); // thiet lap tro cot 10 hang thu lcd.print("10,1"); Dịch trỏ đến vị trí cột 10 hàng thứ Xuất hình "10,1" Tương tự đối vơi câu lệnh cuối : lcd.setCursor(3,1); // thiet lap tro o vi tri cot hang lcd.print("3,1"); HỌC VIỆN HÀNG KHÔNG SV: NGUYỄN TRUNG TÍN 42 Chương trình thứ 5: scrollLeftDemo() Chương trình dịch ký tự hiển thị hình sang bên trái Các câu lệnh chương trình khơng khó, quan tâm tới câu lệnh sau: for(int x=0; x0) char setupled = Serial.read();} switch(setupled) { case '1' : { digitalWrite(ledpin,HIGH); break; } case '0': { digitalWrite(ledpin,LOW); break; }}} HỌC VIỆN HÀNG KHÔNG SV: NGUYỄN TRUNG TÍN 47 Giải thích chương trình: Để điều khiển led bật tắt cần mở Serial monitor cách nhấp vào biểu tượng : Hình 35: Serial Monitor Trong chương trình ta cần ý tới câu lệnh sau: Serial.begin(9600); Câu lệnh thiết lập tốc độ truyền liệu 9600 bps Chúng ta thiết lập tốc độ khác 300, 1200, 2400, 4600, 9600, 19200, 57600, 115200 Cần lưu ý để tốc độ truyền máy tính thiết bị phải giồng nhau, nêu khơng liệu nhận bị lỗi Trong vịng lặp loop() có câu lệnh: Serial.available()>0 Câu lệnh dùng để kiểm tra xem có liệu truyền tới hay khơng Ngồi Serial.available() cịn trả cho số ký tự truyền tới Arduino HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN 48 char setupled = Serial.read(); Khi liệu truyền tới Arduino liệu lưu vào nhớ đệm Chúng ta khai báo biến setupled với kiểu liệu char dùng hàm Serial.read() để truy suất liệu nhớ đệm lưu vào Như ký tự chuỗi ký tự truyền tới gán vào setupled Dùng hàm Switch-case để kiểm tra, “1” sáng led, “0” tắt led, trường hợp cịn lại khơng làm 9) Project Đo nhiệt độ môi trường dùng LM35D hiển thị LCD Serial Monitor Sơ đồ mạch Hình 36: giao tiếp với LM35, LCD Serial monitor Code chương trình: #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // dinh nghia chan cho LCD int maxC=0, minC=100, maxF=0, minF=212; HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN 49 int scale = 1; int buttonPin=8; //chan ket noi voi phim nhan void setup() { lcd.begin(16, 2); // khai bao su dung lcd 16x2 analogReference(INTERNAL);// khai bao dien ap tham chieu cho lm35 Serial.begin(9600); pinMode(buttonPin, INPUT); lcd.clear(); } void loop() { lcd.setCursor(0,0); int sensor = analogRead(0); // doc du lieu tu lm35 int buttonState = digitalRead(buttonPin); if (buttonState==1) { scale=-scale; lcd.clear(); } switch (scale) { case 1: celsius(sensor); break; case -1: fahrenheit(sensor);} delay(250); } void celsius(int sensor) { lcd.setCursor(0,0); HỌC VIỆN HÀNG KHƠNG SV: NGUYỄN TRUNG TÍN 50 int temp = sensor* 0.1074188; Serial.print("Nhiet moi truong :"); Serial.print(temp); Serial.println(" C"); lcd.print(temp); lcd.write(B11011111); // “ 0” lcd.print("C "); if (temp>maxC) {maxC=temp;} if (tempmaxF) {maxF=temp;} if (temp