NRL Satellite (ARDUINO IN SAPCE!)

So, I am a student at a public high school in northern Virginia. I was able to work on a NRL (Naval Research Laboratories) project, project ANDE. So I introduced my mentor to Arduino and he was like, well this makes everything easier to develop with. I am proud to announce Arduino is going into space.

In this case it just controls the payload boards. I designed the accelerometer payload and some other members worked on the gyroscope payload, both using an atmega168.

Currently we are working on a cube sat. This sat will be all arduino. there will probably be a library released that does radio communication with arduino.

just so we are clear, we use the Arduino boot loader in space. Of course we designed our own boards :3

I should write a full article on this later.
But, I think this will be the first ARDUINO IN SPACE!

Amazing news.

Can you explain the task of the Arduino in more detail?

very interesting project!

On this mission, it simply reads serial from the main processor and returns information from the accelerometers. There are three accelerometer on the perimeter of the satellite measuring the acceleration towards the center. Originally we were going to calculate the RPM live on the processor, but we ran out of time trying to solve the equation. Oh yea, we are using this to find out the RPM of the satellite and center of rotation.
Now that I think about, the main board on Pollux probably has the arduino boot loader too.

The overall goal of the project is this.

  1. Provide Total Atmospheric Density for Orbit Determination and Collision Avoidance
  2. Validate Fundamental Theories on the Calculation of the Drag Coefficient
  3. Provide Calibration Objects for SSN
  4. Establish a Method to Validate Neutral/Ion Density and Composition Derived from DMSP Sensors
  5. Space to Ground Optical Communication Experiment

Number 2 is a big one.
Also, Pollux is testing how well commercially available devices (sensors) work in space. In this case the accelerometers I picked out for it is as fallows.
The SCA610 from VTI. The 10bit A/D converter on the atmega168 gives us about a 3 RPM accuracy, but higher do to my sampling.

I also used the arduino environment to control our high school ground station. The device I made is the Goldberg-1000. Uses USB serial communication and a series of mosfets to control motor rotation. It is accurate within 2 degrees. Future one will use UDP/IP to control it, this board will be quite a challenge. NRL decided to fund these boards, seeing they are the best on the market :), I am only 17, hehe

Here is the Goldberg-1000


Here is the Schematic of the Payload.

I could ask 1000 questions because I find it very interesting what you did. Maybe my two most important questions:

  1. Did you write sketches with the Arduino IDE or did you only use the bootloader to upload program that you wrote in C or assembler? I mean will a digitalWrite() line of code be in space?

  2. Can you explain the space to earth communication? What kind of signal is used, how does the receiver look like and what tasks does Goldberg-1000 have?

Yes, i used the arduino libraries and the code was written in the java IDE. I mean, it is just so easy to use digitalWrite() and AnalogRead() :3

The communications are done over UHF FM radio. It is a standard, I haven't got much into this yet because of how complicated RF electronics are, but i am learning little by little, I am applying for my radio license now so I can use the equipment at school.

The radio on the satellite is a 1/2 watt radio, and the antenna is the body of the satellite. The ground station is a Dual Band, Yagi antenna. We use a YAESU - FT-8800R radio in our ground station and a YAESU G-5500 Rotor. Anyone can communicate with the satellites, in fact, if anyone has a ground station, we would like to talk to you.

The Goldberg-1000 I came up with because of a device I saw designed that hurt a little to look at. It was a board with read relays to control the g-5500. The g-5500 has pins on the back that allow you to control the rotors and outputs a linear voltage relating to the angle of the motors/antenna. I realized how easy it would be to make a cheep little board to control it. So i started designing it on my own for fun. I showed it to my mentor, Ivan Galysh, and he said, cool. He said that it was better then any of the other boards on the market, What makes it appealing is how small it is. In fact, i planned on it to be inline, but that is to expensive to produce when i can put it in a simple project box.

The code for the Goldberg-1000 uses the arduino libraries too. It has some cool code to it, I suppose I could post it. It has self-calibrating system that finds out the min and max range of the voltage coming back from the motors, and throws an error if the motors voltage range is to small for the device to be accurate. (you can control the voltage range on the outputs on the g-5500). And there is 5.1 volt diode to ground to prevent damage to the atmega168. The calibration takes about 2 minutes to complete. I learned to use interrupts and the timers on board in order to do timeouts when reading serial data, because it is bad when your moving an antenna for your program to hang :X

So yea, the g-5500 interfaces with a program on the computer, (that am currently working on), the send it a command to move the antenna to a position.

