Introduction: EAL. Mail Alert
Jeg har lavet en styring til min postkasse.
I denne tid hvor vi for færre og færre breve, er jeg blevet træt af og kigge i postkassen. I de fleste tilfælde er der ikke noget i den, og man føler sig lidt dum når man flere dage i træk løfter låget forgæves. Derfor vil jeg lave en styring til min postkasse, så jeg uden og åbne postkassen, kan se om den har været åbnet og nogen har lagt noget i den.
In English use the link belov, and add subtitles:
Step 1: Beskrivelse Og Flowchart
Selve styringen skal fungere på den måde, at Arduinoen som udgangspunkt er sat i venteposition, hvilket betyder at den venter på at låget på postkassen bliver åbnet. Når låget bliver åbnet afbrydes en kontakt, det at kontakten afbrydes registreres nu i Arduinoen. Kontakten er placeret så låget på postkassen aktiverer kontakten når låget lukkes.
Jeg har placeret en diode bag på postkassen, hvilket er praktisk, da jeg inde fra mit hus nu kan se når led lyset er tændt. Det modul jeg har brugt er et ”Mini two-color module”, modulet har to farver indbygget, disse to farver er rød og grøn. Jeg har valgt dette to farvet modul, for visuelt at kunne differenser imellem, hvor mange gange postkassen har været åbnet.
Som jeg lige kort har beskrevet har mit ønske været at gi mig at signal/indikation på at postkassen har været åbnet. Samtidig vil jeg også gerne kunne se om postkassen har været åbnet mere end en gang.
Jeg har derfor valgt at, første gang låget på postkassen har været åbnet og lukket, lyser den grønne diode konstant, og nu ved jeg at nogen har haft åbnet postkassen og der ligger noget i den. Har postkassen været åbnet og lukket 2 gange, uden den har været tømt og nulstillet, blinker den grønne diode med en frekvens på 1 Hz. Tredje gang postkassen bliver åbnet og lukket uden den er blevet tømt og nulstillet tænder den røde diode. Fjerde gang postkassen åbnes og lukkes, igen uden den er blevet tømt og nulstillet, blinker den røde diode med 2 Hz. Nu er det på tide og få den tømt…
For at resette/nulstille sekvensen og sætte styringen i venteposition, aktiveres en kontakt (pushbutton). Når kontakten trykkes, lyser en grøn diode, som indikation på at sekvensen er reset, dioden slukker når låget lukkes.
Da Arduinoen jo gerne vil ha strøm så længe styringen skal køre, hvilket i dette tilfælde vil være døgnets 24 timer. Har jeg besluttet at sammensætte et lille solcelle anlæg, som vil forsyne Arduinoen med strøm. Hvilket samtidig er praktisk, da jeg ikke har mulighed for strømtilslutning i nærheden af min postkasse. Hermed slipper jeg for at trække strøm ud til postkassen, hvorfor ikke bruge den naturlige energi som solens stråler sender ned. Så dette er mit lille bidrag til den grønne omstilling.
Selve solcelleanlægget består af et solcellepanel på X gange X cm, en solcelle kontroller og et batteri.
Min plan fra starten var at en kviksølv sensor, skulle registrere når låget blev åbnet. Men test har vist at det er en usikker løsning, da den risikerer at tælle flere gange, hvis man ikke er forsigtig når man løfter låget. Jeg har derfor valgt og erstatte med en NC kontakt, som er aktiveret når låget er lukket, og derfor først sender et signal, når låget bliver åbnet og kontakten bliver sluppet.
Step 2: Parts for the Project
2 color LED module, ved hjælp af den 2 farvede diode, kan jeg visualisere, hvor mange gange postkassen har været åbnet. Det giver mig en ide om hvor meget der er postkassen, og om den trænger til at blive tømt.
kontakt til postkasse låg denne kontakt registrere hver gang at låget bliver åbnet og lukket igen. De informationer bruger jeg i mit program, til at tælle antallet af gange postkassen har været åbnet.
solcelle kontroller her er mit solcelle panel, batteri og min arduino forbundet. Den regulerer strømmen fra solcellerne til batteriet, og beskytter batteriet mod overopladning og underafladning.
solcelle panel strømmen kommer ind i laderegulatoren fra solcellerne/solcellepanelet.
mini pushbutton switch min trykknap som jeg bruger til at resette, min tæller.
Arduino nano er min kortroller, hvor jeg laver mit program vi IDE software.
Bly syre batteri mit batteri som bliver ladet igennem, regulatoren.
grøn lysdiode, til at indikere at sekvensen er reset.
Attachments
Step 3: Wiring/circuit Diagram
Step 4: Program
// this constant won't change:
const int buttonPin_1 = 2; // the pin that the pushbutton is attached to, register when the mailbox are open or closed
const int ledPin_1 = 4; // the red pin that the mailboxLED is attached to
const int ledPin_3 = 6; // the green pin that the mailboxLED is attached to
const int ledPin_5 = 8; // the reset pin that the mailboxLED is attached to
// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
void setup() {
pinMode(buttonPin_1, INPUT); // initialize the button pin as a input
pinMode(ledPin_1, OUTPUT); // initialize the ledpin as a output
pinMode(ledPin_3, OUTPUT); // initialize the ledpin as a output
pinMode(ledPin_5, OUTPUT); // initialize the ledpin as a output
Serial.begin(9600); // initialize serial communication:
}
void loop() {
buttonState = digitalRead(buttonPin_1); // read the pushbutton input pin:
if (buttonState != lastButtonState) { // compare the buttonState to its previous state
if (buttonState == HIGH) { // if the state has changed, increment the counter
// if the current state is HIGH then the button
// wend from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
Serial.println("off"); // if the current state is LOW then the button
// wend from on to off:
}
delay(50); // Delay a little bit to avoid bouncing
}
lastButtonState = buttonState; // save the current state as the last state,
//for next time through the loop
if (buttonPushCounter * 1 == 2) { // checking the modulo of the button push counter.
// the modulo function gives you the remainder of
// the division of two numbers:
digitalWrite(ledPin_3, HIGH); // turns on the green LED the second time the mailbox is closed
}
if (buttonPushCounter * 1 == 3) { // blinks the green LED third time the mailbox has been closed
digitalWrite(ledPin_3, HIGH);
delay(1000);
digitalWrite(ledPin_3, LOW);
delay(1000);
}
if (buttonPushCounter * 1 == 4) {
digitalWrite(ledPin_1, HIGH); // turns on the red led fourth time the mailbox has been closed
}
if (buttonPushCounter * 1 == 5) {
digitalWrite(ledPin_1, HIGH); // blinks red led fifth time the mailbox has been closed
delay(1000);
digitalWrite(ledPin_1, LOW);
delay(1000);
}
if (buttonPushCounter * 1 == 0) {
digitalWrite(ledPin_5, HIGH); // turns on the reset led when the mailbox is empty
}
else {
digitalWrite(ledPin_1, LOW);
digitalWrite(ledPin_3, LOW);
digitalWrite(ledPin_5, LOW);
}
}