eggStation - an eggTimer ground station software build thread.

The Rocketry Forum

Help Support The Rocketry Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
Very nice Charles! I did a big LabView project professionally over 20 years ago for some precision 2D motion control...it has come a long way indeed. It's currently in fairly wide use at my company for lab test processes, though I'm not directly involved. Looking forward to see how your project works out, I've been hoping to see something like this.
 
Very nice Charles!

Thank you. I'm nearly ready to share.

The weekend's effort involved tidying up the states of the UI QDSM, in an effort to not trip bugs when exiting by closing the window instead of stopping the data collection and then using the exit button. I re-used the logic I built for managing which buttons are enabled, and used it to make sure all the acquisition loops are stopped before sending the final Exit message. I haven't tested it yet, but at least I didn't break anything.

I got the telemetry writing working, too. This makes a .CSV file with most of the flight computer data, and the GPS data, too.
1679352151191.png

Since this screenshot, I've added the other GPS channel and clarified the header row. I'm not sure why I'm getting a final zero'd line - or that I care.

Making the header row:
1679352278329.png

I build up an array, then send it to the 'array to spreadsheet string' VI - which casts the array into a string, then concatenates up the elements with the specified delimiter. Pretty handy.

The individual rows are similar, but since there's more than one data type, I build up the line piecemeal before sending it to the file.
1679352529663.png

Timestamp, Flight time, and Flight State all get sent to a 'format into string' vi, with ',' strings. Then the doubles of the data get arrayed together and sent through 'array to spreadsheet string' with a 2 decimal place format - and a whitespace stripper, since 'array to spreadsheet' adds an EOL. GPS data gets similar treatment, but with more decimal places. Those two strings get fed into the string builder with comma separators - and the whole line gets written to the file.

I cheated a little, and had to learn how to use global variables. It was the easiest way to get a duplicate copy of the GPS data from the GPS acq VIs to the logging VI. The display loop consumes the copy sent over the notifier.

I did figure out why my .KML file were hovering over my house. KMLs expect altitude in meters. I was doing a meter->feet conversion in the acq VI before pushing it onto the queue and notifier. I fixed that - now it's in the GPS display loop.

At this point, I've got the features and functionality I want as the starting point.

On my todo:
- Test hard exit. (done - passed)
- Test starting acq loops before eggFinders/Proton are powered on.
(done, passed - found and fixed a logging timing issue)
- Test in actual flight.
- Figure out how I want to organize a Github repo.

On my feature wishlist:
- Make a version that can replay a log file at variable speed - and save a screen capture to AVI.
- Add settings to select which Proton channels are Drogue and Main, and add display logic to turn on those flight state indicators when those channels fire.
(Memo, expand telemetry log to channel status at that time.)
- Add an alternative GPS to the map display that has two polar plots - one being a bearing/range groundtrack, one being an azimuth/altitude plot

If you want an invitation to the repo, message me.
 
Last edited:
Well, I've discovered a couple of things, now that the first non-me person is trying it out.

  • It requires the 32-bit 2015 Labview runtime engine. That's not the default on the NI Labview download page.
  • I'm also using the 2015 NI VISA. The installer builder thinks that V22.5 would work, but V15 is probably safer.
  • The runtime distributables and the built package installer are too big for free github.
  • Trying to start a channel before going into Settings can setting the COM port causes a ctl-alt-del worthy error. I think I've got that fixed, if not perfectly, in my development version. An abrupt exit is better than an error loop.
  • Also, my testers don't know this yet, there's a window size problem. I'm working on a 15" Surface Book 3. My screen is 3240x2160. Labview 2015 doesn't handle high DPI gracefully, but Windows was masking that. Given that Quickbooks 2020 doesn't do any better, I'm not holding my breath about new version of labview. But it looks like I need to drop my screen resolution and resize everything. I tried to install on my old Surface Pro 4 - and it doesn't fit on the screen. And the USB port appears to be dead. :-(
 
Hey All, Been playing with the eggStation app. Charles was a big help getting my end up and running so there was a bit of process to get it going, or maybe it was me.... Looks like a very capable and useful program. I like the ability to see all the information in one spot. I was using my Quasar and the telemetry stuff is not setup for this device yet, NEMA decoding is though.

The map does require internet but I have not checked to see if it can use offline maps.

Very cool!! Nicely done Charles

eggstation operation.png
 
So, more updates today. Mostly small stuff related to Dave's experience above. I did find a nice navigation view that give an overview of the main.vi
1679964104596.png

For my own notes, I'm going to update my wish list. These start getting past my own needs:
  • Playback from log files
  • Proton (and Quantum?) channel configuration and updating Flight Status for altimeter that don't post Drogue/Main Fired status
  • Configure default map home coordinates.
  • Better handling of incomplete configurations.
  • Handling of mixed GPS/Telemetry data in the Quasar.
  • Rewrite of GPS acquisition for fewer dropped messages.
 
I've been updating the readme on github.

# eggStation
Labview app for collecting GPS and telemetry data from eggtimer rocketry devices. Built for a two stage rocket.

Flight Hardware Requirements
* 1 or 2 eggFinder or eggFinder Minis
* 1 eggTimer altimeter compatible with the eggTimer Telemetry Module
* 1 eggTimer Telemetry Module
* 1-3 Receivers, USB dongle receivers, or an LCD Receiver with an HC06 Bluetooth Module added.

Software Requirements
* National Instruments VISA driver package - built with V15, but package creator picks V22. Still testing
* National Instruments Labview Runtime Engine - V2015 -32-bit-.
* Both are downloadable from ni.com. You'll need to register. and watch that you pick the year and runtime correctly.
* There is a 'community' license for Labview for non-commercial projects, too.
* The runtime distributables are too big for free Github.

Other Requirements
* A Google Maps Static API key. Your own, or a friend's.
- https://developers.google.com/maps/documentation/maps-static/cloud-setup
* An internet connection for the mapping.
* You'll need to be signed into google in the default browser on your system.

Installation
* Install the 32-bit 2015 Labview Runtime Engine.
* Install NI VISA 15. Runtime, at least. Several licenses have to be acknowledged, and expect more than one reboot.
* Unzip the Windows Executable folder into a path like C:\Program Files LABVIEW\eggStation. But it does run from a user document folder, too.

General Use
1) power up the eggFinders and flight computer. Let the eggFinders get a fix.
2) plug in the the dongle RXs.
You'll need to set the correct frequency-channel with other tools.
You'll need to pair up the HC06 ahead of time. Mine tends to add extra COM ports in the pairing process.
You can use a program like putty to monitor the data streams while you figure this out. But it has to be closed when running eggStation.
3) start eggstation. I've seen stray, non-fatal errors on launch.
4) (! First !) click 'Settings' and update the COM port selection, and double check the serial settings (9600, 8, N, 1), API key, and default data path.
5) click start on the acquistion channels. They may be stopped and started independently.
6) When the Sustainer GPS channel has data, clicking 'Home' copies that data to the map controls. Home also resets the altimeter display.
7) The map may be manually updated with the controls at the top, and clicking 'Refresh'. If either GPS channel is acquiring, a refresh command is sent with each received packet.

