# Can you really use Arduino for a small spacecraft?

A group of Russian geeks intends to shoot a small vehicle to the moon, which is supposed to photograph the places of the Apollo landings. This will be the ultimate proof that people actually visited the moon.

In one of the articles about the topic I've read that you could use a low-cost onboard computer, even an Arduino, provided that it is protected from radiation.

If the purpose of the spacecraft is to

1. separate itself from a group of satellites (several small vehicles will be launched with one rocket),
2. navigate to and fly over a particular place,
3. shoot a couple of photos and
4. transmit them to Earth,

can you really use such a low-end device as Arduino as the onboard computer? If not, why not?

Update 1 (06.02.2016 12:34 MSK): I asked the project lead on how they intend to prove that the images are real. You can find his answer here. Short version:

1. The images will have a much higher quality than those generated by previous analogs. This means that the new vehicle will "see" things (such as details of the Moon surface), which previous didn't. Therefore, the images will contain additional information, which is not known yet (like a small crater, which was unrecognizable on earlier photographs).
2. Radio amateurs will be able to detect (but not to decode) the signal from the vehicle.
• Maybe the "penultimate" proof. Do they say how they will secure their data stream?
– uhoh
Feb 5, 2016 at 11:11
• I agree with the sentiment in uhoh's comment above. The kind of people who dismiss the hundreds of thousands who worked directly on the Apollo project, the hundreds of thousands to millions who watched the spacecraft launches live, the monitoring of the missions done throughout the world by both amateurs and professionals, the authenticity of the returned samples, photos, etc, are exactly the kind of people who would dismiss such photos as could be returned by a probe like this too. To think the USSR would have dismissed the huge propaganda win in proving Apollo fake is little but ludicrous.
– user
Feb 5, 2016 at 12:23
• I needed a new project for my Arduino, now I am busy... Feb 5, 2016 at 13:37
• I suspect an Arduino is a great deal more powerful in terms of computing capability than the computers which controlled the Apollo launches and spacecraft. Feb 5, 2016 at 15:59
• @BobJarvis -- less so than I would have guessed, but yes, an Arduino Zero is clocked 24x faster, has more than 3x the storage, 8x the RAM of an Apollo AGC. Feb 5, 2016 at 17:44

Can you have a spacecraft based on an Arduino? Sure you can! ArduSat was two kickstarter funded cubesats that were eventually launched from the International Space Station in November 2013. When you think about it, an Arduino easily outperforms for instance the over forty year old Apollo Guidance Computer

All of your requirements should be doable, if it is simply a flyby mission.

By the way, images of the Apollo landing sites are already taken, for instance by the Clementine probe.

• Thanks. That new vehicle will fly at a lower altitude and the intended resolution of the images will be higher.
– user3049
Feb 5, 2016 at 8:01
• Shielding can't be 100% - especially with a nanosat weight limit. May be a good idea to use (at least) three arduinos with proper redundancy handling. This answer about the first space shuttles running on a handful of Z80's is worth reading.
– uhoh
Feb 5, 2016 at 10:57
• Oh CubeSats I've read an article about them, it's so awesome
– Kyle
Feb 5, 2016 at 11:59
• Arduino seems plausible, but how do you pack 10 km/s delta-v into a cubeSat? Feb 5, 2016 at 14:05
• One problem: in LEO the Arduino is still protected by Earth's magnetosphere. While going to the Moon, that is no longer the case, and it's not a radiation-hardened chip.
– SF.
Feb 6, 2016 at 22:14

You can, but it will suffer from a number of problems. These problems can probably be overcome with a short term mission. Problems include:

2. Single event upsets- This is probably the biggest danger, a high energy cosmic ray strike could cause a bit flip, potentially changing the code running in a mission critical way.
3. Temperature- If the temperature isn't carefully managed, could see some significant damage.
4. Vacuum- Probably not much of an issue, but could cause out-gassing which might have a long term effect.
5. Vibration- Parts could be vibrated off during the launch.

These probably can mostly be overcome by adding in extra protection to the spacecraft. But there isn't anything in particular that would prevent an Arduino from being used to control a spacecraft, especially a very short term mission. It has been demonstrated in LEO, but the radiation effects will be more severe for a mission to the Moon. Bottom line, it could be done, but I wouldn't recommend it.

