[DIY] wittinobiArduinoSwitchASCOMv1usb

wittinobi

Aktives Mitglied
<<<<< wittinobiArduinoSwitchASCOMv1usbDRIVER >>>>>

<<<<< Info >>>>>
ASCOM Driver v1.0.0 for Arduino Nano with 8Channel Relay Switch.

<<<<< Steckplatine >>>>>
wittinobiArduinoSwitchASCOMv1usb_Steckplatine.png


<<<<< Schaltplan >>>>>
wittinobiArduinoSwitchASCOMv1usb_Schaltplan.png


<<<<< Driver >>>>>
wittinobiArduinoSwitchASCOMv1usbDRIVER.png


<<<<< App >>>>>
wittinobiArduinoSwitchASCOMv1usbAPP.png



...vielleicht kanns ja jemand brauchen.

SourceCode auf GitHub

Release auf GitHub

gruß
wittinobi
 
Hallo wittinobi,
genau das habe ich gesucht! Vielen Dank fürs Bereitstellen!!!!
Ich möchte meine Sternwarte remotefähig machen. Ich habe schon mehrere Nanos im Einsatz, aber von ASCOM Treibern habe ich keine Ahnung. Nur eine bescheidene Frage: ist es - ohne allzuviel Aufwand - möglich, den Wert/Zustand an einem Pin des Nanos in ASCOM anzeigen zu lassen?
z.B Spannung oder Schalterzustände? Ich möchte gerne einen Schalter abfragen, ob das Teleskop in Parkposition ist bevor ich das Dach zufahren lasse und abrasiere ;).

Grüße Ralf
 
Saubere Arbeit, ein sehr nützliches Tool! Vielen herzlichen Dank für das Teilen mit der Community.
Planst Du ggf auch einen INDI Treiber?

CS, Ralf
 
Hallo Tobi,
das macht nichts, ich habe den Parkswitch auch noch nicht implementiert, aber perspektivisch wäre das eine gute Sache.
Habe einen Nano programmiert (noch ohne Relais..) und alles wird bereits von N.I.N.A erkannt.

VG
Ralf
 
Hallo Tobi,
eine Frage noch:
Die Schaltzustände der Ausgänge des Nanos bleiben auch ohne PC oder beim Neustart erhalten? In einem Test war das so. Zufall oder Konstruktionsbedingt?
Hintergrund: der Nano steuert auch die Stromversorgung vom Steuer-PC und Teleskop. Es wäre unschön, wenn die Stromversorgung abbricht, wenn sich Windows ect sich aufhängt oder anderweitig ein Neustart notwendig wird.

VG Ralf
 
Hallo Ralf,
jaein...
Die Schaltzustände werden zurückgesetzt, sobald man mit ASCOM verbindet oder trennt.
Es muss jedoch explizit getriggert werden (sprich Connect oder Disconnect Button muss gedrückt werden).
Wird der PC einfach nur ausgeschaltet und wieder eingeschaltet (ohne vorher ASCOM zu trennen), ändert sich erstmal nichts, ...bis wieder auf ASCOM Connect geklickt wird.
Leider gibt es meiner Kenntnis nach keine Möglichkeit die Schaltzustände "einzulesen", weshalb eigentlich immer irgendwann ein eindeutiger Zustand hergestellt werden muss.
...in meinem Fall hab ich das beim Connecten bzw. Disconnecten gemacht.

Gruß
Tobi
 
Hi,
beim Start des Nanos sind alle auf 0, aber auch bei jedem Connecten ?
Das ich wichtig, denn derzeit fährt das Dach bei 1 auf und bei 0 zu. Nicht gut....

VG Ralf
 
Man kann doch den letzten Schaltzustand im EEPROM des Arduino ablegen und beim neu verbinden abfragen. Würde mich für sowas kritisches wie automatisiertem Dach öffnen/schließen, besonders wenn die Gefahr besteht was abzurasieren, nicht allein auf einen Arduino ASCOM Switch verlassen wollen. Würde da nach einer weiteren Absicherung zur Kontrolle Ausschau halten (Bsp. Lichtschranke oder ähnlich).

Grüße,
Alex
 
Hallo Hartmut,
danke für die Infos.
Soweit ist mir eigentlich auch alles klar.
Aber wie geht es jetzt mit ASCCOM weiter?

Gruß
Tobi
 
@astro_alex80
Deswegen die Frage, ob auch Schaltzustände von Switches oder Analoge Werte (wie Spannung etc) abgefragt werden können. In meinem Fall würde ich im Nano noch eine simple if-Abfrage hinzufügen: gib den ASCOM-Befehl ans Relais erst dann weiter, wenn sich das Teleskop nachweislich in Parkposition befindet, d.h. der Park-Switch geschlossen ist.

VG
Ralf
 
Hallo Ralf,

klar geht das. Du kannst, am besten in Kombination mit einem Pull-down-Widerstand einen Schalter/Taster Zustand abfragen. Schalter offen = zugehöriger PIN am Arduino ist LOW (0) und Schalter geschlossen = HIGH (1).

Geht mit einem Pull-Up Widerstand auch in umgedrehter Logik. Offen = HIGH (1) und geschlossen = LOW (0).

Lässt sich einfach in der LOOP Schleife abfragen.

Muss eventuell noch ein Spannungsteiler oder Optokoppler dazwischen, je nach Spannung des Park-Switch.

Grüße,
Alex

p.s. Frage mich aber, wo man einen Park-Switch am besten montiert, ohne die Bewegungsmöglichkeiten der Montierung einzuschränken, wenn man nicht auf eine Lichtschranke, etc. zurück greifen möchte.
 
Zuletzt bearbeitet:
Hallo Alex,
...und wann bekommt ASCOM was davon mit?
Das Problem liegt hier nicht am Arduino Code, da kann man so ziemlich alles machen.
Das Problem ist die Kommunikation mit ASCOM.

Leider schweigen hierzu bisher alle...

Gruß
Tobi
 
Hi Tobi,

ich hatte es so verstanden, dass Du nicht nur den Arduino-Code geschrieben hast, sondern auch den ASCOM-Treiber.
Von letzterem haben wohl die wenigsten Ahnung.

Grüße
Hartmut
 
Hallo Hartmut,
natürlich habe ich auch den ASCOM Treiber geschrieben.
Aber es muss meines Wissens (wie oben schon erwähnt) bei ASCOM ein definierter Zustand hergestellt werden.
Und ich weiss halt nicht wie ich das anders lösen könnte, ausser beim Connecten/Disconnecten von ASCOM.

Gruß
Tobi
 
OK, da bin ich total raus (und ziehe den Hut vor Dir ;)!) und das ist dann vielleicht eher eine Frage in einem ASCOM Developer Portal...?

Grüße
Hartmut
 
Hi Tobi,

danke für das Projekt. Mit den Relais werde ich mir jetzt in N.I.N.A. eine Lösung für automatische Flats erstellen.
Dazu kommt meine 12V-LED-Beleuchtungsbox neben das Teleskop an die Wand und wird nach Schwenken des Teleskops mit den Relais an- und ausgeschaltet.
Ein schweres Flip-Flat kann ich mir dann sparen.

CS Erik
 
Ach ja, Du knabberst zwar derzeit an einem Problem eines anderen Users, aber eine Idee meinerseits wäre es noch, eine abgewandelte Version mal zu bedenken.
Ich habe mir nach dem Ableben eines ESP32 Prozessors (eingelötet :cry:) an einem super-duper Heizband-Controller (Github Projekt) mal schnell einen manuellen Contoller mit 3 PWM Modulen gestrickt.
Wäre natürlich eine Überlegung, wenn man sowas unter Nutzung von Arduino PWM Ausgängen und 3 MOSFET-Modulen/MOSFET-Transistoren und virtuellen Schiebereglern anstelle von Digitalausgängen realisieren könnte... (z.B. 5 Digitalausgänge + 3 PWM Ausgänge)...

Arduinoseitig sicherlich problemlos, aber der ASCOM-Treiber...
;)
 
Hallo Erik,
so ungefähr nutze ich das auch, 2x Heizbänder und 1x FlatPanel schalbar und das ganze über NINA.

