Search the Community
Showing results for tags 'java'.
Found 3 results
Hello all, this is my first post at SGL, and it will be quite long. I am not native a English speaker, so please excuse any mistake. I have quite some plan with my telescope mount and its goto control, and I am looking for some feedback and comments. If somebody else did a similar project, please let me know. And please feel free and encouraged to make suggestions, ideas, critics, etc. The story in a few buzzwords: Raspberry Pi Zero → direct control of TMC2209 stepper drivers via the Pi's Uart serial interface to drive my telescope mount. I am writing a software (optionally: open source?) to control the mount. The language will NOT be C, as typically used for Microcontrollers (I know for instance OneStep) I am using Kotlin, which is a more advanced JVM language. I think this should be enough information to filter the readers who are interested in reading the rest of my post. Now the long and detailed story: My professional background: I am a physicist, and did a PhD in EE (Power Electronics). Later, I became software engineer. Besides being fascinated by Astronomy, I am a tinkerer (Reprap 3D printer, electronics, …). I did grind my first mirror (a 6'' Schiefspiegler) when I was 15 years old, and I built the cookbook CCD cameras in the 90's. After many years without a telescope (study time, relationship, ... ), I settled down with my family, and I started to get back to Astronomy. Recently, I did by a quite a massive second hand mount: the “Vixen New Atlux” from another other stargazer in Switzerland. My opinion is that the New Atlux' mechanical design is superb. It has (had...) internal wiring, the counterweight bar can be hidden in the mount for transport, good polar alignment screws, it has an excellent polar finder with a dimmable LED. But on the other hand the electronics: two weak servo motors in combination with the incredible Starbook 5.... Seigh... the starbook...(!) it is, well... the mount is just superb, and no more comments about the starbook game boy, which shall rest in peace at the garbage dump. I removed the servos and all electronics, and I put 2 stepper motors into the mount, which are coupled to the gear with a timed belt. My original plan was to put an Arduino into the mount in order to control the steppers. I have an old goto Celestron cg-5 with Starsense, and it would have been quite easy to mimic - with the Arduino as interface – the servos of the old cg-5 and translate the Starsense control signals to my New Atlux. I can write C, and there is even an open source project called OneStep, which uses a Microcontroller in a similar way as I do. But I don't like to write C code anymore. In the 3D printer community, people need to use real time electronics to control the printer steppers. Due to the real time requirement, C with a real time microcontroler (Arduino & similar) are the only option for 3D printers. Do we need real time for our telescope? No. We don't need to control a lot of Motor accelerations and high speed control. For the telescope, we need to set the Motors speed precisely, and we need to drive to any position in an accurate and controllable and slow way. Then, there are new stepper motor drivers available with as much as 256 microsteps. The TMC2209 stepper driver , which is very well know in the 3D printer community, is not vibrating at all. It runs just smoothly, also at very low speeds. I do drive my motor with 0.25 rpm (sideral speed). In case of a slew, I can accelerate to 1500x sideral speed, which also would allow me easily to track the ISS. Wonderful. The current status of my project is: The mount is equipped with the two new motors The TMC2209 drivers are connected to the Raspberry pi GPIO Interface, and I can control them via Software. Theoretically, I could attach up to 4 motors with a single Uart interface (1 wire protocol). For instance, a focuser or a filter wheel could be attached. I selected Kotlin as language. Java also would have been possible, but I think for a new project, Kotlin will lead to a much more readable code. The TMC drivers can be driven via a chip-internal clock signal. Different to what the 3D printer community is doing (they use the step / dir pins, and create every single microstep with the microcontoller), I can send a “speed” signal from the Raspi via UART to the 2209 chip, and it will execute this speed for me without any further action. The only time critical issue was that I need to precisely count the steps that the 2209 stepper drivers executed. This is done via a GPIO pin, receiving its index signal (a pulse for every 2209 fullstep). Here comes the pain with Linux (non real-time) and the Pi: For user programs, it is impossible to guarantee that every pulse from the stepper drivers will be registered. But I cannot afford to have a step count drift over time. The solution was that I wrote a Linux kernel module in C. I wrote that I don't want to write any C code. Well, a few lines for the kernel module were indeed necessary. I can live with that, having in mind that the rest will be written in Kotlin. The only task of the Kernel module is to count every registered step at the Pi's GPIO input pins. This kernel module output is then mapped to a character device file in /dev/ for every stepper. In Kernel space, it is possible to register and count interrupts without missing even any one of them. From a hardware point of view, this is indeed everything we I need. The project cost so far: 2x10€ for the stepper drivers, 2x10€ for the motors, 2x20€ for the tooth belts and pulley, 10€ Pi Zero plus some peripheral expenses: Micro SD card, USB charger, and 1200 € for the used Vixen new Atlux mount. And a lot of time. I have so many ideas on how to extend the ecosystem of my software, but these ideas are for the longer term (maybe years from now on): Multi-star alignment. The alignment should be able to be updated continuously during an observation night. With a set of stars, it should be possible to calculate the quality of the aligment points, and e.g. drop them if they are errorneous. PEC correction (should be easy on the Pi) End-Stop support The polar alignment routines of today's goto scopes are quite good. But what I would like to have is some audio-feedback when I move the alignment screws into the right direction. Possibility to pre-plan an observation night (e.g. the mount could tell you that the Jupiter moon shadow will be on Jupiter in a few minutes). Record the telescope movements during the night in order to be able to tag any picture. The TMC drivers have much more capability than what I am using currently. For instance, they could be current controlled for slews in order to set the stepper current exactly to the value that it needs without stalling. This saves a lot of energy. The TMC drivers have a feature called “Stall Guard”. This could be used instead of endstop switches (for 3D-printers, this is done frequently). Advanced options for tracking: siderial, solar, moon speed, ISS speed. Tracking in both axis (e.g. to compensate polar misalignments of atmospheric refraction) or just in right ascension. Commercial mounts do not allow much customization here. With slow slew speeds, 5V input via a USB-C cable is sufficient for the Pi + Motors. Usb-C and newer usb battery packs allow to output a higher voltage via USB. With an “USB-trigger”, the input voltage can be selected to my needs. Higher voltage allows higher slew speeds, but consumes more power. Autoguider support, or even better: simply connect a webcam via the Pi's USB connector and do the guiding on the Pi The Raspberry Pi touch screen could be used for telescope controlls Advanced German mount limits and meridian flip control (e.g. a warning about a necessary flip when driving to a specific goto target). An Android App, connected via WiFi to the Pi could be used as display alternative Language control (have a look at Mycroft, an open-source artificial intelligence). "Hey mount, please slew to the whirlpool galaxy!" Control the mount via SkySafari and Stellarium The Pi has a built in camera interface. How about an open source auto align? The Pi could look at the stars to align itself, which makes a lot of sense. I did already order a long focal length lens and monochrome camera from Arducam in order to do some experiments (the standard Pi camera has 3.5 mm focal length and is not really usable, although star imagining is possible). My first observation site is my balcony. And there, the real Starsense does not work at all. It always spin-loops on 2 alignment positions where the sky is covered by the roof – how silly is that?. This can be done better. Further, Starsense is doing only a initial alignment. It should update its position and accuracy over the time! I think I could do this better. Besides all my ideas, the first and most important focus of the software will be: Readability (therefore my choice of Kotlin), extensibility and open source. I like to have the Maths of the internal mount model clearly visible and understandable in the software. The calculations that are done within all our goto mounts are no rocket science. I admit, I am the nerd guy who wants to go the hard way and implement this from scratch. I am looking for a good project name, do you have any suggestions? How about QuickStep? this is possibly too close to OneStep and would offend the creators of OneStep? Does anyone of you have interest in joining my plan? Doing such a project in a small group would be more encouraging then just doing it for myself. And of course later on, I would appreciate if other stargazers would update their old mounts with my software. Any comments on my project plan are welcome! Clear Skies! Andy
I'm trying to do the firmware update for the Starsense in which I needed to install Java which I uninstalled ages ago because it plays havoc with my laptop. Now, when I try and open the update a message pops up say 'A Java Exception has occurred' Not a good start, having problems with it even before I've got it outside. Could someone please tell me what to do? Many thanks.
After some request from SGL members, I decided to present a small software application I have been working on in my spare time.In essence, this program is converts user’s observation reports (using a simple defined structure) into two tidy and organised PDF documents:one organising the data by target (see example: astrojournal_by_target.pdf );the other by session (see example: astrojournal_by_date.pdf ).As of Sep 2015, this program is a beta release, and still does not have a proper graphical user interface (gui). I apologise for this, but as I said, I am developing this in my spare time. If you are interested in contributing with new features, please, feel free to let me know, so that we can work together. Thanks for your interest, Kind regards,PieroAstroJournalAn application for recording astronomy observation records in a tidy and consistent manner.Licence: GPL v3 (2015)Wiki page / Website: https://bitbucket.org/pdp10/astrojournal/DescriptionThis Java application imports files containing astronomy observations and generates an integrated journal document in PDF format using Latex. Observation files can be edited using a common Spreadsheet software (e.g. Google Spreadsheet, LibreOffice Calc, Office Excel) or any common text editor (e.g. MS Wordpad, Emacs, Kate, or GEdit) and must be saved as tab-separated value (tsv) files. To be recognised, fields must be separated by a TAB delimiter. No quote or single quotes should be added for marking the fields.Features (as of 10th September 2015)Generation of a PDF document containing all user observation records collected by increasing target catalogue number. This is useful for comparing targets observed over time.Generation of a PDF document containing all user observation reports collected by decreasing date. This is useful for visualising one’s observations by session.Execution in batch mode (via command line). Windows users can use a mini graphical window including a button for running the program. This is only temporary until a proper graphical user interface is completed.Complete lists of Messier objects and Caldwell selection of NGC targets are included at the end of the generated PDF documents.Although the program requires some form of structured input file, this is intentionally minimal in order to not distract the user who wants to insert his / her data rather than thinking of how to format this data. All input data is treated as a string and therefore is not parsed for controls. This leaves the freedom to the user to introduce the data content as s/he wish. For instance, although in each document header I use the Antoniadi Scale for Seeing, this can be trivially overridden with a customised one. The inserted value for the seeing is not controlled according to a specific scale. Possibility to edit the document header and the footer according to one’s need. This must be done in LaTex for preserving the format controls in the final output file.Future featuresInsert a new observation session using a graphical user interface (gui). Have a GUI view where the previous observations can be visualised and edited.Requirements and Download:To use AstroJournal you need to install:Java 1.6+TeX Live (https://www.tug.org/texlive/ ; the command pdflatex must be available on command line)The program can be downloaded here: https://bitbucket.org/pdp10/astrojournal/downloads .Of note, the program size is MUCH smaller than what is reported. That is the size of the repository, which includes all the version history. After downloading and uncompressing the file, you can run AstroJournal on GNU/Linux typing:# GNU/Linux or MacOSX users./create_journal.shor # if you are using Windows, click on the following icon (this will start a very basic window with 1 button):create_journal.batHow to create an observation recordAs currently implemented, the format of the observation tables is specific. A sample of an observation table is provided below. The titles Date, Time, Location, Altitude, Temperature, Seeing, Transparency, Telescopes, Eyepieces, Filters, Target, Cons, Type, Power, and Notes, cannot be changed as these are used by AstroJournal to retrieve the data. All fields are separated by a TAB character (character usually placed above "Caps Lock"), which must be used. Files containing reports like the sample shown below must be saved using the .tsv extension (tab-separated value). An example of observation is as follows:Date 03/06/2015 Time 21:40-23:30 Location Cambridge, UKAltitude 12m Temperature 12C (wind: 0km/h) Seeing 1 - Perfect seeing Transparency 5 - Clear Telescopes Tele Vue 60 F6 Eyepieces TV Panoptic 24mm, Nagler 3.5mm Filters Single Polarising Filter Target Cons Type Power Notes Jupiter Cnc Planet 103x +/- SPF Write description here. Moon - Satellite 103x Write description here.Examples of observations can also be found in the folder tsv_folder/ . These files can be edited with any spreadsheet (e.g. Google SpreadSheet, MS Excel, LibreOffice SpreadSheet) or a common text editor (e.g. MS Wordpad, Emacs, Kate, or GEdit). To customise the document header and footer, please look at the folder latex_header_footer to find the Latex files for the header and footer. Also these files can be edited with any common text editor.Use caseHere are some guidelines for using AstroJournal: Report your observations (with the structure of my tsv file) using a spreadsheet program, such as MS Excel, Libreoffice Spreadsheet, or Google Spreadsheet. Alternatively you can use a common text editor (e.g. Wordpad, GNU Emacs, Kate, etc.) as long as the fields are the same as in the samples provided in the tsv_report and that each field is separated using a TAB character. Export your file as tsv (if using Google Spreadsheet) or csv. In the latter case, when asked, select tab as field delimiter and no single or double quotation marks for the fields. Then, change the file extension from .csv to .tsv . If you used a text editor, you can save the file using the extension .tsv directly. Put this file in the folder tsv_reports. In the main astrojournal folder type the command above ./create_journal.sh or ./create_journal.bat .