- Vật liệu thiết yếu:
- Phương pháp làm việc:
- Điều kiện tiên quyết:
- Hoạt động của Điều khiển từ xa AC:
- Sơ đồ mạch và giải thích:
- Giải mã tín hiệu điều khiển từ xa AC của bạn:
- Chương trình Arduino chính:
- Hoạt động của Hệ thống điều khiển nhiệt độ AC tự động:
AC (Điều hòa không khí) vốn từng được coi là một món đồ xa xỉ và chỉ được tìm thấy trong các khách sạn lớn, rạp chiếu phim, nhà hàng, v.v… Tuy nhiên, hiện nay hầu hết mọi người đều có AC trong nhà để đánh bại mùa hè / mùa đông và những người mắc phải, lo lắng về một điều chung. Đó là mức tiêu thụ điện cao của họ và bộ sạc do nó. Trong dự án này, chúng tôi sẽ tạo ra một Mạch điều khiển nhiệt độ tự động nhỏ có thể giảm thiểu bộ sạc điện bằng cách thay đổi nhiệt độ AC tự động dựa trên nhiệt độ phòng. Bằng cách thay đổi nhiệt độ cài đặt định kỳ, chúng ta có thể tránh làm cho AC hoạt động ở các giá trị nhiệt độ thấp hơn trong thời gian dài và do đó làm cho nó tiêu thụ ít điện năng hơn.
Hầu hết chúng ta đều đã từng trải qua tình huống phải thay đổi nhiệt độ cài đặt của Máy điều hòa không khí sang các giá trị khác nhau trong các thời điểm khác nhau trong ngày để giúp chúng ta cảm thấy thoải mái trong suốt thời gian. Để tự động hóa quy trình này, dự án này sử dụng cảm biến Nhiệt độ (DHT11) đọc nhiệt độ hiện tại của phòng và dựa trên giá trị đó, nó sẽ gửi lệnh đến AC thông qua IR blaster tương tự như Điều khiển từ xa của AC. AC sẽ phản ứng với các lệnh này như thể nó đang phản ứng với Điều khiển từ xa của nó và do đó điều chỉnh nhiệt độ. Khi nhiệt độ trong phòng của bạn thay đổi, Arduino cũng sẽ điều chỉnh nhiệt độ cài đặt của AC để duy trì nhiệt độ theo cách bạn muốn. Nghe hấp dẫn phải không?… Hãy xem cách xây dựng một cái.
Vật liệu thiết yếu:
- Arduino Mega 2560
- TSOP1738 (HS0038)
- IR Led
- Cảm biến nhiệt độ / độ ẩm DHT11
- Bất kỳ đèn LED màu nào và điện trở 1K (tùy chọn)
- Breadboard
- Kết nối dây
Phương pháp làm việc:
Tất cả các Điều khiển từ xa trong nhà của chúng tôi mà chúng tôi sử dụng để điều khiển TV, rạp hát tại nhà, AC, v.v. hoạt động với sự trợ giúp của IR Blasters. Một IR blaster là gì, nhưng một LED hồng ngoại có thể Blaster một tín hiệu bằng cách đập lặp đi lặp lại; tín hiệu này sẽ được bộ thu trong thiết bị điện tử đọc. Đối với mỗi nút khác nhau trên điều khiển từ xa, một tín hiệu duy nhất sẽ được phát ra sau khi người nhận đọc được sẽ được sử dụng để thực hiện một nhiệm vụ cụ thể được xác định trước. Nếu chúng tôi có thể đọc tín hiệu này phát ra từ Điều khiển từ xa, thì chúng tôi có thể bắt chước tín hiệu tương tự bằng đèn LED hồng ngoại khi cần thiết để thực hiện tác vụ cụ thể đó. Trước đây chúng tôi đã tạo một mạch IR Blaster cho Universal IR Remote.
Một TSOP là một IR Receiver mà có thể được sử dụng để giải mã các tín hiệu đến từ các Remotes. Bộ thu này sẽ được giao tiếp với Arduino để phát tín hiệu cho từng nút và sau đó một đèn LED hồng ngoại sẽ được sử dụng với Arduino để bắt chước tín hiệu khi được yêu cầu. Bằng cách này, chúng tôi có thể giành quyền kiểm soát AC của mình bằng Arduino.
Bây giờ, tất cả những gì còn lại là đọc giá trị Nhiệt độ bằng DHT11 và hướng dẫn AC tương ứng bằng cách sử dụng các tín hiệu IR. Để làm cho dự án trông hấp dẫn hơn và thân thiện hơn với người dùng, tôi cũng đã thêm một màn hình OLED hiển thị nhiệt độ hiện tại, độ ẩm và nhiệt độ cài đặt AC. Tìm hiểu thêm về cách sử dụng OLED với Arduino.
Điều kiện tiên quyết:
Đây dự án Nhiệt độ điều khiển AC Automatic là hơi tiên tiến cho độ mới bắt đầu, tuy nhiên với sự giúp đỡ của vài hướng dẫn khác bất cứ ai có thể xây dựng này với vấn đề thời gian. Vì vậy, nếu bạn là một người mới tuyệt đối với OLED, DHT11 hoặc TSOP thì vui lòng quay lại các hướng dẫn này bên dưới, nơi bạn có thể tìm hiểu những điều cơ bản và cách bắt đầu với chúng. Danh sách này có vẻ hơi dài, nhưng hãy tin tôi rằng nó rất dễ và đáng học hỏi, nó cũng sẽ mở ra nhiều dự án mới.
- Mạch cơ bản sử dụng TSOP và IR LED để làm việc
- Hướng dẫn giao diện cơ bản cho DHT11 với Arduino
- Hướng dẫn giao diện cơ bản cho OLED với Arduino
- Giao diện TSOP với Arduino để đọc các giá trị từ xa IR
Đảm bảo bạn có Arduino Mega và bất kỳ phiên bản Arduino nào khác, vì kích thước mã quá nặng. Ngoài ra, hãy kiểm tra xem bạn đã cài đặt các thư viện Arduino sau chưa nếu chưa cài đặt chúng theo liên kết bên dưới
- Thư viện từ xa IR cho TSOP và IR Blaster
- Thư viện Adafruit cho OLED
- Thư viện đồ họa GFX dành cho OLED
- Thư viện cảm biến DHT11 cho cảm biến nhiệt độ
Hoạt động của Điều khiển từ xa AC:
Trước khi chúng tôi tiến hành dự án, hãy dành chút thời gian và để ý xem điều khiển từ xa AC của bạn hoạt động như thế nào. Điều khiển từ xa AC hoạt động theo một cách khác một chút so với điều khiển từ xa TV, DVD IR. Có thể chỉ có 10-12 nút trên Điều khiển từ xa của bạn, nhưng chúng sẽ có thể gửi rất nhiều loại tín hiệu khác nhau. Có nghĩa là Điều khiển từ xa không gửi cùng một mã mỗi lần cho cùng một nút. Ví dụ: khi bạn giảm nhiệt độ bằng cách sử dụng nút xuống để ở mức 24 ° C (độ C), bạn sẽ nhận được tín hiệu với một bộ dữ liệu, nhưng khi bạn nhấn lại để đặt 25 ° C, bạn sẽ không nhận được tín hiệu như vậy dữ liệu vì nhiệt độ bây giờ là 25 chứ không phải 24. Tương tự, mã cho 25 cũng sẽ thay đổi đối với các cài đặt tốc độ quạt, chế độ ngủ khác nhau, v.v. Vì vậy, chúng ta đừng loay hoay với tất cả các tùy chọn và chỉ tập trung các giá trị nhiệt độ với giá trị không đổi cho các cài đặt khác.
Một vấn đề khác là số lượng dữ liệu được gửi cho mỗi lần nhấn nút, điều khiển từ xa thông thường gửi 24 bit hoặc 48 bit nhưng điều khiển từ xa AC có thể gửi tới 228 bit vì mỗi tín hiệu chứa nhiều thông tin như Nhiệt độ, Tốc độ quạt, Thời gian ngủ, kiểu Swing, v.v. Đây là lý do tại sao chúng ta cần Arduino Mega để có các tùy chọn lưu trữ tốt hơn.
Sơ đồ mạch và giải thích:
May mắn thay, việc thiết lập phần cứng của Dự án Điều khiển Nhiệt độ AC Tự động này rất dễ dàng. Bạn chỉ cần sử dụng một breadboard và tạo các kết nối như hình dưới đây.
Bảng sau cũng có thể được sử dụng để xác minh các kết nối của bạn.
S.Không: |
Pin thành phần |
Pin Arduino |
1 |
OLED - Vcc |
5V |
2 |
OLED - Gnd |
Gnd |
3 |
OLED- SCK, D0, SCL, CLK |
4 |
4 |
OLED- SDA, D1, MOSI, Dữ liệu |
3 |
5 |
OLED- RES, RST, RESET |
7 |
6 |
OLED- DC, A0 |
5 |
7 |
OLED- CS, Chọn chip |
6 |
số 8 |
DHT11 - Vcc |
5V |
9 |
DHT11 - Gnd |
Gnd |
10 |
DHT11 - Tín hiệu |
13 |
11 |
TSOP - Vcc |
5V |
12 |
TSOP - Gnd |
Gnd |
13 |
IR Led - Cực dương |
9 |
14 |
IR Led - Cathode |
Gnd |
Sau khi bạn kết nối xong, nó sẽ trông giống như hình bên dưới. Tôi đã sử dụng Breadboard để dọn dẹp mọi thứ, nhưng bạn cũng có thể dùng dây từ Nam sang nữ trực tiếp để móc tất cả các thành phần
Giải mã tín hiệu điều khiển từ xa AC của bạn:
Bước đầu tiên để điều khiển AC của bạn là sử dụng TSOP1738 để giải mã AC Remote Control IR Codes. Thực hiện tất cả các kết nối như được hiển thị trong sơ đồ mạch và đảm bảo rằng bạn đã cài đặt tất cả các thư viện được đề cập. Bây giờ hãy mở chương trình ví dụ “ IRrecvDumpV2 ” có thể tìm thấy tại File -> Examples -> IRremote -> IRrecvDumpV2 . Tải chương trình lên Arduino Mega của bạn và mở Serial Monitor.
Hướng Điều khiển từ xa của bạn về phía TSOP và nhấn bất kỳ nút nào, đối với mỗi nút bạn nhấn Tín hiệu tương ứng của nó sẽ được đọc bởi TSOP1738, được giải mã bởi Arduino và hiển thị trong Màn hình nối tiếp. Đối với mỗi thay đổi về nhiệt độ trên Điều khiển từ xa, bạn sẽ nhận được một Dữ liệu khác. Lưu Dữ liệu này vì chúng tôi sẽ sử dụng nó trong chương trình chính của chúng tôi. Màn hình nối tiếp của bạn sẽ trông giống như thế này, tôi cũng đã hiển thị tệp Word mà tôi đã lưu dữ liệu được sao chép trên đó.
Ảnh chụp màn hình hiển thị mã để cài đặt nhiệt độ ở 26 ° C cho điều khiển từ xa AC của tôi. Dựa trên điều khiển từ xa của bạn, bạn sẽ nhận được một bộ mã khác nhau. Tương tự, sao chép các mã cho tất cả các mức nhiệt độ khác nhau. Bạn có thể kiểm tra tất cả các mã IR điều khiển từ xa của Máy điều hòa không khí trong Mã Arduino được cung cấp ở cuối hướng dẫn này.
Chương trình Arduino chính:
Các hoàn thành chương trình Arduino chính có thể được tìm thấy ở dưới cùng của trang này, nhưng bạn không thể sử dụng chương trình tương tự. Bạn phải thay đổi các giá trị mã Tín hiệu mà chúng ta vừa thu được từ bản phác thảo Ví dụ ở trên. Mở chương trình chính trên Arduino IDE của bạn và cuộn xuống khu vực này được hiển thị bên dưới, nơi bạn phải thay thế các giá trị mảng bằng các giá trị mà bạn thu được cho Điều khiển từ xa của mình.
Lưu ý rằng tôi đã sử dụng 10 Mảng trong đó có 2 Mảng dùng để BẬT và TẮT nguồn AC trong khi 8 Mảng còn lại được sử dụng để đặt nhiệt độ khác nhau. Ví dụ: Temp23 được sử dụng để đặt 23 ° C trên AC của bạn, vì vậy hãy sử dụng mã tương ứng trong Mảng đó. Sau khi hoàn tất, bạn chỉ cần tải mã lên Arduino của mình và đặt nó đối diện với AC của bạn và tận hưởng Làn gió mát.
Giải thích về đoạn mã như sau, đầu tiên chúng ta phải sử dụng cảm biến nhiệt độ DHT1 để đọc Nhiệt độ và Độ ẩm và hiển thị nó trên OLED. Điều này được thực hiện bởi đoạn mã sau.
DHT.read11 (DHT11_PIN); // Đọc Temp và Humidity Measured_temp = DHT.tempeosystem + temp_error; Đo lường_Humi = DHT. độ ẩm; // kiểm tra hiển thị văn bản display.setTextSize (1); display.setTextColor (TRẮNG); display.setCursor (0,0); display.print ("Nhiệt độ:"); display.print (Measured_temp); display.println ("C"); display.setCursor (0,10); display.print ("Độ ẩm:"); display.print (Đo_Humi); display.println ("%");
Khi chúng ta biết Nhiệt độ của căn phòng, chúng ta chỉ cần so sánh nó với giá trị mong muốn. Giá trị mong muốn này là một giá trị không đổi được đặt là 27 ° C (Độ C) trong chương trình của tôi. Vì vậy, dựa trên sự so sánh này, chúng tôi sẽ thiết lập một nhiệt độ AC tương ứng như hình dưới đây
if (Measureured_temp == Nhiệt độ mong muốn + 3) // Nếu AC BẬT và nhiệt độ đo được rất cao hơn mong muốn {irsend.sendRaw (Temp24, sizeof (Temp24) / sizeof (Temp24), khz); delay (2000); // Gửi tín hiệu đến set 24 * C AC_Temp = 24; }
Tại đây, AC sẽ được đặt thành 24 ° C khi nhiệt độ đo được là 30 ° C (vì nhiệt độ mong muốn là 27). Tương tự, chúng ta có thể tạo nhiều vòng lặp If để thiết lập các mức nhiệt độ khác nhau dựa trên nhiệt độ đo được như hình dưới đây.
if (Đo lường_temp == Nhiệt độ mong muốn-1) // Nếu AC BẬT và nhiệt độ đo được thấp hơn giá trị mong muốn {irsend.sendRaw (Temp28, sizeof (Temp28) / sizeof (Temp28), khz); delay (2000); // Gửi tín hiệu đến set 28 * C AC_Temp = 28; } if (Đo lường_temp == Nhiệt độ mong muốn-2) // Nếu AC BẬT và nhiệt độ đo được rất thấp hơn giá trị mong muốn {irsend.sendRaw (Temp29, sizeof (Temp29) / sizeof (Temp29), khz); delay (2000); // Gửi tín hiệu đến set 29 * C AC_Temp = 29; } if (Đo lường_temp == Nhiệt độ mong muốn-3) // Nếu AC BẬT và nhiệt độ đo được là giá trị mong muốn rất thấp {irsend.sendRaw (Temp30, sizeof (Temp30) / sizeof (Temp30), khz); delay (2000); // Gửi tín hiệu đến set 30 * C AC_Temp = 30; }
Hoạt động của Hệ thống điều khiển nhiệt độ AC tự động:
Khi Mã và phần cứng của bạn đã sẵn sàng, hãy Tải Mã lên Bảng của bạn và bạn sẽ thấy màn hình OLED hiển thị thứ gì đó tương tự như thế này.
Bây giờ đặt mạch điện đối diện với Máy điều hòa không khí của bạn và bạn nhận thấy nhiệt độ của AC được kiểm soát dựa trên nhiệt độ phòng. Bạn có thể thử tăng nhiệt độ gần cảm biến DHT11 để kiểm tra xem nhiệt độ của AC có được kiểm soát như trong Video bên dưới hay không.
Bạn có thể tinh chỉnh chương trình để thực hiện bất kỳ hành động mong muốn nào; tất cả những gì bạn cần là mã mà bạn có được từ bản phác thảo ví dụ. Hy vọng bạn đã hiểu dự án Bộ điều khiển nhiệt độ tự động này và thích xây dựng một cái gì đó rất giống. Tôi biết có rất nhiều nơi ở đây để gặp khó khăn, nhưng đừng lo lắng. Chỉ cần sử dụng diễn đàn hoặc phần bình luận để giải thích vấn đề của bạn và mọi người ở đây chắc chắn sẽ giúp bạn giải quyết vấn đề.