đây là tài liệu về cách giao tiếp căn bản giữa board Arduino Uno R3 và các module mạch điện thông dụng hiện nay như: DHT11, LM35, RTC DS1307, Cảm biến siêu âm SRF05, Module Wifi, Ethernetshield, Module Đo độ PH,... Tài liệu này là phần 1, bao gồm giao tiếp với DHT11, LM35 và module thời gian thực RTC DS1307. Tài liệu thật sự bổ ích cho các bạn mới tìm hiểu về arduino.
Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 1 LỜI NÓI ĐẦU Ngày nay với sự phát triển của ngành kĩ thuật với những ngƣời đang theo học chuyên ngành kĩ thuật, những ngƣời muốn làm ứng dụng về điện- điện tử. Vì thế nhu cầu sử dụng board mạch nhúng Arduino ngày càng đƣợc ƣa chuộng và phát triển mạnh mẽ. Board mạch nhúng Arduino Uno R3 là một sản phẩm tuyệt với cho các bạn không chuyên về điện tử, lập trình có thể tạo ra cho mình những sản phẩm ứng dụng cao trong thực tế nhƣ: đo nhiệt độ, độ ẩm, tránh vật cản môi trƣờng xung quanh, cân điện tử, đo mực nƣớc, máy đo độ PH,…đây là một board mạch rất mạch ở khả năng sử dụng thƣ viện mở, và ứng dụng vào thực tế rất cao. Tài liệu này sẽ giúp các bạn tìm hiểu căn bản về cách giao tiếp giữa board mạch Arduino Uno R3 và các Module sử dụng cho arduino hiện nay. Từ đó các bạn có thể tự thiết kế cho mình những ứng dụng, những sản phẩm phục vụ cho cuộc sống của bạn. Liên Hệ Email: ttldientu@gmail.com Sđt: 01686648144 Chúc thành công! CẦN THƠ, 11/6/2015 Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 2 MỤC LỤC NHỮNG ĐIỀU LƢU Ý KHI SỬ DỤNG BOARD ARDUINO UNO R3 3 BÀI 1: GIAO TIẾP ARDUINO VÀ MODULE DHT11 5 1. Giới thiệu về module DHT11 5 2. Giao tiếp Arduino Uno và Module DHT11 5 Sơ đồ kết nối DHT11 vào Arduino Uno nhƣ sau: 5 3. Truyền nhận dữ liệu giữa Arduino và DHT11 6 Code giao tiếp: 7 BÀI 2: GIAO TIẾP ARDUINO VÀ MODULE RTC DS1307 8 1. Giới thiệu về DS1307 8 2. Module RTC DS1307- Thời gian thực 10 3. Lập trình giao tiếp DS1307 và Arduino Uno R3 11 BÀI 3: GIAO TIẾP ARDUINO VÀ LM35 14 1. Giới thiệu về IC LM35 14 2. Kết nối LM35 và Arduino Uno R3 14 3. Chuyển đổi ADC 15 Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 3 NHỮNG ĐIỀU LƢU Ý KHI SỬ DỤNG BOARD ARDUINO UNO R3 Khi sử dụng board mạch nhúng Arduino Uno R3 phải chú ý đến các vấn đề sau đây, để có thể sử dụng tránh làm hƣ hỏng board mạch: Điều đầu tiên đó là chúng ta cấp nguồn ngoài cho board Arduino. Điện áp cho phép là từ 7V- 12V, cấp vào jack DC của board mạch. Ta có thể sử dụng adapter để cấp nguồn cho an toàn, ổn định. Ta chọn 9V- 2A. Hình 1: Jack DC Arduino Uno Hình 2: Adapter 9V- 2A Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 4 Chân 5Volt power pin: chân này cấp đầu ra 5V, khi sử dụng chân này cấp nguồn cho các module rời hay linh kiện khác thì phải đảm bảo dòng ra không vƣợt quá 500ma. Chân 3,3Volt power pin: chân này cấp đầu ra 3.3V, khi sử dụng chân này cấp cho các mạch rời thì phải đảm bảo dòng ra trên chân này không vƣợt quá 50ma. Chân Vin: chân này cũng có thể dùng để cấp nguồn ngoài cho Arduino Uno, chân dƣơng nối vào chân Vin và chân âm nối vào chân Gnd của Arduino Uno. Chân IOREF: chân này dùng để đo điện áp sử dụng của Arduino, tuy nhiên bạn không đƣợc phép sử dụng để cấp nguồn cho các mạch ngoại vi. Arduino Uno đƣợc thiết kế không có hệ thống bảo vệ cắm ngƣợc nguồn, vì thế trƣớc đi cắm nguồn ngoài vào bạn phải kiểm thật kĩ, để tránh làm hỏng boar mạch. Các chân 3.3V, 5V đƣợc sử dụng để cấp nguồn cho các mạch ngoài. Vì thế không khuyên dùng để cấp nguồn từ ngoài vào hai chân này cho board arduino. Cấp nguồn ngoài thông qua Vin hoặc jack DC dƣới 6V có thể làm hỏng board. Cấp điện áp trên 13V qua chân reset có thể làm hỏng vi điều khiển ATMEGA328. Cƣờng độ vào/ra ở tất cả các chân Analog/Digital nếu vƣợt quá 200ma sẽ làm hỏng board mạch. Cấp điện áp trên 5.5V vào các chân Analog/Digital sẽ làm hỏng vi điều khiển. Cƣờng độ dòng điện qua một chân digital hoặc arduino bất kì vào khoảng 40ma, nếu vƣợt quá sẽ làm hỏng board. Khuyên bạn nếu không dùng để truyền nhận dữ liệu thì nên mắc một điện trở hạn dòng. Trên đây là những điều bạn cần tránh khi sử dụng an toàn, hiệu quả board mạch Arduino Uno R3. Các bạn có thể đọc thêm tài liệu khác. Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 5 BÀI 1: GIAO TIẾP ARDUINO VÀ MODULE DHT11 1. Giới thiệu về module DHT11 DHT11 là cảm biến tích hợp đo cả nhiệt độ và độ ẩm. Hình 1: IC DHT11 Một vài thông số DHT11: Đo độ ẩm khoảng 20% đến 95%. Nhiệt độ từ 0 0 C đến 50 0 C. Sai số độ ẩm: 5%. Sai số nhiệt độ: 2 0 C. 2. Giao tiếp Arduino Uno và Module DHT11 Sơ đồ kết nối DHT11 vào Arduino Uno nhƣ sau: Vcc=5VDC Gnd DATA Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 6 Thông số kết nối: Nguồn: sử dụng nguồn một chiều khoảng 5V. Nối Mass: nối chung mass(Gnd) với Arduino Uno. Chân Data: đây là chân dùng để giao tiếp qua lại giữa Arduino và DHT11. Có sử dụng điện trở kéo chân Data lên mức cao thƣờng trực, ta chọn điện trở này khoảng 10k và kéo lên Vcc=5VDC. 3. Truyền nhận dữ liệu giữa Arduino và DHT11 DHT11 sử dụng chuẩn giao tiếp một dây, dựa vào việc ta thiết lập chân DATA của ic DHT11 ở mức cao hoặc thấp, ngõ vào hoặc ngõ ra thì ta sẽ có thể giao tiếp đƣợc với DHT11 một cách dễ dàng. Ta sử dụng module đƣợc thiết kế sẵn dành cho các ứng dụng: Bạn chỉ việc cấp nguồn 5VDC vào chân VCC và nối mass chung với Arduino nếu bạn cấp bằng Arduino. Nếu bạn cấp nguồn ngoài cho module DHT11 thì bạn phải nối tất cả Mass chung lại với nhau. Cuối cùng là nối chân DATA vào pin số 2 của board Arduino Uno. Cách thức giao tiếp giữa Arduino và Module DHT11: Đầu tiên Arduino thiết lập chân Data là Output, kéo chân Data xuống 0 trong khoảng > 18ms( thƣờng lấy khoảng 25ms). Khi đó DHT11 hiểu Arduino muốn giao tiếp. Tiếp theo Arduino đƣa chân Data lên 1 và thiết lập là là chân Input. Sau từ khoảng 20us đến 40us DHT11 sẽ kéo chân Data xuống mức thấp. Nếu trong khoảng > 40us DHT11 không kéo chân Data xuống thấp thì giao tiếp thất bại. Chân Data sẽ ở mức thấp khoảng 80us, sau đó đƣợc DHT11 kéo lên mức cao khoảng 80us. Nếu đo đƣợc tín hiệu lên cao thì hoàn thành giao tiếp. Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 7 DHT11 sẽ trả về nhiệt độ và độ ẩm trong 5byte, Trong đó: Byte 1: giá trị phần nguyên của độ ẩm( RH%). Byte 2: giá trị phần lẻ của độ ẩm( RH%). Byte 3: giá trị phần nguyên của nhiệt độ( 0 C). Byte 4: giá trị phần lẻ của nhiệt độ( 0 C). Byte 5: là tổng của 4 byte trên, nếu giá trị byte 5 này không bằng tổng giá trị của 4 byte đầu thì giao tiếp thất bại. Code giao tiếp: Ta sử dụng thƣ viên giao tiếp của DHT11 và Arduino Uno R3. Thƣ viện giao tiếp các bạn có thể download tại link sau: https://github.com/adafruit/DHT-sensor-library các bạn tải thƣ viện về và chép vào file thƣ viên của Arduino nhé. Sau đó mở code DHT11 trong Example lên nhé. Đoạn code tham khảo: //============================================== void loop() { // Wait a few seconds between measurements. delay(2000); float h = dht.readHumidity(); //đọc giá trị độ ẩm. float t = dht.readTemperature(); //đọc giá trị nhiệt độ. if (isnan(h) || isnan(t) || isnan(f)) { //kiểm tra giao tiếp ok hay không. Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); //hiển thị RH=% lên Serial. Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); //hiển thị nhiệt độ lên Serial. Serial.print(t); Serial.print(" *C "); } //============================================== Các hàm nhƣ: dht.readHumidity(),dht.readTemperature() đều có trong thƣ viên DHT.h các bạn tải về. các bạn có thể tìm hiểu trong thƣ viện đó nhé. Với các giá trị h,t các bạn có thể xuất ra led 7 đoạn, LCD 1602 để làm những ứng dụng đơn giản phục vụ cho cuộc sống hàng ngày. Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 8 BÀI 2: GIAO TIẾP ARDUINO VÀ MODULE RTC DS1307 1. Giới thiệu về DS1307 DS1307 là ic tích hợp thời gian thực đƣợc sử dụng rất nhiều trong các ứng dụng liên quan đến thời gian. Hình ảnh DS1307 Hình 1: IC DS1307 Thông số kĩ thuật: 8 chân. Điện áp hoạt động 5V. Sử dụng nguồn pin 3V bên ngoài để duy trì hoạt động khi mất điện. 56 Byte RAM trống dành cho ngƣời dùng. Có thể xuất ra đƣợc xung tần số 1Hz, 4.096KHz, 8.192Kz, 32.768KHz. Tên và chức năng các chân của DS1307: STT TÊN CHÂN CHỨC NĂNG 1 Vcc Nguồn hoạt động 5VDC 2 Gnd Chung mass với nguồn cấp vào và pin 3V. 3 X1 Dùng cho thạch anh 32768Hz. 4 X2 5 SDA Đƣờng dữ liệu chuẩn I2C 6 SCL Đƣờng xung Clock chuẩn I2C 7 Vbat Chân Pin 3V nuôi mạch khi mất điện 8 SQW(OUT) Chân xuất xung có thể lập trình Bảng 1: Tên Và Chức Năng Các Chân DS1307 Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 9 Các thanh ghi trong DS1307: DS1307 bao gồm 7 thanh ghi(0x00- 0x06) chứa các thông tin về thời gian đồng hồ và một thanh ghi Control( 0x07) dùng để điều khiển xuất xung ra trên chân SQW. Hình 2: các thanh ghi trong DS1307 Chú ý: các giá trị trong các thanh ghi trong DS1307 là giá trị dạng BCD: Ví dụ: giả sử thanh ghi 0x00 có giá trị là: 00010100. Khi đó giá trị sẽ là: 0001=1 và 0100 =4 => giá trị sẽ là 14. Khi đó bạn muốn xuất ra trên lcd thì bạn biến đổi lại thành các giá trị thập phân hoặc xuất ra led 7 đoạn thì bạn dùng lun giá trị BCD này. Tên và chức năng các thanh ghi trong DS1307: Hình 3: tên và chức năng thanh ghi DS1307 Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN THƠ 10 Thanh ghi Control( 0x07): Hình 4: 8 bits thanh ghi Control Trong đó: OUT: lựa chọn mức logic xuất ra tại chân SQW/OUT khi không kích hoạt chức năng SQW/OUT: OUT=1: xuất ra mức logic 1. OUT=0: xuất ra mức logic 0. SQW=1: cho phép xuất xung clock ra chân này. Với tần số đƣợc thiết lập thông qua hai bit RS1 và RS0, ta có thể xem bảng sau: Hình 5: chức năng thanh ghi Control Theo bảng trên, nếu ta muốn làm ứng dụng về đèn giao thông, đếm sản phẩm cần sử dụng đến thời gian thực thì ta sử dụng tần số 1Hz sẽ tạo ra chuẩn T=1s. Có thể sử dụng tần số thông qua chân SQW/OUT này để làm tần số hoạt động của mạch ngoại vi,… 2. Module RTC DS1307- Thời gian thực Mạch RTC sử dụng DS1307 đƣợc thiết kế rất đơn giản với tần số hoạt động là 32768Hz, nguồn vào 5VDC với hai chân dữ liệu vào ra SCL, SDA. Có nguồn nuôi pin 3V để đảm bảo hoạt động ở chế độ chờ. Sơ đồ mạch RTC dùng DS1307: Hình 6: sơ đồ mạch điện RTC dùng DS1307 [...]... nối LM35 và Arduino Uno R3 Cách kết nối LM35 vào Arduino Uno R3 nhƣ sau: Hình 3: kết nối LM35 và Arduino Uno R3 14 ĐẠI HỌC CẦN THƠ Arduino Uno R3 Và Các Module Ta kết nối nhƣ sau: Chân số 1 của LM35 ta mắc vào nguồn out- 5VDC của Arduino Uno R3, có thể thì các bạn nên sử dụng nguồn 5VDC rời nhé Vì khi sử dụng nguồn của arduino có thể làm hƣ board Chân số 3 các bạn mắc vào Gnd của arduino Nếu sử dụng nguồn... đƣợc các giá trị BCD của thời gian Các bạn có thể sử dụng với ứng dụng của các bạn Các điều kiện Start, Stop giống với phần Write phía trên Thƣ viện RTC DS1307 và code Arduino các bạn có thể tải theo link sau: https://github.com/adafruit/RTClib 12 ĐẠI HỌC CẦN THƠ Arduino Uno R3 Và Các Module Một số hàm giao tiếp trong thƣ viện wire.h Arduino: Trên board Arduino Uno R3: SDA là chân analog 4, và SCL... nguồn và arduino Chân ở giữa các bạn mắc vào một trong 6 chân analog của arduino nhé ở đây mình mắc vào kênh A0 của Arduino Uno R3 Các bạn có thể mắc trực tiếp theo hình 3 cũng đƣợc, nếu cần chống nhiễu các bạn có thể mắc một tụ điện 102 vào 2 chân 1 và 3 của LM35 Hình 4: Tụ điện 102 3 Chuyển đổi ADC Arduino giao tiếp với LM35 hay các loại chip lập trình khác nhƣ: MSP430, AVR, STM, PIC,… thì cũng phải giao. .. thiết kế sẵn trên thị trƣờng Hình 7: Module RTC DS1307 3 Lập trình giao tiếp DS1307 và Arduino Uno R3 Để giao tiếp đƣợc với module RTC DS1307 các bạn phải tìm hiểu về giao tiếp I2C, trên internet có rất nhiều tài liệu về vấn đề này Các bạn phải nắm vững các phƣơng pháp, đặc điểm của giao tiếp I2C để từ đó có thể sử dụng nhiều module I2C khác nữa cho những mục đích của các bạn Về mặt lý thuyết thì trên... khởi tạo ban đầu cho DS1307 ta phải đƣa giá trị vào dạng BCD, code chuyển đổi: ((second/10 * 16) + (second % 10)) Với các ứng dụng của module thời gian thực RTC trong cuộc sống là rất nhiều, nhƣ hệ thống phun tƣới tự động, bật tắt tự động thiết bị đèn trong nhà để tiết kiệm điện năng ĐẠI HỌC CẦN THƠ 13 Arduino Uno R3 Và Các Module BÀI 3: GIAO TIẾP ARDUINO VÀ LM35 1 Giới thiệu về IC LM35 Đây là... Về mặt lý thuyết thì trên một mạng I2C có tối đa 128 thiết bị giao tiếp với Arduino, mỗi thiết bị này đều có một địa chỉ giao tiếp riêng biệt.DS1307 có địa chỉ Slave là 0x68 ĐẠI HỌC CẦN THƠ 11 Arduino Uno R3 Và Các Module Chế độ Write: Trong đó: Điều kiện Start( S): khi SCL, SDA đều ở mức cao Nếu Arduino muốn giao tiếp với DS1307 thì Arduino sẽ kéo chân SDA xuống thấp trong khi chân SCL vẫn ở mức.. .Arduino Uno R3 Và Các Module Trong đó: X1: thạch anh 32768Hz, nối vào hai chân 1, 2 của DS1307 Pin Cmos 3V: nguồn nuôi mạch khi mất điện, nối vào chân 3 DS1307 3 chân SCL(6), SDA(5), SQW/OUT(7): cần có điện trở 10kΩ kéo lên nguồn để hoạt động ổn định, không bị nhiễu khi truyền nhận dữ liệu Giữa nguồn và mass có thể gắn thêm tụ điện 0.1uF để mạch hoạt động tốt hơn Hình ảnh tham khảo về module. .. https://github.com/riyadhalnur/LM35_library_for _Arduino các bạn tải thƣ viện về sau đó giải nén ra và copy vào thƣ mục libraries của thƣ mục cài đặt arduino trong ổ C máy tính bạn nhé Sau đó mở phần mềm Arduino lên, vào Example và mở code lên nhé Tìm hiểu code giao tiếp: đây là code giao tiếp của LM35 và Arduino, đọc nhiệt độ hiển thị lên Serial Monitor của phần mềm Arduino 1.0.6: #include // include... delay(1000); // mỗi 1s update nhiệt độ một lần } Các bạn có thể xuất ra LCD 1602 hoặc led 7 đoạn tùy thích Việc xuất ra trên LCD 1602 khá dễ dàng, các bạn có thể tìm tài liệu về phần này nhé 16 ĐẠI HỌC CẦN THƠ Arduino Uno R3 Và Các Module BÀI 4: GIAO TIẾP ARDUINO VÀ MODULE SRF05 1 Giới thiệu module Cảm biến siêu âm SRF05 Chúng ta thƣờng thấy những máy đo khoảng cách vật, xác định mực nƣớc trong ao hồ,... chuyển đổi ADC trong Arduino để suy ngƣợc lại giá trị nhiệt độ Điện áp cấp cho LM35 là 5VDC Bƣớc thay đổi của LM35 là 5/1024 giá trị ADC Khi đó ta suy ra giá trị nhiệt độ đo đƣợc từ giá trị lƣợng tử ADC đầu vào thay đổi theo giá trị điện áp đầu vào theo công thức : Float temperature = (5.0*analogRead(A0)*100.0/1024.0) ĐẠI HỌC CẦN THƠ 15 Arduino Uno R3 Và Các Module Thƣ viện giao tiếp các bạn có thể tải . 2. Giao tiếp Arduino Uno và Module DHT11 5 Sơ đồ kết nối DHT11 vào Arduino Uno nhƣ sau: 5 3. Truyền nhận dữ liệu giữa Arduino và DHT11 6 Code giao tiếp: 7 BÀI 2: GIAO TIẾP ARDUINO VÀ MODULE. trình giao tiếp DS1307 và Arduino Uno R3 11 BÀI 3: GIAO TIẾP ARDUINO VÀ LM35 14 1. Giới thiệu về IC LM35 14 2. Kết nối LM35 và Arduino Uno R3 14 3. Chuyển đổi ADC 15 Arduino Uno R3 Và Các. trong datasheet nhé. 2. Kết nối LM35 và Arduino Uno R3 Cách kết nối LM35 vào Arduino Uno R3 nhƣ sau: Hình 3: kết nối LM35 và Arduino Uno R3 Arduino Uno R3 Và Các Module ĐẠI HỌC CẦN