Inhaltsverzeichnis:

Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben - Gunook
Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben - Gunook

Video: Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben - Gunook

Video: Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben - Gunook
Video: Tatort Zuhause: Wie schütze ich mich gegen Einbrecher? (SPIEGEL TV Reportage) 2024, Kann
Anonim
'Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben
'Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben
'Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben
'Allein zu Hause' Einbrecher-Abwehr / Verwenden Sie Attiny13, um einen Schrittmotor und einen Servo anzutreiben

Dies könnte eines meiner bisher seltsamsten Projekte sein:-) Aber auch wenn Sie nicht daran interessiert sind, Einbrecher fernzuhalten, kann dieses Projekt für alles verwendet werden, wo Sie einen Schrittmotor oder Servomotor oder sogar mehrere Gleichstrommotoren mit einem Attiny13 antreiben müssen. Die meisten von Ihnen werden sich an den Film Home Alone erinnern, in dem McCauly Calkin versucht, den Einbrechern vorzutäuschen, dass er tatsächlich nicht allein zu Hause ist, indem er eine Pappfigur auf einen Plattenspieler legt und eine andere Pappfigur mit Schnüren umspannt, damit er Menschen imitieren kann tanzen. Da ich oft nicht zu Hause bin, bin ich mir sehr bewusst, dass ich mein Haus so zurücklasse, als wäre es noch bewohnt. Dafür habe ich früher einen 'Zuhause-Simulator' veröffentlicht, der Lichter in einem bestimmten Muster mit genügend Zufälligkeit schaltet, um es zu schaffen sieht aus, als wäre jemand anwesend. Ich habe einen "Fake-TV" hinzugefügt, der es so aussehen lässt, als würde ein Fernseher spielen. All diese Dinge helfen, aber wenn es darum geht, Präsenz zu simulieren, gibt es nichts Besseres als tatsächliche Bewegung. Ich brauchte also etwas, das sich bewegt und da ich keinen Plattenspieler habe und etwas wollte, das während meiner Abwesenheit funktionieren könnte, brauchte ich etwas festeres um 90 Grad zu drehen, damit es abwechselnd das Licht blockiert und das Licht nicht blockiert. Ich habe das zuerst mit einem billigen Servo gemacht, aber das gab zwei Probleme: Es war schwierig, eine Pappfigur, selbst eine nicht zu große, an der Achse und einmal anzubringen Ich tat, der Widerstand wäre einfach zu viel für dieses Servo. Ein stärkeres Servo hatte einen sehr steilen Preisanstieg, so dass ich anfing, an 'Schrittmotor' zu denken. Ich hatte immer noch einen, der aufgrund des daran befestigten Kühlkörpers schwer war, so dass er ideal schien. Ein Programm zum Drehen des Schrittmotors war leicht auf einem Arduino geschrieben, aber der Widerstand verursachte immer noch ein kleines Problem, da meine Pappfigur die Größe von hatte ein menschlicher Torso (ca. 80 cm lang). Entweder musste ich den Karton verstärken, um ihn schwerer zu machen, oder ich musste ihn kleiner machen. Letzteres schien die beste Lösung zu sein, da ich es einfach näher ans Licht bringen konnte. Die ganze Zeit hatte ich auch mit dem Gedanken gespielt, eine Figur aufstehen zu lassen. Motoren, Riemenscheiben usw. kamen mir in den Sinn und obwohl ich diese Idee nicht ganz aufgegeben habe, habe ich mich vorerst nur entschieden, der Pappfigur ein kleines Feature hinzuzufügen und das war ein beweglicher Kopf. Meine Idee war, die Figur um 90 Grad drehen zu lassen, so warf es einen vollen Schatten und ließ es dann mit dem Kopf nicken. und da kam mein Servo wieder ins Spiel. Eigentlich wollte ich kein ganzes Arduino opfern, nur um eine Pappfigur zu drehen. Auf der anderen Seite vermutete ich, dass ein Attiny13, den ich herumgelegt hatte, den Job genauso gut machen könnte: 4 Pins für den Stepper, 1 Pin für das Servo. genau das hat ein Attiny13 zu bieten. Ich gebe zu, dass ich manchmal sehr dicht sein kann, weil ich mir alle möglichen Szenarien ausgedacht habe, wie man die Vorrichtung zu einer bestimmten Zeit für eine bestimmte Zeit bedient, weil ich idealerweise die Kontrolle haben wollte es aus dem 'Zuhause-Simulator', den ich zuvor erwähnt habe. Also dachte ich über ein Kabel oder Wireless nach, aber dann war der Attin13 nicht die beste Idee, da er ein Problem mit Manchestercode hat und ich einen Pin für den Empfänger brauchte und die Empfindlichkeit dieser billigen Empfänger ist nicht so groß. Also dachte ich schon an eine kommerzielle Zeitschaltuhr, aber dann wurde mir klar, dass ich ein Idiot war. Da das Ding ein eigenes Netzteil benötigen würde, warum nicht einen Wallwart nehmen und diesen in einen Remote-Schalter stecken, den ich bereits von meinem Zuhause-Simulator aus steuern konnte. Also begann ich mit der Erstellung meines endgültigen Designs. BOM

