Hallo,
ich bin am verzweifeln. Zur Zeit bin ich dabei eine kleine
Türüberwachung zu entwickeln.
Ablauf: Die Tür ist geschlossen. Alle 12h gibt es über ein GSM Shield
(SIM900) einen Kontrollanruf. Zwischen diesen 12h lege ich den Atmega
328 schlafen. Wird die Tür in der Zwischenzeit geöffnet, gibt es
ebenfalls einen Anruf. Der normalerweise darauf folgende Anruf (12h
Takt) bleibt ab dann aus.
Alles funktioniert wunderbar bis hier hin:
1. Der 12h Stunden-Takt, wobei ich hoffe diesen mit einem DS3231 RTC
hinzubekommen.
2. Da das Ganze batteriebetrieben läuft, möchte ich den Atmega natürlich
nicht, so wie jetzt, auf einem Arduino UNO laufen lassen, sondern als
Bareboard. Sprich nur die min. Bauteile werden verbaut. (Um Strom zu
sparen.)
Mein Bareboard sollte soweit funktionieren. Ich habe ein kleines Projekt
(Blink) übertragen und das hat soweit funktioniert. Wenn ich jetzt die
nötigen Verbindungen (RX, TX, GND, 5V, Pin9 (Um das SIM900 Shield
anzuschalten)) verbinde, funktioniert der Anruf vom Arduino Uno
einwandfrei aber vom Bareboard nicht. Selbst wenn ich den auf den UNO
gesteckten Atmega328 direkt von den Pins zum SIM900 verbinde gehts.
Wenn ich aber die Pins direkt vom Bareboard zum SIm900 verbinde geht es
nicht.
Ich habe auf dem Bareboard leider einen 12er Quarz und keinen 16er
verbaut könnte dies damit zusammen hängen?
Mein Code im Anhang..
Eplan schrieb:> Ich habe auf dem Bareboard leider einen 12er Quarz und keinen 16er> verbaut könnte dies damit zusammen hängen?
Das mußt Du dem Programm irgendwo mitteilen sonst stimmt die Berechnung
der Baudrate für die serielle Schnittstelle nicht.
Nabend,
ich habe jetzt einen 16er Quarz verbaut und das Bareboard nocheinmal neu
aufgebaut und siehe da, die Kommunikation zum SIM900 funktioniert
einwandfrei.
Nun habe ich das nächste Problem. Um einen 12h Takt (für die
Kontrollanrufe zu bekommen) nutze ich einen DS3231 RTC.
Zurzeit bekomme ich jede Sekunde vom RTC ein Ausgangssignal
(Alarmsignal). Sinn der Geschichte ist es ja aber alle 12h (oder zum
Test jede Minute) ein Signal heraus zu bekommen.
Ich kann den Fehler nicht finden. Hier mein Sketch:
Danke für jede Hilfe im voraus!
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
boolean isAlarm = false;
boolean alarmState = false;
int alarmLED = 13;
void alarmFunction()
{
Serial.println("ALARM");
isAlarm = true;
}
void setup()
{
Serial.begin(9600);
// Initialize DS3231
Serial.println("Initialize DS3231");;
clock.begin();
// Disarm alarms and clear alarms for this example, because alarms is
battery backed.
// Under normal conditions, the settings should be reset after power
and restart microcontroller.
clock.armAlarm1(false);
clock.armAlarm2(false);
clock.clearAlarm1();
clock.clearAlarm2();
// Manual (Year, Month, Day, Hour, Minute, Second)
clock.setDateTime(2014, 4, 25, 0, 0, 0);
// Set Alarm2 - Every 01m in each hour
// setAlarm2(Date or Day, Hour, Minute, Mode, Armed = true)
clock.setAlarm2(0, 0, 1, DS3231_MATCH_M);
// Attach Interrput 0. In Arduino UNO connect DS3231 INT to Arduino
Pin 2
attachInterrupt(0, alarmFunction, FALLING);
// Setup LED Pin
pinMode(alarmLED, OUTPUT);
}
void loop()
{
dt = clock.getDateTime();
Serial.println(clock.dateFormat("d-m-Y H:i:s - 1", dt));
if (isAlarm)
{
digitalWrite(alarmLED, alarmState);
alarmState = !alarmState;
clock.clearAlarm2();
}
delay(1000);
}