Die Post war da, und es kann weiter gehen. Die Servos sind da, und damit ist es zeit die Sache mit den Weichen anzugehen. Zudem habe ich es endlich geschafft die erste Fuhre Holz heran zu schaffen, und im Keller ein wenig zu werken. Wieder einmal wird klar, dass mit “richtigem”, und ich meine “richtigem” Werkzeug alles viel besser wird. Ersetze alte schraddelige Handkreissäge durch Profi Kappsäge (Danke, Claas!), und schon werden Schnitte gerade und Bauwerke waage.
Ein halber Sonntag Arbeit brachte uns zumindest schon einmal bis zu einem Unterbau, welcher die möglichen Maße im Keller definiert:
Zur Erklärung, diese 45 Grad abgeschrägten Stücke dienen NICHT später der Stabilität und werden noch verbaut! NEIN! “Das sind Schiffe, Papa, und die fahren hier unten alle rum.” Ist doch klar, oder?
Noch ein paar Tage weiter, und aus Unterbau und inzwischen besorgten Platten (wieder Danke an Claas und seinen Bully) ist ein Tisch geworden. Logischerweise musste SOFORT etwas darauf aufgebaut werden. Wo kämen wir hin, wenn das Ganze nicht sofort bespielt werden kann?
Nun zur Sache, ich überspringe aktuell die Automation und bleibe bei der Hardware:
Grundlegend könnte ich auch die GPIO Ports des Raspberry für die Ansteuerung der Servos benutzen. Aber: Wer weiß was ich damit nochmal vor habe, und wozu diese Ports dort noch mal gut sind. Also, die Weichensteuerung erfolgt über einen am Pi angeschlossenen Arduino UNO, und dessen GPIO Digital PWM Ports.
Das Servo wird zunächst am Arduino über 5V+ und GND, sowie über einen der PWM Ports angeschlossen. Ich habe ohne weitere Gründe Port 7 verwendet. In der Regel sind die Steuerleitungen der Servos gelb oder orange, während die üblichen Plus/Minus Farben rot/schwarz oder ähnlich sein dürften. Ich denke das ist selbsterklärend, da muss man nicht groß denken. Das Arduino Board wird einfach per USB am Pi betrieben, benötigt aber vorher noch eine Betankung.
12.59.10](/pics/2015/11/2015-11-22-12.59.10-595x426.jpg)
Der digitaltauglich geschnippelten Weiche fehlt nun noch ihr Servo. Für meine Proof of concept Version hier habe ich zunächst auf einfachste Arte und Weise Servoarm mit etwas Lego Technik gekoppelt, und das Servo an sich in einer kleinen Box aus Steinen befestigt. Auch hier ist bestimmt Luft nach oben, aber wer hat schon all die Zeit und Geduld, wenn es doch darum geht erste Ergebnisse zu bekommen?!
Auf der Clientseite – also in der index.html für den Browser sorgt eine bootstrap Buttongroup für das Aussehen, ein input mit value= für Daten, und ein Fitzel Javascript für den Auslöser des socket.io Emit der Servoarmbewegung. Hier geht es lang für die je aktuellen Stände des Codes.
$('.servobtn').button();
$('.servobtn').on('change',function(){
console.log("Setting Servo Pos:",$('input[name=servo]:checked').val())
socket.emit('servo7call',{pos:$('input[name=servo]:checked').val()});
});
Auf der Serverseite – also in der start_pltb.js im NodeJS empfängt socket.io den Befehl und stellt den Arm lt. Funktion:
// Servo 1 Pin 7 bewegen
socket.on('servo7call', function (winkel) {
console.log(winkel);
if(board.isReady){ servo7.to(winkel.pos); }
});
// Servo 1 Pin 7 ende
Die Stellweite des Arms verbirgt sich im Value des input Feldes. Das war reines trial & error – 100 ist der Wert, der in meiner Konstellation passt. Leider habe ich das “Servobrummen” noch nicht ganz weg bekommen. Ich bin mir unsicher ob dies an den Servos, oder meinen Programmierkünsten liegt. Offiziell “brummen” digitale Servos eigentlich nur, wenn sie Ihre Stellpositionen nicht richtig erreichen, oder auf Last stehen bleiben. Beides trifft hier irgendwie nicht ganz zu. Ein Update zu dem Thema findet Ihr hier, wenn ich es gefunden habe…