Dziś podzielę się z wami kompletnym projektem.
Jest to Inteligentny System Oszczędzania Energii, który zaprojektowałem mniej więcej dwa lata temu. Dlatego dziś pomyślałem, żeby się tym podzielić, aby inni również mogli z niego skorzystać. W tym projekcie, do celów programistycznych, wykorzystałem płytkę Arduino UNO. Nie jest to zbyt skomplikowany projekt, ale stanowi podstawę dla wielu bardziej od niego złożonych.
Energia, to skromne słowo, ale jest problemem całego świata. Zwłaszcza gdy mówimy o energii elektrycznej. Jeśli zużywasz więcej energii elektrycznej, dostaniesz dość wysoki rachunek na koniec miesiąca. Z tego powodu, zawsze pracuje się nad zmniejszeniem zużycia energii elektrycznej, a także nad porównywaniem kosztów energii od różnych dostawców. Jako człowiek, załóżmy, że włączasz wentylator w swoim pokoju, a potem zwykle zapominasz go wyłączyć i w ten sposób twój rachunek ciągle rośnie. Stąd, aby tego uniknąć, jedynym narzędziem, które przychodzi nam z pomocą jest automatyzacja. Dla przykładu, musi istnieć system, który automatycznie wykrywa, czy ktoś jest jeszcze w pokoju, czy nie i jeżeli nikogo nie ma, to światła wyłączane są automatycznie. W ten sposób można dość łatwo obniżyć koszty energii elektrycznej. Taka sama koncepcja jest przedstawiona w tym projekcie. Przyjrzyjmy się jej w całości.
Przegląd inteligentnego systemu oszczędzania energii
W tym projekcie zaprojektowaliśmy kompletne pomieszczenie i wykorzystaliśmy dwa obciążenia indukcyjne tj. żarówki i jeden wentylator.
Celem tego projektu było oszczędzanie energii, więc użyliśmy dwóch czujników IR do liczenia.
Jeśli w pomieszczeniu nie ma nikogo, to obciążenia automatycznie się wyłączają, a jeśli ktoś wejdzie do pomieszczenia, obciążenia automatycznie się włączają.
Ponadto, dodaliśmy w nim funkcjonalność licznika, tzn. projekt będzie również zliczał ilość osób obecnych w pomieszczeniu.
Wszystkie te parametry będą również wyświetlane na wyświetlaczu ciekłokrystalicznym dołączonym do Arduino.
Użyte komponenty
Wymieniam tutaj komponenty użyte przy tworzeniu tego projektu. Nie podaję dokładnych wartości, ponieważ można je znaleźć na schematach. Oto lista:
- Arduino Uno
- Czujniki podczerwieni
- LCD 16×2
- Żarówki 100 W
- Wentylator 12 V
- Moduł przekaźnika dwukanałowego
- 7805 (układ scalony regulatora)
- LED (Oznajmujący)
- Opór
- Kondensatory
Schematy obwodów inteligentnego systemu oszczędzania energii
Załóżmy, że projektujesz ten projekt. Pierwszą rzeczą, której będziesz potrzebował są schematy obwodów dla projektu, więc pokażę tutaj wszystkie schematy krok po kroku. Zaczynajmy więc:
1. Połączenie Arduino z LCD
Pierwszą rzeczą, która będzie nam potrzebna jest interfejs Arduino z LCD. LCD użyty w tym projekcie to 16×2.
Najpierw zaprojektowałem symulację w Proteusie, ponieważ zawsze lepiej jest zaprojektować symulację przed przejściem do prawdziwego sprzętu.
Teraz wgraj do niego poniższy kod, tylko po to, aby przetestować, czy działa dobrze, czy nie:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(16, 2);
lcd.print("www.TheEngineer");
lcd.setCursor(0,1);
lcd.print("ingProjects.com");
}
void loop() {}
Teraz uruchom go i jeśli wszystko poszło dobrze, wtedy otrzymasz coś podobnego do tego, co pokazano na poniższym rysunku:
2. Schemat połączeń modułu przekaźnika dwukanałowego
Następną rzeczą, której będziemy potrzebować jest płytka przekaźnika dwukanałowego. Za pomocą tych przekaźników będziemy włączać lub wyłączać nasze obciążenia.
Oto schemat obwodu dla modułu przekaźnika dwukanałowego.
Jak widać na powyższym rysunku, użyłem dwóch przekaźników, gdzie oba są kontrolowane przez proste operatory logiczne.
Teraz, zamiast tych operatorów logicznych, musisz tutaj podać piny Arduino.
Ustawiłem pierwszy przekaźnik na ON podczas gdy drugi jest ustawiony na OFF.
Na powyższym rysunku wyjścia przekaźnikowe są otwarte, więc można tu umieścić cokolwiek, co będzie działać jak przełącznik. Tak więc w naszym przypadku obciążenia będą umieszczone za tym przekaźnikiem.
3. Projekt obwodu brzęczyka
Następnym projektem obwodu, który musimy zrozumieć jest projekt obwodu brzęczyka (Buzzer).
Jest to dość proste i podobne do modułu przekaźnika dwukanałowego. Opublikowałem również szczegółowy post na temat tego jak Zaprojektować brzęczyk w Proteus ISIS, który będzie całkiem pomocny.
Tutaj wyjaśnię to w skrócie, więc spójrzmy na schemat obwodu brzęczyka:
Można dość łatwo zrozumieć powyższy rysunek, gdzie pokazałem zarówno stan włączenia jak i wyłączenia brzęczyka.
4. Schemat obwodu czujnika podczerwieni
W tym projekcie użyłem dwóch czujników IR, oba są umieszczone na drzwiach, jeden po drugim. Możesz przeczytać więcej o projektowaniu czujnika podczerwieni w moim poście Schemat obwodu czujnika podczerwieni używającego Timera 555.
Nazwałem je Entering IR Sensor i Leaving IR Sensor (Pl. Podczerwony czujnik wejścia i wyjścia).
Logika działania tych dwóch czujników jest taka, że gdy ktoś wchodzi do pomieszczenia to najpierw minie czujnik wchodzący, a następnie trafi na czujnik wychodzący, a gdy ktoś wychodzi z pomieszczenia to najpierw minie czujnik wychodzący, a następnie przetnie czujnik wchodzący.
W ten sposób liczę osoby. Jeśli ktoś wchodzi do pokoju, to po prostu inkrementuję, a jeśli ktoś wychodzi to dekrementuję.
Teraz, jeśli liczba osób w pokoju wynosi zero, to wyłączam wszystkie światła i wentylator, a jeśli w pokoju jest choć jedna osoba, to włączam światła i wentylator.
Oto schemat obwodu czujnika IR:
Nadajnik IR i odbiornik nie są dostępne w Proteusie, dlatego użyłem przycisku. Zatem, naciśnięcie przycisku, odpowiada przecięciu przez kogoś wiązki czujnika IR. Otrzymujemy poniższy wynik:
5. Kompletny schemat obwodu inteligentnego systemu oszczędzania energii
Teraz, gdy mamy zaprojektowane poszczególne schematy obwodów, następną rzeczą, którą zrobimy jest złożenie kompletnego projektu.
Poniżej znajduje się kompletny schemat tego projektu:
Jak widać na powyższym rysunku, użyłem dwóch czujników IR. Pierwszy czujnik IR służy do wchodzenia do pomieszczenia, a drugi do wychodzenia z pomieszczenia.
Następny jest układ brzęczyka, który jest również dość prosty i opisałem go szczegółowo powyżej.
LCD wyświetli liczbę osób w pomieszczeniu, a także czy żarówka jest włączona, czy wyłączona oraz status wentylatora.
Nie pokazałem obwodu przekaźnika na powyższym rysunku, ponieważ nie zmieści się on w tej przestrzeni, a myślę, że wy możecie go łatwo umieścić.
Kod programistyczny dla inteligentnego systemu oszczędzania energii
Kod przeznaczony do tego projektu został opracowany w oprogramowaniu Arduino.
Kod jest następujący:
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float celsius, fahrenheit;
int Sensor1 = A0;
int Sensor2 = A1;
int Bulb = A5;
int Fan = A4;
int Buzzer = A3;
int Counter = 0;
int Sen1Check = 0;
int Sen2Check = 0;
void setup(void)
{
Serial.begin(9600);
digitalWrite(Bulb, HIGH);
digitalWrite(Fan, HIGH);
digitalWrite(Buzzer, HIGH);
pinMode(Sensor1, INPUT);
pinMode(Sensor2, INPUT);
pinMode(Bulb, OUTPUT);
pinMode(Fan, OUTPUT);
pinMode(Buzzer, OUTPUT);
lcd.begin(20, 4);
lcd.setCursor(0, 1);
lcd.print("Temp = ");
lcd.setCursor(0, 0);
lcd.print("Counter = ");
lcd.setCursor(12, 0);
lcd.print("Persons");
}
void loop()
{
CheckEntry();
CheckLeaving();
lcd.setCursor(7, 1);
sensors.requestTemperatures();
lcd.println(sensors.getTempCByIndex(0));
lcd.setCursor(12, 1);
lcd.print(" degC");
lcd.setCursor(10, 0);
if(Counter >= 0){lcd.print(Counter);}
if(Counter < 0){Counter = 0;}
if(Counter > 0)
{
digitalWrite(Bulb, LOW);
digitalWrite(Fan, LOW);
digitalWrite(Buzzer, HIGH);
lcd.setCursor(0, 2);
lcd.print("Fan : ON ");
lcd.setCursor(0, 3);
lcd.print("Bulb : ON ");
}
if(Counter < 1)
{
digitalWrite(Bulb, HIGH);
digitalWrite(Fan, HIGH);
digitalWrite(Buzzer, HIGH);
lcd.setCursor(0, 2);
lcd.print("Fan : OFF");
lcd.setCursor(0, 3);
lcd.print("Bulb : OFF");
}
}
void CheckEntry()
{
if(((digitalRead(Sensor1) == LOW) || (Sen1Check == 1)) && (Sen2Check == 0))
{
while(digitalRead(Sensor1) == LOW);
Sen1Check = 1;
if(digitalRead(Sensor2) == LOW)
{
Counter++;
Sen1Check = 0;
while(digitalRead(Sensor2) == LOW);
}
}
}
void CheckLeaving()
{
if(((digitalRead(Sensor2) == LOW) || (Sen2Check == 1)) && (Sen1Check == 0))
{
while(digitalRead(Sensor2) == LOW);
Sen2Check = 1;
if(digitalRead(Sensor1) == LOW)
{
Counter = Counter - 1;
Sen2Check = 0;
while(digitalRead(Sensor1) == LOW);
}
}
}
Kodowanie nie jest zbyt trudne dla tego projektu, ale jeśli masz jakieś problemy, zapytaj w komentarzach, a sprawdzę o co chodzi.
Oto kompletny film o tym inteligentnym systemie oszczędzania energii, który wyjaśni wszystko na temat projektu.