• This is the right answer. Could you make a low cost computer work. Sure. But it'll end up costing much more in modifications to account for the operating environment than more expensive computers already designed for the job.
– Dunk
Feb 5, 2016 at 20:11
• Well, it depends on the lifetime. If your goal is only to get something to work for a few hours, you'll probably be okay with an Arduino. If it's much more than that, then you have a high likelihood of having some issues in the end without modifications. But radiation hardened equipment is expensive too. Feb 5, 2016 at 20:14
• Perhaps radiotion-induced latch-up should also be mentioned (affects power supply requirements (mitigation)). Feb 7, 2016 at 15:52
• List in your answer appears to be malformed a little, to fix this one needs to substitute the . character (a full stop dot) for a - character in the beginning of the list's fifth point. It is too unsubstantial for me to do it via suggested edits. Cheers. May 13 at 22:05

I concur with Hohmannfan's response. This answer addresses the wider issue of computers in satellites.

Who needs a computer? I don't think there is anything about the mission that you have described in the question that actually requires any "digital computer" at all. It might seem as if image handling and navigation are highly demanding in computing terms, but that is largely because we are accustomed to the idea of a world enabled by high-level software.

I think it is a good starting point in terms of systems engineering education to actually step through the processes involved and ask oneself "what is the most basic implementation possible?", particularly in terms of "what decisions absolutely must be taken on board, rather than by ground command?". Designers of missions in the 60's through 80's often came down on the side of "no computer needed". Its only since the weight, performance and cost of such things has come down that we take it for granted.

Digital All of the logical decisions that need to be made on a satellite could in principal be made by discrete logic gates. Its an engineering judgement as to when the "digital finite state machine" so created has become so complicated that it would be better replaced by a CPU/address bus/data bus architecture.

As an aside, its not obvious that there is any clear dividing line between discrete electronics and a "computer" in the modern sense. This article regarding Pioneer 10 hints at the in-between possibilities.

Much of the computation for the mission was performed on Earth and transmitted to the probe, where it was able to retain in memory up to five commands of the 222 possible entries by ground controllers. The spacecraft included two command decoders and a command distribution unit, a very limited form of processor, to direct operations on the spacecraft.

Analogue Furthermore, decisions relating to progressive quantities - sensor outputs and control loops are in the first instance analysed in control engineering terms. How they are implemented is again a design choice and the old world was full of analogue computer elements.

Environmental compatibility There is the launch environment and then natural radiation once in orbit. The latter includes ESD damage (see here) as well as radiation dose and displacement damage. One interesting anecdote is that the progressively higher performance computers using physically smaller gates and switching times are more vulnerable to these effects than their older cousins. When it comes to ESD, shielding doesn't help when there are peripheral bits of the circuit on the spacecraft skin. The designers need to take it carefully.

By the way, thank you @uhoh for the link, that was interesting.

• These days we tend to reserve the term 'computer' for a Turing-complete system (i.e. one that can run any program). Early satellites sometimes used sequencers, purpose-built circuits that provided basic functions but were not reprogrammable. Feb 5, 2016 at 12:27
• I'm not sure the article on Pioneer 10 is a good example of how computers need not be all-digital, at least not as cited. The only occurance of the word "computer" in that article as of now is under the "Encounter with Jupiter" heading and refers to image postprocessing to correct distortions, which is largely unrelated to the operation of the spacecraft itself.
– user
Feb 5, 2016 at 12:29
• @Hobbes And even farther back, it referred to a person who carried out, or "computed", calculations. Using the word "computer" to mean a digital, reprogrammable, electronic, binary computer is really a rather newfangled idea. (With ASICs and to a lesser degree FPGAs, we have come almost full circle.)
– user
Feb 5, 2016 at 12:30
• I'm curious, how you can capture and send an image without a digital camera. Do you mean using an analog camera and sending the signal from it directly to Earth (without storing it) ? Like they did in the 1950es with TV shows (they were not recorded by sent directly to the receivers via analog channel) ?
– user3049
Feb 5, 2016 at 12:41
• @Michael Kjörling I'm sorry for the confusion and thankyou for pointing it out. I had actually done a search on the phrase "comput" and found a different passage. I've pasted that section into my answer now. Feb 5, 2016 at 12:54

