Thiết kế hệ thống điều khiển các thiết bị điện từ xa bằng điện thoại android thông qua sóng bluetooth

68 369 0
Thiết kế hệ thống điều khiển các thiết bị điện từ xa bằng điện thoại android thông qua sóng bluetooth

Đ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

VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ ĐIỆN TỬ - THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN CÁC THIẾT BỊ ĐIỆN TỪ XA BẰNG ĐIỆN THOẠI ANDROID THÔNG QUA SĨNG BLETOOTH Giảng viên hướng dẫn : TS NGUYỄN HỒI GIANG Sinh viên thực : DƯƠNG TUẤN ANH Lớp : K16B Khố : 2013-2017 Hệ : ĐẠI HỌC CHÍNH QUY Hà Nội, tháng /2017 VIỆN ĐẠI HỌC MỞ HÀ NỘI CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CN ĐIỆN TỬ - THÔNG TIN Độc lập - Tự – Hạnh phúc ĐỒ AN TỐT NGHIỆP ĐẠI HỌC Họ tên sinh viên: Dương Tuấn Anh Lớp: k16B Khố:16… (2013-2017) Ngành đào tạo: Cơng nghệ Kỹ thuật điện tử - Truyền thông Hệ đào tạo: ĐHCQ 1/ Tên đồ án: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN CÁC THIẾT BỊ ĐIỆN TỪ XA BẰNG ĐIỆN THOẠI ANDROID THÔNG QUA SĨNG BLETOOTH …………….……… ……….………………………………………………………………… 2/ Nội dung chính: 1/ Tổng quan Arduino 2/ Xây dựng hệ thống 3/ Thiết kế mạch nguyên lý sản phẩm 3/ Ngày giao : 4/ Ngày nộp: TRƯỞNG KHOA GIẢNG VIÊN HƯỚNG DẪN (Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên) TS Nguyễn Hoài Giang GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh MỤC LỤC LỜI NÓI ĐẦU DANH MỤC HÌNH VẼ DANH MỤC BẢNG BIỂU DANH MỤC TỪ VIẾT TẮT CHƯƠNG 1: TỔNG QUAN VỀ ARDUINO 10 1.1 Lịch sử phát triển dòng sản phẩm Arduino 10 1.1.1 Dòng Arduino (2005) 10 1.1.2 Arduino USB (2005) 12 1.1.3 Arduino Extreme (2006) 12 1.1.4 Arduino NG (Nuova Generazione) (2006) 13 1.1.5 Arduino Diecimila (2007) 13 1.1.6 Arduino Duemilanove (2008 - 2009) 15 1.1.7 Arduino UNO (2010) 15 1.1.8 Những board Arduino Mega (2009 - 2011) 16 1.1.9 Arduino DUE (2012) 19 1.1.10 Những dòng Arduino khác 20 1.2 Ứng dụng Arduino 21 CHƯƠNG 2: XÂY DỰNG HỆ THỐNG 25 2.1 Giới thiệu hệ thống 25 2.1.1 Ý tưởng thiết kế 25 2.1.2 Yêu cầu thiết kế 25 2.1.3 Sơ đồ khối nhiệm vụ khối 25 2.2 Giới thiệu hệ thống 27 2.2.1 Khối nguồn 27 2.2.2 Khối Modul Bluetooth HC05 Công nghệ truyền dẫn không dây Bluetooth 27 2.2.3 Arduino Uno R3 35 2.2.4 Khối Relay nút nhấn 39 GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh CHƯƠNG 3: THIẾT KẾ MẠCH NGUYÊN LÝ VÀ SẢN PHẨM 42 3.1 Nguyên lý hoạt động 42 3.2 Nguyên lý hoạt động chung 44 3.3 Thiết kế smartphone 47 3.3.1 Sơ đồ thuật toán 47 3.3.2 Giới thiệu chương trình App Inventor2 48 3.3.3 Phần mềm ArduinoControl 48 3.3.4 Mã nguồn ứng dụng Arduino Control 49 3.4 Thiết kế chương trình vi điều khiển 53 3.4.1 Lưu đồ thuật toán 54 3.4.2 Giới thiệu chương trình Arduino IDE 54 3.5 Mạch in 59 3.6 Sản phẩm thực tế 60 PHỤ LỤC 62 KẾT LUẬN CHUNG 66 TÀI LIỆU THAM KHẢO 67 GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh LỜI NĨI ĐẦU Ngày khoa học cơng nghệ ngày phát triển, vi điều khiển AVR vi điều khiển PIC ngày thơng dụng hồn thiện hơn, nói xuất Arduino vào năm 2005 Italia mở hướng cho vi điều khiển Sự xuất Arduino hỗ trợ cho người nhiều lập trình thiết kế, người bắt đầu tìm tòi vi điều khiển mà khơng có q nhiều kiến thức, hiểu biết sâu sắc vật lý điện tử Phần cứng thiết bị tích hợp nhiều chức mã nguồn mở Ngơn ngữtương thích với ngôn ngữ C hệ thư viện phong phú chia sẻ miễn phí Chính lý mà Arduino dần phổ biến phát triển mạch mẽ cộng đồng điện tử nước Trên sở lý thuyết học mơn: Lập trình C bản, vi xử lí, vi điều khiển, em định thực đề tài: Thiết kế hệ thống điều khiển thiết bị điện từ xa điện thoại Arduino qua sóng bletooth Do kiến thức hạn hẹp lần đầu tiếp xúc với Arduino nên không tránh khỏi sai sót, hạn chế Vì em mong có góp ý từ thầy, để hồn thiện đề tài Em xin chân thành cảm ơn TS Nguyễn Hoài Giang giúp đỡem nhiều trình tìm hiểu, thiết kế hoàn thành đề tài Trân trọng! Sinh viên thực Dương Tuấn Anh GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh DANH MỤC HÌNH VẼ Hình 1.1 Arduino Serial 11 Hình 1.2 Modul PCB thủ cơng Severino (ak S3V3) 11 Hình 1.3 Mạch Arduino USB v2.0 12 Hình 1.4 Arduino Extreme version 1&2 13 Hình 1.5 phiên Arduino NG+ 13 Hình 1.6 Arduino Diecimila 14 Hình 1.7 Arduino Duemilanove 15 Hình 1.8 Arduino Uno R3 15 Hình 1.9 Dòng Arduino Leonardo Arduino Ethernet 16 Hình 1.10 Dòng Arduino Micro Arduino Yún 16 Hình 1.11 Board Arduino Mega 17 Hình 1.12 Board Arduino Mega 18 Hình 1.13 Arduino MeGA ADK 18 Hình 1.14 Arduino Due 20 Hình 1.15 Các dòng sản phầm Arduno từ 2005 - 2013 21 Hình 1.16 Máy in 3D sử dụng Arduino 22 Hình 1.17 Một số robot DIY sử dụng Arduino 23 Hình 1.18 UAV sử dụng Arduino 23 Hình 1.19 Minh họa cho ứng dụng điều khiển thiết bị từ xa 24 Hình 2.1 Sơ đồ khối hệ thống 25 Hình 2.2 Sơ đồ mạch nguồn 27 Hình 2.3 Khả kết nối thiết bị qua Bluetooth 29 Hình 2.4 Modul HC-05 31 Hình 2.5 Sơ đồ chân HC-05 32 Hình 2.6 Sơ đồ ngun lí modul Blutooth HC-05 33 Hình 2.7 Sơ đồ kết nối HC-05 với Arduino 34 Hình 2.8 Sơ đồ chân chức chân chip Atmega 328 35 Hình 2.9 Hình ảnh thực tế board Arduino 36 GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh Hình 2.10 Tham khảo thêm số chức chân Arduino 37 Hình 2.11 Relay 5V/ 10A 40 Hình 2.12 Công tắc MTS-103 40 Hình 2.13 Sơ đồ kết nối Relay công tắc cực 40 Hình 2.14 Mosfet IRF 540 41 Hình 2.15 Sơ đồ điều khiển thiết bị 12 VDC 41 Hình 3.1 Sơ đồ nguyên lý tổng quát 42 Hình 3.2 Giao diện ứng dụng Arduino Control 45 Hình 3.3 Cài đặt thời gian cho chế độ hẹn 46 Hình 3.4 Các trượt điều khiển độ rộng xung dương 46 Hình 3.5 Sơ đồ thuật toán App Arduino Control 47 Hình 3.6 Khởi tạo chương trình lập trình ứng dụng cho smartphone 49 Hình 3.7 Giao diện thẻ chọn Designer 50 Hình 3.8 Xây dựng chương trình ghép nối Bluetooth 51 Hình 3.9 Chương trình cho nút nhấn 52 Hình 3.10 Chương trình cho trượt 52 Hình 11 Lưu đồ thuật toán điều khiển thiết bị Arduino 53 Hình 3.12 Giao diện Arduino IDE 54 Hình 3.14 Hình ảnh thực tế sản phẩm 61 Hình 3.13 Hình ảnh mạch in lớp Botton 59 GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh DANH MỤC BẢNG BIỂU Bảng 2.1 Chức chân modul HC-05 32 Bảng 2.2 Thông số Arduino Uno R3 38 Bảng Các hàm thư viện Serial 59 Bảng Các câu lệnh 56 GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh DANH MỤC TỪ VIẾT TẮT Từ viết tắt CAD CNC DIY EEPRO M Tiếng Anh Tiếng Việt Phần mền tạo hình bề mặt hình Computer Aided Draft khối 3D Computer Numerical Hệ thống máy tiện khí Control điều khiển máy tính Sản phẩm tự chế tác cá Do It Yourself nhân Electrically Erasable Bộ nhớ không liệu Programmable Read ngừng cung cấp điện Only Memory PWM Pulse Width Modulation REPR Replicating Rapid- AP Phương pháp điều độ rộng xung vuông Máy tạo mẫu nhanh (máy in 3D) prototype RISC RF SRAM Reduced Instructions Set Máy tính với tập lệnh đơn giản Computer hóa Dải tần số nằm khoảng Radio frequency kHz tới 300 GHz Static Random Bộ nhớ truy xuất ngẫu nhiên tĩnh Access Memory Mạch tích hợp sử dụng UART Universal Asynchronous việc truyền dẫn liệu nối tiếp Receiver Transmitter máy tính thiết bị ngoại vi UAV UHF Unmanned Aerial Vehicle Ultra-High Frequency GVHD: TS Nguyễn Hoài Giang Thiết bị bay không người lái Dải tần số vô tuyến nằm SV: Dương Tuấn Anh khoảng 300 MHz tới GHz (3,000 MHz) ISM Băng tần miễn phí cho ứng Industrial Scientific dụng khơng dây Medical GVHD: TS Nguyễn Hoài Giang SV: Dương Tuấn Anh ĐỒ ÁN TỐT NGHIỆP 3.4 Thiết kế chương trình vi điều khiển Hình 11 Lưu đồ thuật tốn điều khiển thiết bị Arduino ĐỒ ÁN TỐT NGHIỆP 3.4.1 Lưu đồ thuật tốn Giải thích lưu đồ hình 3.11: Thiết lập thông số ban đầu, cài đặt tốc độ baud 9600 Phần mềm gửi ba kí tự liên tục ứng với ba giá trị điều khiển có chương trình là: o Command: Biến hủy để chương trình thực hàm bật tắt bóng đèn hay thay đổi độ sáng tối bóng đèn o pin_num: Số thứ tự chân đầu Arduino o pin_value: Đối với giá trị digital ứng với hai giá trị HIGH LOW Còn chân Analog ứng với mảng giá trị từ đển 255 Dựa vào giá trị biến Command mà ta tiến hành thực hàm “Điều khiển bật tắt đèn” hay “Điều chỉnh độ sáng tối đèn” 3.4.2 Giới thiệu chương trình Arduino IDE Arduino IDE tảng mã nguồn mở sử dụng để xây dựng ứng dụng điện tử Arduino gồm có board mạch lập trình ( thường gọi vi điều khiển ) phần mềm hỗ trợ phát triển tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code nạp chương cho board Arduino Hình 3.12 Giao diện Arduino IDE ĐỒ ÁN TỐT NGHIỆP Để lập trình cho Arduino ta cần tìm hiểu cấu trúc thân chương trình, từ khóa chức chúng Phần khai biến Đầu chương trình phần khai báo kiểu biến, tên biến, định nghĩa chân board số kiểu khai báo biến thông dụng: “#define” Nghĩa từ define định nghĩa, hàm #define có tác dụng định nghĩa, hay gọi gán, tức gán chân, ngõ với tên nhằm giúp phân biệt cách tường minh Ví dụ: # define led 13 tức định nghĩa pin số 13 vi điều khiển led Khai báo kiểu biến khác như: int (kiểu số nguyên), long, float, char, v.v Chú ý: Sau # define khơng có dấu “;” Phần thiết lập Phần viết “void setup(){}” dùng để thiết lập cho chương trình, cấu trúc nó: void setup() { … } Phần void setup() dùng để thiết lập tốc độ truyền liệu, kiểu chân chân hay chân vào Trong đó: o Serial.begin(9600): Dùng để truyền liệu từ board Arduino lên máy tính Tốc độ Pau 9600 o pinMode(biến,- kiểu vào ra); Dùng để xác định kiểu chân vào hay Chú ý: Phần pinMode( ) viết ngồi hàm void setup( ) mà chương trình hiểu biên dịch bình thường Trong Arduino IDE từ khóa có phân biệt chữ hoa chữ thường Vòng lặp Loop() Dùng để viết lệnh chương trình để mạch Arduino thực nhiệm vụ mà lập trình viên mong muốn, thường bắt đầu bằng: void loop() GVHD: TS Nguyễn Hoài Giang 55 SV: Dương Tuấn Anh ĐỒ ÁN TỐT NGHIỆP { // chương trình } o Một số câu lệnh thường gặp: Ký hiệu, câu Ý nghĩa lệnh Dấu // dùng để giải thích, nội dung giải thích nằm // dòng, biên dịch chương trình bỏ qua phần này, không kiểm tra /* */ #define biến chân Ký hiệu dùng để giải thích, giải thích dành cho đoạn, tức xuống dòng Define nghĩa định nghĩa Câu lệnh nhằm gán tên biến vào chân Ví dụ: #define led 13 Dùng để tắt, mở chân Cú pháp digitalWrite digitalWrite (chân,trạng thái chân); Ở trạng thái chân HIGH (chân, trạng LOW thái); Ví dụ: digital(led,HIGH); hoặc: digital(led,LOW); analogWrite (chân, giá trị); digitalRead(châ n); analogRead(châ n); delay(thời gian); Dùng để băm xung (PWM), thường dùng để điều khiển tốc độ động cơ, độ sáng led Dùng để đọc giá trị digital chân muốn đọc Dùng để đọc giá trị analog chân muốn đọc Lệnh dùng để trì trạng thái thực chờ thời gian Thời gian tính mili giây Bảng Các câu lệnh GVHD: TS Nguyễn Hoài Giang 56 SV: Dương Tuấn Anh ĐỒ ÁN TỐT NGHIỆP Ngồi Arduino IDE hỗ trợ cho lập trình nhiều thư viện nhằm đa dạng hóa nguồn liệu giúp người dùng xây dựng chương trình nhanh chóng dễ dàng Trong thư viện Serial dùng việc giao tiếp board mạch Arduino với (hoặc Arduino với máy tính, hay Ardino với module HC-05 ) Tất mạch Arduino có cổng Serial (hay gọi UART USART) Giao tiếp Serial thực qua hai cổng digital pin (RX) pin (TX) qua cổng USB tới máy tính Vì vậy, sử dụng thư viện Serial pin pin khơng thể thể đóng vai tro chân digital Dưới cách sử dụng hàm thủ tục thường dùng thư viện Serial, cú pháp Serial. o Từ khóa thư viện Serial Tham Tên hàm Giới thiệu Và thủ tục số Kiểu truyền liệu trả vào Trả số byte (ký tự) tối đa mà có available() thể đọc qua Serial Các liệu đến Không lưu vào nhớ đệm có Một số số byte (ký tự) ta đọc dung lượng 64KB Khởi động cổng Serial với tốc độ cho trước có Arduino Để giao tiếp với máy tính, ta phải begin(speed) dùng mức baud rate sau: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, Speed: Không (baud) - long 57600, 115200 Hàm có nhiệm vụ chờ đợi q flush() trình gửi thơng tin qua Serial kết thúc cho chạy tiếp tục Không Không chương trình GVHD: TS Nguyễn Hồi Giang 57 SV: Dương Tuấn Anh ĐỒ ÁN TỐT NGHIỆP if (Serial) Nó có nhiệm vụ cho biết cổng kết nối Serial sẵn sàng hay chưa Khơng True false Hàm có nhiệm vụ lấy giá trị số thực có nhớ đệm serial Nó bỏ qua ký tự dùng để biểu diễn parseFloat() số thực (ngoại trừ dấu trừ "-", dấu Không Float chấm ".", chữ "e" "E") Nó dừng đọc thấy ký tự đọc khơng phải ký tự biểu diễn số thực Hàm trả số nguyên lấy nhớ đệm parseInt() Serial Nó dừng trình tìm Int 1000 mili giây Nếu bị dừng giá trị Hàm xuất liệu cổng print(val) Serial dạng chuỗi người Số byte (sau đọc Hàm sử dụng nhiều dạng khác Bất kỳ Các chữ số số chuyển thành chuỗi) (nguyên thực) chuyển thành chuỗi xuất hình Giống hệt hàm Serial print (), println(val) gửi thêm dấu xuống dòng sau gửi ta u cầu GVHD: TS Nguyễn Hoài Giang 58 SV: Dương Tuấn Anh ĐỒ ÁN TỐT NGHIỆP Dùng đểể đọc đọ ký tự read() nhớ đệm c Serial Int: byte đầu Không tiên b nh nhớ đệm Bảng ng Các hàm thư viện Serial Khái quát lạii Arduino IDE m trình biên dịch tương đối dễ sử dụụng, Cú pháp ngôn ngữ phát triển dựaa nnền tảng ngôn ngữ C dễ dàng tiếp cận vớ ới đại đa số người sử dụng Nguồn thư viện vi hỗ trợ vô phong phú liên tục đư được mở rộng mà người lậpp trình th donwload cách thuận tiện trang chủ Arduino: https://www.arduino.cc 3.5 Mạch in Hình 3.13 Hình ảnh mạch in lớp Botton ĐỒ ÁN TỐT NGHIỆP 3.6 Sản phẩm thực tế ĐỒ ÁN TỐT NGHIỆP Hình 3.14 Hình ảnh thực tế sản phẩm ĐỒ ÁN TỐT NGHIỆP PHỤ LỤC Mã ngn chương trình #define CMD_DIGITALWRITE 10 #define CMD_ANALOGWRITE 11 #define PIN_HIGH #define PIN_LOW #define OFF_ALL 88 #define ON_ALL 44 void setup() { for( int i =2;i 0) { int command = Serial.parseInt(); if (command == 0) return; Serial.println(command); int pin_num = Serial.parseInt(); Serial.println(pin_num); int pin_value = Serial.parseInt(); Serial.println(pin_value); if (command == CMD_DIGITALWRITE) { if (pin_value == PIN_LOW) { pin_value = LOW; Serial.print(" "); GVHD: TS Nguyễn Hoài Giang 62 SV: Dương Tuấn Anh ĐỒ ÁN TỐT NGHIỆP Serial.println(pin_value); } if (pin_value == PIN_HIGH) { pin_value = HIGH; Serial.print(" "); Serial.println(pin_value); } set_digitalwrite( pin_num, pin_value); return; } if (command == CMD_ANALOGWRITE) { analogWrite( pin_num, pin_value ); return; } } } void set_digitalwrite(int pin_num, int pin_value) { switch (pin_num) { case 13: digitalWrite(13, pin_value); break; case 12: digitalWrite(12, pin_value); break; case 11: digitalWrite(11, pin_value); break; case 10: digitalWrite(10, pin_value); GVHD: TS Nguyễn Hoài Giang 63 SV: Dương Tuấn Anh ĐỒ ÁN TỐT NGHIỆP break; case 9: digitalWrite(9, pin_value); break; case 8: digitalWrite(8, pin_value); break; case 7: digitalWrite(7, pin_value); break; case 6: digitalWrite(6, pin_value); break; case 5: digitalWrite(5, pin_value); break; case 4: digitalWrite(4, pin_value); break; case 3: digitalWrite(3, pin_value); break; case 2: digitalWrite(2, pin_value); break; case OFF_ALL: for( int i =2;i

Ngày đăng: 22/03/2018, 19:39

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan