Neue Remote-Software „StartRemote Suite“

Wie hier und da bereits angekündigt, habe ich eine kleine Programm-Lösung erstellt, die es auf einfache Art ermöglicht, auf einem anderen PC Programme oder Befehle zu starten.main_programs

Man kann sich eine unbegrenute Anzahl von Buttons erzeugen und diese mit Befehlen ausstatten, die auf einem anderen PC – auch üebr Internet – Programme oder Befehle starten. Dabei ist die Größe der Buttons sowie etwa unterliegende Grafiken frei definierbar. Man kann seine Buttonleiste auch immer im Vordergrund und/oder als schlankes Fenster ohne weitere Elemente darstellen.

Der Clou ist jedoch, dass man für den Betrieb über Internet keine Portweiterleitung im Router einrichten muss, was auch außerdem z.B. mit einem IP v6 Anschluß fast unmöglich ist.

Darüberhinaus ist ein Web-Interface in Entwicklung, das es ermöglicht, die Befehle systemunabhängig z.B. von jedem Mobil-Gerät aus absetzen zu können.

Ein kurzer Überblick

Die StartRemote Suite besteht aus 3 Programmen:

StartHelper ist der „Server“-Teil und läuft als Kommandozeilenprogramm auf dem zu steuerndem PC.

StartRemote ist die „Fernsteuerung“.

ngrokHelper ist ein Hilfsprogramm für die Fälle, dass keine Portweiterleitung eingerichtet werden kann/will. Es benutzt die Freeware „Ngrok„, die einen Tunnel zum Server-PC öffnet, und eine Portweiterleitung obsolet macht. Leider ändert ngrok bei jedem Start die PublicURL/Port und man müsste per Remote-Desktop oder Teamviewer eine Verbindung schaffen, um diese Werte abzulesen.

Dies macht ngrokHelper für Euch!

Was Ihr dazu benötigt, ist ein Webspace, auf dem php-Scripte laufen können. In der StartRemote-Suite wird das php – Script „ngrokurl.php“ mitgeliefert, das den aktuellen URL/Port von ngrok vom ngrokHelper mitgeteilt bekommt und von StartRemote abgefragt wird. Somit muss man sich um nichts kümmern und hat jedesmal die automatisch die aktuellen Verbindungsdaten.

Die StartRemote-Suite kann alle erdenklichen Befehle auf dem Remote-PC ausführen – wenn an diesem ein Benutzer angemeldet ist (kann man in Windows automatisch veranlassen). Eine Installation als Windows-Service ist auch denkbar – kommt auf Eure Reaktionen an…

Meine Motivation es zu realisieren, könnt Ihr am oberen Screenshot sehen:

Ich bin oft unterwegs und möchte mir von zu Hause TV-Programme in mein Hotelzimmer streamen. Dabei ist die Leitung oft zu langsam und der Stream unterbricht immer wieder. Als Quelle dient meine FritzBox, die Kabelprogramme streamen kann (mein SAT-Receiver kann das auch, aber die FitzBox läuft ja sowieso…). Um die Bitrate des Streams zu verkleinern, benutze ich VLC, das den Stream liest, kleiner rechnet und weiterstreamt.

Mit einer Portweiterleitung auf den Streaming-Port von VLC funktioniert das ganze bereits. Aber das Umschalten ist nervig: Immer wieder mit einer Remote-Software auf den Desktop gehen, VLC beenden, einen neuen Stream lesen und weiterstreamen…

Diesen Job übernimmt nun RemoteHelper. Mit einem Klick auf einen StartRemote – Button fordere ich immer wieder einen neuen Stream an, was in Sekunden funktioniert, ohne, dass ich mich remote auf den Server verbinden müsste. Daher die Senderlogos auf den Buttons im Screenshot.

Die StartRemote-Suite bietet noch einiges mehr an Optionen. Für die vollständige Anleitung, Tutorial-Video (ab 26.12.2018) und Download, geht bitte auf

http://75r.de/software/startremote

[UPDATE] Thermostatsteuerung mit ESP8266-01

Ein kleines Update zur Heizkörperthermostatsteuerung

Ich habe die Schaltung vereinfacht und die Transistoren weggelassen und das ganze für den ESP8266-01, also die kleine „Classic“-Platine, die nur 2 GPIOs hat, angepasst.

Das Serverscript hat nun eine Abfragemöglichkeit über den Parameter …?a=gt, mit dem man die zuletzt eingestellte Temperatur  – also den Ist-Zustand – abfragen kann.

Die beiden aktuell verwendeten lua – Scripte sind auch noch einmal angefügt.

Es muss mit ESP8266Flasher.exe NodeMCU geflasht werden, um luaScript zu verwenden. Hier meine Settings beim Flashen:

NodeMCU Flasher Settings

Esp8266Flasher.exe settings für ESP8266-01

Das aktuelle Layout ohne Transistoren:

 

ESP8266_classic_Thermostatsteuerung_2018_Steckplatine

Hier die beiden Scripte, die auf dem ESP8266 werkeln:

init.lua

print('Hello! init.lua started.')
wifi.setmode(wifi.STATION)
wifi.sta.config("MY_AP_NAME", "MY_WIFI_PASSWORD")
wifi.sta.connect()

tmr.alarm(0, 1000, 1, function()
 if wifi.sta.getip()==nil then
   print("connecting to AP...")
 else
   print("AP successfully connected.")
   print ("ip: ", wifi.sta.getip())
   tmr.stop(0)

   dofile("server_v4.lua")
 end
end)

server_v4.lua

p1=3 -- 1
p2=4 -- 2
gpio.mode(p1, gpio.OUTPUT);
gpio.mode(p2, gpio.OUTPUT);

wt=21
gt=0

srv=net.createServer(net.TCP)
print ("WEBSERVER started.")
srv:listen(80,function(conn)
 conn:on("receive", function(client,request)
 local c = ""
 local buf = "";
 local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
 if(method == nil)then
   _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
 end
 local _GET = {}
 if (vars ~= nil)then
   for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
     _GET[k] = v
   end
   if(_GET.t ~= nil)then
   wt = _GET.t
   gt = wt
   if _GET.p == "on" then
       gt=wt + 0.5
       c = " checked"
   end
   if wt == "off" then
       wt = 0
       gt = 0
       c = ""
   end
     print("Argument 't' was "..gt);
     settemp(gt)
 end
end

if(_GET.a == nil)then if(_GET.a == nil)then
  buf = buf.."HTTP/1.1 200 OK\n\n"
  buf = buf.."<html><head><title>Schlafzimmer Thermostat</title>";
  buf = buf.."<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">"
  buf = buf.."<!--[if lt IE 9]>http://html5shim.googlecode.com/svn/trunk/html5.js<![endif]-->"
  buf = buf.."<link rel=\"shortcut icon\" href=\"http://SOME_URL/favicon.ico\"></head>"
  buf = buf.."<body bgcolor=\"#D0D0D0\"><font face=\"arial\"><center><h1>SCHLAFZIMMER</h1><p>Temperature is set to "
  buf = buf..gt       
  buf = buf.."&ordm;</p><form action=\"?\">"
  buf = buf.."<input type=\"button\" style=\"height:70px;width:120px;font-size:40px;\" value=\"+\" onClick=\"javascript:document.getElementsByName('t')[0].value++;\"><br>"
  buf = buf.."Temp:&nbsp;&nbsp;&nbsp;<input style=\"height:50px;width:60px;font-size:40px;margin-top:8px;margin-bottom:8px;\" type=\"text\" name=\"t\" value=\""
  buf = buf..wt
  buf = buf.."\">&nbsp;&nbsp;&nbsp;&nbsp;"
  buf = buf.."<input style=\"transform: scale(4); -webkit-transform: scale(4);\" type=\"checkbox\" name=\"p\" value=\"on\""
  buf = buf..c
  buf = buf..">&nbsp;&nbsp;&nbsp;&nbsp;+ 0.5&ordm;" buf = buf.."<br><input type=\"button\" style=\"height:70px;width:120px;font-size:40px;\" value=\"-\" onClick=\"javascript:document.getElementsByName('t')[0].value--;\">"
  buf = buf.."<br><input type=\"button\" style=\"height:40px;width:120px;font-size:28px;margin-top:8px;color:red;\" value=\"OFF\" onClick=\"javascript:location.href='?t=off'\"><br><br>"
  buf = buf.."<input style=\"height:60px;width:120px;font-size:32px;\" type=\"submit\" value=\"Set\"></form></p>"
  buf = buf.."</center></font></body></html>"

if(_GET.a ~= nil)then
  if(_GET.a ~= nil)then
    action = _GET.a;
    if action == "gt" then
      buf = buf.."HTTP/1.1 200 OK\n\n"
      buf = buf..gt
    end
end

function pulse(dir, anz)
  z=gpio.read(p1)
  for i=1, anz*2, 1 do
   if z == 0 then
     z=1
   else
     z=0
   end
   if dir == "+" then
     gpio.write(p1, z);
     tmr.delay(10000); -- 10ms
     gpio.write(p2, z);
     tmr.delay(10000);
   else
     gpio.write(p2, z);
     tmr.delay(10000);
     gpio.write(p1, z);
     tmr.delay(10000);
   end
  end
end

function settemp(temp)
 print("Setting Temp to "..temp..".")
 tt = (temp*2)-9; 
 pulse("-", 60) --init
 pulse("+", tt)
end

Mit MIDI-Befehlen Keyboard-Shortcuts auslösen

So könnt Ihr einfach mit einem beliebigen MIDI-Controller (Keyboard, MIDI-Pad, Fuß-Pedal, Drum-Computer, …) frei programmierbare Keyboard-Events auslösen oder sogar Programme/Befehle starten.

mainwindowIdee hierbei war es, zunächst Szenen in OBS mit einem kleinen MIDI-Pad anstelle mit umständlichen Keyboard-Aktionen umzuschalten. das Programm „MidiKEy2Key“ kann jedoch noch mehr.

Da ich selbst auch intensiv FSX (Microsoft Flight Simulator) mit halbem Home-Cockpit „spiele“, habe ich daran gedacht, Schaltfunktionen, die sich in FSX mit Tastaturbefehlen auslösen lassen, wie Fahrwerk ausfahren, Licht einschalten oder Landeklappen ausfahren mit einem MIDI-Controller zu steuern.

Ich benutze hierfür ein KORG nanoPad (erste Generation), welches ich für 15,-€ auf Ebay ersteigert habe.

korg-nanopad

Die Generation 2 kostet neu 55,- € und hat 4 Buttons mehr. Es sind natürlich alle möglichen MIDI-Pads geeignet, die es von allen möglichen Herstellern (AKAI, Roland, …) gibt. Das nanoPad (1) gibt es für wenig Geld, hat 12 Pads, die auf 4 Ebenen umschaltbar sind, und daher stellt es 48 schnell erreichbare Schaltfunktionen zur Verfügung.

Im Moment kann „MidiKey2Key“ zwei Arten von „Actions“ auslösen: Beliebige Tastatur-Befehle und beliebige Programme/Skripte starten.

Durch das Starten eines Skripts (z.B. ein Windows Shellskript .bat) können dadurch auch komplexe Funktionen ausgelöst werden.

Um bequem in OBS Szenen zu wechseln, genügen die Keyboard-Shortcuts. Um in FSX „analoge“ Einstellungen mit einem Drehregler zu machen, müsste ich „MidiKey2Key“ entsprechend erweitern. Dies käme auf Euer Feedback an. Benutzt die Feedback-Funktion auf der MidiKey2Key Homepage oder die Antwort-Funktion hier, um Vorschläge zu machen!

Hier ist ein Tutorial-Video (englisch):

 

MidiKey2Key – Homepage (englisch/deutsch) mit Download, Anleitung und Feedback-Möglichkeit:

http://75r.de/midikey2key

Twitch schnell gestreamtes Spiel und Kommentar ändern mit TwitchControl

Wenn Ihr einen Twitch-Kanal betreibt und öfter das Spiel ändert, welches Ihr streamt, ist es lästig , die ständig auf Eurer Twitch Seite manuell zu ändern.

Dafür habe ich schon vor einiger Zeit „TwitchControl“ geschrieben, welches ich hier kurz vortellen möchte.

Ihr könnt es hier downloaden: http://75r.de/software/twitchcontrol/

Entpackt am besten alle Files, die in dem zip-File enthalten sind, in einen eigenen Ordner. Dann solltet Ihr eine Verknüpfung zu TwitchControl.exe auf den Desktop oder in das Startmenü legen (z.B. mit gehaltener rechter Maustaste das .exe File ziehen und nach dem Ablegen „Verknüpfung erstellen“ wählen).

Nun ist das Programm startbereit. Voraussetzung ist natürlich, dass Ihr einen Twitch-Account besitzt.

TwitchControl

Auf der linken Seite können beliebig viele Presets erzeugt und schnell abgerufen werden. Ein paar sind bereits als Beispiel angelegt.

Zu Neu-Erstellen auf „New“ klicken, einen Preset Name, sowie Titel und das Spiel eingeben. Durch Klicken auf „Save“ wird dieses Preset gespeichert und erscheint links in der Liste.

Damit Ihr das Programm benutzen könnt, muss es einmalig authorisiert werden, Ihr müsst ihm erlauben, Eure Twitch-Kanal-Einstellungen verändern zu dürfen. Der Dialog erscheint automatisch und muss nur einmalig bestätigt werden.

Nach Auswahl eines Presets, Eintragen Eures Twitch-Kanal-Namens und Klick auf „Activate“ wird auf Eurer Twitch-Seite Title und Game entsprechend eingetragen.

Vielleicht mache ich noch ein Video; die Benutzung von „TwitchControl“ ist jedoch recht simpel, finde ich.

(edit März 2020)

Neue Version 1.21 wurde veröffentlicht.

An Twitch – API v5 angepasst. Diverse Bugfixes. Sollte nun fehlerfrei funktionieren.

Am besten ein neues Token über das Menü abrufen.

(Edit Juli 2018)

Version v1.08 wurde veröffentlicht.

Ein Bug wurde behoben, wo beim ersten Start von Twitchcontrol der Dialog zum Autorisieren von TwitchControl bei Twitch nicht gezeigt wurde. Er kam zwar beim nächsten Start, das hat jedoch nicht jeder ausprobiert (siehe Kommentare hierzu). Auch die Fehlermeldung mit „:500“ wurde untetdrückt.

Außerdem wurde die Möglichkeit eingebaut, TwitchControl mit einem Startparameter zu starten. Gibt man über eine Verknüpfung, über ein CMD Fenster, einer Batch oder mit MidiKey2Key als Parameter einen Presetnamen an, wird bei Twitch auf dieses Preset geschaltet, ohne, dass irgendwelche Ausgaben erscheinen – auch keine Feblermeldungen. Enthält der Presetname Leerzeichen, muss er in Anführungszeichen stehen. Also z.B. TwitchControl.exe „CS GO“

Was bleibt, ist noch eine Abmeldefunktion einzubauen. Denn nach einmaliger Autorisation ist TwitchControl mit dem Twitch-Account erstmal verbunden.

Edit: Dies geht leider nicht mit der Twitch-API; Ihr könnt das auf der Twitch-Homepage in Euren Einstellungen machen:

Rechts oben auf Euer Avatar klicken, dann ‚Einstellungen‘. Auf der Eindtellungen-Seite den Menüpunkt „Verbindungen“ klicken und dort herunterscrollen und ‚AccountSettingsApp‘ trennen.

Kann jederzeit wieder mit dem Programm verbunden werden – dazu im Menü ein neues Token anfordern.

Aufbau 3D-Drucker P3 Steel #03 – Hotend und Heizbett

Das Hotend ist fertig – bis auf die Kabelzusammenführungen, da das LED-Licht noch fehlt und dessen Kabel ja auch mitkommen soll. Der Thermistor und die Heizpatrone wurden mit dem unteren Teil des MPX-Steckers verbunden; die Heizpatrone bekommt 4 der 6 Anschlüsse, damit es keine Stromprobleme gibt.

Beim Heizbett habe ich mich anstelle des etwas günstigeren MK-II mit Glasplatte für eine prazisionsgefräste Aluplatte entschieden, die mit einer 200W Silikonheizmatte erwärmt wird. Dieses ist in der Lage z.B. auch ABS zu verarbeiten und heizt im Vergleich schneller auf. Oben auf die Aluplatte wird eine BuildTak-Matte geklebt. Sie hat optimale eigenschaften und macht Blue Tape, Malerkrepp oder Haarspray obsolet.  Unter der Aluplatte klebt die selbtklebende Heizmatte:

Heizbett1_IMG_9210

Darauf habe ich mit Selundenkleber eine 3mm Korkplatte geklebt.

Heizbett2_

Dann kommt ein selbstklebendes Thermovlies, welches an der Klebeschicht ein Kunstfasergewebe besitzt und abschließend eine Alufolie. Es ist ringsherum etwas größer, als das Heizbett und die Korplatte und klebt somit am Rand umschließend wieder am Alublech. Schön mollig eingepackt:

Heizbett3_IMG_9212Das Buildtak ist oben noch nicht aufgebracht, es ist zunächst noch die Schutzfolie drauf.Heizbett eingebaut_IMG_9215

Die Z-Achsen-Endstopstellschraube hat eine Feder bekommen und das Heizbett wurde auf den Schlitten gesetzt.

Hier noch eine Gesamtansicht des aktuellen Stadiums; ich warte nun darauf, dass endlich die Elektronikboards kommen…

Totale_IMG_9213

 

Aufbau 3D-Drucker P3 Steel #02 – Erste Anbauteile

Den Rahmen hatte ich aus Spaß komplett zusammengebaut. Ein paar Teile fallen jedoch weg, da sie durch Toolson’s Kunstoffteile ersetzt/ergänzt werden. Einige Schrauben müssen außerdem kurzfristig wieder entfernt werden, da sie Kunststoffteile mittragen.

So zum Beispiel die Umlenkrolle vorne:

Man hat Y-Umlenk_IMG_9173es etwas einfacher, den Riemen einzufädeln, wenn man das macht, bevor man die M6-Schraube und die Lager einbaut. Ich habe jedoch einen kleinen Trick gefunden, mit dem das auch im zusammengebauten Zustand gut geht.

 

 

Die mühsam angebrachten Lagerhalterungen am Schlitten kommen wieder herunter, da Toolson doch Teile für die LM8UU-Lager hat (und nicht nur für die IGUS-Lager), das hatte ich falsch verstanden. Sie besitzen 6-eckige Aussparungen für M3-Muttern, die bei mir jedoch nicht sofort hineinpassten. Sie lassen sich einfach mit einem Lötkolben erwärmen und eindrücken. Nur muss man das vorsichtig und zügig machen, damit das Kunststoffteil nicht kaputtschmilzt.Mutter mit Lötkolben einpressen_IMG_9171

Der Riemenspanner wird, falls es mehrere Bohrlöcher gibt, der Nase zugewandt angebracht, die letztlich nach hinten zeigt. Der fertige Schlitten sieht von unten so aus:SChlitten lose v. unten_IMG_9172

Wenn es, wie hier beim Riemenspanner, eingelassene Muttern gibt, habe ich zuerst eine längere Schraube ins Bauteil gedreht, die Mutter am anderen Ende aufgesteckt und sie mit der Schraube vorsichtig in’s Material gezogen.

Die weiteren Kunststoffteile wurden vorbereitet bzw. angebracht. Ebenso habe ich die 8mm Wellen für die Z-Achse angebracht. Dazu musste ich jeweils unten etwas auffeilen. Wenn diese Löcher zu groß werden, ist es nicht so schlimm, da die Wellen auf den Motoren aufliegen und nicht durchrutschen können.

Hier nun ein paar Bilder:

Das letzte Bild zeigt den Riemendpanner der Y-Achse. Durch die Schlaufe der Riemenenden ist jeweils ein halber Nagel geschoben, somit kann der Riemen nicht mehr herausrutschen.

Auf dem einen Bild oben ist der Z-Endstopschalter noch intakt. Plötzlich sehe ich, das die Blechfahne ganz nach hinten zeigt. Als ich sie zurückbiege, bricht sie ab 😦 Ich habe mir dann einen Streifen Blech aus einer ATX-Blende eines ausrangierten Mainboards geschnitten, ein Loch hineingebohrt und dieses Stück etwas gebogen. Es wird nun von einer der beiden Schrauben getragen, die auch das kleine Endstopboard halten. Funktioniert wie das Original. Guckst Du:

Im nächsten Beitrag gibt es Bilder vom fertigen Hotend und des Heizbettes.

Heizungsthermostatsteuerung mit ESP8266 für unter 5,- EUR

Um mir die Zeit zu vertreiben, bis die Teile für den 3D-Drucker eintreffen, habe ich mich ein bisschen mit chinesischen Chips beschäftigt.

Hierbei fiel mir der ESP8266 auf, den es in verschiedenen Versionen gibt.

Es ist ein Mikrocontrollermodul, welches WLAN eingebaut hat und sich ähnlich wie ein Arduino programmieren lässt. Er wird auch oft hergenommen, um dem Arduino WLAN beizubringen. Wenn es dann um simple Schaltvorgänge oder Auslesen von Sensoren geht, ist der Arduino oft überflüssig, denn das kann der 8266 auch, und das zum erstaunlichen Preis!

Out-of-the box besitzt er einen AT-Befehlssatz, ähnlich wie Modems. Bequemer geht es aber, wenn man die NodeMCU – Firmware flasht. Dann kann man das Modul mit lua-Scripten füttern, was bequemer ist und mehr Möglichkeiten bietet.

Das tolle: Der 8266 kann im 2,4 GHz WLAN wahlweise als LAN-Client, als WLAN-Accesspoint oder sogar beides gleichzeitig sein. Die Bedienung ist dabei kinderleicht. Er gibt z.B. eine Liste der Accesspoints in der Nähe aus und man verbindet ihn mit einem davon (wenn das Kennwort bekannt ist). Oder er wird als Accesspoint sichtbar und man verbindet z.B. sein Handy mit diesem und erhält von seinem integrierten DHCP-Server eine IP-Adresse. Mit ein paar Zeilen Code lässt sich ein simpler Webserver realisieren, über den man dann mit ihm interagiert. Sogar die WLAN-Reichweite ist beeindruckend. Sie entspricht zu hause etwa meinem Mobiltelefon.

Da es Varianten mit bis zu 9 GPIOs (Ein- und Ausgänge für Sensoren oder Schalter) gibt, ist z.B. denkbar, ihn im Hausflur zu installieren. Er überwacht per Taster oder Reedkontakt, zu welchen Zeiten die Tür geöffnet wird, besitzt einen Temperatur- und Lichtsensor und berichtet alle 15 Minuten die Messdaten zu einem SQL-Server im Netz. Daneben läuft ein Webserver, der auf Button-Action per Relais den Haustürsummer betätigt. All dies ist mit wenigen Codezeilen möglich und benötigt eben keinen zusätzlichen Arduino.

Die kleinste Variante ESP8266-01 hat 2 GPIOs und kostet in China ca. 1,70 EUR.

Nachteil des ganzen ist sein durch das ständig aktive WLAN sein Stromverbrauch, der immer um die 100 mA liegt. Damit würden 2 AA-Batterien nach zwei Tagen leer sein. Der 8266 benötigt also ein Netzteil. Außerdem läuft er mit 3,3V (auch an den Kommunikationspins!), was noch etwas an Bauteilen benötigt, aber nicht schlimm.

Inspiriert durch ein Youtube Video von Allan Turing habe ich an einen eq-3 Heizungsthermostat Model K 3 Leitungen an den Drehimpulsgeber, mit dem man den Thermostat manuell steuern kann, gelötet und nach außen geführt. Die nötigen Impulse auszugeben, um den Thermostat zu steuern, ist für den 8266 ein leichtes.

Mit einer einfachen Weboberfläche kann der Thermostat manipuliert werden. Also auch vom Smartphone aus, oder eben von der ganzen Welt aus.

In diesem Video ist der erste Versuchsaufbau zu sehen, noch ohne Webinterface, sondern nur selbstlaufend in einem Demo-Modus:

Hier die Schaltung dazu:

ESP8266-EX_02_Thermostatsteuerung_Steckplatine

Es wurde ein ESP8266-EX benutzt, was aber nicht nötig ist, da nur 2 Ausgänge benötigt werden. An diesen hängt übrigens ein NPN-Transistor, der den jeweiligen Drehgeberausgang im Rhytmus nach Masse schaltet.

Das rote Modul rechts ist bloß der USB-to-Serial-Converter zum Aufspielen des Scriptes. Zum Betrieb fällt es weg Zu sehen ist außerdem noch ein 5V to 3,3V Modul, was aus 5V 3,3V macht, wenn man kein Netzteil hat, was direkt 3,3V liefert.

Vielleicht mache ich noch ein Video mit dem laufenden Webinterface.

Wen das lua-Script interessiert, das auf dem 8266 werkelt, hier ist es:

p1=1 -- GPIO05 ganz aussen
p2=2 -- GPIO4
gpio.mode(p1, gpio.OUTPUT);
gpio.mode(p2, gpio.OUTPUT);
wt=21
srv=net.createServer(net.TCP)
print ("WEBSERVER started.")
srv:listen(80,function(conn)
 conn:on("receive", function(client,request)
 local c = ""
 local buf = "";
 local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
 if(method == nil)then
 _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
 end
 local _GET = {}
 if (vars ~= nil)then
 for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
 _GET[k] = v
 end
 if(_GET.t ~= nil)then
 wt = _GET.t
 gt = wt
 if _GET.p == "on" then
 gt=wt + 0.5
 c = " checked"
 end
 print("Argument 't' was "..gt);
 settemp(gt)
 end
 end
 buf = buf.."<html><center><h1> ESP8266 Thermostatsteuerung</h1>";
 buf = buf.."<p><form action=\"?\">Temp: <input style=\"height:50px;width:60px;font-size:40px;\" type=\"text\" name=\"t\" value=\""
 buf = buf..wt
 buf = buf.."\">&nbsp;&nbsp;&nbsp;&nbsp;<input style=\"transform: scale(3); -webkit-transform: scale(3);\" type=\"checkbox\" name=\"p\" value=\"on\""
 buf = buf..c
 buf = buf..">&nbsp;&nbsp;&nbsp;&nbsp;+ 0.5°<br><br><input style=\"height:60px;width:100px;\" type=\"submit\" value=\"Set\"></form></p></center></html>";

 client:send(buf);
 client:close();
 collectgarbage();

 end)
end)

function pulse(dir, anz)
 z=gpio.read(p1)
 for i=1, anz*2, 1 do
 if z == 0 then
 z=1
 else
 z=0
 end
 if dir == "+" then
 gpio.write(p1, z);
 tmr.delay(5000); -- 10ms
 gpio.write(p2, z);
 tmr.delay(5000);
 else
 gpio.write(p2, z);
 tmr.delay(5000);
 gpio.write(p1, z);
 tmr.delay(5000);
 end

 end
end

function settemp(temp)
 print("Setting Temp to "..temp..".")
 tt = (temp*2)-10;
 pulse("-", 60) --init
 pulse("+", tt)
end


Es fehlt nur das init.lua, was bei Inbetriebnahme der Schaltung zu meinem WLAN verbindet; das sind aber nur 5-6 langwelige Zeilen.

Aufbau 3D-Drucker P3 Steel #01 – Der Rahmen

Der Stahlrahmen – Zusammenbau

Heute kam endlich der Rahmen aus Spanien. Naja, was heißt „endlich“, es hat nach Bestellung nur 9 Tage gebraucht – ich hatte mit 2 Wochen gerechnet.

Das Zusammenbauen der im Prinzip sehr exakt gefertigten Teile ist kein besonderes Hexenwerk, birgt jedoch ein paar kleine Herausforderungen, die ich hiermit dokumentieren möchte.

Empfohlenes Werkzeug:

Werkzeuge

Ein Inbus-Schlüssel, der gut in der Hand liegt, ein längerer herkömmlicher Inbus-Schlüssel mit Kugelkopf, eine kleine Flachfeile und eine (nicht abgebildete) Rundfeile

Da sind nu ein paar große und kleine Teile, von denen man nicht bei allen auf Anhieb sagen kann, wo die hingehören. Ich habe deswegen Tante Google befragt, und sie spuckte mir http://reprap.org/wiki/P3Steel aus, wo es ein computeranimiertes Video gibt, das den Zusammenbau der Rahmenteile zeigt – dachte ich…

Leider ist die Reihenfolge – so wie im Video gezeigt – nicht machbar!
Ich musste den halben Rahmen wieder auseinanderbauen.

Die Teile werden alle mit der selben Technik verbunden:

Ein02e Schraube wird in eine schwergängige Stopmutter gedreht, die wiederum in einer entsprechenden Aussparung am Drehen gehindert wird. Ein Schraubenschlüssel ist daher nicht erforderlich.

 

Die Muttern sind aber zunächst lose und das Hineinfummeln in den Schlitz kann etwas Nerven kosten, da sie sich gerne umdrehen oder verkanten. Meistens fallen sie wieder heraus, oder liegen so, dass die Schraube nicht in’s Gewinde kann. Hat das Schraubengewinde gegriffen, hat man gewonnen. Das wäre mit feststehenden Gewinden schöner. OK, jetzt das selbe Prozedere nur noch 59 mal…

 

Zunächst werden die drei großen Teile ineinandergesteckt. Sie werden mit insgesamt Schrauben miteinander verbunden. Bevor es weitergeht, müssen nun – anders, als im Video(!) – die zwei  (5-8cm langen) trapezförmigen Teile eingebaut werden.

03Dazu müssen die langen unteren Rahmenteile etwas gebogen werden.

Danach können die Top-Platten angebracht werden; die Löcher für die Wellen zeigen natürlich nach vorne:

Top

Weiter geht es mit den unteren Rahmenteilen vorne und hinten. Sie tragen jeweils zwei kleine Teile, die den Motor und das Gegenlager für den Y-Achsen Zahnriemen aufnehmen.

Unten-hinten

Unten-vorne

Da ich die von toolson konstruierten Kunststoffteile verwenden werde, fallen die kleinen vorderen später Teile weg. Eines der beiden unteren Rahmenteile sollte man noch nicht montieren, da zuvor die 8mm Wellen eingeführt werden.

Ebenfalls abweichend vom o.g. Video müssen die beiden Z-Motoraufnhamen, die jeweils aus drei Teilen bestehen, vorher zusammengebaut werden:

Motoraufnahme

Immer mal wieder passen die Teile nicht sauber in die Aussparungen, da sie bis zu 1mm hohe einzelne Grate haben. Das kommt zum Glück nicht so oft vor, bei mir 3-4 mal. Da hilft nur Abfeilen:

Grat_02Grat_01abfeilen

Nun kann der Schlitten vorbereitet werden.

Verwendet man die standard LM8UU-Lager, kommen die Teile aus dem Rahmenbausatz zum Einsatz. Diese Lösung ist allerdings das Schlechteste am Steel-Rahmen. Toolson hat alternative Lagerhalterungen für Gleitlager von IGUS konstruiert, die , schön leise laufen, einen etwas größeren Außendurchmesser haben, aber eine hohe Montagepräzision verlangen (weswegen mir von Ihnen abgeraten wurde).

Hier die vom Rahmenkonstrukteur vorgesehene Kit-Lösung: Am besten bereitet man den Schlitten, in dem man sie acht Schrauben/Mutternpaare schon einmal so zusammenführt, dass das Schraubengewinde jeweils knapp einen Millimeter hinten aus der Mutter herausschaut. Die Muttern werden natürlich an der Unterseite platziert:

Schlitten_01

Jetzt wird es fummelig: Die Lager werden in die Ausschnitte gelegt und tauchen ca. 1mm tief ein. Hierbei muss darauf geachtet werden, dass es keine Grate der Pulverbeschichtung gibt, die eine saubere, plane Lage verhindern würden. Dann werden die Haltebleche aufgeschoben und beide Schrauben abwechselnd langsam angezogen, bis das Lager sich nicht mehr bewegen kann. Hierbei sollte ein nur sehr geringes Drehmoment angewendet werden (viel geringer, als zur Befestigung der anderen Rahmenteile)! Dreht man zu fest oder ungleichmäßig, wird das Lager etwas gequetscht, so dass die Welle nur schwer oder sogar gar nicht einführbar ist. Also wirklich nur so stark anziehen, dass das Lager sich nicht mehr von Hand bewegen lässt. Am Ende gibt es einen ca 1,5mm breiten Spalt zum Schlittenboden, der natürlich parallel verlaufen sollte. Alles in allem eine sehr diffuse Konstruktion…

SChlitten_02

Wenn alle vier Lager montiert sind, können die Y-Wellen in den Rahmen geschoben werden. Dies gelingt wahrscheinlich nicht sofort, da die Ausparungen der Rahmenteile etwas zu knapp ausgeschnitten sind. Sie müssen mit einer Rundfeile etwas erweitert werden, wobei man nur kleine Schritte vornimmt und immer wieder prüft, ob sich die 8mm – Welle einführen lässt, aber immer noch fixiert wird.

Feilen

Übertreibt man es hierbei, ist das nicht so tragisch (es sei denn, die Welle hat so viel Spiel, dass sie herumwackelt und zu ihrer Nachbarin nicht immer parallel läuft). Wenn es nur so ist, dass sie sich leicht herausschieben lässt, gibt es als Gegenmaßnahme z.B. herunterladbare Druckteile, die man als Abschluß anbringen kann.

Nun kann man die Wellen in die Schlittenlager schieben. Das sollte sehr leicht gehen, und so, dass sie danach bereits herausrutschen, wenn man den Schlitten nur leicht neigt, ansonsten sind sie nicht in Flucht montiert. Zuvor sollten die neuen Lager geschmiert werden [wird noch ergänzt, da ich hier noch nicht sicher bin, womit].

Da eine der beiden Rahmenteile ja noch demontiert sind, kann man die Wellen mit aufgestecktem Schlitten in die bereits fixierte Seite einführen, sie auf das abschließende Rahmenteil aufstecken und letzteres schließlich anmontieren.

montierter SchlittenDer Schlitten läuft schön leichtgängig, aber beeindruckend laut! Dabei resoniert meine Arbeitsplatte am eifrigsten. In der Luft gehalten, ist es deutlich leiser. Daher wurde der Beschluss gefasst, den Drucker am Ende auf Silikonfüße zu stellen.

Die Z-Achsen  – Lager könnten auch schon vorbereitet werden. Ist noch nicht erledigt.

Auch die Motoren können erst montiert werden, wenn ich die benötigten Kunststoffteile erhalten habe.

In ein paar Tagen wird es weiter gehen. Bis dahin Ciao!

Projekt: 3D Drucker P3 Steel

Einleitung – 3D Drucker: Wäre das was für mich?

3D Drucker gibt es ja schon seit einiger Zeit, und dem einen oder anderen könnte (wie mir) aufgefallen sein, dass man mittlerweile einen (Bausatz) auf Ebay für unter 250,- € bekommen kann.

Somit rückt die Vorstellung, beliebige Dinge herunterzuladen oder selbst zu konstruieren in erschwingliche Reichweiten. Ich habe mich zunächst eine nicht unerhebliche Zeit lang in die Materie eingelesen und einige grundsätzliche Dinge ermittelt, die ich euch nicht vorenthalten möchte:

  • Ein 3D Drucker ist keinesfalls ein übliches Consumergerät, was man bestellt, auspackt, anschließt und nach Treiberinstallation geht es munter los – und das für Monate.
  • Ein 3D Drucker ist aktuell ein Selbstbauprojekt für Technikbegeiserte, die nicht unbedingt zwei linke Hände haben sollten.
  • Ein 3D Drucker liefert erst nach längerem Kalibrieren und Tests annehmbare Ergebnisse.
  • Ein 3D Drucker verschleißt mit der Zeit und benötigt immer wieder Reparaturen oder Justagen.
  • Nicht alles (Geometrie oder Größe) ist überhaupt druckbar.
  • Nicht alle verarbeitbaren Materialien entsprechen in ihren Eigenschaften bekannten industriell hergestellten Kunststoffteilen.
  • Jedes Druckteil benötigt nach dem Druck mehr oder weniger Nachbearbeitung
  • Ein Druck kann verdammt lange dauern, manchmal muss man wieder von vorne anfangen.

Zusammenfassend sind 3D Drucker eher ein Bastelprojekt für ambitionierte Hobyisten, die sich sowieso schon mit Modellbau, Elektronik, etc. beschäftigen.

Ein 3D-drucker, der einigermaßen gute Ergebnisse liefert, ist nicht unter 400,- € (eher mehr) zu realisieren.

Vergesst also die 250,- € Teile aus China; allenfalls könnte man sie als Lernobjekt und Grundlage für einen Ausbau hernehmen. Am Ende kommen auf jeden Fall mehr Ausgaben zusammen.

Und weil wir schon bei den Billigteilen sind: Es gibt einige frei (nachbaubare) Grundmodelle, die auch die Grundlage der erhältlichen Bausätze ist. Eine gute Quelle für diese und andere vielschichtigen Informationen nebst Forum ist http://www.reprap.org.

Ich habe mich für ein Modell entschieden, was es in vielen Variationen gibt (Rahmen z.B. aus Gewindestangen, Plexiglas, Holz oder Stahl) und als „i3 Prusa“ mit diversen Namenszusätzen vertrieben wird. Er ist vergleichsweise günstig, solide konstruiert und liefert in seinen besten Modifikationen (s.u.) sehr gute Ergebnisse.

Der Rahmen eines 3D-Druckers muss möglichst steif sein, damit der Druck exakt wird.

Die Plexiglasrahmen der Billigangebote liefern hierbei das schlechteste Ergebnis. Es hat sich gezeigt, dass ein Rahmen aus Stahl optimal ist (Die Masse liegt höher und ist damit träger, als ein Rahmen aus Aluminium). Dann kommt es noch darauf an, wie der Rahmen geometrisch konstruiert ist., d.h. wie effektiv die einzelnen Komponenten darauf angebracht sind. Hierbei hat sich gezeigt, dass der „P3 Steel“ – Rahmen einer der beste ist.

Man kann sich die Konstruktion bei http://www.thingiverse.com herunterladen und –  wenn man die Möglichkeit hat – selbst fräsen oder lasern. Man kann die Teile aber auch fertig hergestellt und lackiert bei mehreren Anbietern kaufen. Ich habe meinen bei Orballoprintung in Spanien bestellt, das hat 9 Tage gebraucht; nur das Porto hat etwas weh getan. Er kostet übrigens 60,- bis 80,- €.

Neben diesem soliden Rahmen als Grundlage viel mein Blick auf sehr gut konstruierte i3 Teile des reprap-Users toolson, die in seinem Blog scheuten.me dokumentiert sind und auch bei thingiverse.com kostenlos heruntergeladen werden können. (Wenn man seinen ersten 3D-Drucker konstruiert, kann man das natürlich noch nicht tun, also muß man jemanden finden, der das für einen macht (toolson hat das in meinem Fall für mich und viele andere getan, der gute hat allerdings sehr viel zu tun, da seine Teile aber auch wirklich gut konstruiert und gedruckt sind).

Mein Drucker wird daher ein P3 Steel toolson edition werden.

Neben der grundsätzlichen Konstruktion gibt es noch ein paar andere variablen Dinge zu entscheiden (z.B. welche Materialien sollen verarbeitet werden, daraus folgert, welche Art Druckbettheizung soll eingesetzt werden).

Bei mir soll es PLA (beliebt und günstig) und PETG (etwas stabiler und teurer, benötigt höhere Temperaturen) werden. ABS gäbe es noch. Nicht viel stabiler, als PETG, dafür teurer und auf jeden Fall giftig bei der Verarbeitung unter Erhitzung.

Nach einigen Tagen Zusamenstellung der Teile und ermitteln günstiger Vertreiber stand meine BOM (bill of materials, meine Teileliste) ging es mit dem Bestellen von ca. 50 Einzelposten los. Nun sind die ersten Teile eingetroffen und der Bau kann beginnen, was ich in den folgenden Blogbeiträgen dokumentieren möchte.

Wenn ihr mehr Informationenzum, Thema sucht, schaut  Euch bei reprap.org um und lest auch dort im Forum.

Nun aber die Feilen gewetzt  … und los geht’s!