Ein billiger ServoEin SchrittmotorEin KartonEin Attiny13Ein 8-poliger IC-SockelA Stück Stripboard 9 Streifen mit 17 LöchernEinige Servo-VerlängerungskabelA ULN2003A 16-poliger IC-SockelA 10 k WiderstandEin Kunststoff-Schneidbrett (oder ein anderes Stück leichtes Material)3-poliger Stecker (für Servo) 6-poliger Stiftleiste (für Schrittmotor)Klebeband (natürlich)

Zusätzlich: Eine Möglichkeit, den Attiny zu programmieren

Nur eine Bemerkung zum Schrittmotor. Ich benutze einen alten 55SI-25DAWC, aber wenn Sie noch einen kaufen müssen, gibt es eine sehr günstige Schrittmotor-Treiber-Kombination: den 28BYJ-48. Der Motor selbst kostet 1,50 Euro, aber für 2 Euro bekommt man den gleichen Motor mit Treiberplatine. das ist also ein gutes angebot

Schritt 1: 'Allein zu Hause' den Karton Man bauen

'Allein zu Hause' den Pappmann bauen
'Allein zu Hause' den Pappmann bauen
'Allein zu Hause' den Pappmann bauen
'Allein zu Hause' den Pappmann bauen

Aus einer Schachtel schneide ich ein Stück 40x20 cm und ein Stück 18x18 cm. Ich befestigte die beiden Teile als Kopf und Torso mit Klebeband und ließ eine kleine Lücke zwischen den beiden Teilen, die jedoch vom Klebeband bedeckt war, um ein Scharnier für den Hals zu bilden. (Die Bilder machen das sehr deutlich) Aus dem alten Schneidebrett schneide ich ein Stück von 20 cm Länge, ca. einen halben cm dick (die Dicke des Brettes) und ca. 1,5 cm breit. Die 1,5 cm reichten aus, um die Achse meines Steppers zu passen. Wenn Sie einen anderen Stepper haben, stellen Sie sicher, dass das Stück, das Sie schneiden, breit genug für die Achse Ihres Steppers ist. Bohren Sie ein Loch in den Totpunkt, das zu meiner Achse passt Unter dem 'Hals' baute ich aus Pappstücken eine Halterung für mein Servo. Natürlich kann dies mit einem Winkeleisen (oder Kunststoff) erfolgen, aber das ist etwas schwer am Papptorso zu befestigen, also habe ich nur Pappe verwendet, um das Servo zu montieren. Ich fügte dem Servo einen Arm aus einem 11 x 0,6 x 0,6 Stück Plastik vom Schneidebrett hinzu und befestigte diesen an dem Servo. Sehen Sie sich noch einmal die Bilder an, um zu sehen, wie dies funktioniert. Obwohl mein Stepper schwer genug war, um eine Pappfigur zu tragen, würden das Drehmoment und der Widerstand, der durch seine Drehung verursacht wird, den Motor dazu bringen, herumzulaufen, also habe ich eine Grundplatte aus 24 * 11 cm Schneidebrett. Ich habe zwei Löcher gebohrt, um den Schrittmotor zu befestigen und noch genügend Platz für den Controller zu haben. Obwohl sich das Servo um 180 Grad dreht, habe ich den Arm so positioniert, dass er den Kopf nicht ganz gerade aufstellt. Auf diese Weise fällt es leicht zurück, wenn das Servo in die 0-Position zurückkehrt

Schritt 2: 'Home Alone' Aufbau des Controllers

'Allein zu Hause' Aufbau des Controllers
'Allein zu Hause' Aufbau des Controllers
'Allein zu Hause' Aufbau des Controllers
'Allein zu Hause' Aufbau des Controllers
'Allein zu Hause' Aufbau des Controllers
'Allein zu Hause' Aufbau des Controllers
'Allein zu Hause' Aufbau des Controllers
'Allein zu Hause' Aufbau des Controllers