Controls
* Exit - leaves the program. Clicking the window 'X' will, too. Enabled when all channels are stopped.
* Settings - opens a dialog to configure COM port, serial port, API key, and various defaults. Disabled if any channel is acquiring/logging.
* Stop/Start Telemetry, Booster, Sustainer - starts and stops acquisition and logging for the ETM and 2 GPS channels.
* Telemetry Log file is CSV format with telemtry data and at-time GPS data in decimal degrees.
* Sustainer and Booster channels log GPS data in .KML files for importing into Google Earth projects.
* A new file is started each time 'Start' is pressed.
* Home - copies the current Sustainer GPS coordinates to the Map controls and refreshes the map. Also clears any Telemetry status indications. Enabled when the Sustainer channel is acquiring.
* Refresh - forces a map refresh. A refresh also happens with every new GPS message received.
* Map controls - across the top of the map. Allows for manual entry of the map center, zoom, and style. The elevation entry box is on the Bearing/Elevation graph tab.
* Graph Tabs - switch among Map, Bearing/Range, Bearing/Elevation views.
* Map - Google static map with markers for Booster and Sustainer locations. Sustainer marker is color coded by flight computer status.
* Bearing/Range - polar plot with compass orientation indicating direction and distance from the Home position. Builds a history/trail. Contains the indicators for bearing, elevation angle, and range in feet. Booster is red, Sustainer is green.
* Bearing/Elevation - polar plot with compass orientation indicating direction and angle from horizon. The angle is the absolute value, so straight up and straight down are both the center of the plot.


V1.1 - 2023/03/27
* added revision history file
* added range/bearing and range/elevation tabs - from the Home position to the current position
* added rearranged so it fits on an 1152x864 monitor
 
What does the map screen do if you DON'T have Internet? Does it show the pin without the map?
 
So, offline pages aren’t an option. Recoding around openstreetmaps might get around google costs, but I don’t think it would fix the internet connection requirement.
 
That’s my plan. Use the phone hotspot. I have no plans in making the mapping work offline. The bearing/range plot works offline.
 
Today's update:
Made the GPS Acquistion VI instances reentrant clones. The two instances of the VI had been running serially, which explains the odd/laggy behavior I was seeing when both GPS channels were running - and why the telemetry channel (with its own VI) wasn't affected. Now the buffer doesn't build up, and I sped up the loop execute a little bit. The serial execution meant that the read delays were stacking up, giving the buffer more time to fill. More than needed.
1680215653867.png

I added a new set of Settings to make the max Apogee, Range, Velocity, and Acceleration scales configurable, and to be able to change the default Home position away from Bong.

1680215856457.png

The new settings also allow you to set a Drogue and Main channel for the devices that don't send Flight Status codes 6/7. (Most of them, actually). On a Quantum, Ion, or Quasar, Drogue is 1 and Main is usually 2. On a Quantum, 2 could be an airstart. On a Quasar, 3 can be an airstart, or a backup drogue or main (the backup doesn't get a big colored button). On a Proton, any channel can be anything. And remember, Quasar telemetry isn't supported yet. The new configuration means the code can watch the selected channels and flip the big button on the display.

1680216248075.png

This bit hasn't been tested yet.

.EXE has been saved to github. Working on the source code upload.
 
I was seeing occasional 0,0,0 values in the .KML files. I think I was ignoring the NMEA checksum and broken messages that still had a 'GPS-Fix' quality were sneaking through. I think I just fixed it - but haven't tested it yet.
If you're trying the .KML files and Google Earth keeps rotating to the middle of the Atlantic, open up the .KML and delete out the 0,0,0 rows. :)
 
Will do. I am leaving for the launch....late 10 AM start with a 90 min drive but we have high winds from the frontal passage last night and its supposed to die down in the afternoon. Rocket is ready to go, basically just need to hook up the batteries and put the shear pins in. Will let you know how it went when I get back, that may be fairly late because we need to tear down the range as its the last launch of the season at this farm, and I may be going out to dinner afterwards. Tnx, Bill
 
Will do. I am leaving for the launch....late 10 AM start with a 90 min drive but we have high winds from the frontal passage last night and its supposed to die down in the afternoon. Rocket is ready to go, basically just need to hook up the batteries and put the shear pins in. Will let you know how it went when I get back, that may be fairly late because we need to tear down the range as its the last launch of the season at this farm, and I may be going out to dinner afterwards. Tnx, Bill
I hope you have a great flying day.
 
Files from the test flight
 

