Go Down

Topic: Telescope control indiserver - Firmata - real time commands (Read 2691 times) previous topic - next topic


I want to implement telescope tracking using an Arduino as the interface between a PC/Laptop and a German Equatorial Mount. Very basic - 2 axii, RA and DEC and variable slew speeds through a hand controller. All I want to do is emulate hand controller commands...

It works like this;

An astronomical ephemeris (Xephem) provides real time tracking information to a control interface (XmTel) via the Linux indiserver.

From the control interface, tracking commands are sent to an Arduino with Firmata as the link between XmTel and the Arduino.

I have the ephemeris and control interface installed and communicating via indiserver. I have Firmata sending commands to the Arduino using a GUI that I downloaded from the Firmata site; however

Is it possible to set up Firmata to receive inputs from XmTel (the command interface) real time. I am a bit hazy on what protocol to use to get the commands to Firmata.

INDIUINO is an indi project that controls domes and so on with a Firmata GUI, but I need real time commands.

Is there an easier way to do this - perhaps a PL2303?


What a great project.

The way you've described the system, I'd look at modifying the firmata GUI program to accept inputs from your server.  Can't say how hard that would be without seeing the source, presuming it is open.

If you're not wedded to a firmata solution, I've published a web front-end toolkit for Bitlash named Bitlash Commander that allows control of an Arduino from a web interface using Bitlash script.  It's a similar architure with Bitlash substituted for firmata.

You could build your control interface as a Commander page and extend Commander to accept input from the indiserver, same as you're looking at for the firmata path.

Bitlash Commander: https://github.com/billroy/bitlash-commander
Bitlash: http://bitlash.net



Thanks billroy. I think this might be on the right track.

I conducted a little experiment with the Firmata interface;

Teensy 2.0 on ttyACM0 with XmTel configured for the same port.

In a terminal "indiserver tel" with the following output - still dead after 10 restarts

2012-12-03T22:19:40: Driver tel: We always read the precision encoder and
2012-12-03T22:19:40: Driver tel:   set the motor encoders to match.
2012-12-03T22:19:40: Driver tel: A200HR serial port opened ...
2012-12-03T22:19:42: Driver tel: A200HR drive control did not respond
2012-12-03T22:19:42: Driver tel: stderr EOF
2012-12-03T22:19:42: Driver tel: still dead after 10 restarts

Launched Firmata test interface and selected port ttyACM0, then "indiserver tel" with this output - connected to a Planewave A200HR telescope mount - not really!

2012-12-03T22:20:36: Driver tel: We always read the precision encoder and
2012-12-03T22:20:36: Driver tel:   set the motor encoders to match.
2012-12-03T22:20:36: Driver tel: A200HR serial port opened ...
2012-12-03T22:20:36: Driver tel: Planewave A200HR
2012-12-03T22:20:36: Driver tel: Sidereal Technology ?r
2012-12-03T22:20:36: Driver tel: Telescope connected
2012-12-03T22:20:37: Driver tel: Limits disabled
2012-12-03T22:20:38: Driver tel: Initial telescope pointing request was out of range ...
2012-12-03T22:20:38: Driver tel: Cycle power, set telescope to home position, restart.

The image below shows Xephem with the indiserver connected to the telescope, talking to XmTel with Firmata in between the Teensy.

I don't know much about the firmata interface, but I think this shows that there is communication between all the required elements of the system. All I need to do now, is send real time tracking from Xephem to Firmata to drive the Teensy/Arduino pins - telescope mount stepper motors.

I can see that I will need help with this. Is this a simple task under Bitlash? From what I have read, following the links, it seems feasible, although it can be completely transparent. The only interfaces required, are the XmTel and Xephem


Sounds like you have all the pieces already; you don't need Bitlash in your setup, but you may need to modify the Firmata on the arduino to accept the pointing commands.  That's where I'd start to dig.



Go Up