geraetschaften:elektronik:winkekatze
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| geraetschaften:elektronik:winkekatze [2020-09-19 17:07] – angelegt schuballaa | geraetschaften:elektronik:winkekatze [2022-11-17 22:34] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== | + | ====== |
| |**Inventarnummer** |g????| | |**Inventarnummer** |g????| | ||
| - | |Benutzbar für|Mitglieder/ | + | |Ort|Elektrowerkstatt| |
| - | |Einweisung benötigt|Ja/ | + | |Eigentümer|Marco| |
| - | |Ort|???| | + | |
| - | |Eigentümer|Verein/# | + | |
| ===== Ansprechpartner ===== | ===== Ansprechpartner ===== | ||
| - | * … | + | * Daniel Stingl |
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Entstehung ===== | ||
| + | |||
| + | Hierbei handelt es sich um eine modifizierte Winkekatze. | ||
| + | Die Idee hierzu hatte ich, als sich der Begriff China-shop bezüglich | ||
| + | Marcos doch beträchtliche Auswahl an China Elektronik eingebürgert hat. | ||
| + | |||
| + | Ursprünglich hatte ich geplant einen Sensor an die Schublade wo Marco | ||
| + | die Teile lagert anzubringen. Nachdem ich aber dann bemerkt hatte, dass | ||
| + | mit dieser Lösung die Katze nur einige Minuten/ | ||
| + | ich die Katze mit einem PIR Bewegungssensor ausgestattet. | ||
| + | |||
| + | Seither winkt die Katze, wenn Marco (oder jemand anderes) auf ,, | ||
| + | sitzt. | ||
| + | |||
| + | * Im Hackerspace gibt es natürlich keine feste Sitzordnung, | ||
| + | lediglich um seinen Lieblingsplatz! | ||
| + | |||
| + | ===== Technische Umsetzung ===== | ||
| + | Die Steuerung des Winkens wurde ursprünglich mit AA Zellen und einem an/aus Schalter umgesetzt . | ||
| + | |||
| + | Ich habe die Stromversorgung um Wartungsfreien/ | ||
| + | mit einer 18615 Li-Ion zelle und einem Charging modul ausgestattet. | ||
| + | |||
| + | Das Winken steuert ein Ardoino pro mini 3,3 V 8 MHZ. | ||
| + | |||
| + | Bei Bewegungsmeldung des PIR' | ||
| + | schaltet nach einer kurzen Verzögerung ein Mosfet die Winkekatze an. | ||
| + | |||
| + | Wenn eine gewisse Zeit keine Bewegung gemeldet wurde, stellt die Katze das Winken wieder ein. | ||
| + | |||
| + | Die Winkstärke kann am Poti (Boden) eingestellt werden, leider ist die Poti wahl nicht so gut | ||
| + | meinerseits ausgefallen, | ||
| + | |||
| + | Eine Verbesserung wäre, das Poti gegen ein geeigneteres zu ersetzten, | ||
| + | |||
| + | Wer das und/oder Softwareänderungen vornehmen möchte, kann den nachfolgenden Quellcode benutzten/ | ||
| + | |||
| + | Programmiert werden, kann die Katze wie folgt: | ||
| + | |||
| + | Mittels USB-Serial Wandler (TLL), den Anschluss (am Boden) verbinden. | ||
| + | {{: | ||
| + | |||
| + | ===== Source Code ===== | ||
| + | < | ||
| + | #include " | ||
| + | |||
| + | < | ||
| + | // Winkekatze | ||
| + | // promini Nano 3,3 V | ||
| + | |||
| + | const int WinkePin = 3; | ||
| + | const int Sensor = 2; // Der Taster wurde an Pin 2 angeschlossen | ||
| + | volatile int PIRStatus = 0; // Variable die den Status des Taster ausliest, wird der sog. " | ||
| + | volatile int WinkePinStatus = 0; | ||
| + | int winkOnDelay = 5; | ||
| + | int winktimeout = 30; | ||
| + | int winken = 0; | ||
| + | |||
| + | int winkOnDelaycounter = 0; | ||
| + | int winktimeoutcounter = 0; | ||
| + | |||
| + | // Taster Anschluss an Pin 2 entspricht dem Vektor 0 (hier der Fall) | ||
| + | // Taster Anschluss an Pin 3 entspricht dem Vektor 1 | ||
| + | |||
| + | void setup() { | ||
| + | pinMode(Sensor, | ||
| + | pinMode(WinkePin, | ||
| + | Serial.begin(9600); | ||
| + | Serial.println(" | ||
| + | digitalWrite(WinkePin, | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| - | {{ :logo.png?250}} | + | PIRStatus = digitalRead(Sensor); |
| + | WinkePinStatus = digitalRead(WinkePin); | ||
| - | ===== Verbrauchsmaterial ===== | + | if (PIRStatus |
| + | winktimeoutcounter | ||
| + | if (winkOnDelaycounter >= winkOnDelay && winken | ||
| + | Serial.println(" | ||
| + | winkOnDelay | ||
| + | digitalWrite(WinkePin, | ||
| + | winken | ||
| + | } else { | ||
| + | if (winkOnDelaycounter < winkOnDelay) { | ||
| + | winkOnDelaycounter++; | ||
| + | } | ||
| + | } | ||
| + | } else { | ||
| + | if (winktimeoutcounter < winktimeout) { | ||
| + | winktimeoutcounter++; | ||
| + | if (winkOnDelaycounter > 0) { | ||
| + | winkOnDelaycounter--; | ||
| + | } | ||
| + | } | ||
| + | } | ||
| - | | + | |
| + | Serial.println(" | ||
| + | digitalWrite(WinkePin, | ||
| + | winken = 0; | ||
| + | } | ||
| - | ===== Dokumentation ===== | + | Serial.print(" |
| + | Serial.println(WinkePinStatus); | ||
| + | Serial.print(" | ||
| + | Serial.println(winken); | ||
| + | Serial.print(" | ||
| + | Serial.println(PIRStatus); | ||
| + | Serial.print(" | ||
| + | Serial.println(winkOnDelaycounter); | ||
| + | Serial.print(" | ||
| + | Serial.println(winktimeoutcounter); | ||
| - | TODO | + | delay(100); |
| + | Serial.println(" | ||
| + | delay(100); | ||
| + | LowPower.powerDown(SLEEP_8S, | ||
| + | delay(100); | ||
| - | ===== Weiterführende Links ===== | + | } |
| - | * … | + | </ |
| \\ | \\ | ||
geraetschaften/elektronik/winkekatze.1600528065.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
