Konzept: magische Uhr (wo ist meine Familie grade?)

Begonnen von Rince, 10 März 2016, 10:47:02

Vorheriges Thema - Nächstes Thema

Rince

Projektstatus:
=> Konzept
Einzelprojekte definieren
=> Planung
=> Beschaffung
Programmierung


Zeitplanung:
bis Sommer 2016

Kosten:
je nachdem was man schon hat, oder was man vielleicht mit Hilfe von FHEM-Mitstreitern günstig herstellen lassen kann (CNC-Fräse für Acrylglas anyone?), denke ich, sollten 50-100€ nicht unrealistisch sein (halt mit längeren Lieferzeiten aus China...)




Hi,

nach dem letzten erfolgreichen Projekt (Müllabfuhr als Gemälde mit LED Anzeige) und einer kurzen Spinnerei (Kuckucksuhr zur Müllabfuhrvisualisierung) habe ich beschlossen, ein anderes Projekt Wirklichkeit werden zu lassen:

Die magische Uhr von Molly Weasley, die anzeigt, wo ihre  Familienmitglieder sind.

Diese Idee wurde schon öfter umgesetzt:
http://magicclock.de
http://www.themagicclock.com

Gemeinsamkeiten der beide Projekte:
Die Zeiger sind an Röhrchen befestigt, die ineinander laufen. So wird der klassische Look einer Uhr erzeugt, nur dass eben mehr "Uhrzeiger" zur Verfügung stehen können.
Die Zeiger werden von kleinen Servos angetrieben, mit einer 2:1 Umsetzung um aus den 180° des Servos 360° zu bekommen.



Mein Ziel ist es, das Design möglichst universell zu halten, so dass man durch "weglassen" eine einfachere Uhr bekommt (weglassen ist imho immer einfacher als "dazu zu konstruieren"

Von da her möchte ich hier ein Maximaldesign.

6 Uhrzeiger, die Servos in einer sternförmigen Anordnung um die "Weiserstange" (wer weniger braucht, lässt einfach die Löcher für die übrigen Servos leer)


Mit LEDs im Zifferblatt will ich nicht spielen, ich halte Bilder der Personen für "Stilechter"

Aber:
Evtl wäre ein kleines Display cool, welches auf Wunsch einen QR-Code anzeigt; der QR-Code könnte dann ein Smartphone dazu bewegen, mit Google Maps den Standort anzuzeigen; dazu bräuchten wir also noch 6 Push-Buttons (oder ein Drehpotentiometer; dann könnte man einen Zeiger auf ein Foto drehen; wenn der Zeiger dann ruhig steht, könnte das Display den Code für einige Sekunden anzeigen)
(sinnvoll z.B. dann wenn die Uhr auf "unterwegs" steht)
Evtl so ein Display?
https://www.adafruit.com/products/2088
(In Farbe könnte man vielleicht vor dem QR Code noch ein Bild der gesuchten Person anzeigen)
Edit:
Tendentiell ist auch denkbar, die Display Sache auszulagern


Weiterhin ziehe ich einen Aufbau mit "Standardbauteilen" vor. Also lieber ein Breadboard MB102 mit Stromversorgung http://artofcircuits.com/wp-content/uploads/2014/04/MB102-3V3-5V-3.jpg als eine eigens entworfene Platine nebst Netzteil; ich möchte, dass so wenig bastlerisches Geschick wie nötig benötigt wird. Das macht das ganze zwar sicher etwas teurer, aber dafür einfacher im Nach/Mitbau)

Ansteuerung:
Hier beginnen die ersten grundlegenden Fragen
Das ganze soll natürlich fhem als Server für die Standortdaten nutzen, so viel wie möglich sollte aber autark laufen

Netzwerk (WLAN?)
6 PWM Kanäle für die Servos
6 Inputs für Push-Buttons (oder einen analogen Eingang für das Poti)
Möglichkeit ein Display anzuschließen, Bilder müssen flexiebel austauschbar sein (wobei ein QR-Code-Bild theoretisch auch als URL gesendet werden könnte)

Welche Plattform?
Arduino?
ESP8266?
Kompletter Raspberry?

Daran anschließend:
Welches Protokoll? Was kommt von fhem an? Wie wird der QR-Code erzeugt?



Ring frei :)

(PS:
Sollten sich tatsächlich Mithelfer finden, werde ich eine Projektseite im Wiki anlegen, das ist schöner zu gliedern als ein Thread :) )
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

schnitzelbrain

#1
Super Idee.

Hatte ich auch schon im Kopf und mit Familie angesprochen, der "mechanische" Aufwand war mir dann doch zuviel.

Als Ersatz benutze ich fhem mit dem geofency modul und die zugehörige Software auf dem iPhone.

Der Status wo sich die Person befindet wird mit Icons angezeigt.

Haus - zuhause
Auto - unterwegs
Schreibblock - Arbeit
Uni Hut - Universität
Frau Symbol - Mutter
Usw.

Läuft problemlos und kann jederzeit erweitert werden.

Dazu halt die app gekauft und fhem über https erreichbar gemacht.

Edit: Alles auf der Raspi

Rince

#2
* Diesen Post date ich up *


Links zum ansehen

####
Google Maps

Hier eine Beschreibung, wie man eine Google Maps URL konstruiert (weiß aber nicht, ob die noch gültig ist)
http://stackoverflow.com/questions/6018060/google-maps-url-i-want-to-create-a-url-to-google-maps-i-want-to-show-search-ne

###
Roommate
locationMap in QR-Code umwandeln

###
Standort am Handy
EgiGeoZone, kann Standort direkt an fhem senden.
Dann reicht ein simples DOIF, um den Standortdummy auf die passende "Uhrzeit" (also die Soll-Position des Zeigers) zu setzen und per MQTT zu publishen
(Manche Standorte könnten so auch auf der Uhr gleich aussehen; verschiedene Supermärkte z.B., wenn man es genau will gibt es ja den QR Code)

Leider kann es kein Live-Tracking. Ich denke ich muss im Forum mal bitten, dass das wieder kommt ;)
http://rpi.spdns.eu/egigeozone/index.php?topic=51.0
###
Bilder per MQTT verschicken

https://developer.ibm.com/recipes/tutorials/sending-and-receiving-pictures-from-a-raspberry-pi-via-mqtt/

Idee:
Wenn Poti eine Zeit still steht, Mit dem Inkrementalgeber drehen, drücken zum auswählen. Dann gibt es eine Nachricht mit der Zielperson (generisch am simpelsten Wohl die Nummern 1-6) an fhem
Das nimmt die letzten bekannten Koordinaten der Person, baut eine URL für Google Maps,
macht aus der URL einen QR-Code
sendet das Bild zurück zur Uhr
diese stellt es für 30 Sekunden am Display dar


###
QR Code seriell an Arduino + Display

Hier wird ein QR Code am Rechner erzeugt, seriell an den Arduino übertragen und angezeigt
http://www.instructables.com/id/The-useless-but-mazing-QR-clock/step2/The-software/


###
QR Code lokal am Rechner per CLI erzeugen
https://wiki.ubuntuusers.de/qrencode/

###
Befestigung der Servos
http://www.erlebniswelt-segelfliegen.de/berichte/servorahmen-im-selbstbau/
Ist nicht exakt was mir vorschwebt, aber so ähnlich (nur etwas weniger komplex) => dieses Holzteil lässt sich bestimmt easy an jeder beliebigen Stelle einfach festschrauben. Sowohl was den genauen Abstand vom Zahnrad betrifft, als auch was die exakte Höhe angeht

Z-Profile wären eine Alternative, aber da müßte man die exakten Höhen wissen; von der Stange habe ich nix gefunden, selber kanten kann ich nicht und machen lassen ist zu teuer.


Hat sich als unpraktikabel herausgestellt.
=> Distanzbolzen M3 sind das Mittel der Wahl :)

Abmessungen des Servos
http://www.arduinoos.com/2016/02/sg90-servo-part-1/


Shops für Material
(Sammlung)

#Messingrohre
http://shop.strato.de/epages/61433551.sf/de_DE/?ObjectPath=/Shops/61433551/Categories
(hatten alle Rohre vorrätig, und ich war grade in der Ecke)


#Sicherungsscheiben
http://www.schraubenking.at/Sicherungsscheiben
(noch unklar)


