Projekt

Wohnwagen-Projekt: ATtiny4313 als Energiemanager, Alarmzentrale und RPi-Controller

Datum: 2025-06-23
Projektleitung: [Dein Name]
Ziel: Energieeffizienter Betrieb eines Raspberry Pi im Wohnwagen inkl. zyklischem Start, Alarmüberwachung und serieller Kommunikation.


🔋 Stromversorgung & Energieoptimierung

  • Versorgung: 12 V LiFePO₄-Akku
  • Regler: 3.3 V MP1584 für den ATtiny4313
  • Raspberry Pi: Strom wird über MOSFET Treiber nur bei Bedarf aktiviert. Buck converter 5v 5a
  • RTC-Modul (DS3231): Weckt ATtiny4313 periodisch via Interrupt (ca. 3 µA Standby)
  • Gesamtsystem im Sleep: <30 µA Stromverbrauch mit aktivem Watchdog

KomponenteModell/TypFunktion
MikrocontrollerATtiny4313 (DIL)Zentrale Steuerung
RTC-ModulDS3231Zeitgeber für Zyklusstart
TasterDigital, mit Pull-UpStart-/Shutdown-Steuerung
2 x AlarmkontaktReed-Schalter o.Ä.Fenster-/Türüberwachung
LED3.3 VStatusblinker alle 10 s wenn Armed. Wenn Alarm flackern. Ansonsten aus.
UARTTX/RX auf 3.3 VKommunikation mit Raspberry Pi
AlarmausgangGPIO an Treiber mit 12v schaltausgang Anschluss von Verbraucher wie zum Beispiel Sirene
SchaltausgangGPIO an Treiber der 12 V auf einen 5 V 5A DC-DC Converter bringt.Stromzufuhr für Raspberry und weitere 5 V Verbraucher
Screenshot
Arduino PINPhysischer
Pin
PinFunktionRichtungBeschreibung
1PA2ResetEingangFür ISP
02PD0UART RXEingangKommunikation RPi → ATtiny
13PD1UART TXAusgangKommunikation ATtiny → RPi
4PA1
5PA0
26PD2INT0 (RTC Alarm)EingangWeckt ATtiny
37PD3TasterEingangKurz-/Lang-Druck
48PD4I²C SDAI²CRTC-Kommunikation
59PD5I²C SCLI²CRTC-Kommunikation
10GNDGround
611PD6Status-LEDAusgangBlinkt alle 30s
712PB0RPi Power EnableAusgangSteuert MOSFET mit 12V der über Buck-Converter RPi versorgt
813PB1Alarmkontakt 1EingangFenster-/Türkontakt (Hüllschutz)
914PB2Alarmkontakt 2Eingangzusatzkontakte wie fliegengitter falls Fenster offen.
1015PB3AlarmausgangAusgang Ansteuerung Verbraucher über 12 V Treiber (z.B. Sirene)
1116PB4
1217PB5MOSIEingangISP
1318PB6MISOAusgangISP
1419PB7SCLEingangISP
20VCCVersorgungEingangam 3,3 V Buck-Converter

🧠 Betriebs- und Alarmzustände

🔁 operatingMode

  • Off: Kein Betrieb
  • Periodic: Pi startet durch RTC-Alarme (zyklisch)
  • On: Pi bleibt dauerhaft an
  • Alert: Alarm wurde ausgelöst
stateDiagram-v2
    [*] --> off
    off --> alert: Alarm-In
    off --> periodic: RTC event
    off --> on: Button
    periodic --> on: Button
    periodic --> on: (PI) set_state
    periodic --> alert: Alarm-In
    periodic --> off: (PI) ack_shutdown
    on --> alert: Alarm-In
    on --> off: (PI) ack_shutdown
    alert --> on: (PI) quit_alert
State inState outTriggerComment
offperiodicRTC eventOnce a day the RTC will start the PI
offonButtonStart PI permanent due to user button press
periodiconButtonStart PI permanent due to user button press
onoffSerial msg: „ack_shutdown“Pi confirms that an ordinary shutdown took place. Power can be turned off
periodicoffSerial msg: „ack_shutdown“Pi confirms that an ordinary shutdown took place. Power can be turned off
offalertAlert-Contactalarm loop has been triggered
periodicalertAlert-Contactalarm loop has been triggered
onalertAlert-Contactalarm loop has been triggered
alertonSerial msg: „quit_alert“Alarm stopped. Pi keeps on.

Ausgangslogik:

AusgangOffPeriodicOnAlert
Pi-Power0111
Signal0001
Status LEDArmed: Slow / Disarmed: OffFast

Event- / Status-Matrix

Event / InputOffPeriodicOnAlert
ButtonOnOnnoopx
RTCPeriodicnoopxx
Serial set_statenoopOKOKx
Alert-ContactAlertAlertAlertx
Serial ack_shutdownnoopOffOffx
Serial quit_alertnoopnoopnoopOn

🚨 alarmMode

  • Disarmed: Alarmüberwachung aus
  • Armed: Überwachung aktiv

🔄 Zustandsübergänge

AuslöserAktion
Taster kurz (<1 s)Pi einschalten
Taster lang (>3 s)Pi herunterfahren (außer im Alert-Modus)
RTC-Alarm (DS3231)Pi einschalten im Periodic-Modus außer wenn Alter oder Permanent 
Alarmkontakt öffnetalarmMode → Alert
Seriell vom RPi: 
set_mode permanent→ operatingMode permanent
set_alarm armed→ alarmMode armed
shutdown→ Poweroff 10s nach Bestätigung
set_next_cycle 04:00:00→ RTC-Alarm neu setzen

💬 Serielles Protokoll (UART)

Baudrate: 9600 bps
Pegel: 3.3 V TTL (direkt kompatibel mit Raspberry Pi)

RPi → ATtiny:


set_mode periodic
set_alarm armed
set_next_cycle 06:00:00
shutdown

ATtiny → RPi:


status armed
shutdown

⏱️ LED mit Watchdog-Timer

  • LED blinkt alle 30 Sekunden für ca. 100 ms
  • Getriggert durch Watchdog Interrupt + Softwarezähler
  • Kein Sleep-Ausfall, Stromverbrauch bleibt gering

🔧 ISP-Anschluss für Programmierung

ISP PinFunktion
PA2RESET
PB7SCK
PB6MISO
PB5MOSI