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
| Komponente | Modell/Typ | Funktion |
|---|---|---|
| Mikrocontroller | ATtiny4313 (DIL) | Zentrale Steuerung |
| RTC-Modul | DS3231 | Zeitgeber für Zyklusstart |
| Taster | Digital, mit Pull-Up | Start-/Shutdown-Steuerung |
| 2 x Alarmkontakt | Reed-Schalter o.Ä. | Fenster-/Türüberwachung |
| LED | 3.3 V | Statusblinker alle 10 s wenn Armed. Wenn Alarm flackern. Ansonsten aus. |
| UART | TX/RX auf 3.3 V | Kommunikation mit Raspberry Pi |
| Alarmausgang | GPIO an Treiber mit 12v schaltausgang | Anschluss von Verbraucher wie zum Beispiel Sirene |
| Schaltausgang | GPIO an Treiber der 12 V auf einen 5 V 5A DC-DC Converter bringt. | Stromzufuhr für Raspberry und weitere 5 V Verbraucher |

| Arduino PIN | Physischer Pin | Pin | Funktion | Richtung | Beschreibung |
|---|---|---|---|---|---|
| 1 | PA2 | Reset | Eingang | Für ISP | |
| 0 | 2 | PD0 | UART RX | Eingang | Kommunikation RPi → ATtiny |
| 1 | 3 | PD1 | UART TX | Ausgang | Kommunikation ATtiny → RPi |
| 4 | PA1 | ||||
| 5 | PA0 | ||||
| 2 | 6 | PD2 | INT0 (RTC Alarm) | Eingang | Weckt ATtiny |
| 3 | 7 | PD3 | Taster | Eingang | Kurz-/Lang-Druck |
| 4 | 8 | PD4 | I²C SDA | I²C | RTC-Kommunikation |
| 5 | 9 | PD5 | I²C SCL | I²C | RTC-Kommunikation |
| 10 | GND | Ground | |||
| 6 | 11 | PD6 | Status-LED | Ausgang | Blinkt alle 30s |
| 7 | 12 | PB0 | RPi Power Enable | Ausgang | Steuert MOSFET mit 12V der über Buck-Converter RPi versorgt |
| 8 | 13 | PB1 | Alarmkontakt 1 | Eingang | Fenster-/Türkontakt (Hüllschutz) |
| 9 | 14 | PB2 | Alarmkontakt 2 | Eingang | zusatzkontakte wie fliegengitter falls Fenster offen. |
| 10 | 15 | PB3 | Alarmausgang | Ausgang | Ansteuerung Verbraucher über 12 V Treiber (z.B. Sirene) |
| 11 | 16 | PB4 | |||
| 12 | 17 | PB5 | MOSI | Eingang | ISP |
| 13 | 18 | PB6 | MISO | Ausgang | ISP |
| 14 | 19 | PB7 | SCL | Eingang | ISP |
| 20 | VCC | Versorgung | Eingang | am 3,3 V Buck-Converter |
🧠 Betriebs- und Alarmzustände
🔁 operatingMode
Off: Kein BetriebPeriodic: Pi startet durch RTC-Alarme (zyklisch)On: Pi bleibt dauerhaft anAlert: 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 in | State out | Trigger | Comment |
| off | periodic | RTC event | Once a day the RTC will start the PI |
| off | on | Button | Start PI permanent due to user button press |
| periodic | on | Button | Start PI permanent due to user button press |
| on | off | Serial msg: „ack_shutdown“ | Pi confirms that an ordinary shutdown took place. Power can be turned off |
| periodic | off | Serial msg: „ack_shutdown“ | Pi confirms that an ordinary shutdown took place. Power can be turned off |
| off | alert | Alert-Contact | alarm loop has been triggered |
| periodic | alert | Alert-Contact | alarm loop has been triggered |
| on | alert | Alert-Contact | alarm loop has been triggered |
| alert | on | Serial msg: „quit_alert“ | Alarm stopped. Pi keeps on. |
Ausgangslogik:
| Ausgang | Off | Periodic | On | Alert |
| Pi-Power | 0 | 1 | 1 | 1 |
| Signal | 0 | 0 | 0 | 1 |
| Status LED | Armed: Slow / Disarmed: Off | Fast |
Event- / Status-Matrix
| Event / Input | Off | Periodic | On | Alert |
| Button | On | On | noop | x |
| RTC | Periodic | noop | x | x |
| Serial set_state | noop | OK | OK | x |
| Alert-Contact | Alert | Alert | Alert | x |
| Serial ack_shutdown | noop | Off | Off | x |
| Serial quit_alert | noop | noop | noop | On |
🚨 alarmMode
Disarmed: Alarmüberwachung ausArmed: Überwachung aktiv
🔄 Zustandsübergänge
| Auslöser | Aktion |
|---|---|
| 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 öffnet | alarmMode → 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 Pin | Funktion |
|---|---|
| PA2 | RESET |
| PB7 | SCK |
| PB6 | MISO |
| PB5 | MOSI |
