Rutan sovrum Automation (1 / 26 steg)
Steg 1: Hur fungerar det?
Så efter att ha sett införandet kan du ha en idé om hela projektet. Men innan byggnaden, är det viktigt att veta att fungera detta projekt vilket innebär, sensorer används i detta projekt, den kod som används för att köra denna sak, och andra små saker.
Strömförsörjning:
Strömförsörjningen används i detta projekt består huvudsakligen av en transformator och en bro likriktare. Transformatorn sänker hög ac spänningen från 240v ac till 12v ac och bron likriktaren konverteras den till dc. Det har också en spänningsregulator som konverterar det 12v dc till 5v.
Uttaget:
Beige färg vägguttaget närvarande på boxen är den plats där du kan ansluta alla dina elektriska apparater. En fråga kommer att uttaget ger 240v ac att driva apparaterna när arduino säger den att göra. Men arduino ger ut endast 5v. Så hur är det möjligt att ha 240 v ac med en låg signal för 5v dc? Detta görs möjligt med hjälp av en anordning som kallas relä som fungerar som en switch som är på när en låg signal tas emot genom den. Denna växel kan hantera en stor ström så kan användas till att styra detta uttag lätt.
Sensorer:
Som redan sagt använder projektet sex sensorer totalt. Nedan följer en beskrivning på hur de fungerar.
- Temperaturgivare (LM35): ger en spänning på en av dess stift som blir högt eller lågt beroende på temperaturen på sensorn. Arduino läser spänningen och omvandlar den till läsbar temperatur.
- Fuktsensor (DHT11): ger en viss klocksignal både temperatur och luftfuktighet. Arduinoen konverterar dessa signaler till läsbar temperatur och luftfuktighet. (Används här endast för luftfuktighet).
- Ljussensor (LDR): ger en hög motståndskraft när den placeras i mörka och låga motstånd när den placeras på en plats full av ljus. Motståndet ändras med ändra i ljusets intensitet. Arduino läser motståndet.
- Klappa sensor (Electret mikrofon): ger en låg effekt signal när ett högt ljud har upptäckts. Arduinoen identifierar låg signalen och anger hög utlopp.
- Motion Sensor (PIR Sensor): Detekterar rörelse av en mänsklig och ger en hög effekt när upptäckt. Faktiskt upptäcker det utstrålning ges ut av en människa.
- Närvaro Sensor (Ultrasonic avstånd Sensor - HC-SR04): Sänder en ultraljudsundersökning som går, reflekterar och kommer tillbaka. Arduino mäter den tid som det och ger avståndet. När avståndet blir låg, betyder det att du är närvarande framför den så den känner din närvaro.
Kod:
Processen börjar när arduino kopplar på och ber dig att välja läge genom knappar genom att visa det på vätska kristall uppvisning. Del av koden nedan bearbetar och visar det läge du har valt.
< p > while(digitalRead(11) == låg) < br > {
IF(digitalRead(10) == hög)
{
Delay(500);
greve ++;
}
LCD.Clear();
LCD.Print("Choice:");
LCD.Print(Count);
Delay(100);
} < /p >
11 är pin ansluten till knappen 2. Så den första raden betyder att tills du inte trycker på den andra knappen (tills det är lågt) slingan kommer gå å köra för evigt. Och om stift 10 är hög (knappen 1 nedtryckt) det kommer att föra variabeln räkna med en. På detta sätt räknar öglan antalet gånger knappen trycks. Det här är också används för att ange den tröskel som du kan se i vissa delar av koden.
Nästa är den huvudsakliga delen av koden, den "switch-sats" som går in i en läge beroende på värdet av räkningen. Det skrivs som:
< p > switch(count) < /p >
Nästa är den case-uttryck som ingår i växeln. Det körs det uttalandet nämnde under det om värdet av variabeln av switch är lika med det belopp som nämns efter fallet. För t ex om jag skriver:
Switch(Count)
{
fall 1:
{
uttalande;
}
bryta;
fall 2:
{
uttalande b;
}
bryta;
}
Detta innebär att programmet kommer att utföra uttalande om räkna värdet 1, en och om det är två, programmet kommer kör sats 2. Du kan se koden som detta fall uttalanden. Så att värdet närvarande efter varje case-uttryck i huvudkoden inte är faktiskt han koden. gillar:
< p > i mål 1: / / växla läge < br > {
Delay(1000);
Serial.println ("växla läge markerat");
Serial.println ("Tryck på knappen Växla utlopp on/off");
int a8 = 0;
While(A8 == 0)
{
LCD.Clear();
LCD.Print ("Curr. Tillstånd: ");
LCD.Print(State);
lcd.setCursor(0,1);
LCD.Print ("Tryck på knappen");
IF(digitalRead(10) == hög & & state3 == 0) / / om knappen nedtryckt och utlopp är avstängd, slå på den
{
digitalWrite 13, hög.
State = "ON";
state3 ++;
Serial.println ("påslagen");
Delay(1000);
}
IF(digitalRead(10) == hög & & state3 == 1) / / om knappen nedtryckt och utlopp är på, stänga av
{
digitalWrite 13, låg.
State = "OFF";
state3--;
Serial.println ("Switched off");
Delay(1000);
}
Delay(100);
}
}
Break; < /p >
Resten av koden är ganska enkel och lätt att förstå.