The efforts that have carried life beyond low earth orbit, and close to the vicinity of the Moon, have a few things in common. They have left Earth and been sent on their way by a launch system using a rocket. The spacecraft has had to determine its location in space (navigation) and apply force in appropriate directions to get to the Moon (guidance). To get on to the Moon's surface, they have needed a landing system, again using rockets, to slow their velocity so they would not disintegrate on contact with the Moon. They have also needed a pressure vessel to maintain an atmosphere, which the Moon doesn't have, but that life requires. All have used electronic computers to handle some if not all of their navigation, guidance, control, and telemetry. Finally, a surface rover is a common component.
Whether a launch system, spacecraft, landing system, or rover most vehicles or crafts include a mechanical structure, fluid valves and pumps, electrical-mechanical actuators, electrical sensors, a processor or controller (CPU) to monitor systems and make changes, and an electrical power supply.
This site is intended to provide hobbyists and students with pointers to software that can help with the engineering of micro controller (CPU) controlled devices. The software referenced here is all either free, inexpensive, or demo software so it can be tried without initially investing significant money. A few of them are tools we've developed, but most we've found at other places on the web. Where possible we've included a link to the site where you can get the latest version rather than a direct download of a possibly stale version. All CPU software development tools mentioned here will be for 16-bit or 8-bit micro controllers since there are plenty of Linux, Unix, VxWorks, and Windows based tools for most 32-bit and 64-bit CPUs. Also, 32-bit and 64-bit CPUs typically consume more power than 16-bit and 8-bit micro controllers and thus can't last as long without being recharged.
For the micro controller novice:
The typical software tools that you would need to develop a micro controller device include the following. An assembler is used to convert assembly source code into a machine instruction binary file that can uploaded to the controller or burned into its EPROM. A higher level language compiler, such as a Fortran, Pascal, Forth, C, or C++ can be used to generate the assembly code or some will create a machine instruction binary file directly. Higher level languages such as a Java or C# will create an intermediate instruction file that would need an interpreter to be uploaded to the controller. It's easier to write source code in a high level language than in assembly source code. The next tools that you would need include either a monitor or a debugger. If these tools are designed to work with the controller, they can be used to upload the binary to the actual controller. Debuggers also exist that allow you to test the code with out the hardware. They do this by simulating on your desktop computer most of the behavior of the controller. While a simulating debugger might be easier to configure, you won't know the code really works the way you want it to until you upload it to the hardware.
It can also be useful to use development software such as SPICE, PSpice, and others to simulate the behavior of your electronics. Unfortunately, its hard to simulate the full behavior of a micro controller with these simulation programs. However, they are still helpful in testing out the design of additional electronic circuitry. Another class of helpful development tools are circuit board layout and auto router programs. With these you can design the layout of the electronic components on a circuit board. While circuit layout and auto routers are typically used to design a printed circuit board, they can also help you visualize component interconnection. Thus, they can be helpful even if you're wire wrapping your circuit board and not etching a printed circuit board. Finally, CAD and CAM software can be helpful in designing mechanical parts.
Email suggestions for inclusion to teraKUHN
Text Copyright (C) 2000 - 2002, 2017 - 2023 R. J. Kuhn. Please note that you are not allowed to reproduce or rehost this page without written permission.
This page was previously hosted on geocities as www.geocities.com/rjkuhn_2000/index.htm. That old page has been copied and replicated in a number of other locations on the world wide web, but those other locations are snapshots and are not updated.