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

Phương pháp lập trình arduino

27 30 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

MỤC LỤC 1.1 Arduino là gì?..............................................................................................................................3 1.2 Phần cứng....................................................................................................................................3 1.3 Shield...........................................................................................................................................4 1.4 Phần mềm....................................................................................................................................5 1.5 Các loại bo mạch Arduino...........................................................................................................6 1.6 Arduino Uno R3..........................................................................................................................7 1.7 Cảm biến đo nhiệt độ, đô ẩm. ̣ ......................................................................................................8 1.8 Tổng quan về LCD......................................................................................................................9 1.8.1 Chức năng các chân...........................................................................................................10 1.8.2 Các tâp lê ̣ nh của LCD ̣ ........................................................................................................11 1.8.3 Giao tiếp với LCD.............................................................................................................12 1.8.4 Khởi tạo LCD....................................................................................................................13 1.9 Module giải mã cho LCD..........................................................................................................14 1.10 Modoule RTC............................................................................................................................15 2 Yêu cầu phần cứng............................................................................................................................16 2.1 Sơ đồ khối..................................................................................................................................16 2.2 Chức năng các khối....................................................................................................................16 2.2.1 Khối cảm biến....................................................................................................................16 2.2.2 Khối hiển thị......................................................................................................................16 2.2.3 Khối thời gian thực (RTC : Real Time Clock)...................................................................16 2.2.4 Board arduino Uno R3 (Hệ thống – Bộ xử lí trung tâm)....................................................17 3 Sản phẩm hoàn thiện.........................................................................................................................17 3.1 Hiển thị RTC.............................................................................................................................18 3.2 Hiển thì nhiệt độ, độ ẩm.............................................................................................................19 4 Code phần cứng.................................................................................................................................21 5 Mục tiêu phát triển............................................................................................................................26 6 Kết quả đạt được...............................................................................................................................27 7 Hạn chế và hướng phát triển.............................................................................................................27 2 1 Tổng quan về Arduino. 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ở (open-source). Tuy nhiên tại Việt Nam Arduino vẫn còn chưa được biết đến nhiều. Vậy Arduino là “cái” gì