Hartmut,
die Idee war schon da und wurde auch damals paralell dazu angefangen (v2), aber nie vollendet.
Der Funktionsumfang entspricht momentan genau dem von v1 (nur Schalter schalten).
Aber die Grundvoraussetzungen sind in v2 gegeben um eben Werte einzulesen usw..

https://github.com/wittinobi/wittinobiArduinoSwitchASCOMv2usb

...keine Ahnung wann ich da mal weiter machen werde.

Gruß
Tobi
 
"Werte einlesen..." damit meinst Du Temperaturen, Luftfeuchte, etc...?
Soweit würde ich gar nicht gehen bzw. das wäre die Goldvariante. Ein einfaches einstellen der Pulsweite würde mir schon reichen.
Mein großes 20W Heizband ist z.B. viel zu warm. Das arbeitet in der Regel bei 50-75% Leistung.

PS: hier der Link zur ESP32 Version: ESP32 Dew Controller
 
Hallo Alex,
...und wann bekommt ASCOM was davon mit?
Das Problem liegt hier nicht am Arduino Code, da kann man so ziemlich alles machen.
Das Problem ist die Kommunikation mit ASCOM.

Leider schweigen hierzu bisher alle...

Gruß
Tobi
Hab jetzt die Switch Klasse von ASCOM nicht vor mir, aber da gibt es eine GetStatus oder so Methode mit der du den Zustand des Schalters abfragen kannst. Vielleicht reicht es auch über ein externes in Nina eingebundenes Script den Schalterzustand abzufragen und daraufhin das Dach in Bewegung zu setzen, muss ja nicht zwanghaft via ASCOM sein oder halt hart verdrahtet, dass der Dachmotor auch nur dann anläuft.
 
Hi Tobi,
ich verstehe das Problem mit der Schalterabfrage nicht ganz:
Der Status wird doch bereits abgefragt und in der APP angezeigt.
Auf die Anfrage von ASCOM
if (cmd == "GETSTATUSRELAY0") {
antwortet der Arduino mit
Serial.print(CurrentStatusRelay0);
Oder verstehe ich das was falsch, ich habe mir nämlich viel gefährliches Halbwissen zusammengereimt ;).

HINTERGRUND:
Einige Schalter sollen nicht nur über PC und ASCOM sondern auch manuell mit Tastern gesteuert werden (zumindet die, die auch ohne PC öfters gebraucht werden, wäre umständlich zum Licht anschalten immer erst den PC hochfahren zu müssen) .
Deswegen frage ich einen Taster ab, setzte den Ausgang und schreibe den neuen Status in CurrentStatusRelais0. Aber offenbar fragt ASCOM den Schalterzustand "CurrentStatusRelais0"mit
"cmd == "GETSTATUSRELAY0" nicht regelmäßig ab, sondern nur wenn ich in der APP den Schaltzustand ändere. Das ist aber nur eine Vermutung meinerseits, da ich mit ASCOM programmieren leider nicht den geringsten Schimmer habe. Deswegen ziehe ich den Hut vor dir, Tobi!!!!

Sonst funktionierts auf Anhieb recht gut:
Ich kann das Relais über Taster an- und ausschalten. Der richtige Status erscheint in der APP aber erst, wenn ich dort den Schaltzustand ändere.

VG
Ralf
 
Aber offenbar fragt ASCOM den Schalterzustand "CurrentStatusRelais0"mit
"cmd == "GETSTATUSRELAY0" nicht regelmäßig ab, sondern nur wenn ich in der APP den Schaltzustand ändere.
ja genau, ...so irgendwie war das, lol.
Müsste selbst nochmal genauer gucken (...und mich wieder rein fuchsen).
Jedenfalls stimmt mit der Kommunikation noch nicht alles, ...wie du bereits bemerkt hast.
Ich bin mir auch nicht mehr sicher warum ich damals alles beim Connecten/Disconnecten auf 0 gesetzt habe.
...aber es hatte mit Sicherheit seinen Grund (...damals).
Auch die Switch-Namen werden glaub noch nicht in alle Richtungen übertragen/abgefragt.
...jetzt über ein halbes Jahr später würd ich einiges anders machen.
...aber die Zeit spielt einfach nicht wirklich mit.
Ich versuch mal demnächst wieder vertieft rein zu schaun.

Gruß
Tobi
 
Zurück
Oben