I'm using "" to bracket everything that would be sent to the G-1000,
is carriage-return (Hex value of '0x0D')
is line feed (Hex value of '0x0A)
All other data is ASCII

Any error condition will return the ASCII string "? >"

  1. Request current AZ, EL:
    Command: "C2?"
    Response: "+0aaa+0eee"

where aaa = azimuth (000 to 450), eee = elevation (1 to 180)

2. Select Azimuth Rotator Turning Speed:
~~ Command: "Xn", where n=1 (slowest), 4 (fastest)~~
~~ Response: ~~

  1. Position the antenna to AZ, EL:
    Command: "Waaa eee", where aaa = azimuth (000 to 450) and eee=elevation (000 to 180)
    Response: ""

  2. Cancel current command execution:
    Command: "S"
    Response: ""

  3. Reset G-1000: (Reset the G-1000)
    Command: "R"
    Response: ""

Calibrate command is not listed because, well he didn't realize you needed it.

Now then, we have programs that give us satellite locations. My program will couple in with it and allow to select a USB serial device (IE: the g-5500) and move the antenna to the position relative to the satellite you want to pick!

FEW, that was a lot to say. Any more questions on that?

Oh yea, anyone know how I can store a float into the EEPROM?
I have this

void save() {
  char *ptr;
  int i;

  ptr = &CalConf.EL;
  for (i = 0; i < 4; i++) 
     EEPROM.write(i,prt+i);

  ptr = &CalConf.AZ
  for (i = 0; i < 4; i++)
     EEPROM.write((i+4),prt+i);
}

But avr-gcc does not like compiling it, This is for saving the calibration

The Final G-1000 - revision 7.
I have made changes to this, but it gives you an idea...

Very impressive! I will later look up the devices that you mentioned.

For your EEPROM problem:
have a look here:
http://www.arduino.cc/playground/Code/EEPROMWriteAnything

Just to ask where is the satellite going to be? (country) and how would one go about contacting it?

The satellite will be low orbit, 350 km out and will be up for a year until it burns back to earth.
It will launch from Florida on the shuttle. You can contact it with a UHF FM Radio. 400Mhz and 100Mhz range. If you have this equipment send me a message.
So, arduino in space... :slight_smile:

Would that be 2m and 70cm packet? What speed/modulation/etc?

If you're interfacing your G1000 with predict, I (and I'm sure a lot of other folks) would like to see some details.

-j

Yes, the G1000 software will interface with predict.
I will come out with a few bits of software, for predict, gpredict, and a perl module.

Right now I can manual control the g1000 by using cat.

I do plan to release further details later, possibly get a published article.
I can tell you the cost and features.
the Goldberg-1000 will sell for about $50 a pop, mainly due to the cost of manufacturing boards
It uses a FTDI232R USB serial ship, so it shows up as a USB serial interface in Windows, Mac, And Linux with kernels 2.4 and newer I believe. It has over voltage protection on the sample pins.
It is really small, 1 inch by 1 inch and a half roughly.

If you would like to help with the computer programs that is fine, they will be under the GPL License, not sure which one yet.

Congratulations on your project, it seems so cool to me to have made something that will be in space!

You are only 17 right... amazing!

Project looks really cool! I used to work with NRL and know several employees there - which code is sponsoring this? Again, congrats and let us know when she flies!

Yea I think it is cool too.

which code is sponsoring this?

I have no idea, in fact I don't know what that means.
But I can find out I suppose, Define code.

Ill try to find out what shuttle mission it is on, I think it launches in may.

It would be great if you could tell us more about the data format that you broadcast.

We have a ground station at the university that tracks satellites and ISS. Maybe they can try to receive your data and introduce me to this topic as I have never done anything with 2m or 70cm radio.
What kind of payload will the satellite broadcast?

... it won't let me edit previous posts...
Anyways, It is VHF/UHF radio.

The payload on Pollux is the fallowing.

  • 3 Gyroscopes
  • 3 MEMS accelerometers

On Castor a lot more

  • GPS
  • Wind and Temperature Spectrometer
  • Thermal Monitoring System
  • Miniature Electronic Analyzer
  • Photovoltaic Arrays
  • 3 Gyroscopes
  • 3 MEMS accelerometers

Again I don't know much about the radio protocol yet, Ill ask.

Ok, the Radio info should be published by the end of the month.
Anyone is free to talk to the satellite, it is publicly knowledge.

My Mentor is working on writing the documentation about the satellite... I Hope.
These will soon be made public.

Here is the G-1000 Version 7 completed.
http://dump.no/files/4d7f6f043373/IMGP2810.JPG
Anyone want one?

Bah, anyways next I will build an Ethernet version, tough I might use an ARM.

I am already working on a cube sat using arduino and a payload for a 2 mile high rocket launch.

On my agenda is also a CAN bus or I2c bus H-bridge for an electric go-cart.
Possibly an ac-relay box for Christmas lights :3
Anyways, I have a lot planned. Stay tuned!

This is great. I have been playing with arduino, and AVR's in general for a while now. I am also a licensed amateur radio operator. Go and get your license, it's a lot of fun. Keep us all posted on the details of this project, I would love to make contact with the satellite.

Keep up the great work,
Shawn, KJ4KNW

awesome stuff :slight_smile:

when is the launch? :3

any news?