LỜI CẢM ƠN Nhóm thực đề tài xin gửi lời cảm ơn đến quý Thầy, Cô Khoa Điện – Điện tử, đặc biệt quý Thầy, Cô môn Điện Tử Viễn Thông giảng dạy truyền đạt kiến thức chuyên ngành để giúp nhóm thời gian thực đề tài Đặc biệt nhóm xin gửi lời cảm ơn chân thành đến thầy Nguyễn Lê Nhật Viễn, người tận tình hướng dẫn, bảo, giúp đỡ mặt chuyên môn tạo điều kiện thuận lợi để nhóm thực hồn thành đề tài Nhóm thực đồ án gửi lời cảm ơn tới bạn lớp giúp đỡ, góp ý để nhóm thực hồn thành đề tài tốt thời hạn Trong trình thực đề tài tránh khỏi sai sót, kính mong q Thầy, Cơ góp ý dẫn thêm để nhóm thực tốt đề tài, đồ án Xin chân thành cảm ơn! Nhóm thực đề tài Võ Văn Huy Phạm Văn Huy Trần Quốc Vũ MỤC LỤC 1.1 Arduino gì? 1.2 Phần cứng 1.3 Shield 1.4 Phần mềm 1.5 Các loại bo mạch Arduino 1.6 Arduino Uno R3 1.7 Cảm biến đo nhiệt độ, đô ̣ ẩm .8 1.8 Tổng quan về LCD 1.8.1 Chức các chân 10 1.8.2 Các tâ ̣p lê ̣nh của LCD 11 1.8.3 Giao tiếp với LCD 12 1.8.4 Khởi tạo LCD 13 1.9 Module giải mã cho LCD 14 1.10 Modoule RTC 15 Yêu cầu phần cứng 16 2.1 Sơ đồ khối 16 2.2 Chức khối 16 2.2.1 Khối cảm biến 16 2.2.2 Khối hiển thị 16 2.2.3 Khối thời gian thực (RTC : Real Time Clock) 16 2.2.4 Board arduino Uno R3 (Hệ thống – Bộ xử lí trung tâm) 17 Sản phẩm hoàn thiện .17 3.1 Hiển thị RTC 18 3.2 Hiển nhiệt độ, độ ẩm 19 Code phần cứng .21 Mục tiêu phát triển 26 Kết đạt .27 Hạn chế hướng phát triển 27 Tổng quan Arduino 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ở (open-source) Tuy nhiên Việt Nam Arduino chưa biết đến nhiều Vậy Arduino “cái” gì? 1.1 Arduino gì? Arduino tảng điện tử mã nguồn mở, với phần cứng phần mềm linh hoạt, dễ dàng sử dụng Nó dành cho nghệ sĩ, nhà thiết kế, người có sở thích quan tâm đến việc tạo đối tượng tương tác với với mơi trường Hình 1.1 Logo Arduino Arduino thường gồm board mạch điện tử có vi xử lý, kết nối với máy tính thơng qua cổng USB Bằng phần mềm Arduino máy tính, người dùng viết nạp chương trình xuống board, để thực tác vụ mong muốn Người dùng ứng dụng Arduino để lập trình tương tác với đèn, động cơ, cảm biến thiết bị khác Mô hình Arduino đơn giản vậy, phổ biến tiếng thật kinh ngạc 1.2 Phần cứng Một bảng mạch Arduino bao gồm vi điều khiển Atmel AVR 8-bit thành phần bổ sung để tạo điều kiện lập trình tích hợp cách mạch điện khác với bảng mạch Arduino Một khía cạnh quan trọng Arduino dựa tiêu chuẩn kết nối thống nhất, cho bo mạch CPU kết nối với loạt mơ-đun chuyển đổi tiện ích bổ sung gọi shield (bộ chắn) Một số shield giao tiếp bo mạch Arduino trực tiếp từ chân nối khác nhau, shield định địa riêng biệt thông qua bus kết nối nối tiếp I² C, cho phép shield xếp chồng lên sử dụng song song Arduino chuẩn sử dụng megaAVR tổ chợp chip, đặc biệt ATmega8 , Atmega168, ATmega328, ATmega1280, ATmega2560 Một số vi xử lý khác sử dụng tương thích chuẩn Arduino Hầu hết bo mạch bao gồm điều áp tuyến tính 5V dao động tinh thể 16 MHz (hoặc cộng hưởng gốm số biến thể dao động), số thiết kế LilyPad chạy MHz chia sẻ điều áp bo mạch hạn chế thông số định dạng thể Bộ vi điều khiển Arduino lập trình trước nhờ nạp khởi động theo cách đơn giản tải lên chương trình vào nhớ flash chip, so với thiết bị khác thường cần lập trình viên bên hỗ trợ sử dụng Ở cấp độ khái niệm, sử dụng xếp chồng phần mềm Arduino, tất bo mạch lập trình nhờ kết nối nối tiếp RS-232, cách thực khác theo phiên phần cứng Bảng mạch Arduino nối tiếp chứa mạch dịch cấp để chuyển đổi tín hiệu cấp-RS-232 cấp-TTL Bảng mạch Arduino lập trình thơng qua cổng USB, cài đặt sử dụng chip chuyển đổi USB-sang-nối tiếp FTDI FT232 Một số biến thể, chẳng hạn Arduino Mini Boarduino khơng thức, sử dụng bảng mạch tháo rời chuyển đổi USB-sang-nối tiếp cáp, Bluetooth phương pháp khác (Khi sử dụng với công cụ vi điều khiển truyền thống thay Arduino IDE, lập trình AVR ISP chuẩn phải sử dụng.) Bảng mạch Arduino cho thấy hầu hết chân nối I/O pins vi điều khiển để sử dụng mạch khác Các Diecimila, Duemilanove , và Uno hiện cung cấp 14 chân I/O số, sáu số có thểtạo tiến hiệu điều biến độ rộng xung, sáu đầu vào tương tự Các chân nằm mặt bo mạch, thông qua đầu chân 0.10-inch (2,5 mm) Một số shield ứng dụng nhúng plug-in có dạng thương mại Bo mạch Arduino Nano Bare Bones tương thích Arduino cung cấp chân cắm đực mặt duwois bo mạch để kết nối bo mạch khác khơng cần hàn Có nhiều bo mạch tương thích Arduino và bo mạch dẫn xuất từ Arduino Một số có chức tương đương với Arduino sử dụng thay lẫn cho Phần lớn Arduino với việc bổ sung trình điều khiển đầu phổ biến, thường sử dụng giáo dục cấp trường để đơn giản hóa việclắp ráp xe đẩy robot nhỏ Những biến thể khác tương đương điện thay đổi tham số dạng (form-factor), cho phép tiếp tục sử dụng Shield, không Một số biến thể sử dụng vi xử lý hoàn toàn khác, với mức độ khác tính tương thích 1.3 Shield Arduino bảng mạch Arduino tương thích sử dụng shiel - bo mạch mạch điện cắm vào bo mạch Arduino thường thơng qua đầu chân cắm bo mạch Arduino chủ Shiel cung cấp chức điều khiển động cơ, GPS, kết nối mạng ethernet, hình LCD, bảng mạch khung (tạo mẫu) Một số shield chế tạo để thực DIY 1.4 Phần mềm Mơi trường phát triển tích hợp (IDE) Arduino là ứng dụng đa tảng viết Java, dẫn xuất từ IDE cho ngôn ngữ lập trình xử lý dự án lắp ráp Nó thiết kế để làm nhập mơn lập trình cho nhà lập trình người sử dụng khác không quen thuộc với phát triển phần mềm Nó bao gồm trình soạn thảo mã với tính làm bật cú pháp, khớp dấu ngặc khối chương trình, thụt đầu dịng tự động, có khả biên dịch tải lên chương trình vào bo mạch với nhấp chuột Một chương trình mã viết cho Arduino gọi "sketch" Chương trình Arduino viết C C++ Arduino IDE kèm với thư viện phần mềm gọi "Wiring" từ dự án lắp ráp ban đầu, cho hoạt động đầu vào/đầu phổ biến trở nên dễ dàng nhiều Người sử dụng cần định nghĩa hai hàm để thực chương trình điều hành theo chu kỳ : setup( ) : hàm chạy lần vào lúc bắt đầu chương trình dùng để khởi tạo thiết lập loop( ) : hàm gọi lặp lại liên tục bo mạch tắt Khi bạn bật điện bảng mạch Arduino, reset hay nạp chương trình mới, hàm setup() gọi đến Sau xử lý xong hàm setup(), Arduino nhảy đến hàm loop() lặp vô hạn hàm bạn tắt điện bo mạch Arduino Chu trình mơ tả hình đây: Hình 1.2 Lưu đồ chương trình Arduino IDE sử dụng GNU toolchain và AVR libc để biên dịch chương trình, sử dụng avrdude để tải lên chương trình vào bo mạch chủ Do tảng Arduino sử dụng vi điều khiển Atmel, môi trường phát triển Atmel, AVR Studio Atmel Studio hơn, sử dụng để phát triển phần mềm cho Arduino 1.5 Các loại bo mạch Arduino Về mặt chức năng, bo mạch Arduino chia thành hai loại: loại bo mạch có chip Atmega loại mở rộng thêm chức cho bo mạch (thường gọi shield) Các bo mạch giống chức năng, nhiên mặt cấu số lượng I/O, dung lượng nhớ, hay kích thước có khác Một số bo có trang bị thêm tính kết nối Ethernet Bluetooth Các bo mở rộng chủ yếu mở rộng thêm số tính cho bo mạch ví dụ tính kết nối Ethernet, Wireless, điều khiển động v.v… Hình 1.3 Các loại Board Arduino 1.6 Arduino Uno R3 Hình 1.4 Board Arduino Uno R3 Hình cận cảnh Arduino Uno Đối với lập trình cho Arduino trước tiên quan tâm thành phần đánh số trên: (1) Cổng USB (loại B): cổng giao tiếp để ta upload code từ PC lên vi điểu khiển Đồng thời giao tiếp serial để truyền liệu vi điểu khiển với máy tính (2) Jack nguồn: để chạy Arduino lấy nguồn từ cổng USB trên, lúc cắm với máy tính Lúc đó, ta cần nguồn 9V đến 12V (3) Hàng Header: đánh số từ đến 13 hàng digital pin, nhận vào xuất tín hiệu số Ngồi có pin đất (GND) pin điện áp tham chiếu (AREF) (4) Hàng header thứ hai: chủ yếu liên quan đến điện áp đất, nguồn (5) Hàng header thứ ba: chân để nhận vào xuất tín hiệu analog Ví dụ đọc thơng tin thiết bị cảm biến (6) Vi điều khiển AVR: xử lý trung tâm tồn bo mạch Với mẫu Arduino khác chip khác Ở Arduino Uno sử dụng ATMega328 Một số thơng số kỹ thuật sau : Chip Điê ̣n áp cấp nguồn Điện áp đầu vào (input) (kiến nghị ) Điện áp đầu vào(giới hạn) Số chân Digital I/O Số chân Analog (Input) DC Current per I/O Pin DC Current for 3.3V Pin Flash Memory SRAM EEPROM Xung nhịp Atmega328 5V – 12V 6-20V 14 (có chân điều chế độ rộng xung PWM) 40mA 50mA 32KB (ATmega328) với 0.5KB sử dụng bootloader 2K 1K 16Mhz 1.7 Cảm biến nhiệt dộ, ̣ ẩm Hình 1.5 Cảm biến đo nhiệt độ, độ ẩm DHT11 Là cảm biến nhiệt độ, độ ẩm thơng dụng vì chi phí rẻ và dễ lấy liệu thông qua giao tiếp 1-wire (giao tiếp digital 1-wire truyền liệu nhất) Cảm biến tích hợp tiền xử lý tín hiệu giúp liệu nhận xác mà khơng cần phải qua tính tốn Thơng số kĩ thuật  Điện áp hoạt động: 3-5.5V DC  Ngưỡng độ ẩm: 20 - 90%  Sai số độ ẩm: ± 5%  Ngưỡng nhiệt độ: - 55oC  Sai số nhiệt độ: ± 2oC Kết nối cảm biến DHT11 với mạch Arduino 1.8 Tởng quan về LCD Hình 1.6 Màn hình LCD 20x4 Khi sản xuất LCD, nhà sản xuất tích hợp chíp điều khiển (HD44780) bên lớp vỏ đưa các chân giao tiếp cần thiết Các chân đánh số thứ tự hình Hình 1.7 Sơ đồ chân LCD 1.8.1 Chức các chân Chân Ký hiệu Mô tả Vss Chân nối đất cho LCD, thiết kế mạch ta nối chân với GND mạch điều khiển VDD Chân cấp nguồn cho LCD, thiết kế mạch ta nối chân với VCC=5V mạch điều khiển VEE Điều chỉnh độ tương phản LCD RS Chân chọn ghi (Register select) Nối chân RS với logic “0” (GND) logic “1” (VCC) để chọn ghi + Logic “0”: Bus DB0-DB7 nối với ghi lệnh IR LCD (ở chế độ “ghi” - write) nối với đếm địa LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 nối với ghi liệu DR bên LCD R/W Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/W với logic “0” để LCD hoạt động chế độ ghi, nối với logic “1” để LCD chế độ đọc E Chân cho phép (Enable) Sau tín hiệu đặt lên bus DB0-DB7, lệnh chấp nhận có 10 Hình 1.10 Giản đờ LCD chế đợ đọc 1.8.4 Khởi tạo LCD Khởi tạo việc thiết lập thông số làm việc ban đầu Đối với LCD, khởi tạo giúp ta thiết lập các giao thức làm việc LCD MPU Việc khởi tạo thực lần đầu chương trình điều khiển LCD bao gồm thiết lập sau :   Display clear : Xóa/khơng xóa tồn nội dung hiển thị trước đó.   Function set : Kiểu giao tiếp 8bit/4bit, số hàng hiển thị 1hàng/2hàng, kiểu kí tự 5x8/5x10.   Display on/off control: Hiển thị/tắt hình, hiển thị/tắt trỏ, nhấp nháy/không nhấp nháy.   Entry mode set : thiết lập kiểu nhập kí tự như: Dịch/khơng dịch, tự tăng/giảm (Increment).  Mạch khởi tạo bên chip HD44780 Mỗi cấp nguồn, mạch khởi tạo bên LCD tự động khởi tạo cho Và thời gian khởi tạo cờ BF bật lên 1, đến việc khởi tạo hồn tất cờ BF cịn giữ khoảng 10ms sau Vcc đạt đến 4.5V (vì 2.7V LCD hoạt động) Mạch khởi tạo nội thiết lập thông số làm việc của LCD sau:   Display clear: Xóa tồn nội dung hiển thị trước đó.   Function set: DL=1 : 8bit; N=0 : hàng; F=0 : 5x8   Display on/off control: D=0 : Display off; C=0 : Cursor off; B=0 : Blinking off.   Entry mode set: I/D =1 : Tăng; S=0 : Không dịch.  Như sau mở nguồn, bạn thấy hình LCD giống chưa mở nguồn tồn hiển thị tắt Do đó, ta phải khởi tạo LCD lệnh.  Khởi tạo lệnh 13 1.9 Module giải mã cho LCD Hình 1.11 Module giao tiếp LCD theo chuẩn I2C Giúp chuyển đổi giao tiếp nhiều đường hình LCD16x02/20x04 thành giao tiếp IIC/I2C (2 đường), giúp tiết kiệm cổng, điện áp hoạt động: 5V     Hỗ trợ giao tiếp IIC/I2C jumper: on/off đèn LCD Biến trở: điều khiển độ tương phản LCD Địa IIC/I2C mặc định: 0x20 ; mở rộng đến LCD cách ngắn mạch chân A0, A1, A2 để thiết lập địa IIC/I2C tương ứng 14 1.10 Module RTC Hình 1.12 Module RTC DS3231 Module Thời Gian Thực RTC DS3231 là IC thời gian thực giá rẻ, xác với thạch anh tích hợp sẵn có khả điều chỉnh nhiệt IC có đầu vào cho pin riêng, tách biệt khỏi nguồn đảm bảo cho việc giữ thời gian xác Thạch anh tích hợp sẵn giúp tăng độ xác thời gian dài hoạt động giảm số lượng linh kiện cần thiết làm board Thời gian IC giữ dạng: giờ, phút, giây, ngày, thứ, tháng, năm Các tháng có 31 ngày tự động điều chỉnh, năm Nhuận chỉnh số ngày Thời gian hoạt động chế độ 24h 12h AmPM IC cịn có chức báo động, cài đặt thời gian báo lịch, có tín hiệu xung vuông Giao tiếp với IC thực thơng qua I2C bus Trong chip có mạch điện áp chuẩn dùng để theo dõi trạng thái nguồn VCC, phát lỗi nguồn, tự động chuyển nguồn có vấn đề Có tín hiệu Reset xuất cho mạch ngoài, MCU nguồn điện phục hồi trạng thái Ngoài IC cịn có sẵn cảm biến nhiệt độ, có độ xác ± 3°C             THÔNG SỐ KỸ THUẬT Size: dài 38mm, rộng 22mm, cao 14mm Khối lượng 8g Điện hoạt động 3.3 – 5.5V Clock: high-precision clock on chip DS3231 Clock Accuracy: 040 ℃ range, the accuracy 2ppm, the error was about minute Thông tin Thời gian: giờ, phút, giây, ngày, thứ, tháng, năm, đến 2100 Cảm biến nhiệt IC có độ xác ± ℃ I2C bus có tốc độ tối đa 400Khz Kèm thêm pin sạc CR2032 Kèm thêm memory IC AT24C32 (32k bits) 15 Yêu cầu phần cứng - Các cảm biến đo truyền tín hiệu vi điều khiển - Vi điều khiển xử lý tín hiệu từ cảm biến đưa truyền lên hình LCD 2.1 Sơ đồ khối Khối cảm biến + Cảm biến đo độ ẩm đất BOARD ARDUINO UNO R3 Khối hiển thị + LCD 20x4 Khối thời gian thực (RTC) Hình 2.1 Sơ đồ khối 2.2 Chức khối 2.2.1 Khối cảm biến Cảm biến đo nhiệt độ, độ âm: dùng để đo nhiệt độ, độ ẩm khơng khí truyền xử lý trung tâm Cảm biến hoạt động theo nguyên lý đo mức dẫn điện chân khơng, sau đưa hình hiển thị để so sánh với kết thực tế 2.2.2 Khối hiển thị LCD (Liquid Crytal Dislay): Ở phần cứng nhóm thực sử dụng LCD 20x4, ngồi có dùng module giao tiếp với LCD, chuyển từ 16 chân tín hiệu LCD thành chân giao tiếp I2C với xử lý trung tâm Ở đây, nhóm thực dùng LCD để hiển thị thời gian (ngày/tháng/năm, giờ: phút: giây ) trạng thái độ ẩm (đất ẩm/ đất ướt/ đất khô) 2.2.3 Khối thời gian thực (RTC : Real Time Clock) Module dùng để lưu trữ cấp thời gian cho hệ thống Hệ thống cập nhập thời gian thời gian lúc nạp chương trình 16 2.2.4 Board arduino Uno R3 (Hệ thống – Bộ xử lí trung tâm) Board arduino Uno R3 nhóm thực chọn làm xử lý trung tâm phần đề tài Board có thề sử dụng nguồn từ USB máy tính cấp sử dụng nguồn ngồi tùy theo ý muốn người sử dụng Với ưu điểm board dễ sử dụng, hỗ trợ nhiều diễn đàn, cộng đồ DIY Ngoài cịn hổ trợ nhiều thư viện lập trình từ nhà sản xuất người dùng Riêng Chip ATmega328 gắn board cịn tích hợp thêm xử lý ADC 10bit Về trình biên dịch có giao diện dễ sử dụng code lập trình đơn giản Với ưu điểm nên board thích hợp cho tầng lớp người dùng sử dụng Sản phẩm hồn thiện Hình 2.2 Mạch tổng quát Hiển thị RTC 17 Hình 2.3 Hiển thị RTC 3.2 Hiển thị nhiệt độ độ ẩm 18 Hình 2.5 Đo nhiê ̣t đợ đợ ẩm điều kiê ̣n nhiê ̣t đợ thấp 19 Hình 2.4 Đo nhiê ̣t độ độ ẩm điều kiê ̣n nhiê ̣t đợ cao 20 Hình 2.4 Kết hợp đo nhiê ̣t độ độ ẩm và thời gian thực Code phần cứng #include "DHT.h" #include #include #include LiquidCrystal_I2C lcd(0x27,20,4); DS3231 rtc(SDA, SCL); const int DHTPIN = 2; const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; 21 const byte DS3231 = 0x68; const byte NumberOfFields = 7; int second, minute, hour, day, wday, month, year; void setup() { dht.begin(); Serial.begin(115200); /*rtc.begin(); rtc.setTime(second, minute, hour); rtc.setDate(day, month, year);*/ Wire.begin(); lcd.init(); lcd.backlight(); lcd.clear(); setTime(1, 6, 45,2, 9, 5, 19); Serial.begin(9600); delay(1000); } void loop() { lcd.setCursor(2,0); lcd.print("Nhiet do: "); lcd.setCursor(2,1); lcd.print("Do am: "); lcd.createChar(1, degree); /*Serial.print(rtc.getDOWStr()); 22 Serial.print(" "); Serial.print(rtc.getDateStr()); Serial.print(" "); Serial.println(rtc.getTimeStr()); */ readDS3231(); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(t) || isnan(h)) { } else { lcd.setCursor(12,0); lcd.print(round(t)); lcd.print(" "); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print("%"); } //digitalClockDisplay(); DisplayDS3231(); } void readDS3231() { Wire.beginTransmission(DS3231); 23 Wire.write((byte)0x00); Wire.endTransmission(); Wire.requestFrom(DS3231, NumberOfFields); second = bcd2dec(Wire.read() & 0x7f); minute = bcd2dec(Wire.read() ); hour = bcd2dec(Wire.read() & 0x3f); //che 24h wday = bcd2dec(Wire.read() ); day = bcd2dec(Wire.read() ); month = bcd2dec(Wire.read() ); year = bcd2dec(Wire.read() ); year += 2000; } int bcd2dec(byte num) { return ((num/16 * 10) + (num % 16)); } int dec2bcd(byte num) { return ((num/10 * 16) + (num % 10)); } void digitalClockDisplay(){ // digital clock display of the time Serial.print(hour); LCDprintDigits(minute); LCDprintDigits(second); Serial.print(" "); 24 Serial.print(day); Serial.print(" "); Serial.print(month); Serial.print(" "); Serial.print(year); Serial.println(); } void LCDprintDigits(int digits){ lcd.print(":"); if(digits < 10) lcd.print('0'); lcd.print(digits); } void setTime(byte hr, byte min, byte sec, byte wd, byte d, byte mth, byte yr) { Wire.beginTransmission(DS1307); Wire.write(byte(0x00)); Wire.write(dec2bcd(sec)); Wire.write(dec2bcd(min)); Wire.write(dec2bcd(hr)); Wire.write(dec2bcd(wd)); Wire.write(dec2bcd(d)); Wire.write(dec2bcd(mth)); Wire.write(dec2bcd(yr)); Wire.endTransmission(); } 25 void DisplayDS1307() { lcd.setCursor(5,2); lcd.print(hour); LCDprintDigits(minute); LCDprintDigits(second); lcd.setCursor(5,3); lcd.print(day); lcd.print("/"); lcd.print(month); lcd.print("/"); lcd.print(year); } Mục tiêu phát triển - Thực việc giao tiếp thiết bị máy tính qua cổng COM thơng qua chương trình phần mềm - Ứng dụng kiến thức học vi xử lý, vi điều khiển, lập trình C# giao tiếp để xây dựng ứng dụng thực tế Nhiệm vụ: - Thiết kế thi công mạch phần cứng điều khiển LCD, đọc thông số từ cảm biến - Thiết kế giao diện phần mềm giúp người dùng sử dụng giao tiếp với phần cứng Kết đạt Sau thời gian thực đề tài, nhóm thực đạt kết sau: - Hiểu phương pháp lập trình Arduino - Hiểu cách truyền nhận Analog, hiển thị LCD chuẩn I2C - Thi công board mạch ổn định - Chạy ổn định môi trường thử nghiệm 26 Hạn chế hướng phát triển: Hạn chế: - Dây kết nối rườm rà - Hệ thống có độ trễ định chưa khắc phục Hướng phát triển: - Mở rộng phạm vi tưới tự động - Có thể truyền liệu thơng báo cho người dùng qua internet , smartphone, … - Có thể ứng dụng mơ hình Smart Home 27 ... LiquidCrystal_I2C lcd(0x27,20,4); DS32 31 rtc(SDA, SCL); const int DHTPIN = 2; const int DHTTYPE = DHT 11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B 011 10, 0B 010 10, 0B 011 10, 0B00000,... v.v… Hình 1. 3 Các loại Board Arduino 1. 6 Arduino Uno R3 Hình 1. 4 Board Arduino Uno R3 Hình cận cảnh Arduino Uno Đối với lập trình cho Arduino trước tiên quan tâm thành phần đánh số trên: (1) Cổng... 12 1. 8.4 Khởi tạo LCD 13 1. 9 Module giải mã cho LCD 14 1. 10 Modoule RTC 15 Yêu cầu phần cứng 16 2 .1 Sơ đồ khối 16

Ngày đăng: 08/12/2021, 17:33

Xem thêm:

HÌNH ẢNH LIÊN QUAN

Mô hình Arduino thì đơn giản vậy, nhưng sự phổ biến và nổi tiếng của nó thì thật là kinh ngạc. - Phương pháp lập trình arduino
h ình Arduino thì đơn giản vậy, nhưng sự phổ biến và nổi tiếng của nó thì thật là kinh ngạc (Trang 3)
mạng ethernet, màn hình LCD, hoặc bảng mạch khung (tạo mẫu). Một số shield cũng có thể được chế tạo để thực hiện DIY. - Phương pháp lập trình arduino
m ạng ethernet, màn hình LCD, hoặc bảng mạch khung (tạo mẫu). Một số shield cũng có thể được chế tạo để thực hiện DIY (Trang 5)
Hình 1.3 Các loại Board Arduino - Phương pháp lập trình arduino
Hình 1.3 Các loại Board Arduino (Trang 6)
Hình 1.4 Board Arduino Uno R3 - Phương pháp lập trình arduino
Hình 1.4 Board Arduino Uno R3 (Trang 7)
Hình 1.5 Cảm biến đo nhiệt độ, độ ẩm - Phương pháp lập trình arduino
Hình 1.5 Cảm biến đo nhiệt độ, độ ẩm (Trang 8)
1.8 Tổng quan về LCD - Phương pháp lập trình arduino
1.8 Tổng quan về LCD (Trang 9)
Hình 1.6 Màn hình LCD 20x4 - Phương pháp lập trình arduino
Hình 1.6 Màn hình LCD 20x4 (Trang 9)
1.8.1 Chức năng các chân - Phương pháp lập trình arduino
1.8.1 Chức năng các chân (Trang 10)
Hình 1.7 Sơ đồ chân LCD - Phương pháp lập trình arduino
Hình 1.7 Sơ đồ chân LCD (Trang 10)
Bảng 1.8 Chức năng các chân LCD - Phương pháp lập trình arduino
Bảng 1.8 Chức năng các chân LCD (Trang 11)
Tần số dao động nội fOSC: 190kHz đến 350kHz (điển hình là 270kHz) - Phương pháp lập trình arduino
n số dao động nội fOSC: 190kHz đến 350kHz (điển hình là 270kHz) (Trang 12)
Hình 1.10 Giản đồ LCD chế độ đọc - Phương pháp lập trình arduino
Hình 1.10 Giản đồ LCD chế độ đọc (Trang 13)
Hình 1.11 Module giao tiếp LCD theo chuẩn I2C - Phương pháp lập trình arduino
Hình 1.11 Module giao tiếp LCD theo chuẩn I2C (Trang 14)
Hình 1.12 Module RTC DS3231 - Phương pháp lập trình arduino
Hình 1.12 Module RTC DS3231 (Trang 15)
- Vi điều khiển xử lý tín hiệu từ cảm biến đưa về và truyền lên màn hình LCD - Phương pháp lập trình arduino
i điều khiển xử lý tín hiệu từ cảm biến đưa về và truyền lên màn hình LCD (Trang 16)
Hình 2.2 Mạch tổng quát - Phương pháp lập trình arduino
Hình 2.2 Mạch tổng quát (Trang 17)
Hình 2.3 Hiển thị RTC - Phương pháp lập trình arduino
Hình 2.3 Hiển thị RTC (Trang 18)
Hình 2.5 Đo nhiê ̣t độ độ ẩm trong điều kiê ̣n nhiê ̣t độ thấp - Phương pháp lập trình arduino
Hình 2.5 Đo nhiê ̣t độ độ ẩm trong điều kiê ̣n nhiê ̣t độ thấp (Trang 19)
Hình 2.4 Đo nhiê ̣t độ độ ẩm trong điều kiê ̣n nhiê ̣t độ cao - Phương pháp lập trình arduino
Hình 2.4 Đo nhiê ̣t độ độ ẩm trong điều kiê ̣n nhiê ̣t độ cao (Trang 20)
Hình 2.4 Kết hợp đo nhiê ̣t độ độ ẩm và thời gian thực - Phương pháp lập trình arduino
Hình 2.4 Kết hợp đo nhiê ̣t độ độ ẩm và thời gian thực (Trang 21)

TỪ KHÓA LIÊN QUAN

Mục lục

    1.5 Các loại bo mạch Arduino

    1.7 Cảm biến nhiệt dộ, độ ẩm

    1.8 Tổng quan về LCD

    1.8.1 Chức năng các chân

    1.8.2 Các tập lệnh của LCD

    1.8.3 Giao tiếp với LCD

    1.8.4 Khởi tạo LCD

    1.9 Module giải mã cho LCD

    THÔNG SỐ KỸ THUẬT

    2 Yêu cầu phần cứng

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

TÀI LIỆU LIÊN QUAN

w