#Billige Displays ( <5€ / Stück)
=> nicht getestet!
Memo: der Anschluss für die Hintergrundbeleuchtung ist PWM fähig, so kann man es bequem dimmen (so grau leuchtende Displays machen jede Optik kaputt)

Beide verwenden als Controller einen ST7735 (aber in verschiedenen Revisionen)

http://www.ebay.de/itm/261652370910
http://www.ebay.de/itm/380809480973


#Servomotoren
4 Stück < 8 €
http://www.ebay.de/itm/252022445306
Sollten von 3V - 7,2V funktionieren, also allem was man vermutlich eh an Spannung da hat :)
Ich hab mal welche zum spielen besorgt.


#Billige Plastikzahnräder
http://www.bastel-dehs.de/de/Modellbau-Zahnr%C3%A4der/Zahnr%C3%A4der-Gr%C3%BCn-Modul-1

Anfertigen der Trägerplatte CNC/Lasercut
=> Hilfe gesucht
https://forum.fhem.de/index.php/topic,50681.0.html


#Treiber für Servomotoren
PCA9685 (bitte googeln)

Material dazu
https://learn.adafruit.com/16-channel-pwm-servo-driver

Ist ein I2C Interface für 16 PWM Ausgänge. 6 davon für die Servos, 1 für das Dimmen der Hintergrundbeleuchtung vom TFT. Kostet bei eBay D 10€, aus China 5€. Ist nicht so teuer, aber wohl eine vernünftige Sache.
Hinweis:
In der Adafruit Library wird öfter von LCD Screen gesprochen, davon nicht irritieren lassen

Weitere Beispiele für die Adafruit Library:
http://blog.biicode.com/moving-servos-with-arduino-pca9685-and-a-nunchuk/
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Markus

Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Rince

Klingt nicht unspannend. Muss mal eine zerlegen.
Defekte Radios sollten sich in einem Haushalt mit Kindern finden lassen ;)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#5
//Edit:
50 Zahnräder statt 40 => Überschwingen
//


"Getriebe":
Nach einigen Zeichenentwürfen habe ich mich für Zahnräder mit Modul 1 entschieden. Die sind ziemlich groß.

Das kleine Zahnrad hat mit 20 Zähnen schon 20mm Wellenabstand
Bei Bastel-Dehs kostet 1 Stück 24 Cent.

Die Idee ist, diese Zahnräder jetzt auf den jeweiligen Wellendurchmesser aufzubohren.


Das große Zahnrad mit 40 Zähnen hat einen Wellenabstand von 40mm!
Kostet 30 Cent / Stück bei Bastel-Dehs...
Wie ich das auf den Servo bekomme, weiß ich noch nicht. Muss das Zeug wohl erst mal in die Hände nehmen können.


Habe aber ernste Sorgen, ob die kleinen Servomotörchen die Räder wuppen ;)
Evtl. brauche ich sie ne Ecke größer  ::)

Der große Vorteil von den Rädern mit dem Modul 1 ist in meinen Augen der:
Die sternförmig angeordneten Motoren können mit der Welle weg von der zentralen Weiserstange angeordnet werden. Das macht die Konstruktion kompakter. Außerdem hoffe ich, so die Mechanik auch mit meinen eher grobmotorisch veranlagten Fähigkeiten hinzubekommen.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

ernst1024

Ich musste etwas schmunzeln, angesiedelt irgendwo zwischen Dingen die kein Mensch braucht und Big Brother, mit freundlicher Unterstützung der NSA.

Aber die technische Umsetzung ist bestimmt spannend, wenn mich der Teufel reitet bin ich sogar eventuell u.U vielleicht dabei.

Verstehe ich das richtig dass die Materialbeschaffung da wo sinnvoll koordiniert wird? Also so dass nicht jeder 6 Messingröhren a 1M kaufen muss wo er jeweils vielleicht 10 cm braucht?
Gruß Ernst

Rince

Hi Ernst,

ich denke so viele Nachbauer wird es nicht geben  8)
Ich freue mich aber über jeden, der nachbaut und ggfs. auch die ein oder andere Codezeile beisteuert  ::)

ZitatVerstehe ich das richtig dass die Materialbeschaffung da wo sinnvoll koordiniert wird? Also so dass nicht jeder 6 Messingröhren a 1M kaufen muss wo er jeweils vielleicht 10 cm braucht?
Wenn wer Interesse bekundet, logisch :)