Der Controller ist ein Attiny13, der an einen ULN2003 angeschlossen ist. Obwohl ich in meiner Version etwas mehr Pins verwendet habe, um das Board flexibler für andere Projekte zu verwenden, sind die einzigen Header, die Sie benötigen, ein 3-poliger Servo-Header und ein 6-poliger Stecker für den Stepper

Schritt 3: 'Allein zu Hause': die Software

EDIT 2019 Das Projekt wurde auf Basis des einst beliebten 'Smeezekitty'-Kerns für den Attiny13 erstellt. Der mittlerweile oft eingesetzte MicroCore von MCUDude hat offenbar Probleme mit Variablen in den delayMicroseconds-Anweisungen. Wenn Sie diesen verwenden, ersetzen Sie "delayMicroseconds(300 + p * (2500 / 180));" durch "Verzögerung(5);"

Das obige Programm zeigt, wie ich meinen speziellen Stepper antreibe, und Sie müssen möglicherweise die in PORTB geschriebenen Werte ändern, wenn Sie einen anderen Stepper haben. Da der Attiny13 recht klein im Speicher ist und auch nicht allzu viele Pins bereitstellt, fehlt dem Programm etwas Raffinesse. Direktes Schreiben auf PORTB ist OK, aber in diesem Fall wird auch eine „0“auf PB4 und PB5 geschrieben. PB5 ist kein großes Problem, aber vielleicht möchten Sie PB4 verwenden. In meinem Fall platziere ich dort mein Servo und das macht nicht wirklich ein Problem, da ich sie nicht gleichzeitig benutze.

Wenn Sie jedoch einen anderen Mikrocontroller wie einen 328 verwenden möchten und das Schreiben auf PB4 und PB5 sowie PB6 und PB7 vermeiden möchten, verwenden Sie eine Maske, um nur auf Bit 0-3 zu schreiben. Die Maske dafür ist B00001111.

Wenn Sie dann die Bits Bit 0 und 2 setzen möchten, gehen Sie wie folgt vor:

Anstelle von PORTB=5 geben Sie an: PORTB=(PORTB &~mask) | (B00000101);

Für diejenigen, die das zu kryptisch finden:

es wird zuerst den Wert von PORTB mit der NOT-Maske UND-verknüpft und das Ergebnis mit dem Wert, den wir schreiben möchten, und weist diesen PORTB zurück.

Nehmen wir also an, PORTB= 00010000 und wir wollen 00000101 hineinschreiben, das können wir nicht sofort zuweisen, weil das PB4 löschen würde.

Wenn wir jedoch wie beschrieben vorgehen, wird daraus:

PORTB=(PORTB & 11110000) | 00000101

PORTB=(00010000 & 11110000) | 00000101

PORTB=00010000 | 00000101

PORTB= 00010101

Wir haben unseren Wert geschrieben und PB4 gehalten

Warum können wir also nicht sofort mit dem gewünschten Wert OR PORTB verwenden, anstatt ihn zuerst mit UND zu verknüpfen?

Nun, weil dadurch PB4 und PB5 erhalten bleiben könnten… aber es behält auch PB3-PB0 unverändert bei, wenn einer von ihnen bereits eine „1“enthielt

Natürlich wäre das Invertieren der Maske nicht notwendig, wenn wir sie bereits invertiert definieren würden, aber es ist gängige Praxis, dies so zu tun

Schritt 4: "Allein zu Hause" Einbrecher-Abwehr: Verwenden Sie

Sehen Sie sich das Video an, um zu sehen, wie es funktioniert (es wurde um -90 Grad gedreht, sorry dafür)

Die Absicht dieses Geräts ist es, bewegte Schatten auf die Vorhänge oder Jalousien zu werfen. Es funktioniert daher am besten mit Lichtvorhängen. Das Gerät selbst sollte von außen nicht sichtbar sein. Stellen Sie sicher, dass sich dahinter eine Lichtquelle befindet. Ich steuere es, indem ich ein RF-Signal an den Remote Switch in der Steckdose sende, der das Wallwart-Netzteil für dieses Gerät speist, aber Sie können auch einen Timer verwenden.

Schritt 5: 'Allein zu Hause', was nicht funktioniert hat……

Dieses Video zeigt eines meiner früheren Experimente mit einem größeren Torso und nur einem einfachen Servo. Offensichtlich kein gutes Design

Empfohlen: