Inhaltsverzeichnis:

Weasley' Standortuhr mit 4 Zeigern - Gunook
Weasley' Standortuhr mit 4 Zeigern - Gunook

Video: Weasley' Standortuhr mit 4 Zeigern - Gunook

Video: Weasley' Standortuhr mit 4 Zeigern - Gunook
Video: Geheimnisse eines Grand Hotels - Das Vier Jahreszeiten | die nordstory | NDR 2024, Kann
Anonim
'Weasley' Ortungsuhr mit 4 Zeigern
'Weasley' Ortungsuhr mit 4 Zeigern

Also, mit einem Raspberry Pi, der schon eine Weile herumgelaufen war, wollte ich ein schönes Projekt finden, das es mir ermöglicht, es optimal zu nutzen. Ich bin auf diese großartige Instructable Build Your Own Weasley Location Clock von ppeters0502 gestoßen und dachte, dass es gut wäre, es zu versuchen.

Die Uhr besteht im Wesentlichen aus einem Raspberry Pi, der Servos steuert, um die Zeiger der Uhr zu drehen. Wie im Haus der Familie Weasley in den Harry-Potter-Büchern/-Filmen hat jedes Familienmitglied seine eigene Hand. Jede Hand zeigt auf den aktuellen Standort dieses Familienmitglieds. Dies erreicht die Uhr, indem sie Nachrichten von den Mobiltelefonen der Familie empfängt, wenn sie einen vordefinierten Radius betreten oder verlassen.

Die Hauptunterschiede zum vorherigen Instructable waren, dass ich 4 Hände haben musste, nicht 2 (sonst hätten sich meine Töchter beschwert) und ich beschloss, auch den Rahmen zu bauen, keine alte Uhr zur Wiederverwendung zu bekommen. Dies lag daran, dass ich befürchtete, dass der Platz in einem vorhandenen Uhrengehäuse ein Problem sein würde, da 4 Servos usw.

Es hat viel länger gedauert, als ich erwartet hatte, aber hauptsächlich dort, wo ich auf fummelige Probleme stieß, die mich verblüfften und die im ursprünglichen Beitrag anscheinend nicht behandelt wurden. Nichts gegen das ursprüngliche Instructable, das im Allgemeinen großartig war, aber einige Jahre waren vergangen und Versionen der Dinge änderten sich … etc. Auch in Großbritannien zu sein bedeutete, dass einige der imperialen / metrischen Elemente mehr Herausforderungen verursachten, als ich erwartet hatte.

Auch wenn ich mit der Codierung in Ordnung bin, hat mich die physische Herstellung der Uhr definitiv gestreckt und einige zusätzliche Tools benötigt, was mich auch etwas verlangsamt hat.

Am Ende füge ich einen Abschnitt zu „Dinge, die ich anders/besser machen würde, wenn ich es noch einmal tun würde…“ein.

Lieferungen:

Was mir auffiel, war, dass die teuren Komponenten mit den Zeigern der Uhr zu tun hatten. 4 Hände sind definitiv viel teurer als 2. Ich habe mich entschieden, einige Kosten einzutragen, damit Sie eine Vorstellung haben. Dies ist das erste Mal, dass ich alles zusammengezählt habe, und ohne die Werkzeuge zu berücksichtigen, habe ich glaube ich etwa 200 Pfund ausgegeben. Plus einige Sachen, die ich nicht benutzt habe (und unten nicht aufgenommen habe) plus den Pi, plus das Netzteil, das ich beide schon hatte.

Pi usw

  1. Raspberry Pi - kann mich nicht erinnern, wie viel es ursprünglich gekostet hat, aber es war ein Model 2B. Ich denke, wenn Sie noch keinen haben, würde wahrscheinlich sogar ein Pi Zero reichen. Ich hatte mit Raspbian einen WLAN-Dongle und eine SD-Karte hinzugefügt. Und ich hatte ein altes Android-Handy-Ladegerät herumliegen.
  2. Adafruit Servohut für den Pi - 16€
  3. Netzteil für den Servohat - Das habe ich wirklich schwer gefunden, da alle Websites nur auf die adafruit-Site verwiesen haben, die dann offensichtlich ein US-Netzteil empfiehlt. Dann wurde mir klar, dass ich eine alte variable Spannungsversorgung mit austauschbaren Spitzen hatte, also habe ich diese verwendet. Aber der US-Dollar kostet 8 Dollar, das ist also der Standard.
  4. Etui für den Pi, damit ich ihn dann am Uhrenrahmen befestigen konnte. £5

Servos und Getriebe

Hier nenne ich den Preis für alle 4, also teilen Sie, wenn Sie weniger Hände haben möchten (Zusammengenommen sind es ~40 £ PRO HAND = 160 £:-o

  1. 4 x Servos - ich habe die von ppeters0502 empfohlenen verwendet - gefunden bei ebay für jeweils ~ 15 £ = 60 £ - Ich suchte nach dem folgenden Text "GWS-Digital-Servo-Sail-Winch-S125-1T-2BB-360-degree "aber manchmal waren sie nicht verfügbar
  2. 4 x Messingrohre, die genau ineinander passen - jeweils ~ 3 £. Ich habe jeweils 1 von 1/4", 7/32", 3/16", 5/32" = 11€
  3. 4 x Klemmen, die auf die Messingrohre klemmen, damit Sie Zahnräder anbringen können. ~ £7 pro Stück = £28. Ich habe sie von ActiveRobots bekommen, die regelmäßig bei Servocity in den USA bestellen, sodass Sie den internationalen Versand vermeiden können. Sie können auch alles andere bekommen, was Sie auf der US-amerikanischen Hauptwebsite von Servocity finden können. Das war sehr praktisch für die nächsten 2 Artikel
  4. 4 x Acetyl 0.770" Musterzahnräder zur Montage an den Klemmnaben. ~ 6 € pro Stück = 24 €
  5. 4 x Acetyl-Spline-montierte Acetyl-Getriebe zur Montage an den Servos. ~ 6,50 £ pro Stück = 26 £
  6. 1 x Packung Sechskantmuttern zu befestigten Zahnrädern an Spannmuttern = £ 2,60
  7. 1 x 7/64" Inbusschlüssel (Inbusschlüssel), da alles, was aus den USA kommt, imperial ist, daher sind die Hunderte von Inbusschlüsseln, die ich bereits habe, nutzlos = 1 £

Für den physischen Aufbau

Hier habe ich meistens Reste von Sachen verwendet, die ich herumliegen hatte

  1. 2 x Sperrholzquadrate für die 'Gesicht'- und 'Rücken'-Platte
  2. Ich habe dann 4x10cm Zylinder von einem alten Geländer, das ich hatte, geschnitten, um die Rückseite mit dem Gesicht zu verbinden
  3. Einige Blöcke, um die Servos im richtigen Versatz zu montieren - nur Weichholzreste, die ich auf Maß schneide.
  4. Verschiedene Schrauben. von sehr klein (um das Pi-Gehäuse am Rahmen zu befestigen) bis mittel (um den Rahmen zusammenzufügen)
  5. 0,75 mm Stahlblech ca. 50 cm x 20 cm (zum Ausschneiden der Hände). Dies war das einzige, was ich bei Wickes gekauft habe

Werkzeuge

Manche Sachen hatte ich und manche habe ich mir geliehen oder gekauft

  1. Lötkolben + elektrisches Lötzinn - zum Anbringen der Stecker am Adafruit Hat & Pi.
  2. Stichsäge - zum Ausschneiden der groben Form der Hände
  3. Bohren. nur ein normaler 18V Akkuschrauber
  4. Bohrer - Denken Sie daran, dass Sie imperiale Bohrer benötigen, um Löcher zu machen, die zu den Messingrohren passen. Ich habe es geschafft, einiges auszuleihen.
  5. Bügelsäge - zum Schneiden der Messingrohre. Tun Sie nicht, was ich getan habe, und geben Sie 3 Pfund für den Rohrschneider aus, er funktioniert durch Druck und bedeutet, dass das Innere der Rohre etwas kleiner wird. das nächstgrößere Unterrohr passt dann nicht durch
  6. Bankschleifer - Ich hatte keinen davon, aber ein Freund hatte und es machte die Hände VIEL einfacher. Bis dahin habe ich nur Dateien verwendet. Ich würde nicht nur für dieses Projekt einen kaufen, aber für die Metallhände war es großartig.
  7. Ich kaufte einige sortierte Diamantpunktfeilen (sehr klein). nützlich für die Hände und Tuben um £15
  8. grobes und glattes Schleifpapier
  9. Einige kleine Klammern halten die Dinge beim Bohren an Ort und Stelle.
  10. ein Laster aus dem gleichen Grund.

Schritt 1: Einrichten Ihrer Telefone, um ihren Standort an Ihren Pi zu senden (Teil I MQTT-Broker)

Dieses Bit wird von ppeters0502 in seinem ausgezeichneten Weasley Clock Instructable sehr gut beschrieben. Seltsamerweise, obwohl es vielleicht unterschiedliche Fähigkeiten widerspiegelt, begann er mit dem Build und wechselte dann zur Software, ich machte es umgekehrt. Also begann ich mit dem Telefon … warte, nein, ich habe nicht angefangen, ich habe mit dem MQTT-Broker angefangen, der Schritt 6 in seinem Instructable ist. Ich werde alle Bits weglassen, die er sehr gut macht, und nur einige Bits hinzufügen, die ich hinzufügen könnte. Ich bin die von ihm erwähnte CloudMQTT-Route gegangen.

ABER als ich dies schrieb, habe ich den Link zu den Plänen überprüft und festgestellt, dass es keinen kostenlosen Plan mehr gibt! Sie haben es aus scheinbar vernünftigen Gründen zurückgezogen. d.h. dass die Leute eine kostenlose Instanz einrichten und sie dann nie verwenden. Ich habe es nicht bemerkt, weil aktuelle Instanzen fortgesetzt werden können. Ich werde mich also nicht ändern. Aber es macht die Anleitung etwas überflüssig. Es scheint 3 Möglichkeiten zu geben.

  1. Zahlen Sie die 5 US-Dollar pro Monat für Cloud MQTT (aber das klingt auf Dauer teuer für die Uhr).
  2. Gehen Sie die Mosquitto on Pi-Route, wie im ersten Instructable beschrieben. Dazu kann ich nichts sagen, könnte aber eine gute Option sein.
  3. Google einfach "kostenloser MQTT-Cloud-Broker" und es sieht so aus, als ob es einige andere gibt.

Unter der Annahme, dass Sie einen funktionierenden MQTT-Broker haben, werden, wenn es sich um einen CloudMQTT-Broker handelt, ein Server, ein Benutzer, ein Passwort und ein Port angezeigt. Sie benötigen all dies, um Ihre Telefone einzurichten, um dem Makler Ihre Standorte/Umzüge zu senden.

Schritt 2: Einrichten Ihrer Telefone, um ihren Standort an Ihren Pi zu senden (Teil II Owntracks)

Dies ist auch im ursprünglichen Instructable in den Schritten 7 (Android), 8 (iOS) & 9 (Einrichten von Regionen) sehr gut abgedeckt.

Ich hatte nur iOS-Geräte, also habe ich Schritt 7 nicht ausprobiert.

Was würde ich dieser Anleitung hinzufügen?

  1. Im Setup gibt es auch die Felder TrackerID und DeviceID. Diese sollten Sie haben, um Sie innerhalb Ihrer Familie zu identifizieren. Z. B. Ich hatte sie als R bzw. RPhone. Dies bedeutet, dass Sie der Uhr mitteilen können, welcher Servo und damit welcher Zeiger zu drehen ist.
  2. Regionen sind die Namen für die Orte, die Sie verfolgen möchten.
  3. Jede Region wird durch einen Namen, einen Breitengrad, einen Längengrad und einen Radius definiert.
  4. Da ich mehrere Orte als einen Abschnitt auf meiner Uhr haben wollte, habe ich eine Namenskonvention verwendet, die sich als sehr nützlich herausgestellt hat. Andere Methoden sind möglich, aber das hat bei mir funktioniert.

    • Zum Beispiel wollte ich für den Abschnitt FAMILIE der Uhr meine Eltern und Geschwister und die Eltern und Geschwister meiner Frau haben. Daher hatte ich Locations wie "Family Tom", "Family Dick", Family Harry" & "Family ParentsR", was bedeutete, dass die nächste Stufe wissen konnte, was an die Uhr übergeben werden sollte.
    • Denken Sie daran, dass Menschen unterschiedliche Standorte haben können. Aber solange sie mit der Namenskonvention übereinstimmen, ist das in Ordnung. Z. B. meine Arbeit würde sich von der Arbeitsregion meiner Frau unterscheiden und anders genannt werden. aber solange beide mit "Arbeit" beginnen, ist alles in Ordnung.
  5. Sie möchten, dass der Modus auf dem Kartenbildschirm auf "Bedeutsam" eingestellt ist. Das bedeutet, dass Sie (meistens) nur Nachrichten erhalten, wenn Sie Regionen betreten oder verlassen. Dies scheint die aktualisierte Version der Notiz zu sein, die als WICHTIG markiert ist: am Ende von Schritt 8 im ursprünglichen Instructable.
  6. Wie im ursprünglichen Instructable erwähnt, ist die Verwendung von Google Maps eine großartige Möglichkeit, die Lat / Long von irgendwo herauszufinden. Ich fand es effizienter, dies in großen Mengen zu tun, indem ich alle Lat/Long-Werte meines Standorts herausgefunden habe, dann habe ich sie in Notizen (auf meinem Mac) eingefügt und mit der Cloud-Synchronisierung bedeutete dies, dass sie auf meinem iPhone auf magische Weise erschienen in Notes und ich konnte sie in Owntracks kopieren/einfügen. Es bedeutete auch, dass ich die Datei an die Telefone meiner Familie senden konnte und wir alle einheitliche Standorte hatten.
  7. Nahe beieinander liegende Standorte können zu Problemen führen. Mein Bruder wohnt 2 Straßen weiter, und mein Telefon dachte anfangs immer, ich sei gleichzeitig in der Nähe seines Hauses und zu Hause. Schließlich musste ich zusätzliche Logik in Node Red einbauen, um dieses Geschehen zu erfassen und zu ignorieren.

Schritt 3: Einrichten des Raspberry Pi

Einrichten des Raspberry Pi
Einrichten des Raspberry Pi

Hier gehe ich also davon aus, dass Sie einen Basis-Pi eingerichtet haben und über WLAN verfügen. Ich habe Raspbian ausgeführt, aber das sollte keine Rolle spielen. Verwenden Sie die Anweisungen auf raspberrypi.org, um alles einzurichten.

Beachten Sie, dass ein Pi über Anschlüsse für die Anzeige eines Monitors und einer Tastatur / Maus usw. verfügt. ABER wenn Sie es einmal in der Uhr haben, möchten Sie nichts davon. Die Antwort, die mir von jemandem auf der Raspberry Pi-Website vorgeschlagen wurde, war, glaube ich, eine VNC-Verbindung einzurichten. Auf diese Weise können Sie sich von einem anderen Gerät mit dem Pi verbinden und diesen auch steuern. Ich mache es von meinem Mac, habe es aber auch von einem iPad aus gemacht. Ich würde vorschlagen, etwas mit einer Tastatur zu verwenden, um die Bedienung zu vereinfachen.

Ich habe gerade festgestellt, dass sie es anscheinend einfacher gemacht haben, seit ich verbunden bin … siehe hier

Im Wesentlichen verbinden Sie sich und erhalten ein Fenster, das die Standard-Pi-Schnittstelle ist.

Sie haben also von Ihrem Laptop oder Computer aus ein Fenster zu Ihrem Pi.

Jetzt müssen Sie die Servos anschließen.

Zuerst müssen Sie einige grundlegende Lötarbeiten durchführen, um den Adafruit-Hut auf den Pi zu bekommen. Es ist ein wenig fummelig, aber obwohl es seit über 30 Jahren nicht gelötet wurde, war es in Ordnung. Wie immer habe ich ein nützliches YouTube-Video gefunden, das mich durch sie führt, was eine große Hilfe war.

Während der Hut 16 Servos betreiben kann, brauchte ich nur 4 und so habe ich mir nur die Mühe gemacht, den ersten Satz von 4 Pins zu löten.

Dann die Servos einfach auf die Pins schieben. Ich habe zuerst einen gemacht, um zu überprüfen, ob ich das Servo tatsächlich bewegen kann.

Hier stieß ich auf meine erste große Straßensperre. Ich hatte ein sehr einfaches Python-Skript, um die Servos zu bewegen, und buchstäblich ist nichts passiert. Ich verbrachte ungefähr eine Woche damit, neue Skripte usw. auszuprobieren, und dann begann Rauch auf dem Hut zu erscheinen. Nachdem ich alles ausgeschaltet hatte, überprüfte ich den Schaltplan. Es war eine Komponente, die gegen Verpolung schützt. Da ich eine Stromquelle mit mehreren Spitzen und mehreren Spannungen hatte, hatte ich die Tatsache übersehen, dass Sie den Gleichstromausgang durch Umkehren der Spitze in beide Richtungen führen können. Ich hatte mich geirrt (50:50 Chance) und gerade meinen ersten Adafruit-Hut ausgebrannt

:-(Also eine kleine Verzögerung, da ich eine neue gekauft, neu gelötet und die Spitze korrigiert habe. Viel besser.

Als nächstes musste ich herausfinden, wie man die Servos zum richtigen Punkt auf der Uhr bewegt. Das kommt in Schritt 5, aber was ich getan habe, ohne die eigentliche Uhr gebaut zu haben, war, die Servos leicht auf ein zufälliges Stück Holz zu schrauben und etwas Abdeckband mit einem Pfeil darauf zu kleben, wie auf dem Bild. Dies gab ein sehr visuelles Feedback zu dem, was ich kodierte.

Schritt 4: Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)

Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)
Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)
Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)
Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)
Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)
Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)
Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)
Installieren von Node Red (Abrufen der Nachrichten vom MQTT-Server an Ihr Python-Skript)