Wäre nur sinnvoll, dass frühzeitig kund zu tun, da ich sonst halt eher bestelle, was ich brauche.

Wenn du willst, mache ich gerne eine Liste, was ich übrig habe, bzw. wo es gleich noch sinnvoll ist, mehr zu bestellen wegen besserem Porto.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#8
So,
mal ein Update und was mir so im Kopf rumschwirrt:

Zahnräder 40 / 20:
Habe ich da. Ist aber evtl nicht ganz schlau:
Zum einen haben die Servos vermutlich eher 170°, zum anderen dürfte ein "Überschwingen" optisch sehr reizvoll aussehen. Also langsam anfahren, bis zum Ziel beschleunigen, langsamer werden, stoppen, zurück... so 4-5 Mal vielleicht.
Das geht aber nur dann, wenn der Servo noch Drehreserve hat.
Ergo habe ich mal zusätzlich Zahnräder mit 50 Zähnen geordert, das sollte reichen.

Bezüglich der Ansteuerung der Servos:
Da gibt es ne hübsche Platine mit I2C Interface, 16 Kanäle, auch für PWM LED geeignet. Eine Bibliothek gibt es von Adafruit ebenfalls, angeblich auch ESP kompatibel. Beim Chinesen für nen 5er, in Deutschland für nen 10er.
Ich denke, das ist schlauer. So hat der Microcontroller den Kopf frei und muss nicht in Software PWM Signale emulieren.

Spannende Frage, ob der ESP das mit SPI (Servoshield) und I2C (Display) gleichzeitig hinbekommt.

Die Servos werde ich in kleine Holzhüllen stecken. Das kann man bequemer festschrauben, vor allem auf unterschiedliche Höhen.

Weiterhin überlege ich, einen Teil der Servos "über Kopf" zu montieren: so würde man einige cm Höhe bzw. Breite einsparen. Weiterhin erübrigt sich dann evtl. das CNC Fräsen der Mittelplatte.

Außerdem könnte das so von der Ansteuerung her schlau sein:
Wie kalibriere ich die Servos/Zeiger?
Ich dachte in etwa so:
Alle fahren vor dem Einbau auf ca. -80° (bei -90° bis +90° Spielraum)
Dann montiere ich die Zeiger alle auf 1 Uhr. So sollte es (mit Hilfe der Über-Kopf Montage) gehen, dass alle gleich angesteuert werden können. Also ein Befehl wie 10° weiter im Uhrzeigersinn von allen Servos identisch interpretiert wird.

Plattform:
Ich schwanke zwische RasPi mit Python und ESP mit Arduino.
Der große Wurf wäre das ganze per MQTT zu steuern. Zur Not ginge auch HTTP. Aber warum mit HTTP frickeln anfangen, wenn MQTT schon fertig existiert?
(letztlich wäre ein Grund, weil ich von MQTT keine Ahnung habe. Aber das kann man ja ändern)

Ach ja, Röhrchen habe ich mittlerweile auch. Eines läuft auf 1m etwas schwer, muss evtl ein bisserl schleifen und mit Silikon leichtgängiger machen.

Ansonsten warte ich weiter auf China-Post :)



Übertragung:
Ich dachte, ich unterteile die Scheibe in 12 Bereiche, das kennt man von einer Uhr :)
Zu übermitteln sollte dann sein:
Der Name der Person (als Nummer von 1-6) und die "Uhrzeit" von 1-12
Mehr ist es ja nicht.
Der Inkrementalgeber (mit PushButton) soll einen Publish der Person (also der Nummer) machen, so dass fhem dann einen QR Code erzeugen kann, den per FTP oder HTTP oder MQTT auf den SPIFFs Speicher schreibt, und dann eine Nachricht sendet, dass der QR Code fertig ist, so dass dieser angezeigt werden kann.

Soweit meine (optimistische) Vorstellung :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Markus

Ich denke werde das auch nachbauen kommt aber auf meine sehr knapp bemessene Freizeit an :'(

hab mir auch über die mittelplatte den Kopf zerbrochen...
was hältst du davon einfach in einen dünnen Karton die löcher für die Servos auszuschneiden und das ganze dann mit Harz und Glasfasermatten zu verstärken das wird steinhart.

