Điều khiển cho một đối tượng có nhiều cách để thực hiện, tuy nhiên trong giới hạn của đồ án, chúng em đã điều khiển cho đề tài Hệ thống tưới cây tự động bằng Vi điều khiển.. MỤC LỤCCHƯƠN
Trang 1LỜI NÓI ĐẦU
Kính thưa thầy, cô!
Công nghệ tự động là một trong những ngành quan trọng bậc nhất của mọinền công nghiệp Nó luôn phát triển mạnh mẽ không ngừng, luôn thay đổi và tiếnhóa tới các mức độ cao hơn Là một sinh viên, em cảm thấy tự hào khi được tiếpthu những kiến thức cơ bản của ngành công nghệ ấy
Hiểu được mức độ quan trọng đó của ngành nghề mình đang học, chúng emluôn cố gắng tìm tòi và học hỏi để có thể hiểu, lập trình điều khiển cho một đốitượng Điều khiển cho một đối tượng có nhiều cách để thực hiện, tuy nhiên trong
giới hạn của đồ án, chúng em đã điều khiển cho đề tài Hệ thống tưới cây tự động bằng Vi điều khiển.
Chúng em xin gửi lời cảm ơn chân thành tới ThS Lê Thị Vân Anh, người đã
tận tình hướng dẫn, chỉ bảo nhóm chúngem để em có thể hoàn thành đồ án này mộtcách tốt nhất
Dù đã rất cố gắng nhưng do chủ đề rất rộng lớn của kĩ thuật và trình độ cóhạn nên chúng em không tránh khỏi sai sót Chúng em rất mong muốn nhận đượcnhững nhận xét, góp ý của thầy cô giáo
Nhóm sinh viên thực hiện
Nguyễn Anh Tuấn Trần Anh Tú
Vũ Văn Lương Nguyễn Việt Dương
Hà Nội, tháng 5 năm 2016
Trang 2MỤC LỤC
CHƯƠNG I: ĐẶT VẤN ĐỀ
Như các bạn đã biết, ngày nay việc áp dụng khoa học, kĩ thuật vào sản xuấtnông nghiệp là một việc làm cần thiết, giúp tăng năng suất, giảm thiểu sức nặngkhi lao động tay chân, ảnh hưởng sức khỏe, thay thế cho những phương thức
truyền thống cũ kĩ, đem lại hiệu quả kinh tế cao…Và, hệ thống tưới cây tự động
là một trong những ví dụ hết sức tiêu biểu cho những luẩn điểm đã nêu ở trên
Hiện nay, việc sử dụng hệ thống tưới cây tự động đã trở nên phổ biến,chúng không những tạo nên những hình thái đẹp mà còn đáp ứng nhu cầu nước củacây Chúng đóng góp cho sản xuất nông nghiệp, đặc biệt là ngành nông nghiệpcông nghệ cao Một hệ thống tưới tự động có rất nhiều lợi ích mà có thể bạn chưa
hề nghĩ tới, đặc biệt là vào mùa khô
Việc thiết kế hệ thống tưới cây tự động đòi hỏi bạn có một số thông tin vềcác vật tư thiết bị, như bộ điều khiển tưới cây tự động, van điện từ… Bên cạnh đó,việc lập trình, thiết kế hệ thống tưới cây tự động đòi hỏi nhiều kiến thức và kĩnăng Lập trình cho bộ điều khiển hệ thống tưới cây tự động có thể sử dụng rấtnhiều công cụ như: Vi điều khiển, PLC,…Do yêu cầu của môn học, ở đồ án này,
nhóm chúng em sẽ sử dụng Vi điều khiển Arduino UNO R3, chip đồng hồ thời gian thực DS1307 và LCDđể thiết kế cho hệ thống này.
1 Tìm hiểu hệ thống tưới cây tự động
1.1 Tìm hiểu lợi ích của hệ thống tưới cây tự động
1.1.1 Lợi ích của hệ thống tưới tự động trong cắt giảm chi phí:
Lý do nhiều nhất khi xây dựng một hệ thống tưới cây tự động mà mọi ngườithường nghĩ tới đó là chi phí lắp đặt, tuy nhiên ít người biết rằng một hệ thống tưới
tự động không chỉ đem lại đủ số vốn đầu tư mà còn mang lại những lợi ích khác
Trang 3so với tưới thủ công Điều này giúp bạn cắt giảm đáng kể hóa đơn tiền nước hàngtháng.
Tạo giá trị cho công trình: có thể bạn chưa biết, cảnh quan của một côngtrình chiếm 20% tổng giá trị công trình Một hệ thống tưới tốt và đúng cách thì làmcảnh quan thêm thu hút và từ đó tạo ra giá trị
Tiết kiệm thời gian: thời gian là tiền bạc, và thời gian thì vô cùng quý giá.Một hệ thống tưới tự độngsẽ thay bạn chăm sóc cho cây cối sân nhà, thời gian đóbạn có thể chăm sóc cho gia đình hay thực hiện những ý tưởng sáng tạo
Tiết kiệm đáng kể nguồn nhân công so với thực hiện công việc tưới tiêubằng thủ công
Hệ thống được đầu tư cố định, đảm bảo tuổi thọ lâu dài cho các thiết bị dùngtrong tưới tiêu
Hình ảnh minh họa
1.1.2 Lợi ích của hệ thống tưới tự động trong bảo vệ môi trường:
Ngoài việc cắt giảm chi phí, hệ thống tưới tự động còn có lợi cho môitrường Bảo vệ nguồn nước: dòng chảy là một trong số những nguyên nhân gây ônhiễm nguồn nước ngầm Một hệ thống được điều khiển tự động, đặc biệt là một
bộ cảm biến và tắt tự động, làm giảm đáng dòng chảy mang theo ô nhiễm và bụibẩn vào nguồn nước ngầm
Trang 4Tiết kiệm nước: nguồn tài nguyên nước đang ngày càng cạn kiệt, nhất làtrong thời đại hiện nay Hệ thống tưới tự động giúp bạn bảo vệ tài nguyên quý giá
ấy mà vẫn có được cảnh quan thiên nhiên cây cối xanh tốt Hệ thống tưới có thểkhai thác nguồn nước ngầm để phục vụ tưới tiêu, điều này làm cho chi phí phải trảđối với nước tưới là rất thấp
Hệ thống tưới tự động được thiết kế chuyên nghiệp sẽ tiết kiệm được tới60% lượng nước dùng trong tưới tiêu
Tóm lại, hệ thống tưới cây tự động vô cùng có lợi cả về mặt chi phí và môitrường, giúp bạn kiết kiệm thời gian và công sức nhưng công trình cây xanh củabạn thì vẫn luôn luôn tươi tốt
1.2 Các bước tiến hành lắp đặt hệ thống tưới cây tự động
Dựa vào diện tích canh tác, giống cây trồng, cần tiến hành đo đạc, thiết kế
mô hình hệ thống tưới cây tự động sao cho hợp lý
Xác định loại thiết bị tưới phù hợp với mô hình đã thiết kế bằng việc dựavào áp lực, lưu lượng nước, công suất của hệ thống thiết kế
Chọn bình tưới và vị trí đặt bình tưới: bình tưới quạt dùng cho khu vực lớn,bình tưới phun cho khu vực nhỏ Tùy theo thực tế khu canh tác mà đặt vị trí bìnhtưới sao cho nước được cung cấp đều khắp mọi nơi
Phân chia hệ thống tưới cây tự động thành các vùng khác nhau Lượng nướcthường không có sẵn để tiến hành tưới đồng loạt trên diện rộng, phải phân chia khuvực tưới, chọn vị trí đặt van để kiểm soát áp lực và lượng nước mỗi khu vực
Tiến hành lắp đặt hệ thống tưới cây tự động: chọn vị trí đặt bảng điều khiển,máy bơm, đường ống và van theo thiết kế
1.3 Thời gian tưới và các hệ thống tưới tự động hiện nay đang được ưa chuộng
1.3.1 Thời gian tưới:
Tưới nước vào buổi sớm trong ngày, tránh tưới nước khi trời gió:
Tưới nước vào sáng sớm thường tốt hơn so với lúc chiều tối vì giúp ngănngừa sự phát triển của nấm Tưới nước vào lúc sáng sớm hoặc lúc chiều muộn, đều
có thể giảm lượng nước thất thoát do bay hơi Tưới nước vào buổi sớm trong ngày
Trang 5cũng là cách phòng tránh tốt nhất các loại ốc sên và sâu chuột hại vườn Tránh tướinước khi trời gió vì gió có thể thổi tạt các tia nước và làm tăng quá trình bốc hơi.
Trong đồ án này, chúng em sẽ lập trình điều khiểu cho hệ thống tự động
phun nước tưới cây trong 1 phút vào các thời điểm 7h và 16h hàng ngày.
1.3.2 Các hệ thống tưới hiện nay được ưa chuộng
Hệ thống tưới tự động kiểu phun sương
Hệ thống tưới tự động kiểu phun mưa
Hệ thống tưới tự động kiểu nhỏ giọt
Vv
CHƯƠNG II: THIẾT KẾ PHẦN CỨNG
1 Sơ đồ khối chức năng
Hình 2.1: Sơ đồ khối chức năng của hệ thống tưới cây tự động
Vi Điều Khiển
Sensor
Sensor
RTCLCD display
Relay
Water
Trang 6Trong đó:
- Relay: module Relay 1 kênh
- RTC: Chip đồng hồ thời gian thực DS 1307
- Sensor: Cảm biến nhiệt độ DS18B20
- LCD display: màn hình hiển thị LCD
2 Khâu cảm biến – đo lường (Dùng cảm biến nhiệt độ DS18B20)
2.1 Cấu tạo
Cảm biến đo nhiệt độ DS18b20 sử dụng chuẩn giao tiếp 1 WIRE (đường dẫntín hiệu và đường dẫn điện áp nguồn nuôi có thể dùng chung trên một dây dẫn).Ngoài ra, nhiều cảm biến có thể dùng chung trên một đường dẫn (Rất thích hợp vớicác ứng dụng đo lường đa điểm)
Cảm biến DS18b20 thường dùng gồm có 3 chân: VCC, GND, DATA nhưhình dưới:
Hình 2.2: Sơ đồ chân của cảm biến nhiệt độ DS18B20
Trang 7Hình 2.3: Sơ đồ kết nối của cảm biến nhiệt độ DS18B20
- Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng (từ 3,0 V đến 5,5 V)
- Dòng tiêu thụ tại chế độ nghỉ cực nhỏ
- Thời gian lấy mẫu và biến đổi thành số tương đối nhanh, không quá 200 ms
- Mỗi cảm biến có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trênchip (on chip)
3 Khâu điều khiển
Khâu điều khiển chính là bộ não của toàn bộ hệ thống Trong khâu này,chúng ta sẽ dùng Vi điều khiển Arduino Uno R3 làm trung tâm điều khiển
3.1 Arduino
Arduino đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càngchứ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
Trang 8dùng trong cộng đồng nguồn mở (open-source) Tuy nhiên tại Việt Nam Arduinovẫn còn chưa được biết đến nhiều
3.1.1 Hiện tượng Arduino
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là nhữngngười tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây, gầngiống với những gì Apple đã làm được trên thị trường thiết bị di động Số lượngngười dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đạihọc đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về mức độ phổbiến
Arduino là gì mà có thể khiến ngay cả những sinh viên và nhà nghiên cứu tạicác trường đại học danh tiếng như MIT, Stanford, Carnegie Mellon phải sử dụng;hoặc ngay cả Google cũng muốn hỗ trợ khi cho ra đời bộ kit Arduino Mega ADKdùng để phát triển các ứng dụng Android tương tác với cảm biến và các thiết bịkhác?
Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tương tác vớicác thiết bị phần cứng như cảm biến, động cơ, đèn hoặc các thiết bị khác Đặcđiểm nổi bật của Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, vớimột ngôn ngữ lập trình có thể học một cách nhanh chóng ngay cả với người ít amhiểu về điện tử và lập trình Và điều làm nên hiện tượng Arduino chính là mức giárất thấp và tính chất nguồn mở từ phần cứng tới phần mềm Chỉ với khoảng $30,người dùng đã có thể sở hữu một bo Arduino có 20 ngõ I/O có thể tương tác vàđiều khiển chừng ấy thiết bị
Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vịvua vào thế kỷ thứ 9 là King Arduin Arduino chính thức được đưa ra giớithiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo
sư Massimo Banzi, là một trong những người phát triển Arduino, tại trườngInteraction Design Instistute Ivrea (IDII) Mặc dù hầu như không được tiếp thị gì
cả, tin tức về Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyềnmiệng tốt đẹp của những người dùng đầu tiên Hiện nay Arduino nổi tiếng tới nỗi
có người tìm đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino
Trang 93.1.2 Khả năng của bo mạch Arduino
Bo mạch Arduino sử dụng dòng vi xử lý 8-bit megaAVR của Atmel với haichip phổ biến nhất là ATmega328 và ATmega2560 Các dòng vi xử lý này chophép lập trình các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnhvới các loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó cónhiều ngõ có khả năng xuất tín hiệu PWM, các ngõ đọc tín hiệu analog và cácchuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C)
3.1.3 Sức mạnh xử lý
- Xung nhịp: 16MHz
- EEPROM: 1KB (ATmega328) và 4KB (ATmega2560)
- SRAM: 2KB (Atmega328) và 8KB (Atmega2560)
- Flash: 32KB (Atmega328) và 256KB (Atmega2560)
3.1.4 Đọc tín hiệu cảm biến ngõ vào
- Digital:Các bo mạch Arduino đều có các cổng digital có thể cấu hình làm ngõ
vào hoặc ngõ ra bằng phần mềm Do đó người dùng có thể linh hoạt quyết định sốlượng ngõ vào và ngõ ra Tổng số lượng cổng digital trên các mạch dùngAtmega328 là 14, và trên Atmega2560 là 54
- Analog: Các bo mạch Arduino đều có trang bị các ngõ vào analog với độ phân
giải 10-bit (1024 phân mức, ví dụ với điện áp chuẩn là 5V thì độ phân giải khoảng0.5mV) Số lượng cổng vào analog là 6 đối với Atmega328, và 16 đối vớiAtmega2560 Với tính năng đọc analog, người dùng có thể đọc nhiều loại cảm biếnnhư nhiệt độ, áp suất, độ ẩm, ánh sáng, gyro, accelerometer…
3.1.5 Xuất tín hiệu điều khiển ngõ ra
- Digital output:Tương tự như các cổng vào digital, người dùng có thể cấu hình
trên phần mềm để quyết định dùng ngõ digital nào là ngõ ra Tổng số lượng cổngdigital trên các mạch dùng Atmega328 là 14, và trên Atmega2560 là 54
- PWM output: Trong số các cổng digital, người dùng có thể chọn một số cổng
dùng để xuất tín hiệu điều chế xung PWM Độ phân giải của các tín hiệu PWMnày là 8-bit Số lượng cổng PWM đối với các bo dùng Atmega328 là 6, và đối vớicác bo dùng Atmega2560 là 14 PWM có nhiều ứng dụng trong viễn thông, xử lý
Trang 10âm thanh hoặc điều khiển động cơ mà phổ biến nhất là động cơ servos trong cácmáy bay mô hình.
3.1.6 Chuẩn giao tiếp
Serial:
Đây là chuẩn giao tiếp nối tiếp được dùng rất phổ biến trên các bo mạchArduino Mỗi bo có trang bị một số cổng Serial cứng (việc giao tiếp do phần cứngtrong chip thực hiện) Bên cạnh đó, tất cả các cổng digital còn lại đều có thể thựchiện giao tiếp nối tiếp bằng phần mềm (có thư viện chuẩn, người dùng không cầnphải viết code) Mức tín hiệu của các cổng này là TTL 5V Lưu ý cổng nối tiếp RS-
232 trên các thiết bị hoặc PC có mức tín hiệu là UART 12V Để giao tiếp đượcgiữa hai mức tín hiệu, cần phải có bộ chuyển mức, ví dụ như chip MAX232 Sốlượng cổng Serial cứng của Atmega328 là 1 và của Atmega2560 là 4 Với tínhnăng giao tiếp nối tiếp, các bo Arduino có thể giao tiếp được với rất nhiều thiết bịnhư PC, touchscreen, các game console…
SPI:
Đây là một chuẩn giao tiếp nối tiếp đồng bộ có bus gồm có 4 dây Với tínhnăng này các bo Arduino có thể kết nối với các thiết bị như LCD, bộ điều khiểnvideo game, bộ điều khiển cảm biến các loại, đọc thẻ nhớ SD và MMC…
TWI (I2C):
Đây là một chuẩn giao tiếp đồng bộ khác nhưng bus chỉ có hai dây Với tínhnăng này, các bo Arduino có thể giao tiếp với một số loại cảm biến như thermostatcủa CPU, tốc độ quạt, một số màn hình OLED/LCD, đọc real-time clock, chỉnh âmlượng cho một số loại loa…
Trang 113.1.7 Môi trường lập trình bo mạch Arduino
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lạinhiều lợi thế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phầnmềm Môi trường lập trình đơn giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu
và dựa trên nền tảng C/C++ rất quen thuộc với người làm kỹ thuật Và quan trọng
là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng nguồn mở là cực
kỳ lớn
Hình 2.5:Giao diện IDE của Arduino
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biếnnhất hiện nay là Windows, Macintosh OSX và Linux Do có tính chất nguồn mởnên môi trường lập trình này hoàn toàn miễn phí và có thể mở rộng thêm bởi ngườidùng có kinh nghiệm
Ngôn ngữ lập trình có thể được mở rộng thông qua các thư viện C++ Và dongôn ngữ lập trình này dựa trên nền tảng ngôn ngữ C của AVR nên người dùnghoàn toàn có thể nhúng thêm code viết bằng AVR C vào chương trình nếu muốn
3.1.8 Arduino UNO R3 là gì?
Nhắc tới dòng mạch Arduino dùng để lập trình, cái đầu tiên mà người tathường nói tới chính là dòng Arduino UNO Hiện dòng mạch này đã phát triển tớithế hệ thứ 3 (R3) Bạn sẽ bắt đầu đến với Arduino qua thứ này
Trang 12Hình 2.6: Arduino UNO R3
Một vài thông số của Arduino UNO R3
Dòng tối đa trên mỗi chân I/O 30 mA
Trang 13Năng lượng
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấpnguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V Thườngthì cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từcổng USB Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, bạn sẽ làm hỏngArduino UNO
Các chân năng lượng
- GND (Ground) : cực âm của nguồn điện cấp cho Arduino UNO Khi bạn
dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân nàyphải được nối với nhau
- 5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
- 3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
- Vin (Voltage Input) : để cấp nguồn ngoài cho Arduino UNO, bạn nối cực
dương của nguồn với chân này và cực âm của nguồn với chân GND
- IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được
đo ở chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy
Trang 14nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấpnguồn.
- RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đươngvới việc chân RESET được nối với GND qua 1 đ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 hếtsức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho ArduinoUNO Việc làm chập mạch nguồn vào của Arduino UNO sẽ biến nó thành mộtmiếng nhựa chặn giấy mình khuyên bạn nên dùng nguồn từ cổng USB nếu có thể
Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho cácthiết bị khác, không phải là các chân cấp nguồn vào Việc cấp nguồn sai vị trí cóthể làm hỏng board Điều này không được nhà sản xuất khuyến khích
Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới6V có thể làm hỏng board
Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điềukhiển ATmega328
Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của ArduinoUNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển
Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO
sẽ làm hỏng vi điều khiển
Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của ArduinoUNO vượt quá 40mA sẽ làm hỏng vi điều khiển Do đó nếu không dùng để truyềnnhận dữ liệu, bạn phải mắc một điện trở hạn dòng
Bộ nhớ
- Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
- 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộnhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này
sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá
Trang 15- 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khaibáo khi lập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cầnnhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lạitrở thành thứ mà bạn phải bận tâm Khi mất điện, dữ liệu trên SRAM sẽ bịmất.
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ
có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ởmỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiểnATmega328 (mặc định thì các điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
- 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận(receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bịkhác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính
là 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 2 chân này nếu không cần thiết
- Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với
độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàmanalogWrite() Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra
ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V nhưnhững chân khác
- Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài cácchức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằnggiao thức SPI với các thiết bị khác
- LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấmnút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân
số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Trang 16Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Vớichân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng cácchân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng cácchân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếpI2C/TWI với các thiết bị khác
3.2 Module Relay 1 kênh (5V-220V/10A)
- Sử dụng Relay 5V đóng ngắt điện áp 220V 10A
Trang 173.3.Module BUCK DC-DC LM2596 3A (module chuyển đổi nguồn)
Mô Tả:
- Mạch thay đổi điện áp 1 chiều với điện áp 1 chiều (mức cao sang mức thấp hoặcngược lại)
- Sử dụng LM2596S-ADJ
- Thay đổi điện áp bằng biến trở
- Điện áp đầu vào: 4V-35V
- Điện áp đầu ra: 1.23V-30V
- Dòng đầu ra: 3A (max)
- Hiệu suất chuyển đổi: 92% (tối đa)
4.1 Chip đồng hồ thời gian thực DS1307
DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái niệmthời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà con người đang
sử dụng, tình bằng giây, phút, giờ…DS1307 là một sản phẩm của DallasSemiconductor (một công ty thuộc Maxim Integrated Products) Chip này có 7
Trang 18thanh ghi 8-bit chứa thời gian là: giây, phút, giờ, thứ (trong tuần), ngày, tháng,năm Ngoài ra DS1307 còn có 1 thanh ghi điều khiển ngõ ra phụ và 56 thanh ghitrống có thể dùng như RAM DS1307 được đọc và ghi thông qua giao diện nối tiếpI2C (TWI của AVR) nên cấu tạo bên ngoài rất đơn giản DS1307 xuất hiện ở 2 góiSOIC và DIP có 8 chân như trong hình 2.9.
Hình 2.9: Hai gói cấu tạo chip DS1307
Các chân của DS1307 được mô tả như sau:
- X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động
cho chip
- VBAT: cực dương của một nguồn pin 3V nuôi chip
- GND: chân mass chung cho cả pin 3V và Vcc
- Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển.
Chú ý là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫnđang hoạt động (nhưng không ghi và đọc được)
- SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần số
của xung được tạo có thể được lập trình Như vậy chân này hầu như không liênquan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trốngchân này khi nối mạch
- SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C mà chúng ta
đã tìm hiểu trong bài TWI của AVR
Có thể kết nối DS1307 bằng một mạch điện đơn giản như trong hình 2.10
Trang 19Hình 2.10: Mạch ứng dụng đơn giản của DS1307
Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn,mạch dao động, mạch điều khiển logic, mạch giao điện I2C, con trỏ địa chỉ và cácthanh ghi (hay RAM) Do đa số các thành phần bên trong DS1307 là thành phần
“cứng” nên chúng ta không có quá nhiều việc khi sử dụng DS1307 Sử dụngDS1307 chủ yếu là ghi và đọc các thanh ghi của chip này Vì thế cần hiểu rõ 2 vấn
đề cơ bản đó là cấu trúc các thanh ghi và cách truy xuất các thanh ghi này thôngqua giao diện I2C Phần này chúng ta tìm hiểu cấu trúc các thanh ghi trước, điềukhiển DS1307 bằng AVR làm ví dụ
Bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh địa chỉ từ 0 đến 63(từ 0x00 đến 0x3F theo hệ hexadecimal) Tuy nhiên, thực chất chỉ có 8 thanh ghiđầu là dùng cho chức năng “đồng hồ” (tôi sẽ gọi là RTC) còn lại 56 thanh ghi bỏtrông có thể được dùng chứa biến tạm như RAM nếu muốn Bảy thanh ghi đầu tiênchứa thông tin về thời gian của đồng hồ bao gồm: giây (SECONDS), phút(MINUETS), giờ (HOURS), thứ (DAY), ngày (DATE), tháng (MONTH) và năm(YEAR) Việc ghi giá trị vào 7 thanh ghi này tương đương với việc “cài đặt” thờigian khởi động cho RTC Việc đọc giá từ 7 thanh ghi là đọc thời gian thực mà chiptạo ra Ví dụ, lúc khởi động chương trình, chúng ta ghi vào thanh ghi “giây” giá trị
42, sau đó 12s chúng ta đọc thanh ghi này, chúng ta thu được giá trị 54 Thanh ghithứ 8 (CONTROL) là thanh ghi điều khiển xung ngõ ra SQW/OUT (chân 6) Tuynhiên, do chúng ta không dùng chân SQW/OUT nên có thề bỏ qua thanh ghi thứ 8
Tổ chức bộ nhớ của DS1307 được trình bày trong hình 2.11.
Trang 20Hình 2.11: Tổ chức bộ nhớ của DS1307
Vì 7 thanh ghi đầu tiên là quan trọng nhất trong hoạt động của DS1307,chúng ta sẽ khảo sát các thanh ghi này một cách chi tiết Trước hết hãy quan sát tổ
chức theo từng bit của các thanh ghi này như trong hình 2.12.
Hình 2.12: Tổ chức các thanh ghi thời gian
Điều đầu tiên cần chú ý là giá trị thời gian lưu trong các thanh ghi theo dạngBCD BCD là viết tắt của cụm từ Binary-Coded Decimal, tạm dịch là các số thậpphân theo mã nhị phân Ví dụ bạn muốn cài đặt cho thanh ghi MINUTES giá trị
42 Nếu quy đổi 42 sang mã thập lục phân thì chúng ta thu được 42=0x2A Theocách hiểu thông thường chúng ta chỉ cần gán MINUTES=42 hoặc