It should be possible. ESA has tested the rad-hardness of some cousin processors to that used in the Arduino and they turned out fairly well, at least for a relatively short mission. Some current stuff is actually using ancient 8051-architecture chips.

There would be enough processing power to do navigation, maybe even enough to stream out recorded fake pictures.

Edit: A powerpoint summarizing the ESA findings can be found here.

Heavy Ion result for ATMega128

The ATMega128-AU16 has an acceptable behavior for a ISS LEO environment.

SEL once in 481 years

SEU once in 690 years

The AT90CAN128-AU16 is not acceptable for space application.

The chip used in many Arduinos is the ATMega328, which is a cousin of the ATMega128.

• Do you have a source for the tests ESA did? Feb 6, 2016 at 15:46
• That link is very interesting - but a little hard to follow in detail. Are all the tests designed to simulate radiation effects in LEO (these are heavy ions from a particle accelerator, right? "...Irradiation by Iron and Krypton Ions..." ) The application described in the question is "LLO" (Low Lunar Orbit) where the radiation is much higher (and variable) than LEO.
– uhoh
Feb 7, 2016 at 4:33
• @uhoh Yes, particle accelerators (at relatively low intensity). There is a more comprehensive report elsewhere- I was just intending to give you enough key words that the source information could be easily found (and it is actually published). The radiation levels in a lunar mission are higher than the relatively benign LEO environment, of course, but the moon blocks off the sun's radiation for half the orbital time- the total might be a few times higher for the same length of time. There is public-domain information out there on this. Feb 7, 2016 at 12:39

Others have covered the hardware difficulties, but I would like to mention the software difficulties. Getting enough margin (CPU and memory) is difficult on arduino class processors. Spacecraft I have worked have required anything between 50% and 90% margin that means that you only get to use between 50% and 10% of the processor. The margin is for things like schedulability and memory scrubbing. The other factor is it is just harder (and therefore more expensive) to write reliable software with less resources. There is a fine line between too simple (can't do all the checking you really should do) and too complex (impossible to test) and the arduino probably favours more of the former.

• @Dmitri Pisarenko I am really only familiar with the RAD750 and Leon3 (both very expensive). If I had to go cheap I would consider and ARM or even a Spartan with a micro-blaze, but I would never cut costs on software or computation hardware really. The cost of the ride is soooooo much more it's worth being sure it works when it gets there.
– Sam
Feb 5, 2016 at 17:31
• @Sam - Although I'm not a big fan of them, arduino class processors can do far more than you give them credit for. Although, I definitely agree that the cost of the processor board pales in cost when compared to the cost of everything else. So you may as well spend a few extra bucks and get exactly what you need.
– Dunk
Feb 5, 2016 at 20:14
• @Dunk seeing as they can't even hold a RTOS and a well certified RTOS is one of the easiest ways to make solid designs. no, I don't think I'm giving them too little credit.
– Sam
Feb 5, 2016 at 20:53
• @Sam: I can't quite imagine choosing a Spartan for this situation--I hardly know of anything that's less rad tolerant. For a rad tolerant FPGA, Microsemi would be a much better choice (e.g., a SmartFusion2, which has a low-end ARM processor, decent SEU protection, and an RTOS easily available). For anybody wondering "why?": Most Xilinx FPGAs (including Spartans) use SRAM for storage. Most Microsemi FPGAs use flash for storage. They also have antifuse-based ones that should be even more rad-tolerant (but more expensive per gate, if memory serves). Feb 5, 2016 at 22:42
• @Sam: Fair enough--and lest I be misunderstood, I'd add that I have nothing against Xilinx in general (in fact, I've probably used their FPGAs more than any others). But, rad-hardness is not one of the strengths of most of their parts. Feb 5, 2016 at 23:12

You don't need that much processing power or RAM to explore space. The Arduino is far more powerful than the processors which have been used on spacecraft historically. The basic Arduino is 16 MHz and 256 KB of flash memory. You can add RAM or flash in significant amounts. The computers used in the Apollo space program come nowhere near this.