Node-RED ist ein Programm, das Sie auf dem Pi installieren und das Ihnen eine visuelle Schnittstelle (in Ihrem Browser) bietet, um Nachrichten von Ihrem MQTT-Server zu empfangen und die richtigen Informationen an Ihr Python-Skript weiterzugeben (wird im nächsten Schritt behandelt (Schritt 5) Ich habe so ziemlich die Anweisungen von ppeters0502 in Schritt 5 verwendet folgende

  1. Habe Empfangsknoten für die MQTT-Nachrichten - diese sind hellviolett und ich hatte 1 pro Familienmitglied
  2. Ordnen Sie dies dem Servo zu, das Sie bewegen möchten (nummeriert 0, 1, 2, 3)
  3. Bestimmen Sie, ob Sie auf OwnTracks einen Radius betreten oder verlassen
  4. Finden Sie heraus, auf welche Position das Servo zeigen muss

    Es gab einige Ausnahmen von den Grundregeln, die ich einbauen musste

  5. Stellen Sie den Winkel richtig ein

Ich ließ Node-RED die ersten 4 machen und hielt Python relativ einfach.

Hier sehen Sie den Basis-Flow, und alle Flows können hier in das Format exportiert werden, dh Sie können diesen Basis-Flow in Ihr Node-RED importieren und dann anpassen. Beachten Sie, dass ich alle Verbindungen von den violetten Knoten entfernt habe, damit Sie nicht auf meine MQTT-Instanz zugreifen können. Ich habe auch alle Testknoten entfernt, da sie tatsächliche Daten enthalten … Sie müssen diesen Dateityp möglicherweise in Flows.json ändern, um ihn in Ihr Node-RED zu importieren, aber Instructables ließ mich das nicht hochladen.

Die grünen Knoten sind Debug-Knoten, die dann die Ausgabe im Debug-Fenster auf der rechten Seite des Bildschirms anzeigen (müssen möglicherweise erweitert werden - finden Sie den Pfeil auf halber Höhe rechts)

Das erste Bit, das zu tun ist, ist das Bit "Live - nur zum Debuggen". Dadurch wird überprüft, ob Sie die MQTT-Nachrichten empfangen und sehen können, was darin enthalten ist. json ist nur eine strukturiertere Version der Nachrichten, mit der Sie die Daten einfacher abrufen können. In diesem Flow verbinde ich dann live die violetten Knoten oben links mit dem json-Knoten rechts davon.

Testknoten

Sobald Sie wissen, wie die Nachrichten live aussehen werden, wird es sehr langweilig, aus dem Haus zu gehen und die Straße hinunter und zurück zu gehen, nur um ein Ereignis auszulösen. Sobald Sie dies getan haben, können Sie die Nachricht in einen TEST-Trigger kopieren und dann einfach darauf klicken, um das Ereignis zu simulieren. Sie können die Daten auch ändern, um so zu tun, als wären sie für verschiedene Orte (stellen Sie sicher, dass sie genau den Ortsnamen in Owntracks entsprechen).

Sie können im Flow sehen, dass die Testfälle alle in einen separaten Knoten gehen und dieser dann in den json-Knoten. Dies dient lediglich dem Aufräumen des Bildschirms.

Ich kann nicht genug betonen, wie nützlich diese Knoten waren und immer noch sind.

Aufruf von Python

Also bin ich auf die nächste Straßensperre gestoßen. Dieser hat viel in Foren usw. gegoogelt. Mein Flow würde perfekt funktionieren, aber er würde mein Python-Skript nicht auslösen. Ich konnte das nicht herausfinden, aber ich erspare Ihnen das Fluchen usw. Nur um zu sagen, dass Sie, wie im zweiten Screenshot hervorgehoben, python3 angeben müssen, da Node-RED anscheinend python2 annimmt, es sei denn, Sie geben an.

2 zusätzliche Komplikationen - nur bei Bedarf

Ich hatte dann eine Reihe von Herausforderungen, bei denen die Logik nicht ganz funktionierte. Das erste war, dass Owntracks etwas komisch lief und da mein Bruder 2 Straßen weiter wohnt, hieß es oft, dass ich an 2 Orten gleichzeitig war oder ständig zwischen ihnen hin und her wechselte. Die einzige Möglichkeit, dies zu umgehen, bestand darin, eine Bedingung hinzuzufügen, um falsch positive Ergebnisse zu stoppen. Wenn behauptet wurde, ich sei bei ihm zu Hause, habe ich den tatsächlichen Längen- / Breitengrad in der Nachricht durchgeroutet und überprüft und abgebrochen, wenn er sagte, dass ich tatsächlich zu Hause war.

Das andere Problem war, dass ich beim Gassigehen mit meinem Hund nicht wirklich einen guten Radius bekam. Normalerweise gehe ich in der gleichen Gegend spazieren, also sagte ich hier: "Wenn ich diese Gegend betrete, gehe ich definitiv mit dem Hund spazieren, und das werde ich tun, bis ich nach Hause komme." das bedeutete, dass es nicht auf die Kneipe wechselte, an der ich auf dem Heimweg vorbeikomme, oder verschiedene andere lokale Orte, die beim Gassigehen auslösen könnten. Um dies zu tun, musste ich einige persistente Kontextvariablen einrichten (schauen Sie sie auf Node-RED an. Siehe Screenshot. Diese Variablen bleiben bestehen, bis Node-RED neu gestartet wird und so kann ich sagen, wenn Sie auf einem Hundespaziergang die Kontextvariable setzen zu "Hund". Ignoriere dann alles andere, es sei denn, ich 'betrete' Home.

Der letzte Screenshot ist der meines tatsächlichen letzten Flows, mit allen Ausnahmen, nur für Ihr Interesse.

Schritt 5: Servos tatsächlich mit Python auf dem Pi. bewegen

Ein kurzer Umweg zu Servos. Ich wusste nichts über Servos, aber es gibt viele Informationen online. Die, die ich verwendet habe, sind kontinuierliche Servos, die sich um 360 Grad drehen können, und zwar reibungslos. Die andere Hauptart sind Schrittservos, die sich in Stücken (Schritten) bewegen und anscheinend nur bis zu etwa 180 Grad gehen (hier eindeutig nicht nützlich). Der Vorteil von Stepper-Servos ist, dass Sie einfach einen Winkel einstellen können und sie sich zu diesem Punkt bewegen und anhalten. Alle Dokumentationen, die ich gefunden habe, besagten, dass kontinuierliche Servos funktionieren, indem sie eine Geschwindigkeit und eine Zeit erhalten, um diese Geschwindigkeit beizubehalten (z. Nach vielen Versuchen konnte ich dies nicht zum Laufen bringen, fand aber am Prüfstand heraus, dass Servos bei gleichem Winkel immer wieder auf den gleichen Punkt zurückkehrten. Was viel einfacher ist, also habe ich das einfach gemacht. Es mag einige Nachteile geben, die ich nicht kenne, aber es funktioniert für mich. Beachten Sie jedoch, dass jedes Servo einzigartig ist und Sie daher für jedes Servo einen eigenen Winkelsatz haben müssen. Ich fand es am einfachsten, ein Python-Skript zur "Kalibrierung" zu haben, bei dem ich die Servos der Reihe nach auf Winkel einstellen und sie verfeinern konnte, bis sie alle richtig aussahen. Dies ist das erste angehängte Skript. Sie kommentieren einfach die Servos, die Sie nicht testen, konzentrieren sich auf eines und passen dann die Werte nach Bedarf an. HINWEIS: Die Kalibrierung für den Prüfstand ist einfach und grob und fertig. Sie müssen beim Zusammenbau der Uhr neu kalibrieren, da die Zahnräder usw. alles ändern. Dann ist das zweite Skript ziemlich einfach. Es macht folgendes

  1. Einige Bibliotheken importieren
  2. Verschieben Sie die Variablen, die von Node-RED kommen, in Variablen im Skript
  3. ordnet die vom Kalibrierungsskript bestimmten Winkel den Positionen auf der Uhr zu.
  4. Überprüfen Sie, ob der Ort in der Liste gefunden wird, und wenn nicht, gehen Sie zu "Gefahr"
  5. schreibe was gemacht wurde in eine Log-Datei
  6. Bewegen Sie das gewünschte Servo in den gewünschten Winkel
  7. Stoppen Sie das "Summen" eines Servos *

3 Dinge zu beachten.

Die Log-Datei ist sehr nützlich zum Debuggen. Das bedeutet, dass Sie sich das Node-RED-Debugging einer Nachricht ansehen und dann sehen können, was im Skript passiert ist. die ausgabe sieht so aus. Die ersten 3 sind, dass ich mit dem Hund spazieren gehe und dann Kind 1 das Haus verlässt und in der Schule ankommt. Hinweis, um die Zeit auf dem Pi zu überprüfen. Es kann auf UTC voreingestellt sein und keine Sommer-/Winterzeitumstellungen zulassen. Z. B. die unten angegebenen Zeiten sind 1 Stunde.

2020-12-07_05:36:03 Wer = 0, loc = Reisen, Detail = Heimat, Winkel = 10, Index = 8

2020-12-07_05:36:04 Wer = 0, loc = Hund, Detail = Astons, Winkel = 86,5, Index = 10

2020-12-07_06:07:49 Who = 0, loc = Home, detail = enter, Angle = 75, index = 0

2020-12-07_06:23:53 Wer = 2, loc = Reisen, Detail = Heimat, Winkel = 19, Index = 8

2020-12-07_06:30:48 Wer = 2, loc = Schule, Detail = N, Winkel = 60.5, Index = 2

Servo-Summen

Einer der Servos (0) summte nach dem Ende des Skripts weiter. Wie Sie sich vorstellen können, ist dies in unserer Küche sehr nervig. Ich habe irgendwo einen Thread gefunden, in dem erwähnt wurde, dass der Servowinkel auf "none" gesetzt wird, was ihn irgendwie auf Leerlauf setzt. Das hat hervorragend funktioniert und ist im Drehbuch am Ende zu sehen.

Zeiten

Denken Sie daran, wie tief eine Hand braucht, um rund um die Uhr zu streichen. Sie können im Skript sehen, dass es eine time.sleep(4)-Zeile gibt, kurz bevor wir das Servo so einstellen, dass es aufhört zu summen. Das liegt daran, dass Sie der Hand erlauben müssen, ihr Ziel zu erreichen, bevor Sie sie auf Leerlauf stellen. Sonst hört es einfach auf. Dies ist auch beim Kalibrieren wichtig, da Sie mehrere Bewegungen innerhalb des Skripts ausführen. Ich würde es so einstellen, dass es nacheinander zu allen 12 Standorten wechselt, damit ich sie alle erneut überprüfen kann. aber du brauchst ein bisschen zeit dazwischen.

Schritt 6: Finalisieren der Software - Telefone zu Servos

Sobald Sie den Prüfstand und die Skripte eingerichtet haben, können Sie ihn eine Weile „live“ausführen und sehen, wie er in Echtzeit funktioniert. Hier habe ich die Ausnahmen gefunden, die ich meinem Node-RED-Flow hinzufügen musste.

Sie können Familienmitglieder im Node-RED-Flow ganz einfach trennen und verbinden, wenn Sie sich auf eines konzentrieren möchten. Zum Beispiel, wenn zwei Probleme verursachen, Sie aber eines nach dem anderen beheben möchten. Beachten Sie andernfalls, dass Sie weiterhin Nachrichten von allen verbundenen Telefonen erhalten.

Ich erwähnte das Problem mit dem Hundespaziergang und dem Haus meines Bruders, das ziemlich nah ist. Ich hatte 2 andere Herausforderungen.

Erstens, Standorte innerhalb anderer Standorte. Meine Frau hat einen Kurs an einem College in London gemacht. Wir wollten, dass sich das als 'School' eintragen lässt, aber es ist auch in 'London'. Wir mussten also den Kontext wiederverwenden, um zu sagen, dass, wenn Sie diese „Schule“verlassen, nach „London“und nicht nach „Reisen“ziehen.

Zweitens die Rennbedingungen. Wie bereits erwähnt, ist das Haus meines Bruders 2 Straßen entfernt und auch in der Nähe unseres Lieblingslokals / Restaurants. Dies bedeutet, dass manchmal 2 Signale gleichzeitig oder sehr nahe beieinander empfangen werden. Dies kann eine "Rennbedingung" einrichten, bei der Sie unterschiedliche Ergebnisse erhalten, je nachdem, welches die Logik am schnellsten durchläuft, was zu unvorhersehbaren Ergebnissen führt. Um dem entgegenzuwirken, habe ich alle "eingehenden" Nachrichten mit einer Verzögerung von 1 Sekunde in der Logik versehen, was das Problem zu beheben schien. Es mag bessere und elegantere Möglichkeiten geben, dies zu lösen, aber es schien zu funktionieren.

Schritt 7: Aufbau der physikalischen Uhr - Teil I - die Servos & Achse

Aufbau der physikalischen Uhr - Teil I - Servos & Achse
Aufbau der physikalischen Uhr - Teil I - Servos & Achse
Aufbau der physikalischen Uhr - Teil I - Servos & Achse
Aufbau der physikalischen Uhr - Teil I - Servos & Achse
Aufbau der physikalischen Uhr - Teil I - Servos & Achse
Aufbau der physikalischen Uhr - Teil I - Servos & Achse

Nun zu dem Teil, von dem ich am wenigsten überzeugt war, weshalb ich es so belassen habe. Ich wollte ein anständiges Gesicht und eine einfache Konstruktion. Ich war auch nervös, physisch 2 Servos um die Mittelachse zu bekommen. Dies bedeutete, dass ich, nachdem ich kurz bei ebay nach alten Uhren gesucht hatte, wie in der Anleitung, der ich folgte, beschloss, mir mehr Chancen zu geben, indem ich es selbst baute.

  • Ich habe 2 große (~ 30 cm) Sperrholzquadrate bekommen, die ich herumliegen hatte (ca. 9 mm dick).
  • Dann habe ich eine alte Geländerschiene in 4x10cm Abschnitte geschnitten und Vorder- und Rückplatte zusammengeschraubt.
  • Nachdem ich das Mittelloch markiert hatte, bohrte ich es auf die gleiche Größe wie das größte Messingrohr.
  • Dann habe ich es mit normaler weißer Glanzfarbe lackiert.
  • Nach einigen Experimenten stellte ich fest, dass ich wahrscheinlich nicht 4 Servos um die gleiche Achse bekommen könnte, wenn sie alle an der hinteren (oder vorderen) Platte befestigt wären. Also musste ich entweder 3 + 1 oder 2 + 2 auf jedem Teller haben. Ich landete mit 3 auf der Rückseite und 1 auf der Vorderseite.
  • Ich habe die erforderlichen Versätze auf einem Blatt Papier ausgearbeitet und dann die Messingrohre passend zugeschnitten. Beachten Sie, dass das dickste Rohr das kürzeste ist und das dünnste bis zur Rückplatte reichen muss. (Ich habe den kleinsten tatsächlich in ein Loch eingebettet, das ich teilweise in die Rückplatte gebohrt habe, aber nicht ganz durch, damit sich die Achse nicht nach hinten bewegt).
  • Für die Rohre habe ich einen Rohrschneider gekauft, der jedoch Druck verwendet, um sie zu schneiden, und das bedeutet, dass Sie das kleinere Rohr nicht hineinbekommen. Also benutzte ich eine Bügelsäge und musste dann ziemlich viel feilen, um sie zum Laufen zu bringen. Die Diamantpunktdateien waren hier von unschätzbarem Wert.
  • Dann habe ich das Diagramm an die tatsächlichen Versätze für die Klemmen und Zahnräder angepasst *.
  • Sobald ich die Offsets hatte, wusste ich, wie "hoch" die Blöcke zur Montage der Servos gemacht werden mussten. Ich brach ein paar Blöcke, indem ich sie zu dünn sägte und auch das Loch bohrte, um den Draht herauszulassen.
  • Dann kam der fummelige Teil, wo die Blöcke so platziert werden sollten, dass sie genau auf die Zahnräder der Achse trafen. Ich schraubte einen Block ein und konnte dann das Servo drehen, um die Achse zu treffen, und dann den zweiten Block am anderen Ende des Servos einschrauben. Ich fand auch, dass ich ein wenig aus einigen Blöcken herausschneiden musste, um zu vermeiden, dass andere Zahnräder hängen bleiben. Es hat eine ganze Weile gedauert.
  • Als ich das alles erledigt hatte, holte ich mir mein Himbeer-Pi-Gehäuse, bohrte zwei Löcher hinein und schraubte es an die Frontplatte. Dann könnte ich den Pi hinzufügen, die Vorder- und Rückplatte schließen (nachdem ich die Servos mit dem Pi verbunden habe (ich erinnere mich, welches Servo für welches Familienmitglied war) und mich den Händen zuwenden …

* Hier habe ich das größte Problem gefunden, das ich noch nicht vollständig gelöst habe. Die Messingrohre waren 1/4", 7/32", 3/16", 5/32". Aber die Klemmen waren metrisch (außer einer, die 1/4") war. Um die Rohre auf metrisch umzurechnen, waren sie 6,35 mm, 5,56 mm, 4,76 mm, 3,97 mm. Die restlichen Klemmen waren 4 mm, 5 mm und 6 mm Bohrung. Die kleinsten 2 und die Die größten sind in Ordnung, aber die 0,44 mm sind eindeutig zu viel Federweg für die Klemme, also musste ich sie mit Papier auspolstern. Ich habe dies mehrmals ausprobiert und es funktioniert eine Weile gut und löst sich dann wieder. Also die zweitgrößte Hand funktioniert nicht richtig. Es war ungefähr 6 Monate in Ordnung, also war die Zeit, die ich damit verbracht habe, gut investiert. Aber wenn ich es noch einmal gemacht hätte, wäre ich vielleicht eine Nummer größer oder kleiner geworden, mit einer Lücke, die ich versuchen konnte eine bessere Klemmung zum Rohr passen zB für 9/32", 1/4", (Gap), 3/16", 5/32"

Schritt 8: Die Uhrzeiger

Die Uhrzeiger
Die Uhrzeiger
Die Uhrzeiger
Die Uhrzeiger
Die Uhrzeiger
Die Uhrzeiger

Ich entschied mich für Stahlblech, da ich etwas Starres wollte, das aber weniger wahrscheinlich bricht, während ich es mache. Außerdem bedeutete es dünn, dass 4 Hände weniger ein Problem waren.

  • Zuerst skizzierte ich eine Form.
  • Dann habe ich es auf den Stahl auf etwas Abdeckband übertragen.
  • Dann habe ich sie sehr unfachmännisch mit meiner Stichsäge ausgeschnitten. Sie waren und sind alle unterschiedlich, aber das stört mich nicht.
  • Dann schlug mir ein Freund vor, mir seinen Schleifbock auszuleihen, um sie zu formen, und das war großartig. sehr empfehlenswert. Ansonsten dauert die Einreichung ewig.
  • Es war noch etwas zu feilen und dann zu schleifen, um keine scharfen Kanten und auch ein schönes Finish zu gewährleisten.
  • Ich musste Löcher bohren, die zu den jeweiligen Messingrohren passen (verwenden Sie abgeschnittene Rohre zur Überprüfung, nicht die montierten an der Uhr).
  • Ich fand, dass die Löcher ein wenig Feilen brauchten, um sie auf die Rohre zu bekommen, aber sobald sie dran waren, waren sie fest und brauchten keinen Kleber. Die Ausnahme war die vordere Hand, die ich als "Cover" haben wollte. Also habe ich ein (meist) rundes Stück Stahl ausgeschnitten, nachdem ich das Loch gebohrt und auf die richtige Größe gebracht hatte, und es vorne mit Sekundenkleber geklebt. Sie können es auf dem letzten Bild sehen. Gelegentlich brauchte die vordere Hand einen Klecks Kleber, um sie zu befestigen, aber nach ein paar Fehlstarts funktionieren die Hände wirklich gut.
  • Ich hatte die Idee von Fotos abgelehnt (weil Kinder sich schnell über unsere Datumsfotos beschweren würden), also entschied ich mich für das Malen auf Initialen mit Acrylfarbe.

Schritt 9: Fertig

Vollständig!
Vollständig!
Vollständig!
Vollständig!

Es funktioniert alles wirklich gut. Die Hände sind manchmal ein wenig daneben, je nachdem, woher sie kommen, aber eigentlich spielt es keine Rolle, da jede Position ein Abschnitt und nicht nur eine Linie ist.

Seltsamerweise weigert sich mein Telefon manchmal, zu bestätigen, dass ich zu Hause bin. Ich befinde mich klar im Umkreis von Owntracks, wenn ich auf der Karte angezeigt werde, und selbst wenn die Genauigkeit gut ist … ich habe keine Ahnung, warum. scheint den Rest meiner Familie nicht zu belasten. aber die einstellung ist die gleiche. Das bedeutet, dass Owntracks nie eine Nachricht sendet und ich in 'Travelling' steckenbleibe. Aber normalerweise regelt es sich irgendwann von selbst.

Es war sehr nützlich, es in unserer Küche zu haben, vor allem, um zu wissen, wann die Mädchen von der Schule oder den Häusern ihrer Freunde nach Hause kommen, und so, wann Essen / Tee für sie bereit ist.

Nochmals ein großes Dankeschön an @ppeters0502 für die tolle Anleitung. Hoffentlich können diese etwas dazu beitragen, eine Uhr mit 4 Zeigern zu bauen.

Schritt 10: Dinge, die ich gelernt habe und die ich besser/anders machen würde, wenn ich es noch einmal tun müsste

  • Physische Builds erfordern Versuch und Irrtum. Es gibt keine Möglichkeit, die Probleme des Weltraums vorherzusagen, Sie müssen nur eintauchen und es versuchen.
  • Für Code sind Google-Probleme unerlässlich
  • Starte einfach und baue auf. Die Servos auf dem Prüfstandsholz bedeuteten, dass ich das meiste ohne den physischen Aufbau zum Laufen bringen konnte
  • Vielleicht habe ich die Hände an einer CNC-Maschine lasergeschnitten. Aber ich wusste nicht, wo der örtliche war, und ich mochte, wie der Weichstahl funktionierte (er war billig und der Bankschleifer machte es viel einfacher).
  • ein Schrittmotor könnte möglich sein, wenn Sie das Getriebe verwenden, um eine 360-Drehung zu erzielen. aber eventuell müssen die Servos dann zu nah an der Mittelachse stehen
  • Es gibt 2 Arten von Servos (Futaba & HiTech). Stellen Sie sicher, dass Sie dies überprüft haben, da sie eine unterschiedliche Anzahl von Zähnen auf der Verzahnung haben. Und ich habe anfangs die falschen gekauft…
  • Schließen Sie den Hut nicht mit der falschen Polarität an;-)
  • Google und Stack Overflow sind deine Freunde, wenn du nicht weiterkommst. Aber Sie müssen gute Suchbegriffe verwenden…
  • Der Prüfstand ist eigentlich eine Möglichkeit, viel einfacher zu einer einfacheren, günstigeren Version zu kommen. Die meisten Komplikationen bei der Konstruktion sind darauf zurückzuführen, dass sich die Zeiger um dieselbe Achse drehen müssen. Wenn Sie da Kompromisse eingehen, ist alles viel einfacher. Und ich denke, dass 4 die Grenze der Einzelachse sein kann, es sei denn, die Welle wird viel länger. Sie könnten, ich nehme an, 3 auf der Frontplatte und drei auf der Rückplatte haben, wenn der Schaft länger wäre …

Schritt 11: Mögliche zukünftige Erweiterungen…?

Die Ideen, die ich zu den nächsten Schritten hatte, sind wie folgt.

  1. Ich würde gerne ein altes iPad als Zifferblatt umfunktionieren. d.h. eine digitale Uhr machen. Eventuell browserbasiert oder eine App. Da eine physische Uhr im Wesentlichen zustandslos ist (dh sie weiß nicht, wo sie sich gerade befindet, außer dass sich die Zeiger in einer physischen Position befinden), müsste ich einen dauerhaften Datenspeicher haben. Node Red kann in das lokale Dateisystem schreiben, also würde ich das wahrscheinlich tun.
  2. Wenn ich das täte, würde ich es gerne von außerhalb des Hauses sehen können. Aber dann müssen wir wirklich die Sicherheit klären. Da der Zugriff innerhalb desselben WLAN-Netzwerks eine Sache ist, ist der Zugriff aus dem Internet eine andere. Ich habe derzeit keine Ahnung, wie das am besten geht, aber ich vermute, dass ein MQTT-Abonnement in die andere Richtung funktionieren könnte (pi veröffentlicht den aktuellen Status und externe Geräte abonnieren ihn)…?
  3. Ich hätte gerne eine Hand für 'Abroad'. aber das könnte aus der Sicht von OwnTracks komplex sein. Vielleicht könnte man einfach Long/Lat in Kombination mit einigen großen Radien verwenden?

Empfohlen: