1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Cài đặt báo thức riêng sử dụng Arduino

34 168 0

Đ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 34
Dung lượng 1,27 MB

Nội dung

Bài làm hoàn chỉnh về đề tài làm đèn LED sáng nháy theo nhạc mong giúp đỡ được mọi người trong quá trình học tập cũng như công việc. Trong bài đã có sẵn mô phỏng cũng như hình ảnh chụp mạch thực. Cảm ơn mọi người đã tham khảo... Thank

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 , 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ữ lập trình Java lại vô dễ sử dụ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ý nên Arduino dần phổ biến phát triển ngày mạnh mẽ toàn giới Trên sở kiến thức học môn học: Tin học đại cương , Điện tử tương tự số…cùng với hiểu biết, em định thực đề tài:Cài đặt báo thức Đề tài gồm nội dung sau: Chương TỔNG QUÁT VỀ BOARD MẠCH ARDUINO THIẾT CẤU TRÚC VÀ THÀNH PHẦN HỆMẠCH THỐNG ĐIỀUTẾ KHIỂN Chương KẾ, LẬP TRÌNH, LẮP ĐẶT THỰC Mục lục CHƯƠNG 1: TỔNG QUÁT VỀ BOARD MẠCH ARDUINO 1.1 GIỚI THIỆU CHUNG VỀ ARDUINO Arduino tảng mã nguồn mở sử dụng để xây dựng dự án điện tử Arduino bao gồm bảng mạch lập trình (thường gọi vi điều khiển) phần mềm IDE (Mơi trường phát triển tích hợp) chạy máy tính, sử dụng để viết tải mã máy tính lên bo mạch Nền tảng Arduino phổ biến với người bắt đầu với thiết bị điện tử Không giống hầu hết bo mạch lập trình trước đây, Arduino khơng cần phần cứng riêng để tải mã lên bo mạch - bạn cần sử dụng cáp USB Ngồi ra, Arduino IDE sử dụng phiên đơn giản C++, giúp việc học lập trình dễ dàng Arduino cung cấp mẫu chuẩn giúp dễ tiếp cận chức vi điều khiển Arduino Uno Uno lựa chọn tuyệt vời bạn làm quen với arduino Nó có thứ cần thiết để bạn bắt đầu Nó có 14 chân đầu vào / đầu digital (trong chân sử dụng làm đầu PWM), đầu vào analog, kết nối USB, giắc cắm nguồn, nút reset nhiều thứ khác Nó chứa thứ cần thiết để hỗ trợ vi điều khiển; cần kết nối với máy tính cáp USB cấp điện cho chuyển đổi dòng xoay chiều thành dòng chiều pin Cấu trúc Arduino UNO Hình 1.1: Arduino UNO Nguồn (USB / Đầu cắm nguồn cái) Mỗi bo mạch Arduino có cách nối nguồn Arduino UNO cấp nguồn từ cáp USB đầu cắm nguồn Trong hình trên, cổng USB đánh số (1) đầu cắm nguồn đánh số (2) Cổng USB hỗ trợ tải mã lên bo mạch Arduino LƯU Ý: KHÔNG sử dụng nguồn điện lớn 20 Vơn làm hư Arduino Điện áp thích hợp cho hầu hết mơ hình Arduino từ đến 12 Vôn Chân (5V, 3.3V, GND, Analog, Kỹ thuật số, PWM, AREF) Các chân Arduino chỗ nối dây để xây dựng mạch (để liên kết bo mạch với dây thường có đầu cắm nhựa đen để bạn cắm dây vào bo mạch) Arduino có nhiều loại chân khác nhau, loại ghi bo mạch sử dụng cho chức khác GND (3): Viết tắt ‘Ground’ Có số chân GND Arduino, sử dụng chân để nối đất cho mạch 5V (4) & 3.3V (5): Chân 5V cấp nguồn vôn, chân 3.3V cấp nguồn 3,3 vôn Hầu hết linh kiện đơn giản sử dụng với Arduino chạy ổn định 3,3 vôn Analog (6): Khu vực chân có ký hiệu 'Analog In' (A0 đến A5 UNO) chân nhận tín hiệu đầu vào Các chân đọc tín hiệu từ cảm biến tương tự (như cảm biến nhiệt độ) chuyển đổi thành giá trị số mà đọc Digital (7): Qua khu vực chân analog tới chân digital (0 đến 13 UNO) Các chân sử dụng cho đầu vào digital (ví dụ cho biết nút nhấn) đầu digital (như cấp lượng cho đèn LED) PWM (8): Bạn thấy dấu ngã (~) bên cạnh số chân số (3, 5, 6, 9, 10 11 UNO) Các chân hoạt động chân digital thông thường, ngồi sử dụng cho điều chế độ rộng xung (PWM) AREF (9): Là viết tắt tham chiếu analog Chân thường sử dụng Thỉnh thoảng dùng để thiết lập điện áp tham chiếu bên ngồi (giữa Vơn) làm giới hạn cho chân analog đầu vào Nút reset Cũng giống Nintendo gốc, Arduino có nút reset (10) Nếu nhấn nút tạm thời kết nối chân reset với đất khởi động lại mã nạp Arduino Nó hữu dụng mã bạn không lặp lại bạn muốn kiểm tra nhiều lần Đèn LED báo nguồn Ngay bên bên phải từ “UNO” bảng mạch có đèn LED nhỏ bên cạnh chữ ‘ON’ (11) Đèn LED sáng lên cắm Arduino vào nguồn điện Đèn LED RX TX TX viết tắt truyền, RX viết tắt nhận Những ký hiệu xuất nhiều thiết bị điện tử để chân chịu trách nhiệm giao tiếp nối tiếp Trong trường hợp bo mạch trên, có hai vị trí UNO Arduino nơi TX RX xuất - vị trí thứ chỗ chân số 1, vị trí thứ hai bên cạnh đèn LED báo TX RX (12) Những đèn LED cung cấp dẫn trực quan Arduino nhận truyền liệu Mạch tích hợp - IC IC hay mạch tích hợp (13) có màu đen với chân kim loại Bạn xem não Arduino IC Arduino bo mạch khác có khác nhau, thường dòng IC ATmega từ cơng ty ATMEL Điều quan trọng, bạn cần phải biết loại IC (cùng với loại bo mạch) trước tải lên chương trình Thơng tin thường viết phía IC Nếu bạn muốn biết thêm khác biệt IC khác đọc datasheet Điều chỉnh điện áp Bộ điều chỉnh điện áp (14) thứ bạn khơng có tương tác với Arduino Nhưng điều chỉnh lượng điện áp đưa vào bo mạch Arduino Giống người gác cổng, xử lý điện áp phụ gây hại cho mạch Tất nhiên, có giới hạn nó, đó, khơng cấp điện cho Arduino lớn 20 vơn Sơ đồ ngun lý theo hình 1.2 Hình 1.2: Sơ đồ nguyên lý board Arduino UNO Bảng 1.3:Các kiểu liệu Loại liệu Tên kiểu Số ô nhớ Miền giá trị Chức Kiểu logic 1byte Biểu thị trạng Bit thái đóng hay mở mạch điện, thể số tự nhiên hệ Ký tự Char nhị phân -128 127, lưu Biểu diễn kí 1byte kí tự Kiểu nguyên Integer Kiểu thực Real tự thông qua 2byte bảng mã ASCII -32768 32767 Biểu diễn số byte nguyên ±[2,9×10−39 1, Biểu diễn số 7×1038] thực Ứng dụng arduino: Phần cứng phần mềm Arduino thiết kế cho nghệ sĩ, nhà thiết kế, hacker quan tâm đến việc tạo đối tượng môi trường tương tác Arduino tương tác với nút, đèn LED, động cơ, loa, đơn vị GPS, máy ảnh, internet chí điện thoại thơng minh TV Sự linh hoạt cộng với với phần mềm Arduino miễn phí, bo mạch phần cứng rẻ phần mềm, phần cứng dễ học, nên có cộng đồng người dùng lớn đóng góp mã hướng dẫn cho lượng lớn project dựa Arduino CHƯƠNG 2: CẤU TRÚC VÀ THÀNH PHẦN HỆ THỐNG ĐIỀU KHIỂN 2.1 THÀNH PHẦN CẤU TẠO CỦA HỆ THỐNG 2.2.1 LCD Các LCD Bàn phím hình 2.1 phát triển cho tương thích với board Arduino, để cung cấp giao diện người dùng thân thiện cho phép ngời dùng kiểm tra thông số, thực lựa chọn vv… Nó bao gồm 1602 ký tự trắng đèn màu xanh LCD Bàn phím bao gồm phím -, xuống chọn, lên, phải bỏ Để lưu chân IO kỹ thuật số, giao diện bàn phím sử dụng kênh ADC Giá trị quan trọng đọc thông qua điện áp chia giai đoạn Hình 2.1: LCD Bắt đầu MH_CHÍNH false Keypad select Keypad lef true HT_TG_CÀI CÀI_GIỜ false Keypad select true TIME OUT CÀI PHÚT Keypad select false true TG_CÀI_ON SET=false TIME MET SET=true Khởi động động Kết thúc Hình 3.4 : Lưu đồ thuật tốn sơ đồ hệ thống 3.4.2 TỔNG THẾ MẠCH ĐÃ CẤP NGUỒN VÀ NẠP CODE a) Code hệ thống #include #include #include #include #include RTC_DS3231 rtc; const int rs = 12, en = 11, d4 = 6, d5 = 5, d6 = 4, d7 = 3; LCD LiquidCrystal lcd(rs, en, d4, d5, d6, d7); int buzz = 13; int addr=17; const int buttonNUT2 = 9; const int buttonNUT3 = 8; const int buttonNUT1 = A0; const int buttonNUT4 = 7; // cài chân cho nút ấn int val2 = 0; int val3=0; int pushVal; int bS1 = 0; // trạng thái nút ấn int lBS1 = 0; //trạng thái trước nút ấn // chân cắm int bS2 = 0; // trạng thái nút ấn int lBS2 = 0; int bS3 = 0; // trạng thái nút ấn int lBS3 = 0; int bS4 = 0; // trạng thái nút int lBS4 = 0; // chân cắm int nowHr, nowMin, nowSec; void gwsMessege(){ // in dòng chữ lcd.clear(); lcd.setCursor(0, 0); lcd.print("Stay Healthy :)"); // vui lên lcd.setCursor(0, 1); lcd.print("Get Well Soon :)");// ước } void helpScreen() { // hiển thị hình thứ lcd.clear(); lcd.setCursor(0, 0); lcd.print("Press Buttons"); lcd.setCursor(0, 1); lcd.print("for Reminder !"); } void timeScreen() { // hiển thị thời gian hình DateTime now = rtc.now(); // lấy thời gian từ RTC đưa hình LCD lcd.clear(); lcd.setCursor(0, 0); lcd.print("Time:"); lcd.setCursor(6, 0); lcd.print(nowHr = now.hour(), DEC); lcd.print(":"); lcd.print(nowMin = now.minute(), DEC); lcd.print(":"); lcd.print(nowSec = now.second(), DEC); lcd.setCursor(0, 1); lcd.print("Date: "); lcd.print(now.day(), DEC); lcd.print("/"); lcd.print(now.month(), DEC); lcd.print("/"); lcd.print(now.year(), DEC); delay(500); } void setup() { Wire.begin(); rtc.adjust(DateTime(F( DATE ), F( TIME ))); // uncomment this to set the current time and then comment in next upload when u set the time //rtc.adjust(DateTime(2019, 12, 25, 20, 04, 30)); // cài thời gian tay lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Welcome To Our"); // hiển thị giá trị đầu hìnhLCD lcd.setCursor(0, 1); lcd.print("Medicine Reminder"); delay(1000); gwsMessege(); delay(3000); helpScreen(); delay(2000); timeScreen(); delay(3000); lcd.clear(); pinMode(buttonNUT1, INPUT); pinMode(buttonNUT2, INPUT); pinMode(buttonNUT3, INPUT); pinMode(buttonNUT4, INPUT); pinMode(buzz, OUTPUT); Serial.begin(9600); } void ValSet(){ Serial.println(EEPROM.read(addr)); val2 = EEPROM.read(addr); // đọc giá trị vừa lưu nút ấn trái sang switch (val2) { case 1: lcd.clear(); lcd.setCursor(0, 0); lcd.print("Reminder set "); lcd.setCursor(0, 1); lcd.print("for Once/day !"); pushVal = 1; delay(500); break; case 2: lcd.clear(); lcd.setCursor(0, 0); lcd.print("Reminder set "); lcd.setCursor(0, 1); lcd.print("for Twice/day !"); pushVal = 2; delay(500); break; case 3: lcd.clear(); lcd.setCursor(0, 0); lcd.print("Reminder set "); lcd.setCursor(0, 1); lcd.print("for Thrice/day !"); pushVal = 3; delay(500); break; } } // vòng lặp liên tục kiểm tra xem nút nhấn chưa // có, đếm tăng lên, sau số hành động thực void loop() { //cài đặt ba lần / ngày // đọc trạng thái nút ấn bS1 = digitalRead(buttonNUT1); bS2 = digitalRead(buttonNUT2); bS3 = digitalRead(buttonNUT3); bS4 = digitalRead(buttonNUT4); // kiểm tr lại xem có khác so với tín hiệu đặt lần trước if (bS2 != lBS2) { // nút vừa nhấn vừa thả if (bS2 == HIGH) { //nút ấn nhấn Serial.println("n02"); EEPROM.write(17,1); push1(); delay(1000); } } lBS2 = bS2; if (bS3 != lBS3) { // nút vừa nhấn vừa thả if (bS3 == HIGH) { // nút ấn nhấn Serial.println("no3"); EEPROM.write(17,2); push2(); delay(1000); } } lBS3 = bS3; if (bS4 != lBS4) { // nút vừa nhấn vừa thả if (bS4 == HIGH) { // nút ấn nhấn Serial.println("no4"); EEPROM.write(17,3); push3(); delay(1000); } } lBS4 = bS4; if (bS1 != lBS1) { // nút vừa nhấn vừa thả if (bS1 == HIGH) { val3=EEPROM.read(addr); EEPROM.write(17,0); digitalWrite(buzz, LOW); pinstop(); EEPROM.write(17,val3); } } lBS1 = bS1; timeScreen(); ValSet(); } void push1() { // đặt lời nhắc lần / ngày //lưu trạng thái nút ấn-1 lcd.clear(); lcd.setCursor(0, 0); lcd.print("Reminder set "); lcd.setCursor(0, 1); lcd.print("for Once/day !"); delay(1200); lcd.clear(); } void push2() { //đặt lời nhắc hai lần / ngày lcd.clear(); lcd.setCursor(0, 0); lcd.print("Reminder set "); lcd.setCursor(0, 1); lcd.print("for Twice/day !"); delay(1200); lcd.clear(); } void push3() { //đặt lời nhắc ba lần / ngày lcd.clear(); lcd.setCursor(0, 0); lcd.print("Reminder set "); lcd.setCursor(0, 1); lcd.print("for Thrice/day !"); delay(1200); lcd.clear(); } void pinstop(){ lcd.clear(); lcd.setCursor(0, 0); //khi nhấn nút dừng tín hiệu ngắt lcd.print("Take Medicine "); lcd.setCursor(0, 1); lcd.print("with Warm Water"); delay(5000); lcd.clear(); } b) Hình ảnh hệ thống nạp Code Hình 3.5 : Hình ảnh mạch sau nạp code cấp nguồn KẾT LUẬN Qua thời gian làm đồ án tốt nghiệp với nội dung: Cài đặt báo thức nhóm em thiết kế xây dựng hệ thống bao gồm: -Thiết kế mảng thời gian thực bám sát thời gian thực tế đưa cho người dùng thông tin thời gian, nhờ tạo mảng thời gian điều khiển động tưới tự động -Thiét kế LCD hiển thị đưa thông tin LCD đưa thông tin cho ngư ời sử dụng thông tin để đặt thời gian điều khiển hệ thống Trong trình viết code gặp phải nhiều lỗi phát sinh mà khơng tìm nguyên nhân cần đầu tư thời gian để giải quyết, nhiều linh kiện khó để tìm thư viện chuẩn để lập trình… Quá trình lắp mạch gặp phải khó khăn định nhiên em cố gắng giải vấn đề phát sinh để hồn thành đề tài Do thời gian có hạn việc thiết kế hệ thống em nhiều sai sót Hệ thống chưa tối ưu, việc điều khiển từ xa lấy phát thông tin chưa thành cơng Phát triển liệu máy tính chưa phát huy hết tính tốt Em mong ủng hộ giúp đỡ thầy giáo để đề tài chúng em thực hồn thiện có thêm nhiều cải tiến đáng kể ứng dụng tốt vào thực tiễn TÀI LIỆU THAM KHẢO Massimo Banzi (2009), Getting Started with Arduino, O’Reilly Media Michael Margollis and Nicholas Weldin (2009), Arduino Cookbook, O’Reilly Media GS Phạm Văn Ất (2009), Kĩ thuật lập trình C sở nâng cao, Nhà xuất Giao thông vân tải http://learning.grobotronics.com/2014/09/arduino-lesson-14-dc-motorl293/ http://www.adafruit.com/ http://arduino.vn/ http://arduino.cc/ ... mạch - bạn cần sử dụng cáp USB Ngoài ra, Arduino IDE sử dụng phiên đơn giản C++, giúp việc học lập trình dễ dàng Arduino cung cấp mẫu chuẩn giúp dễ tiếp cận chức vi điều khiển Arduino Uno Uno...Mục lục CHƯƠNG 1: TỔNG QUÁT VỀ BOARD MẠCH ARDUINO 1.1 GIỚI THIỆU CHUNG VỀ ARDUINO Arduino tảng mã nguồn mở sử dụng để xây dựng dự án điện tử Arduino bao gồm bảng mạch lập trình (thường gọi... mạch Arduino LƯU Ý: KHÔNG sử dụng nguồn điện lớn 20 Vôn làm hư Arduino Điện áp thích hợp cho hầu hết mơ hình Arduino từ đến 12 Vơn Chân (5V, 3.3V, GND, Analog, Kỹ thuật số, PWM, AREF) Các chân Arduino

Ngày đăng: 30/04/2020, 10:03

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w