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ới cá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.. Board Arduino Mega Tổng quan Ar
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
NGHIÊN CỨU THIẾT KẾ HỆ THÔNG TƯỚI TỰ ĐỘNG
TRONG NHÀ TRỒNG THÔNG MINH
Mã số đề tài:
Thuộc nhóm ngành khoa học:Kỹ thuật điện tử và THCN
Trang 2TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
ĐỀ TÀI:
NGHIÊN CỨU THIẾT KẾ HỆ THÔNG TƯỚI TỰ ĐỘNG
TRONG NHÀ TRỒNG THÔNG MINH
Người hướng dẫn:Ngô Thanh Bình
Chức danh khoa học, học vị:Tiến sĩ
Sinh viên thực hiện:Nguyễn Văn Giáp Nam, Nữ: Nam
Hoàng Công Hoàn Nam, Nữ: Nam
Nguyễn Thiện Phú Nam, Nữ: Nam
Dân tộc : Kinh Lớp, khoa : Điện – Điện tử Năm thứ : 3
Số năm đào tạo: 4 Ngành học :Kỹ thuật điện tử và THCN
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 8
Chương 1: KHÁI QUÁT 9
1.1 Khái quát về nhà trồng thông minh 9
1.2 Giới hạn bài toán giám sát nhà trồng 10
Chương 2: THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ 11
2.1 Giới thiệu chung về Arduino 11
2.2 Giới thiệu về board ArduinoMega 2560 12
2.3 Giới thiệu về board Arduino Data logger 17
2.4 Giới thiệu về Arduino LCD KeyPad Shield 18
2.5 Giới thiệu về cảm biến nhiệt độ LM35 20
2.6 Giới thiệu về cảm biến đo cường độ ánh sang Photo cell (CdS photoresistor) 21
2.8 Giới thiệu chung về phần mềm mô phỏng Proteus 23
2.9 Thư viện Arduino trong Proteus 24
2.10 Giới thiệu về Arduino IDE và ngôn ngữ lập trình cho Arduino 24
2.11 Giới thiệu về phần mềm Visual Studio 2010 26
Chương 3: THIẾT KẾ, LẬP TRÌNH,LẮP ĐẶT MẠCH VÀ 28
VẼ ĐỒ THỊ THỂ HIỆN GIÁ TRỊ 28
3.1 Thiết kế mạch trên Proteus 28
3.2 Lập trình đo nhiệt độ,ánh sang,độ ẩm hiển thị lên LCD 16.2 29
3.2.1 Lập trình đo nhiệt độ,ánh sáng 29
3.2.2 Lập trình hiển thị giá trị lên LCD 16.2 30
3.3 Lập trình điều khiển động cơ và đặt ngưỡng cảnh báo giới hạn 31
3.3.1 Lập trình điều khiển động cơ 31 3.3.2 Lập trình đặt ngưỡng cảnh báo và điều chỉnh động cơ theo hướng cảnh
Trang 43.4.2 Lập trình xuất dữ liệu ra thẻ SD 35
3.4.3 Giao diện cổng kết nối Serial 37
3.5 Lập trình nhận dữ liệu từ cổng COM ảo, file dữ liệu và vẽ đồ thị cho các tham số nhiệt độ,ánh sáng và độ ẩm 37
3.5.1 Thiết kế giao diện 38
3.5.2.Lập trình cho các đối tượng 39
3.5.3 Mô phỏng 40
3.6 Lắp đặt mach đo nhiệt độ,ánh sang ,độ ẩm và thử nghiệm trên các board 41 3.6.1 Lắp đặt cảm biến đo ánh sang ,nhiệt độ và độ ẩm trên Arduino datalogger 41
3.6.2 Lắp đặt mạch điều khiển động cơ 41
3.6.3 Lắp đặt LED giám sát và cảnh báo 42
3.6.4 Tổng thể mạch đang hoạt động khi đã cấp nguồn và nạp Code 43
3.7 Chi phí thực hiện đề tài 44
Chương4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Error! Bookmark not defined TÀI LIỆU THAM KHẢO 56
PHỤ LỤC 57
Trang 5DANH MỤC HÌNH ẢNH
Hình 1:Hệ thống tưới nước tự động cho cây trồng 9
Hình 2.1: Những thành viên khởi xướng Arduino 11
Hình 1.2 Board Arduino Mega 12
Hinh 2.3 Sơ đồ nguyên lý của boar Arduino mega 2650 13
Hình 2.4 Bảng mạch data logger 17
Hình 2.5.LCD KeyPad Shield 19
Hình 2.6 Cảm biến LM35 20
Hình 2.7 cảm biến đo cường độ ánh sang Photo cell (CdS photoresistor) 21
Hình2.8 hình ảnh IC l293D 22
Hình 2.9 Giao diện khởi động phần mềm Proteus 23
Hình 2.10 Các linh kiện trong thư viện Arduino cho Proteus 24
Hình 2.11 Giao diện phần mềm Arduino IDE 25
Hình 2.12: Giao diện phần mềm Visual Studio 2010 26
Hinh 2.13: Giao diện thiết kế trên C# 27
Hình 3.1 Sơ đồ nguyên lý của mạch 28
Hình 3.2 Lưu đồ thuật toán điều chỉnh động cơ 31
Hình 3.3 IC DS1307 34
Hình 3.4 Lưu đồ thuật toán cho DS1307 34
Hình 3.5 Bảng số liệu đọc từ file Exel của thẻ SD 36
Hình 3.6 Dao diện kết nối cổng Serial 37
Hình 3.7 Giao diện thiết kế 37
Hình 3.8.Giao diện thiết kế phần mềm 38
Hình 3.9 Kết quả mô phỏng 40
Hình 3.10 Sơ đồ kết nối các cảm biến 41
Hình 3.11 Mạch Arduino datalogger sau khi hoàn thành 41
Hình 3.12 Led cảnh báo ngưỡng 42
Hình 3.13 Hình ảnh toàn mạch hoạt động sau khi đã nạp code và cấp nguồn 43
Trang 6DANH MỤC BẢNG SỐ LIỆU
Bảng 2.1 Sơ đồ kết nối chân của Arduino LCD KeyPad Shield 19 Bảng 3.1 Sơ đồ chân kết nối của các linh kiện 29 Bảng 3.2 Bảng chi phí thực hiện đề tài 44
Trang 7TRƯỜNG ĐẠI HỌC GTVT
THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI
1 Thông tin chung:
- Tên đề tài: NGHIÊN CỨU THIẾT KẾ HỆ THÔNG TƯỚI TỰ
ĐỘNG TRONG NHÀ TRỒNG THÔNG MINH
- Sinh viên thực hiện: Nguyễn Văn Giáp
Hoàng Công Hoàn Nguyễn Thiện Phú
- Lớp: Kỹ thuật điện tử và THCN
-Khoa: Điên – Điện tử
-Năm thứ: 3
-Số năm đào tạo: 4
- Người hướng dẫn: Ngô Thanh Bình
2 Mục tiêu đề tài:
Thiết kế làm một hệ thống tưới nước, độ ẩm, nhiệt độ tự động được điều khiển bởi mạch điện tử Arduino ứng dụng vào nhà trồng thông minh
3 Tính mới và sáng tạo:
Sử dụng công nghệ arduino còn khá mới lạ
4 Kết quả nghiên cứu:
Chạy thành công mạch arduino và ứng dụng trong thực tế
5 Đóng góp về mặt kinh tế - xã hội,giáo dục và đào tạo, an ninh, quốc phòng và khả năng áp dụng của đề tài:
Trang 86.Công bố khoa học của sinh viên từ kết quả nghiên cứu của đề tài (ghi rõ tên tạp
chí nếu có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):
Ngày tháng 04 năm 2015
Sinh viên chịu trách nhiệm chính
thực hiện đề tài
(ký, họ và tên)
Nhận xét của người hướng dẫn về những đóng góp khoa học của sinh viên thực
hiện đề tài (phần này do người hướng dẫn ghi):
Ngày tháng04 năm 2015
Người hướng dẫn
(ký, họ và tên)
Trang 9THÔNG TIN VỀ SINH VIÊN CHỊU TRÁCH NHIỆM CHÍNH THỰC HIỆN ĐỀ TÀI
I SƠ LƯỢC VỀ SINH VIÊN:
Họ và tên: Hoàng Công Hoàn
Sinh ngày: 19 tháng:01 năm: 2015
Nơi sinh: TP Nam Định – Nam Định
Lớp: Kỹ thuật điện tử và THCN Khóa:53
Khoa: Điện – Điện tử
Địa chỉ liên hệ: Ngõ 458 Trần Cung, Quận Cầu Giấy, Hà Nội
Điện thoại: 0983213094 Email: conghoan94.utc@gmail.com
Trang 10LỜI NÓI ĐẦU
Ngày nay khoa học công nghệ ngày càng phát triển, vi điều khiển AVR và vi điều khiển PIC ngày càng thông dụng và hoàn thiện hơn , nhưng có thể nói sự xuất hiện
củaArduino vào năm 2005 tại Italia đã mở ra một hướng đi mới cho vi điều khiển Sự xuất hiện của Arduino đã hỗ trợ cho con người rất nhiều trong lập trình và thiết kế, nhất là đối với những người bắt đầu tìm tòi về vi điều khiển mà không có quá nhiều kiến thức, hiểu biết sâu sắc về vật lý và điện tử Phần cứng của thiết bị đã được tích hợp nhiều chức năng cơ bản và là mã nguồn mở Ngôn ngữ lập trình trên nền Java lại vô cùng dễ sử dụng tương thích với ngôn ngữ C và hệ thư viện rất phong phú và được chia sẻ miễn phí Chính vì những lý do như vậy nên Arduino hiện đang dần phổ biến và được phát triển ngày càng mạnh mẽ trên toàn thế giới
Trên cơ sở kiến thức đã học trong môn học : Tin học đại cương , Điện tử tương
tự và số… cùng với những hiểu biết về các thiết bị điện tử, chúng em đã quyết định
thực hiện đề tài :NGHIÊN CỨU THIẾT KẾ HỆ THÔNG TƯỚI TỰ ĐỘNG TRONG NHÀTRỒNG THÔNG MINH, HIỂN THỊ TRÊN LCD VÀ BIỄU DIỄN TRÊN ĐỒ THỊvới mục đích để tìm hiểu thêm về Arduino, làm quen với các thiết bị
điện tử và nâng cao hiểu biết cho bản thân Do kiến thức còn hạn hẹp, thêm vào đó đây
là lần đầu chúng em thực hiện đề tài nên chắc chắn không tránh khỏi những thiếu sót , hạn chế vì thế chúng em rất mong có được sự góp ý và nhắc nhờ từ thầy giáo để có thể hoàn thiện đề tài của mình Chúng em xin chân thành cảm ơn thầy giáo TS.Ngô Thanh Bình đã giúp đỡ chúng em rất nhiều trong quá trình tìm hiểu ,thiết kế và hoàn thành đề
tài này
Hà Nội, ngày 11 tháng 4 năm 2015
Trang 11Chương 1: KHÁI QUÁT 1.1 Khái quát về nhà trồng thông minh
Tại một số địa phương đã sử dụng nhà trồng để canh tác một số loại cây, hoa, rau có giá trị kinh tế cao, tuy nhiên hiện nay vẫn chưa có đơn vị nào tiến hành nghiên cứu
thiết kế nhà trồng đáp ứng điều kiện kinh tế, môi trường của nước ta
Thực tế trong cuộc sống bận rộn hiện nay, nhiều bạn vẫn có thú vui là trồng những cây cảnh, vườn rau trong không gian trống của nhà mình như sân thượng, ban công Tuy nhiên, trong những lúc bạn bận đi công tác nhiều ngày thì những cây cảnh và vườn hoa
ở nhà sẽ không ai tưới nước.Nhận thấy sự cần thiết phải phải xây dựng nhà trồng nhằm đẩy mạnh sự nghiệp phát triển nông nghiệp, nông thôn nhóm nghiên cứu chúng em đã thực hiện đề tài tưới nước tự động được điều khiển bởi mạch điện tử Arduino
Hình 1:Hệ thống tưới nước tự động cho cây trồng
Trang 121.2 Thực tiễn áp dụng của Arduino vào đề tài
Nhóm xin đưa ra một ví dụ về ứng dụng của Arduino về giám sát nhà vườn Họ sẽ
cung cấp cho một liên lạc hiện đại để làm vườn và kết nối một số thông tin về khu vườn của họ với Internet Sử dụng một cảm biến đọ ẩm và nhiệt độ đất kết nối với một Arduino và một chip Wifi để tự động gửi số đo từ khu vườn của bạn lên Internet Một dịch vụ gọi Carriots để xử lý các dữ liệu và hiển thị nó lên trên một trang Web Sau đó, một email hoặc tin nhắn SMS hiển thị cảnh báo có thể được gửi cho bạn tự động nếu
độ ẩm giảm xuống thấp hơn một ngưỡng nhất định Hình ảnh dưới dạng đại diện cho
hệ thống khi lắp ráp hoàn chỉnh và với bộ cảm biến chôn xuống đất bên cạnh một bo mạch hoàn chỉnh từ ví dụ thực tiễn này cùng với sự giúp đỡ của giáo viên hướng dẫn , nhóm đã lựa chọn và phát triển đề tài theo hướng sử dụng kid Arduino để thực hiện đề tài của mình
1.2 Giới hạn bài toán giám sát nhà trồng
Do đây mới là lần đầu tiên những thành viên trong nhóm làm một đề tài nghiên cứu, cộng với kiến thức còn nhiều hạn chế, đề tài bọn em vẫn còn một số hạn chế như : + Chưa đo đạc được nhiều thông số, quy mô áp dụng còn hạn chế
+ Chưa đẩy được dữ diệu qua mạng
Trang 13Chương 2: THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ
2.1 Giới thiệu chung về Arduino
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY trên toàn thế giới trong vài năm gần đây,gần giống vớnhững gìApple đã làm được trên thị trường thiết bị di động Số lượng ngườ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 đại họ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
Hình 2.1: Những thành viên khởi xướng Arduino
Arduino là gì mà có thể khiến ngay cả những sinh viên và nhà nghiên cứu tại cá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 ADK dù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ới cá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ới mộ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 am hiể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 board Arduino có 20 ngõ I/O có thể tương tác và điều khiển chừng
Trang 14như 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ường Interaction 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ền miệ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
2.2 Giới thiệu về board ArduinoMega 2560
Hình 1.2 Board Arduino Mega
Tổng quan
Arduino Mega 2560 là mộtbo mạch chủ sử dụngvi điều khiển ATmega2560 Nó
có 54 chân kỹ thuật số đầu vào / đầu ra (trong đó 15 chân có thể xuất ra xung PWM),
16 đầu vào analog, 4 UARTs (cổng nối tiếp phần cứng),16 MHz dao động tinh thể, kết nối USB, một jack cắm điện, một tiêu đề ICSP, và một nút reset Nó chứa tất cả mọi thứ cần thiết để hỗ trợ các vi điều khiển; chỉ cần kết nối nó với máy tính bằng cáp USB hoặc điện nó với một bộ chuyển đổi AC-to-DC hoặc pin để bắt đầu Mega là tương thích với hầu hết các lá chắn được thiết kế cho các Arduino Duemilanove hoặc Diecimila
Mega 2560 là một bản cập nhật cho Mega Arduino , mà nó thay thế
Các Mega2560 khác với tất cả các bảng trước ở chỗ nó không sử dụng các FTDI chip
Trang 15Sơ đồ nguyên lý
Hinh 2.3 Sơ đồ nguyên lý của boar Arduino mega 2650
Trang 16CHI TIẾT VỀ THÔNG SỐ
Điện áp đầu vào (được đề
Điện áp đầu vào (giới hạn) 6-20V
Digital I / O Pins 54 (trong đó 15 người cung cấp đầu ra PWM)
DC hiện tại mỗi I / O Pin 40 mA
DC hiện tại cho 3.3V Pin 50 mA
Bộ nhớ flash 256 KB trong đó 8 KB sử dụng bởi bộ nạp khởi
Bo mạch có thể hoạt động trên một nguồn cung cấp bên ngoài của 6-20 volt Nếu cung cấp ít hơn 7V, tuy nhiên, pin 5V có thể cung cấp ít hơn năm volt và bo mạchcó thể không ổn định Nếu sử dụng nhiều hơn 12V, bộ điều chỉnh điện áp có thể
bị quá nóng và làm hỏng các bảng mạch Phạm vi đề nghị là 7-12 volt
Các chân điện như sau:
VIN Các điện áp đầu vào cho các board Arduino khi nó được sử dụng một nguồn điện bên ngoài (như trái ngược với 5 volts từ các kết nối USB hoặc nguồn điện
Trang 17 5V pin này xuất ra một 5V quy định từ điều trên diễn đàn Hội đồng quản trị
có thể được cung cấp nguồn điện hoặc từ các jack cắm điện DC (7 - 12V), kết nối USB (5V), hoặc pin VIN của hội đồng quản trị (7-12V) Cung cấp điện áp qua các 5V hoặc 3.3V chân đi qua bộ điều chỉnh, và có thể làm hỏng máy của bạn Chúng tôi không báo cho nó
3v3 Một nguồn cung cấp 3,3 volt được tạo ra bởi những điều trên tàu Vẽ hiện hành tối đa là 50 mA
GND trệt chân
IOREF pin này trên bảng Arduino cung cấp các tài liệu tham khảo điện áp
mà các vi điều khiển hoạt động Một lá chắn cấu hình đúng cách có thể đọc các pin điện áp IOREF và chọn nguồn năng lượng thích hợp hoặc cho phép dịch điện áp trên các kết quả đầu ra để làm việc với các 5V hoặc 3.3V
Bộ nhớ
Các ATmega2560 có 256 KB bộ nhớ flash để lưu trữ mã (trong đó có 8 KB được sử dụng cho các bộ nạp khởi động), 8 KB của SRAM và 4 KB của EEPROM (mà có thể được đọc và ghi với các thư viện EEPROM )
Đầu vào và đầu ra
Mỗi phòng trong số 54 chân kỹ thuật số trên Mega có thể được sử dụng như một đầu vào hoặc đầu ra, sử dụngpinMode () , digitalWrite () , và digitalRead () chức năng Chúng hoạt động tại 5 volts Mỗi pin có thể cung cấp hoặc nhận được tối đa 40
mA và có một điện trở kéo lên bên trong (ngắt kết nối theo mặc định) 20-50 kOhms Ngoài ra, một số chân có chức năng đặc biệt:
Serial: 0 (RX) và 1 (TX); Nối tiếp 1: 19 (RX) và 18 (TX); Nối tiếp 2: 17 (RX) và 16 (TX); Nối tiếp 3: 15 (RX) và 14 (TX) Được sử dụng để nhận (RX) và truyền (TX) TTL dữ liệu nối tiếp Pins 0 và 1 cũng được kết nối với các chân tương ứng của ATmega16U2 USB-to-TTL nối tiếp chip
Ngắt ngoài: 2 (gián đoạn 0), 3 (gián đoạn 1), 18 (gián đoạn 5), 19 (gián đoạn 4), 20 (gián đoạn 3) và 21 (gián đoạn 2) Các chân này có thể được cấu hình để
Trang 18 SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) Các chân này hỗ trợ SPI giao tiếp bằng cách sử dụng thư viện SPI Các chân SPI cũng được chia ra trên tiêu đề ICSP, đó là chất tương thích với Uno, Duemilanove và Diecimila
LED: 13 Có một built-in LED kết nối với pin số 13 Khi pin là giá trị cao, đèn LED được bật, khi pin là LOW, nó ra
TWI: 20 (SDA) và 21 (SCL) Hỗ trợ TWI giao tiếp sử dụng các thư viện Wire Lưu ý rằng các chân không ở cùng một vị trí như các chân TWI trên Duemilanove hoặc Diecimila
Các Mega2560 có 16 đầu vào analog, mỗi trong số đó cung cấp 10 bit độ phân giải (tức là 1024 giá trị khác nhau).Theo mặc định họ đo từ mặt đất đến 5 volts, mặc
dù là nó có thể thay đổi vào cuối trên của phạm vi của họ bằng cách sử dụng pin Aref
Truyền thông kết nối với máy tính
Arduino Mega2560 có một số phương tiện truyền thông với một máy tính, một Arduino, hoặc vi điều khiển khác.Các ATmega2560 cung cấp bốn phần cứng UARTs cho TTL (5V) giao tiếp nối tiếp Một ATmega16U2 ( ATmega 8U2 về sửa đổi 1 và phiên bản 2 bảng) trên kênh board một trong những trên USB và cung cấp một cổng com ảo với phần mềm trên máy tính (máy tính Windows sẽ cần một file inf, nhưng OSX và Linux máy sẽ công nhận hội đồng quản trị như một cổng COM tự động Các phần mềm Arduino bao gồm một màn hình nối tiếp cho phép dữ liệu văn bản đơn giản được gửi đến và đi từ hội đồng quản trị Các RX và TX đèn LED trên bảng sẽ nhấp nháy khi dữ liệu đang được truyền đi thông qua ATmega8U2 / ATmega16U2 chip và USB kết nối với máy tính (nhưng không cho giao tiếp nối tiếp trên các chân 0 và 1)
Một thư viện SoftwareSerial cho phép giao tiếp nối tiếp trên bất kỳ của các
Trang 19Các ATmega2560 cũng hỗ trợ TWI và SPI truyền thông Các phần mềm Arduino bao gồm một thư viện Wire để đơn giản hóa việc sử dụng các bus TWI; Đối với SPI giao tiếp, sử dụng cácthư viện SPI
Lập trình
Arduino Mega có thể được lập trình với các phần mềm Arduino Các ATmega2560 trên Mega Arduino đi kèm preburned với một bộ nạp khởi động cho nó mà không sử cho phép bạn tải lên mã mới dụng một lập trình viên phần cứng bên ngoài Nó giao tiếp bằng cách sử dụng gốc STK500 giao thức ( tài liệu tham khảo , các tập tin tiêu đề C )
2.3 Giới thiệu về board Arduino Data logger
Hình 2.4 Bảng mạch data logger Các bo mạch datalogger có một vài điều để làm cho nó một cách tuyệt vời để theo dõi dữ liệu Top Left - Có một đồng hồ thời gian thực (RTC) trong đó có một chip DS1307, và pin dự phòng có thể sử dụng trong 7 năm Điện áp cấp của board là 3.3V đến 3V để mạch có thể hoạt động một cách tốt nhất có 1 LED màu xanh lá cây PWR
Trang 20hai đèn LED sử dụng configuratble.Kết nối một chân từ bất kỳ từ Arduino và nối
L1 hoặc L2 vào chân kết nối bằng 1 sợi dây dẫn để bật LED1 hoặcLED2sáng
Một nút reset sẽ thiết lập lại toàn bộ Arduino, tiện dụng khi bạn muốn reset lại chương trình của boar Arduino chính Một shifter mức giữ thẻ SD an toàn từ các tín hiệu 5V có khả năng gây hại từ Arduino.Nó sẽ làm việc với các tín hiệu 3V là tốt
3V - đây là 3V đầu ra Một mức điện áp tham chiếu 3.3V chất lượng tốt
của nó mà bạn có thể sử dụng đến một cách rất tốt
SQ - đây là squarewave tùy chọn từ RTC Bạn phải dung lệnh để kích
hoạt nó một cách tùy chọn nhận được một squarewave chính xác
WP - này là viết vàbảo vệ pad trên thẻ SD, bạn có thể sử dụng điều này
để phát hiện nếu các tab bảo vệ ghi trên thẻ bằng cách kiểm tra pin này
CD - đây là thẻ phát hiện pad trên thẻ SD Khi điều này được kết nối với
đất, một thẻ SD được chèn vào Nên sử dụng pullup nội bộ trên một pin Arduino nếu bạn muốn sử dụng pad này
CS - đây là Chip Select pin cho thẻ SD Nếu bạn cần phải cắt giảm các
dấu vết để pin 10 vì nó là mâu thuẫn, pad này có thể được hàn với bất kỳ pin kỹ thuật
số và các phần mềm tái tải lên
L2 và L1 - đây là những tùy chọn sử dụng đèn LED Kết nối với bất kỳ
pin kỹ thuật số,chọn mức cao để bật đèn LED tương ứng Các đèn LED đã có 470 ohm điện trở trong series
2.4 Giới thiệu về Arduino LCD KeyPad Shield
Các tấm LCD Bàn phím được phát triển cho tương thíchvớicác boar Arduino,
để cung cấp một 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 hiện lựa chọn vv….Nó bao gồm một 1602 ký tự trắng đèn nền màu xanh LCD Bàn phím bao gồm 5 phím -, xuống chọn, lên, phải và bỏ đi Để lưu các chân IO
kỹ thuật số, giao diện bàn phím chỉ sử dụng một kênh ADC Giá trị quan trọng được đọc thông qua một điện áp chia 5 giai đoạn
Trang 222.5 Giới thiệu về cảm biến nhiệt độ LM35
Cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của nó tỉ lệ tuyến tính với nhiệt độ thang Celsius Chúng không yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh
Đặc điểm chính của cảm biến LM35 :
- Điện áp đầu vào từ 4V đến 30V
- Độ phân giải điện áp đầu ra là 10mV/˚C
- Độ chính xác cao ở 25 ˚C là 0.5˚
- Trở kháng đầu ra thấp 0.1 cho 1mA tải
Dải nhiệt độ đo được của LM35 là từ -55˚C đến 150˚C với các mức điện áp ra khác nhau Xét một số mức điện áp sau :
- Nhiệt độ 55˚C điện áp đẩu ra -550mV
- Nhiệt độ 25˚C điện áp đầu ra 250mV
- Nhiệt độ 150˚C điện áp đầu ra 1500mV
Tùy theo cách mắc của LM35 để ta đo các giải nhiệt độ phù hợp Đối với hệ thống
này thì đo từ 0˚C đến 150˚C
Trang 232.6 Giới thiệu về cảm biến đo cường độ ánh sang Photo cell (CdS photoresistor)
Hình 2.7 cảm biến đo cường độ ánh sang Photo cell (CdS photoresistor)
Tổng quan
Tế bào CdS là bộ cảm biến ánh sáng nhỏ Như mặt nguệch ngoạc được tiếp xúc với ánh sáng nhiều thì điện trở đi xuống Khi ánh sáng của nó,về 5-10KΩ, khi tối nó đi lên đến 200KΩ
Để sử dụng, kết nối một bên của tế bào ảnh (một trong hai, đối xứng của nó) để điện (ví dụ 5V) và phía bên kia để pin đầu vào analog vi điều khiển của bạn Sau đó kết nối một 10K kéo xuống điện trở từ đó pin analog mặt đất Các điện áp trên pin sẽ được 2.5V hoặc cao hơn khi ánh sáng của nó ra và gần mặt đất khi tối của nó
Kích thước:Length: 4.46mm / 0.18in
Chiều rộng: 5mm / 0.20in
Chiều cao: 2.09mm / 0.08in
Trang 24 2.7 giới thiệu về IC mạch cầu H L293D
Hình2.8 hình ảnh IC l293D
L293D là IC cầu H điều khiển động cơ
điều khiển 2 L293D gồm 4 kênh điều khiển có thể động cơ DC hoặc 1 động cơ bước 4 pha (5 dây) Để điều khiển động cơ DC, bạn sẽ sử dụng 2 kênh của L293D cho
1 động cơ
L293D đã được tích hợp sẵn đi ốt bảo vệ vi điều khiển chống lại dòng cảm ứng khi động cơ khởi động hoặc tắt Vì vậy, bạn chỉ cần gắn motor vào L293D và các chân của vi điều khiển tương ứng, là có thể làm cho động cơ chạy ngay Dòng L293D có 2 loại: L293B/E và L293D, dòng L293B có khả năng chịu tải cao hơn (1A so với 600mA của L293D) nhưng không có đi ốt bảo vệ vi điều khiển
Với mỗi motor, bạn cần 3 chân từ vi điều khiển kết nối với L293D, trong đó có
1 chân điều khiển tốc độ đông cơ dùng xung PWM, 2 chân còn lại là logic 0 hoặc 1 dùng điều chỉnh chiều quay của motor
Tín hiệu điều khiển được xử lý độc lập với nhau với từng đầu ra Ví dụ: bạn có thể điều khiển 2 động cơ DC chạy với tốc độ khác nhau, hướng khác nhau, 1 động cơ
Trang 25Để sử dụng các động cơ công suất của L293D chịu được tải cao hơn, bạn chỉ việc gắn song song 2 hoặc nhiều L293 lại với nhau Với 2 IC L293, bạn sẽ có tải chịu được là 1.2A và tải đỉnh là 2A
Ngoài ra, L293D có chức năng tự động ngắt khi bị nóng quá mức nhằm bảo vệ IC Lưu ý: tuyệt đối không bao giờ làm chập mạch các ngõ ra motor của L293D, nếu không bạn sẽ làm cháy một bên cầu H ngay lập tức
2.8 Giới thiệu chung về phần mềm mô phỏng Proteus
Phần mềm Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện
tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS-51, PIC, AVR, … Proteus là phần mềm mô phỏng mạch điện tử của Lancenter Electronics, mô phỏng cho hầu hết các linh kiên điện tử thông dụng, đặn biệt hỗ trợ cho
các MCU như PIC, 8051, AVR, Motorola
Phần mềm bao gồm 2 chương trình: ISIS cho phép mô phỏng mạch và ARES
dùngđể vẽ mạch in Proteus là công cụ mô phỏng cho các loại vi điều khiển khá tốt, nó
hỗ trợcác dòng vi điều khiển PIC, 8051, PIC, dsPIC, AVR, HC11,…các giao tiếp I2C, SPI,CAN, USB, Ethenet…ngoài ra còn mô phỏng các mạch số, mạch tương tự một cách hiệu quả
Trang 262.9 Thư viện Arduino trong Proteus
Thư viện Arduino là một bổ sung rất hay cho phần mềm mô phỏng Proteus nó giúp cho việc mô phỏng Arduino được thuận tiện và dễ dàng hơn thay vì chỉ mô phỏng được chip ATmega328(nhân của Arduino), thư viện này được phát triển bởi các kĩ sư Cesar
Osaka, Daniel Cezar, Roberto Bauer và được đăng tải trên blog tiếng Bồ Đào Nha: http://blogembarcado.blogspot.de/
Thư viện bao gồm các linh kiện sau:
- Arduino Uno (Phiên bản chip ATmega328 chân DIP)
- Arduino Uno (Phiên bản chip ATmega328 chân SMD
- Arduino Mega
- Arduino Lilypad
- Arduino Nano
- Cảm biến siêu âm Ultrasonic V2
Hình 2.10 Các linh kiện trong thư viện Arduino cho Proteus
2.10 Giới thiệu về Arduino IDE và ngôn ngữ lập trình cho Arduino
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thông dụng mang lại nhiều lợithế cho Arduino, tuy nhiên sức mạnh thực sự của Arduino nằm ở phần mềm Môi
Trang 27nền tảng C/C++ rất quen thuộc với người làm kỹ thuật Và quan trọng hơn 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.11 Giao diện phần mềm Arduino IDE
Arduino là phần mềm dùng để lập trình cho arduino Môi trường lập trình cho arduino làIDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX và Lunix 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 hơn bởi người dù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à ngôn ngữ
Trang 282.11 Giới thiệu về phần mềm Visual Studio 2010
- Visual Studio 2010 là công cụ xây dựng , lập trình mã nguồn để quản trị thông tin hệ thống phát triển phần mềm của doanh nghiệp , xây dựng các ứng dụng cho máy
để bàn và các ứng dụng web
- Visual Studio 2010 Ultimate được xem như là một trong những công cụ thiết
kế tốt nhất hiện nay với việc phát triển phần mềm, triển khai các giải pháp doanh nghiệp
Hình 2.12: Giao diện phần mềm Visual Studio 2010
- Visual Studio 2010 Ultimate được tăng cường thêm những giải pháp giảm thiểu nguy cơ trong quá trìh phát triển thiết kế
- Visual Studio 2010 Ultimate tạo ra những giải pháp về phần mềm , phát triển một số cung cụ tuyệt vời của ứng dụng lập trình
- Có thể nói Visual Studio 2010 Ultimate là phần mềm không thể thiếu dành cho các kỹ thuật viên phần mềm và một số công ty phát triển phần mềm
Những chức năng chính của Visual Studio 2010 Ultimate
- Phát triển mã nguồn, phần mềm
- Thực hiện giải pháp phần mềm
- Ứng dụng lập trình
Trang 29- Tạo ra các ứng dụng trên máy tính có cài đặt NET Framework 2.0
- Sử dụng không gian System Windown.Form
- Thiết kế giao diện trực quan
b Thiết kế giao diện quản lý thông số nhà trồng
* Giao diện thiết kế
Hinh 2.13: Giao diện thiết kế trên C#
Trang 30Chương 3: THIẾT KẾ, LẬP TRÌNH,LẮP ĐẶT MẠCH VÀ
VẼ ĐỒ THỊ THỂ HIỆN GIÁ TRỊ 3.1 Thiết kế mạch trên Proteus
Nhóm nhiệt rồi tín hiệu từ này lại được truyền Arduino ra LCD.Ngoài ra,ngoài giá trị nhiệtđộ,cường độánh sang, giá trịđộẩmđượcđọc từ một biến trở10K mang giáđã đồng ý với phương án thiết kế mạch đo nhiệt độ, ánh sáng hiển thị lên LCD bao gồm các chức năng hiển thị độ C và cường độánh sáng.Ở phương pháp này, tín hiệu được truyền từ cảm biến LM35,cảm biến ánh sáng photocell vào Arduino và được tính toán
ra trị tượng trưng có thể điều chỉnhđược cho phù hợp với môi trường
Tiếp đến là phần kết nối với IC L293D để điều khiển 2 động cơ DC một chiều 12V IC L293D được kết nối trực tiếp vớiArduino mega sử với mỗi động cơphải sử dụng 3 chân điều khiển.Và mỗi động cơ có thểđiều chỉnhđược tốc độ qua các biến trở 100K được kết nối trực tiếp vào các cổnganalog của Arduino mega.Ngoài ra các động
cơ có thểđảo chiều bằng cách nhấn dữ phím bấm cũngđược kết nối trực tiếp vào bo mạch chủ
Cuối cùng làđặt ngưỡng cảnh báo giám sát nhiệt độ cho phù hợp với nhu cầu người dung, bằng các LED LED màuđỏ thể hiện nhiệt độđang cao.LED màu xanh thể hiện nhiệt độ vừađủ LED màu trắng thể hiện nhiệtđộđang thấp.Các LED cũngđược kết nối trực tiếp với Arduino mega
Trang 31Bảng 3.1 Sơ đồ chân kết nối của các linh kiện Tên linh kiện Chân linh kiện Chân kết nối với Arduino
EN2 Vin1 Vin2 Vin3 Vin4
Trang 32tempC=(val/(1024*10))*5000 = val* 0.48828125 (trong đó: val là giá trị đọc vào từ cảm biến, tempC là giá trị nhiệt độ thang Celsius) Chuyển đổi sang nhiệt độ thang Farenheit (oF) ta dùng công thức: tempF=(tempC*9)/5+32 = tempC*1.8+32
Cònđối với cảm biến ánh sáng photocell việc đọc giá trịđo là thực sự rất đơn giản Chỉđơn giản làđọc trực tiếp từ cổnganalog A0, để đo cường độ ánh sáng Giá trị này
sẽ rơi vào khoảng từ 0-700 Tùy vào các thí nghiệm thực tế mà người dung quan sátđược
để khuyến cáođược giá trị cần thiết cho phù hợp với nhu cầu sử dụng của mình
Giá trị của độẩm sẽđược lấy một cách tượng trưng từ một chiếtáp 50K được nối trực tiếp vào chânanalog của Arduino mega
Sau đây là code đầy đủ của phần đo nhiệt độ, ánhsáng và độẩm
int tempReading = analogRead(tempPin);
float voltage = tempReading * aref_voltage / 1024;
float temperatureC = tempReading * 0.48828125;
float temperatureF = (temperatureC * 9 / 5) + 32;
3.2.2 Lập trình hiển thị giá trị lên LCD 16.2
Sau khi các giá trị của các cảm biến được đọc thì shieuld LCD sẽ có nhiệm vụđọc các giá trị lên màn hình.Do màn hình LCD 16.2 chỉ hiển thịđược 2 dòng nên ởđây bọn em ưu tiên hiển thị giá trị cường độ sang ở dòng thứ nhất,giá trị nhiệt độở dòng thứ 2 với kiểuđộ C,lấy chính xác giá trịđọcđược sau dấu phẩy 2 ký tự
Các chân BS E D4 D5 D6 D7 của LCD sẽ lần lượtđược kết nối trực tiếp vào các chân digital sau 8 9 4 5 67 để giúp cho nó có thể hiển thị.Tất cả quá trìnhđọc và ghi dữ liệu sẽđược tạo trễ là 500ms
Code kết nối chân và hiển thị giá trị lên LCD
LiquidCrystal lcd(8 ,9 , 4, 5, 6, 7);
Trang 33VÒNG LẶP CHÍNH
CÀI ĐẶT
Trang 34Các chân của IC L293D được Pin vào Arduino mega cho phù hợp và chính xác Trong vòng lặp,giá trị điều khiển tốc độ động cơ được thực hiện bằng cách chia việc đọc tương tự từ các chếtáp xoay với 4
Phải chia cho 4 vì giá trị analog nhận được ở khoãng giữa 0 và 1023 màđầu ra analog cần được từ 0 đến 255
Nếu nút được nhấn, động cơ đảo chiều quay, nếu không nó sẽ chạy theo hướng ngược lại.Việcđảo chiều động cơ nàyđược thực hiện bằng chân pin switch Vì vậy, nếu các nút không được nhấn, đây sẽ quay theo chiều thuận, nếu không nó sẽ quay theo chiều nghich
Tốc độ của động cơ và chức năng đảo chiều sẽ được chuyển tới một chức năng gọi là 'setMotor' rằng sẽ thiết lập các chân thích hợp trên chip điều khiển để điều khiển động cơ
void setMotor(int speed, boolean reverse)
Đâu tiên, tốc độ được dùng một thiết lập bằng cách sử dụnganalogWrite cho
phép pinđược chọn làm việc Việc cho phép pin của L293D có thểđiều chỉnh hoặc tắt bất kể các chân in1, in2, in3 và in4 của L293Dkhi được thiết lập để
Để điều khiển hướng của động cơ, các chân in1 và in2,in3 và in4 phải được thiết lập các giá trị trái ngược nhau
Ví dụ
Trang 35Các '!' lệnh có nghĩa là 'không' Vì vậy, các lệnh digitalWrite đầu tiên cho in1 đặt nó giá vào bất cứ điều gì ngược lại với các trị của 'đảo ngược', do đó, nếu ngược lại
là HIGH nó đặt nó để LOW và ngược lại
DigitalWrite tiếp theo Điều này có nghĩa rằng nó sẽ luôn luôn là đối lập với các mức giá trị ở in1
3.3.2 Lập trình đặt ngưỡng cảnh báo và điều chỉnh động cơ theo hướng cảnh báo
Ở đây nhóm thiết kế và sử dụng 3 đèn led mầu
+ Nếu ở nhiệt độ thấp thì led mầu trắng sáng và đồng thời cho một động cơ quay + Nếu ở nhiệt độ thấp thì led mầu trắng và xanh sáng và đồng thời cho hai động cơ quay
+ Nếu ở nhiệt độ thấp thì cả 3 đèn led sáng và đồng thời cho ba động cơ quay
=>động cơ quay sẽ tượng trưng cho tưới việc
Giá trị nhiệt độđượcđọcở thang đo độ C sẽđược lấy và đặt ngưỡng cảnh báo và giám sát cho hệthống
if (temperatureC < 21) lightLED(whitePin);
if (temperatureC >= 21 && temperatureC <= 24) lightLED(greenPin);
if (temperatureC > 24) lightLED(redPin);
void lightLED(byte whatLED){
digitalWrite(whitePin, LOW); //white led is off
digitalWrite(redPin, LOW); //red led is off
digitalWrite(greenPin, LOW); //green led is off
Ởđây nhiệt độ sẽđược phân chia thành các mức khác nhau theo nhu cầu của người sữ dụng để bật các led tương ứng với các đặc trưng phù hợp
3.4 Lập trình sử dụng modul Arduino datalogger và truyền ra cổng Serial
3.4.1 Lập trình sử dụng đồng hồ đếm thời gian thực DS1307 trên shieul datalogger
Các RTC (read time clock) sẽ được sử dụng là DS1307 Đây là IC có chi phí
thấp và nó cóthểsử dụng trong một khoảng thời gian dài nhờ một quả Pin nhỏ
Trang 36Hình 3.3 IC DS1307 Khi có Pin, DS1307 sẽ đánh dấu cho một thời gian dài, ngay cả khi các Arduino mất nguồn, hoặc được lập trình lại
Hình 3.4 Lưu đồ thuật toán cho DS1307
Vòng lặp chính
Trong vòng lặpnày ,có các phần chính như sau
1 Thiết lập thời gian chờ cho đến khung làm việc của mình và các lượt tiếp theo
2 Yêu cầu thời gian và ngày tháng hiện From RTC
3 Đăng nhập thời gian và ngày tháng vào thẻ SD
4 Đọc cảm biến ánh sang,nhiệt độ vàđộẩm
5 Đăng những bài đọc vào thẻ SD
6 Dữ liệu đồng bộ hóa vào thẻ theo thời gian định sẵn
Trang 37Điều quan trọng đầu tiên là khâu Delay () gọi hàm, đây là bước Arduino mega
chờ để thực hiện mệnh lệnh Sau đó, nhóm lần lập trình cho sang đèn LED màu xanh, điều này cho chúng ta biết rằng chúng tađang có quá trình đọc / ghi dữ liệu
Tiếp theo chúng ta gọi millis () để có được những "thời gian kể từ Arduino bật
'và đăng đó vào thẻ
Sau đó,rất quan trọng là sữ dụng câu lệnh RTC.now () gọi để có được một bản
chụp của thời gian Một khi chúng ta có điều đó, ta sẽ viết một dấu thời gian (seconods
kể từ năm 2000) cũng như các ngày trong YY / MM / DD HH: SS: MM định dạng
thời gian mà có thể dễ dàng được công nhận bởi một bảng tính
3.4.2 Lập trình xuất dữ liệu ra thẻ SD
Thẻ SD dung để ghi lại tất cả dữ liệu mà các cảm biếnđo được bao gồm cả thời gian được cập nhập từ RTC của IC DS1307.dữ liệu sẽđược lưu vào một file định dạng là một file exel
char filename[] = "LOGGER00.CSV";
for (uint8_t i = 0; i < 100; i++) {
filename[6] = i/10 + '0';
filename[7] = i%10 + '0';
if (! SD.exists(filename)) {
logfile = SD.open(filename, FILE_WRITE);
break; // leave the loop!
}
Trang 38nhưLOGGERnn csv, ký tựnn là một con số.Cách thức bắt đầu để tạo
ra LOGGER00.CSV và cách tăng thời gian mỗi khi các tập tin đã tồn tại, cho đến khi chúng tôi nhận được để LOGGER99.csv , nhómđã lập trình để cho sẽ có một tập tin
mới mỗi khi khởi động Arduino
Để tạo ra một tập tin, nhómsử dụng một số Unix cờ lệnh mà bạn có thể nhìn
thấy trong logfile.open () FILE_WRITE nghĩa để tạo ra các tập tin và ghi dữ liệu
vào nó
Nếu chúng ta quản lý để tạo ra một tập tin thành công và ghi vào thẻ SD, nhóm
in ra tên vào cổng Serial để quan sát trực tiếp bằng cổng nối tiếp với máy tính
Trang 393.4.3 Giao diện cổng kết nối Serial
Hình 3.6 Dao diện kết nối cổng Serial
3.5 Lập trình nhận dữ liệu từ cổng COM ảo, file dữ liệu và vẽ đồ thị cho các tham
số nhiệt độ,ánh sáng và độẩm
Hình 3.7 Giao diện thiết kế
Trang 403.5.1 Thiết kế giao diện
>>>Từ thanh công cụ Toolbox kéo thả các hình được giao diện như trên
Hình 3.8.Giao diện thiết kế phần mềm
>>> Thiết lập thuộc tính cho các đối tượng
1 Nút nhấn Kết
nối
btketnoi Kết Nối Kết nối cổng Com
2 Nút nhấn Ngắt btngat Ngắt Ngắt kết nối cổng Com
3 Nút nhấn Xóa btxoa Xóa Xóa dữ liệu text
4 Nút nhấn
Thoát
btthoat Thoát Thoát khỏi giao diện
5 Nút nhấn Start btmode Start Vẽ đồ thị nhiệt độ,ánh sáng,