Was hast du jetzt als Röhrchen genommen?

Silikonöl hab ich da kann ich dir etwas schicken wenn du willst...

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Rince

#10
GFK, klingt nicht schlecht. Habe ich noch nie probiert. Ich hätte noch 2k Acrylglas rumliegen. Geht das auch? (Dann einfach die Platte gießen mit Aussparung für die Servos)

Röhrchen habe ich Messingrohre genommen. Der Spaß hat knappe 25€ gekostet, reicht für mindestens 10 Uhren ;)
Die Antenne funktioniert nicht so gut: die haben eine Bremse drin. Wenn man die rausnimmt, wackelt es ziemlich. Außerdem muss man die Zahnräder auf den Durchmesser der Stäbe aufbohren. Den kennen wir jetzt exakt, und ich habe die passenden Bohrer :) Stelle ich mir bei der Antenne schwierig vor.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Markus

Ich hab noch etwas über die Servos nachgedacht 170° sind sehr wenig natürlich lässt sich alles mit Zahnrädern hinbiegen aber was hältst du von Schrittmotoren und Potis zur Positionsbestimmung da gibt es sogar welche die sich mehrere runden drehen lassen...

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

Rince

#12
Den Gedanken hatte ich recht früh verworfen, aus mehreren Gründen:

Die 6 Achsen sitzen ja ineinander. Daher muss man sie eh über eine Art Zahnrad antreiben. Oder nen Zahnriemen.
Ob man da jetzt Übersetzt, Untersetzt oder 1:1 anbindet, bleibt sich egal.

Servo Steuerung erfolgt über 1 Pin, für nen Schrittmotor artet das gleich in eine Kabelorgie aus. Dann braucht man je Motor ein Shield. Kostet je Motor 5€ (nagle mich nicht drauf fest, aber sowas um den Dreh war das)

Dann muss ein Stepper referenziert werden. Entweder per Lichtschranke oder per Taster. Das erschien mir etwas arg aufwendig. Sowohl von der Bastelseite, als auch von der Programmierung. Ich bin eher Grobmotoriker, daher auch Modul 1 bei den Zahnrädern und nicht 0,5 oder noch weniger. (und diese großen Teile sind bei Bastel-Dehs richtig billig)

Letztlich sah ich keinen Kostenvorteil, ebensowenig bei der Komplexität. Tausche Nulldurchlauf-Feature gegen Referenzierungs-Problem.

Der einzige echte Nachteil sind die fehlenden 360°. Ein Nulldurchlauf geht nicht. Das ist aber Programm technisch abfangbar. Wenn man die Zeiger animiert fahren will (langsam anfangen, schneller werden, Überschwingen) braucht man diese Logik eh, da man die Richtung kennen muss.

Und, hey, ein Servo kostet keine 2€  ;)

Update:
Die ersten SG90 Servos sind angekommen :) Hi, sind die winzig :)
Und sie passen vom Anschluss her 1:1 auf das Interface Board. Sehr schön.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

#13
Erste Überlegungen zur Hardware / Software:

Ich würde erste Versuche mit einem ESP8266 (auf NodeMCUDev Board) machen.
Dazu dachte ich an die Arduino Software, in Verbindung mit dem Basic-Setup von Pf@nne.
https://forum.fhem.de/index.php/topic,50238.0.html

Sowohl für das Display als auch für die Servoplatine gibt es fertige Bibliotheken:
Display:
http://www.esp8266.com/viewtopic.php?f=29&t=8428
https://github.com/sumotoy/TFT_ST7735/tree/1.1b1

Servomotor:
https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

Die Ansteuerung dann entsprechend mit MQTT



Update:
Mit der Arduino IDE 1.6.8 lassen sich das Basic-Setup (von Pf@nne) sowie Demo Sketche für den Servo und das Display schon mal fehlerfrei kompilieren :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Markus

Mir geht die Mittelplatte nicht mehr aus dem Kopf :-\ Die brauchen wir doch gar nicht!
Wir können die Servos doch mit Hilfe eines kleinen Abstandshalter zb aus Holt direkt an das Ziffernblatt kleben, Abstandshalter für erster Servo 5mm für den zweiten 10mm dick und so weiter

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa