Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
1,38 MB
Nội dung
BÁO CÁO MÔN PHẦN MỀM CHUYÊN DỤNG Đề Tài : Đọc Nhiệt Độ Độ Ẩm (DHT11) Hiển Thị Trên LCD 16×2 giao tiếp I2C LCD sử dụng Arduino uno Thành viên : Phạm Phương Nam Đào Duy Hưng Nguyễn Xuân Lộc Tìm hiểu Arduino gì? Arduino tảng mã nguồn mở sử dụng để xây dựng dự án điện tử Thành phần Arduino bao gồm mạch đ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 bạn sử dụng để viết tải mã máy tính lên mạch điều khiển Nền tảng Arduino trở nên phổ biến người bắt đầu Không giống bảng mạch điện tử lập trình trước Arduino khơng cần mạch chủ riêng để tải mã nguồn vào mạch điều khiển mà người dùng cần sử dụng dây cáp USB Ngoài ra, Arduino IDE sử dụng tảng đơn giản hóa C++, giúp cho việc học ngơn ngữ lập trình Arduino trở nên dễ dàng Trong phiên Arduino Uno bo mạch phổ biến lựa chọn tuyệt vời cho người bắt đầu Tuy nhiên để học tốt Arduino bạn phải có tảng điện tử lập trình C, C++ trước Arduino làm gì? Phần cứng phần mềm Arduino thiết kế nhà phát triển quan tâm đến việc tạo đối tượng môi trường tương tác việc sử dụng Arduino tương tác với nút nhấn, LED, động cơ, loa, thiết bị GPS, máy ảnh, internet tương tác với điện thoại, tivi Những ứng dụng kết hợp với thực tế phần mềm Arduino hồn tồn miễn phí, bo mạch phần cứng khả rẻ, phần mềm phần cứng dễ dàng học giúp cho Arduino trở thành cộng đồng lớn với nhiều người dùng, phát triển nhiều mã đưa nhiều hướng dẫn cho nhiều dự án Đối với nhiều ứng dụng như: Robot, chăn sưởi, máy tính tốn độ trung thực chí trị chơi Dungeon Dragons Arduino sử dụng làm não đứng phía sau hầu hết dự án điện tử Ngồi ra, cịn nhiều ứng dụng khác từ Arduino mà bạn tự khám phá Cấu tạo Arduino Nguồn (USB / Barrel Jack) Mỗi mạch Arduino có cổng kết nối với nguồn điện Cụ thể mà mạch Arduino UNO lấy nguồn từ dây cáp USB từ máy tính bạn, số nguồn DC khác có Jack DC Trong hình nguồn kết nối qua cổng USB dán nhãn (1) Jack DC dán nhãn (2) Chân kết nối USB chân để bạn tải code lên bo mạch Arduino Lưu ý: Tuyệt đối không sử dụng nguồn lớn 20V với nguồn điện áp phá hủy mạch Arduino bạn Điện áp nhà sản xuất đề nghị cho hầu hết bo mạch Arduino từ – 12V Các chân (5V, 3.3V, GND, Digital, Analog, PWM, ISF) Các chân nguồn mà bạn kết nối dây đầu với tải số mạch kết nối bên ngồi Với loại Arduino số loại chân khác Ở chân in nhãn ký tự để người sử dụng phân biệt • • GND (3) : Viết tắt ‘Ground’ mass Có số chân GND Arduino, chân GND số sử dụng để nối mass mạch bạn 5V (4) & 3.3V (5) : Chân 5V cung cấp lượng volt chân 3,3V cung cấp 3,3 volt Hầu hết thành phần đơn giản sử dụng với Arduino hoạt động bình thường mức 3,3 volt Analog (6) : Các chân dán nhãn ‘Analog In’ (A0 đến A5 UNO) chân Analog In 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ị Digital mà đọc • Digital (7): Các chân Digital dán nhãn từ – 13 Arduino UNO, chân sử dụng cho đầu vào digital nút nhấn đầu digital cấp nguồn cho LED • PWM (8): Bạn nhìn thấy dấu (~) nằm bên cạnh chân 3, 5, 6, 9, 10 11 mạch Các chân có chức hoạt động chân Digital thông thường, sử dụng để điều chế độ rộng xung PWM Bạn hình dung chân sử dụng mơ đầu tín hiệu Analog • ISF (9): Được viết tắt cụm từ Analog Reference, hầu hết chân thường không sử dụng Đơi sử dụng để đặt điện áp tham chiếu khoảng từ – 5V làm giới hạn cho chân đầu vào Analog Nút Reset (Reset Button) Nút reset (10) có nhiệm vụ khởi động lại đoạn code tải Arduino Điều hữu ích code bạn khơng có vịng lặp bạn lại muốn kiểm tra chương trình nhiều lần • Đèn LED báo nguồn (Power LED Indicator) Đèn báo nắp bên phải chữ UNO, đèn LED nhỏ dán nhãn ON (11) Đèn báo có nhiệm vụ báo có nguồn cấp vào Arduino Trong số trường hợp đèn không sáng chắn có vấn đề xảy Bạn kiểm tra lại dây cáp USB, nguồn cấp mạch LED TX RX (TX RX LEDs) TX LED hiển thị tín hiệu truyền RX hiển thị tín hiệu nhận Những tín hiệu xuất nhiều thiết bị điện tử để chân thực nhiệm vụ truyền tải nối tiếp Trong trường hợp này, có vị trí Arduino UNO TX RX (12) Các LED có nhiệm vụ thông báo cho người dùng Arduino nhận truyền liệu Ví dụ tải chương trình lên đèn hiển thị IC chủ (Main IC) IC chủ vị trí số 13 Đây coi não Arduino IC thường sử dụng dòng IC ATmega công ty ATMEL sản xuất Việc nhận biết IC chủ điều quan trọng, bạn cần biết mạch bạn sử dụng IC để bạn nạp chương trình thích hợp từ phần mềm Arduino Thông tin tên IC thường tìm thấy phía mặt Nếu bạn muốn tìm hiểu sâu thơng tin IC bạn đọc thêm tài liệu từ nhà sản xuất Bộ điều chỉnh điện áp (Voltage Regulator) Bộ điều chỉnh điện áp (14), không sử dụng nhiều Nhiệm vụ điều chỉnh điện áp, kiểm sốt nguồn điện áp đưa vào mạch Arduino Bạn coi giống người canh gác, làm biến điện áp phụ gây tổn hại cho linh kiện mạch Nhưng bạn cần phải ý điều chỉnh điện áp có giới hạn Vì vậy, tuyệt đối không nên kết nối mạch Arduino với nguồn điện DC lớn 20V Các loại mạch Arduino thường sử dụng Arduino tạo với nhiều phiên khác Ngoài ra, phần phần cứng mở rộng để người khác sửa đổi sản xuất dẫn xuất mạch để cung cấp nhiều chức Dưới số mạch Arduino thường sử dụng • Arduino UNO (R3) Arduino UNO (R3) Nhắc tới dòng mạch Arduino dùng để lập trình, mà người ta thường nói tới dịng Arduino UNO Hiện dịng mạch phát triển tới hệ thứ (R3) Bạn bắt đầu đến với Arduino qua thứ Bạn dùng Arduino Nano tơi khun bạn nên dùng Một vài thông số Arduino UNO R3 Vi điều khiển Điện áp hoạt động Tần số hoạt động Dòng tiêu thụ Điện áp vào khuyên dùng Điện áp vào giới hạn Số chân Digital I/O Số chân Analog Dòng tối đa chân I/O Dòng tối đa (5V) Dòng tối đa (3.3V) Bộ nhớ flash SRAM EEPROM ATmega328 họ 8bit 5V DC (chỉ cấp qua cổng USB) 16 MHz khoảng 30mA 7-12V DC 6-20V DC 14 (6 chân hardware PWM) (độ phân giải 10bit) 30 mA 500 mA 50 mA 32 KB (ATmega328) với 0.5KB dùng bootloader KB (ATmega328) KB (ATmega328) Vi điều khiển Arduino UNO sử dụng vi điều khiển họ 8bit AVR ATmega8, ATmega168, ATmega328 Bộ não xử lí tác vụ đơn giản điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm trạm đo nhiệt độ - độ ẩm hiển thị lên hình LCD, Thiết kế tiêu chuẩn Arduino UNO sử dụng vi điều khiển ATmega328 với giá khoảng 90.000đ Tuy nhiên yêu cầu phần cứng bạn không cao túi tiền khơng cho phép, bạn sử dụng loại vi điều khiển khác có chức tương đương rẻ ATmega8 (bộ nhớ flash 8KB) với giá khoảng 45.000đ ATmega168 (bộ nhớ flash 16KB) với giá khoảng 65.000đ Ngoài việc dùng cho board Arduino UNO, bạn sử dụng IC điều khiển cho mạch tự chế Vì ? Vì bạn cần board Arduino UNO để lập trình cho vi điều khiển Trên thực tế, bạn không cần phải dụng Arduino UNO sản phẩm mình, thay vào mạch tự chế để giảm chi phí hình đây: Năng lượng Arduino UNO cấp nguồn 5V thông qua cổng USB cấp nguồn với điện áp khuyên dùng 7-12V DC giới hạn 6-20V Thường cấp nguồn pin vng 9V hợp lí bạn khơng có sẵn nguồn từ cổng USB Nếu cấp nguồn vượt ngưỡng giới hạn trên, bạn làm hỏng Arduino UNO Các chân lượng • GND (Ground): cực âm nguồn điện cấp cho Arduino UNO Khi bạn dùng thiết bị sử dụng nguồn điện riêng biệt chân phải nối với • 5V: cấp điện áp 5V đầu Dòng tối đa cho phép chân 500mA • 3.3V: cấp điện áp 3.3V đầu Dòng tối đa cho phép chân 50mA • Vin (Voltage Input): để cấp nguồn cho Arduino UNO, bạn nối cực dương nguồn với chân cực âm nguồn với chân GND • IOREF: điện áp hoạt động vi điều khiển Arduino UNO đo chân Và dĩ nhiên ln 5V Mặc dù bạn không lấy nguồn 5V từ chân để sử dụng chức khơng phải cấp nguồn • RESET: việc nhấn nút Reset board để reset vi điều khiển tương đương với việc chân RESET nối với GND qua điện trở 10KΩ Lưu ý: • Arduino UNO khơng có bảo vệ cắm ngược nguồn vào Do bạn phải cẩn thận, kiểm tra cực âm – dương nguồn trước cấp cho Arduino UNO Việc làm chập mạch nguồn vào Arduino UNO biến thành miếng nhựa chặn giấy khun bạn nên dùng nguồn từ cổng USB • Các chân 3.3V 5V Arduino chân dùng để cấp nguồn cho thiết bị khác, chân cấp nguồn vào Việc cấp nguồn sai vị trí làm hỏng board Điều khơng nhà sản xuất khuyến khích • Cấp nguồn ngồi khơng qua cổng USB cho Arduino UNO với điện áp 6V làm hỏng board • Cấp điện áp 13V vào chân RESET board làm hỏng vi điều khiển ATmega328 • Cường độ dòng điện vào/ra tất chân Digital Analog Arduino UNO vượt 200mA làm hỏng vi điều khiển • Cấp điệp áp 5.5V vào chân Digital Analog Arduino UNO làm hỏng vi điều khiển • Cường độ dịng điện qua chân Digital Analog Arduino UNO vượt 40mA làm hỏng vi điều khiển Do khơng dùng để truyền nhận liệu, bạn phải mắc điện trở hạn dòng Khi nói bạn “có thể làm hỏng”, điều có nghĩa chưa hỏng thông số kĩ thuật linh kiện điện tử có tương đối định Do tuân thủ theo thông số kĩ thuật nhà sản xuất bạn không muốn phải mua board Arduino UNO thứ 2.Khi nói bạn “có thể làm hỏng”, điều có nghĩa chưa hỏng thông số kĩ thuật linh kiện điện tử ln có tương đối định Do tuân thủ theo thông số kĩ thuật nhà sản xuất bạn không muốn phải mua board Arduino UNO thứ Bộ nhớ Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng: • 32KB nhớ Flash: đoạn lệnh bạn lập trình lưu trữ nhớ Flash vi điều khiển Thường có khoảng vài KB số dùng cho bootloader đừng lo, bạn cần 20KB nhớ đâu • 2KB cho SRAM (Static Random Access Memory): giá trị biến bạn khai báo lập trình lưu Bạn khai báo nhiều biến cần nhiều nhớ RAM Tuy vậy, thực nhớ RAM lại trở thành thứ mà bạn phải bận tâm Khi điện, liệu SRAM bị • 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): giống ổ cứng mini – nơi bạn đọc ghi liệu vào mà khơng phải lo bị cúp điện giống liệu SRAM Các cổng vào/ra Arduino UNO có 14 chân digital dùng để đọc xuất tín hiệu Chúng có mức điện áp 0V 5V với dòng vào/ra tối đa chân 40mA Ở chân có điện trở pull-up từ cài đặt vi điều khiển ATmega328 (mặc định điện trở khơng kết nối) Một số chân digital có chức đặc biệt sau: • chân Serial: (RX) (TX): dùng để gửi (transmit – TX) nhận (receive – RX) liệu TTL Serial Arduino Uno giao tiếp với thiết bị khác thông qua chân Kết nối bluetooth thường thấy nói nơm na kết nối Serial khơng dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng chân khơng cần thiết • Chân PWM (~): 3, 5, 6, 9, 10, 11: cho phép bạn xuất xung PWM với độ phân giải 8bit (giá trị từ → 8-1 tương ứng với 0V → 5V) hàm analogWrite() Nói cách đơn giản, bạn điều chỉnh điện áp chân từ mức 0V đến 5V thay cố định mức 0V 5V chân khác • Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài chức thơng thường, chân cịn dùng để truyền phát liệu giao thức SPI với thiết bị khác • LED 13: Arduino UNO có đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, bạn thấy đèn nhấp nháy để báo hiệu Nó nối với chân số 13 Khi chân người dùng sử dụng, LED sáng Arduino UNO có chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp khoảng 0V → 5V Với chân AREF board, bạn để đưa vào điện áp tham chiếu sử dụng chân analog Tức bạn cấp điện áp 2.5V vào chân bạn dùng chân analog để đo điện áp khoảng từ 0V → 2.5V với độ phân giải 10bit Đặc biệt, Arduino UNO có chân A4 (SDA) A5 (SCL) hỗ trợ giao tiếp I2C/TWI với thiết bị khác Tổng quan LCD 16×2 giao tiếp I2C LCD sử dụng Arduino Giới thiệu LCD 16×2 Thơng số kỹ thuật LCD 16×2 LCD 16×2 sử dụng để hiển thị trng thỏi hoc cỏc thụng s ã LCD 16ì2 cú 16 chân chân liệu (D0 – D7) chân điều khiển (RS, RW, EN) • chân lại dùng để cấp nguồn đèn nn cho LCD 16ì2 ã Cỏc chõn iu khin giỳp ta dễ dàng cấu hình LCD chế độ lệnh chế độ liệu • Chúng cịn giúp ta cấu hình chế độ đọc ghi LCD 16×2 sử dụng chế độ bit bit tùy theo ứng dụng ta làm Module I2C Arduino Module I2C LCD đời giải vấn để cho bạn Thay phải chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 D4) module IC2 bạn cần tốn chân (SCL, SDA) để kết nối Module I2C hỗ trợ loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) tương thích với hầu hết vi điều khiển Ưu điểm • Tiết kiệm chân cho vi điều khiển • Dễ dàng kết nối với LCD Thơng số kĩ thuật • Điện áp hoạt động: 2.5-6V DC • Hỗ trợ hình: LCD1602,1604,2004 (driver HD44780) • Giao tiếp: I2C • Địa mặc định: 0X27 (có thể điều chỉnh ngắn mạch chân A0/A1/A2) • Tích hợp Jump chốt để cung cấp đèn cho LCD ngắt • Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD • Giao tiếp I2C LCD Arduino Module I2C LCD 16×2 Arduino UNO GND GND VCC 5V SDA A4/SDA SCL A5/SCL Sơ đồ đấu nối Cảm biến nhiệt độ, độ ẩm DHT11 Cảm biến độ ẩm nhiệt độ DHT11 cảm biến thơng dụng chi phí rẻ dễ lấy liệu thông qua chuẩn giao tiếp wire Chuẩn giao tiếp wire dùng chân Digital để truyền liệu Bộ tiền xử lý tín hiệu tích hợp cảm biến giúp bạn đọc liệu xác mà khơng phải qua tính tốn Module cảm biến nhiệt độ, độ ẩm DHT11 Thông số kỹ thuật cảm biến: • Điện áp hoạt động: 3V – 5V (DC) • Dãi độ ẩm hoạt động: 20% – 90% RH, sai số ±5%RH • Dãi nhiệt độ hoạt động: 0°C ~ 50°C, sai số ±2°C • Khoảng cách truyển tối đa: 20m • Sơ đồ đấu nối Arduino Uno Cảm biến nhiệt độ, độ ẩm DHT11 5V VCC GND GND D4 DATA Kết hợp đọc nhiệt độ độ - độ ẩm xuất hình //infinite Xpro // firstly need to add i2c library #include LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and line display byte degree_symbol[8] = { 0b00111, 0b00101, 0b00111, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; int gate=11; volatile unsigned long duration=0; unsigned char i[5]; unsigned int j[40]; unsigned char value=0; unsigned answer=0; int z=0; int b=1; void setup() { lcd.init(); lcd.init(); lcd.backlight(); lcd.print("Temp = "); lcd.setCursor(0,1); // initialize the lcd lcd.print("Humidity = "); lcd.createChar(1, degree_symbol); lcd.setCursor(9,0); lcd.write(1); lcd.print("C"); lcd.setCursor(13,1); lcd.print("%"); } void loop() { delay(1000); while(1) { delay(1000); pinMode(gate,OUTPUT); digitalWrite(gate,LOW); delay(20); digitalWrite(gate,HIGH); pinMode(gate,INPUT_PULLUP);//by default it will become high due to internal pull up // delayMicroseconds(40); duration=pulseIn(gate, LOW); if(duration = 72) { while(1) { duration=pulseIn(gate, HIGH); if(duration = 20){ value=0;} else if(duration = 65){ value=1;} else if(z==40){ break;} i[z/8]|=value