Attachments

  • Quantum download from altimiter 2 Apr 2023.csv
    41 KB · Views: 0
  • Telemetry 2 Apr 2023.xlsx
    14.6 KB · Views: 0
  • Sustainer_2023_04_02_15_46_03.kml
    21.8 KB · Views: 0
  • Quasar SD card GPS excerpt 2 Apr 2023.txt
    57.2 KB · Views: 0
  • Quasar flight summary 2 Apr 2023.pdf
    65.6 KB · Views: 0
  • Quasar download from altimiter 2 Apr 2023.csv
    18.2 KB · Views: 0
  • Proton flight summary 2 Apr 2023.pdf
    66.1 KB · Views: 0
Charles -

Bottom line up front was the software works and its "cool".

For me it was a pretty frustrating day because of the damn wind which caused the launch to be cancelled all day Saturday, and the compression of time between when I arrived at about 12 PM and planned shutdown/end of season take down of the range at 3:30 PM so the farmer can get the seeds in on Monday. As the weather guessers had it right, the wind started down from 15 kts at 12 PM to zero at 5 PM, & when I was driving out to the eastern shore of MD this AM from the DC area the flags were all pretty much horizontal so it was blowing a lot harder than 15 earlier in the day.

There was a huge turnout as expected given that Sat was a bust....and the lines were LDRS long. I got the batteries hooked in and the ebay all latched down, both the 70cm and 915 Mhz checked out OK but I was having a lot of laptop issues that I wasnt having at the house. Flags kept popping up when turning the telemetry and GPS on the application, but it still seemed to work probably half the time. I ended up doing a number of PC reboots, at one point I had the screen capture software running but the laptop seemed to possibly choking (it is an old Lenovo I5 with 4GB of RAM, it was originally running XP....bought by my wife's company at the end of XPs life when folks were on Win 7.....I upgraded it to Win 10 and put in a SSD but its seen better days). So I dont know how much of my issues were the computer, and I dont know if the application software is loaded correctly on the C drive and directories. I may need to just breakdown and get a new "rocket laptop" with a reasonably fast processor, a SSD, and 8 Gig of RAM.

I also had running the 70cm and 925 Mhz standalone receivers, with the 70cm hooked up via the voice board to an external speaker.....that worked well. I couldn't get the 925 Mhz unit to get the GPS data, but that was being received by the app on the laptop and I knew the rocket would stay completely in sight so I didnt care. When I got home I figured out it was a config error that I'd accidentally caused when I was changing the receive freq of the dongle board last nigh before the launch so that's fixed.

What was very perplexing was the 70cm stand alone receiver was picking up the telemetry just fine, but I could not get the laptop to show any indications of telemetry reception. I messed around with it for quite a while after the rocket was on the rail probably 1000 feet away. I know the LCO and told him we would need to launch coordinated via a FRS that I left him. It was getting close to 3:30 and I turned the telemetry on one last time, seeing nothing but the GPS data I told him over the radio to just push the button. Off the rail it went as expected, we listened to the 70cm voice readout and watched the rocket. I did not look at the laptop during the flight because of the winds and the concern that it was going to land in the parking area.....which it did about 150 feet from where I was. When I looked back at the laptop I was surprised to see the telemetry had come in. In thinking about this on the way home, I think the three rows of cars between the flight line and the dongle receiver just attenuated the signal too much. The standalone has a bit of a gain on it, the dongle is just a 1/4 wave whip like the TX unit. I had both dongles and the stand alone rx antennas vertically oriented so there wasn't any polarization loss. As soon as the rocket left the rail it was pretty much line of sight, if you look at the telemetry Excel file the first entry is at 100 feet. So, I am happy that it worked but bummed that I didnt look at the screen...oh well.

Lesson learned here is the dongle should have a gain whip AND a much longer USB cable extension to get some elevation on it. I wanted to get both dongle antennas above the car roofs but the only way to do that would have been to put the laptop on the SUV roof.

Anyway, I've got a couple months before the launch at Potter NY that my gang always goes to in June, I'll get all this stuff figured out before then. I will fly some L motors I have and punch them up to maybe 12Kft. Its a much bigger field than at Higgs Farm so folks tend to fly high there. Between now and then I may build a table top angled sort'a like a standing desk with a well to put the new laptop in and have the LCD displays for 70 cm and 915 mhz mounted on the surface next to the laptop with the programming / display cycling push buttons there and a selector switch between the two units into an amplified speaker. I would run some low loss coax from the receivers to external antenna connections on the unit, and get a decent vertical antenna for 70 cm. Power would be via a 12 deep cycle lead acid cell with an inverter for the laptop and voltage regulators. I was powering the laptop that way this afternoon so I could run the display brightness up all the way and not worry about the laptop battery.

I need to hit the sack, long day and got a busy day with work tomorrow. Thanks for the opportunity to work with the software and hopefully I can get the computer stuff sorted out.

Regards,

Bill
 
@schworer - a great story of trials and triumphs. I'm looking at a mag-mount 5db antenna on Amazon now. Maybe more than one.

I hope to get out to a launch this month to do my own testing. I wonder what the intermittent COM issue was. Maybe a poor USB connection? I was showing off the program to my brother in-law this weekend and it stubbornly refused to access the COM port. It finally dawned on me that I had a new version of Cura in the background - and Cura gets really aggressive about serial ports. Unless told otherwise, it grabs them all and continuously scans them for printers. Moving from 4.something to 5.2 must have reset that.

I can see a few interesting things in your data files:
First - GPS altitude seems to really suck. I went through Quasar capture, and it matches the telemetry log and .KML. There's nought to do for it.
Second - I need to go see why the Baro Altitude numeric indicator on the front panel is stuck at the apogee when the logged data shows the descent.
Thirdly - the telemetry log file highlights the partially received data - and not on purpose. I'm torn about whether the leave the nulls and zeros in place as a gauge of link quality, or to mask them with shifted prior data. If I do the latter, I think I'll add a column that indicates which tokens were received and parsed. I should also go back in and save the altimeter channel status token. I'm very open to feedback on this topic.

This flight highlights a number of things @cerving has repeatedly said in threads over the years. Don't fret about getting every packet received. On the GPS side, as long as you get a packet in the air above any ground attenuation, it will get you close enough to get an update. The goal is to recover the rocket, (well, eggFinder actually. But the assumption is that the eggFinder is with the rocket. I've broken that assumption :-( ) not to have a high fidelity data log. The Eggtimer Telemetry Module has a different use expectation. You're flying it -because- you want a live information stream. The voice module is a better real-time data presentation option than eggStation - unless you've got a team big enough to have someone watching the screen. Most eyes are going to be on the rocket. Ears are still available for data input. More data packets would be nice - but the ETM format repeats the flight critical-data every packet. Even with gaps, it all makes it in before long.

This first experience shows me a number of things I want to work on before my flights. Like the ground antennas and laptop setup.
 
The goal is to recover the rocket, (well, eggFinder actually. But the assumption is that the eggFinder is with the rocket. I've broken that assumption :-( ) not to have a high fidelity data log.

Very cool project. I hope you get the GPS data log working to your satisfaction. I have had reasonable success playing around with data logs from BRB900 (1 Hz sampling rate) and Featherweight (10 Hz sampling rate). The data is fun to plot against altimeters and to visualize in Earth. Sure, much of the boost phase is missing, but apogee and descent phases are reasonable. I consider the GPS apogee as the most accurate number from my flight recordings.
 
Very cool project. I hope you get the GPS data log working to your satisfaction. I have had reasonable success playing around with data logs from BRB900 (1 Hz sampling rate) and Featherweight (10 Hz sampling rate). The data is fun to plot against altimeters and to visualize in Earth. Sure, much of the boost phase is missing, but apogee and descent phases are reasonable. I consider the GPS apogee as the most accurate number from my flight recordings.

I suspect it depends on a lot of things mostly out of my control. But I'm looking forward to my own flights for sure.
 
Back
Top