Galileo's processors are 8 MHz, while Spirit and Opportunity are 20 MHz processors. The code on these probes was highly optimized and specially developed for the purpose at hand, making very efficient use of the computing resources available.

It's entirely do-able.

From a computational point of view, it is feasible to pack all the algorithms in there. However, there are issues with radiation shielding as you point, but integrated circuits are also affected by temperature, so proper thermal insulation must be considered too, as these are not definitely graded to operate in "harsh" environments.

I think this project is extremely difficult. To get detailed high quality pictures of Apollo landing sites, you need a very low orbit around the moon. The distance between the spacecraft and the landing site has to be small enough for a detailed picture. But those very low moon orbits are not stable due to mascons of the moon. To avoid a crash, the small spacecraft would need a sophisticated propulsion system and a lot of fuel for orbit control. The navigation must be extremely precise to get an orbit over a landing site. There is no moon GPS available for navigation. Finding the landing sites requires complex and very fast image processing to dectect the remains of a landing within a series of pictures. I doubt that an arduino has enough processing power to do this image processing in real time.

My take: You could use an Arduino board, but you would have to remanufacture it to be non-RoHS compliant, i.e. using solder made of lead-tin alloy, using conformal coatings and potting it. As it stands, space electronics have an exemption from RoHS compliance anyway.

The Arduino boards you buy off the shelf are RoHS compliant and use lead-free solders, whose only main structural metal is tin, alloyed with small amount of silver. One problem with that in a space environment is the high susceptibility to growth of tin whiskers from the solder joints, which can cause short circuits by bridging to adjacent tracks. Tin whiskers have been asked about as a question here before. Lead content slows down the growth of the whiskers and inhibits the tin pest.

Unfortunately, the growth and causes of these whiskers is not well understood, and the mission duration isn't a factor - they can occur at any time.

So your COTS Arduino could go on the fritz at any time.

• Thanks for your answer. What do you mean by potting it ?
– user3049
May 2, 2016 at 6:07
• You can insert a circuit board into a box and then fill the entire box with e.g. epoxy. This makes the circuit board more resistant to vibration. en.wikipedia.org/wiki/Potting_%28electronics%29 May 2, 2016 at 7:38

This is something I've been looking into as well. Here's my idea:

Use ATMEGA328 (or ATMEGA16A if durable enough) with triple redundancy, using only thru-hole components on protoboard. As mentioned elsewhere here, use leaded solder. The voting circuit for each digital output can be built with 4 logic gates. An error counter and watchdog circuit to reset a misbehaving CPU can be built from discrete logic chips as well. 4000 series are what I'm looking at at the moment. Add optoisolators where they make sense. Copper tape on the top and bottom of every chip might help a bit.

Conformal coat the whole board when done. Add thin steel RF shielding over the most sensitive components. Use potting epoxy under the shielding. There is some new research (sorry I don't have a link) that suggests rust might help to deflect certain unwanted particles, so if this inner shielding is rusty, that might help. The shielding should be connected to common ground with some sort of protection against sudden spikes.

Put the whole thing in a milled/cast aluminium project box with walls at least ⅛" thick. Connections to the outside should use GX aviation connectors. Keep the steel and aluminium from touching by using copper or brass. Exactly how depends on how you made the hole and how much space is around it. Fill the entire box with potting material. Sand down the mating surfaces of the box and lid for good contact, screw it down, and seal the seam with conductive tape.

It might be a bit heavier than you would like, but all of these methods together give it a fighting chance of surviving.

Edit:

• If something is really mission-critical, use mechanical relays instead of MOSFETs.
• Avoid electrolytic capacitors like the plague. Also avoid polyester and nylon film capacitors. Monolithic ceramic capacitors are 'good enough' but generally try to use as few capacitors as possible.
• 1/8" Al filters only very little roentgen/gamma. Aug 22, 2020 at 8:27
• I suspect that PCB material, conformal coat and potting should be "space grade" (do not emanate gases in vacuum and under solar thermal radiation). About non-RoHS soldering already mentioned. It looks like someone who have such technologies does not need to use ATmega328-like MCUs. And majority gates still are "point of failure" themselves but this is looks unevitable. Aug 25, 2020 at 13:09