The Arduino Launch Control System LCS
The Arduino Launch Control System LCS
by Austin_Aerospace_Education
The Arduino Launch Control System is a model rocket launch controller for a single rod launch pad. This was the rst
Arduino rocketry project that I wanted to design and build, having just started into learning about electronics and the
Arduino less than 6 months prior. There are a number of Arduino model rocketry launch projects available on the
Internet, and they did provide inspiration for this project. Yet while they provided some great ideas, I wanted to
approach this launch control system from a di erent angle.
Focus on Research
If you look around my web site ( https://rocketryjournal.wordpress.com), you know that I often discuss how model
rocketry can be used to explore both science and technology. One great way to combine these is to use model rocketry
as part of a science or technology fair project.
If you are using a model rocket in a research project, no doubt weather will be a part of your data collection e orts. To
help meet this need the launch control system provides the user with several weather data points, including:
Temperature
Humidity
Barometric Pressure
Safety is always an important consideration in rocketry. As I was designing the Arduino Launch Control System (LCS) I
wanted to make sure that it would be safe to operate. The LCS provides a ten-second countdown and I wanted to be sure
that when the counter hit zero, the Launch Control O cer still wanted the rocket to launch. In order for the countdown
to start and power to be supplied to the launch pad, I decided that several things must be accomplished.
The LCS has two independent power supplies and both must be turned on. The power must be turned on to the launch
pad or there will not be any power at the igniter clips. Second, the key switch must have the key inserted and turned on.
Without the key, the switch will not turn on. Without the switch being turned on, power will not ow from the launch
battery to the relay and on to the launch pad. The key switch LED also indicates if there is continuity to the igniter in the
rocket.
However, if you only turn on power to the launch pad you will nd that the continuity lamp will operate but the re and
safety buttons are inoperative. You must also supply power to the Arduino. The system will not re without the Arduino
being powered up, as it reads the signals from the re and safety buttons, which sends the signal to the relay. The relay
allows the power to ow to the launch pad.
Finally we come to the Fire and Safety buttons. To start the countdown both buttons must be pressed down.
Additionally, they must remain pressed down during the countdown. If either button is released, the countdown will
stop and the launch is aborted.
You will notice that the re and safety buttons are located at opposite ends of the LCS. This design decision helps negate
The Arduino Launch Control System (LCS): Page 1
the possibility of an item falling on the re button leading to an accidental launch. The use of the key switch, dual power
supplies and the requirement for both buttons being continuously pressed all brings additional layers of safety into the
system to help prevent accidental launches.
Focus on Usability
I wanted the system to be easy to use and portable. If it is not easy to take out to the ying eld, no one will use it. I tried
to keep the cost low and while it does cost more than a plain Estes launch controller, it does a lot more too!
I especially wanted this system to be something that middle or high school students could build as part of an overall
science and technology project. I wanted it to be more than just a launch controller; I wanted it to be a learning
experience. I wanted it to have the ability to spark interest in rocketry, electronics, research and more.
I also thought of this as the baseline system. Over time it could be expanded with additional sensors or other options.
The LCS presented here shouldn’t be the end, but rather the beginning.
Finally, it had to look cool. If it doesn’t look cool, well, it just has to look cool!!
Supplies:
The prototype Launch Control System (LCS) was developed in sections using a breadboard. I worked on one section at
a time, making sure the component was working as desired before moving on to the next section. This included both the
electrical connections and the coding.
The drawing shows the layout of the electrical components on the breadboard along with a schematic drawing. The next
drawing shows the pin assignments for an Arduino Nano controller. If you are using an Arduino Uno the pin assignments
will be the same.
Code Repository
Once I had a new section working properly, I would save the Arduino code as a separate le. The le name includes the
date so I have a chronological listing of the les. This allows me to go back to a previous working version if I run into
issues.
Keeping Notes
In addition to maintaining and updating the fritzing drawings and Arduino coding, I also keep a small notebook on my
projects. This allows me to write notes about what was going on during the development process. I make sure I write
about problems I encountered and how I solved them.
Even more importantly, I was able to write notes about how I might change things, add new things, or do things
di erently. Not having the experience of working in this eld, I didn’t know what I didn’t know. These notes led to
conducting research on how to do certain things, and to see what other options might be available.
As I stated earlier, I was new to electronics and the Arduino. By building this project in a step by step process, it was much
easier for me to gure out the cause of an issue when a problem inevitably occurred. By keeping notes and drawings of
my progress, I could refer back to them as needed. This was a learning process – and I was learning a lot.
As I started to put the electrical components together, I knew I would needed to write the code to make it do things and
to test that code. I also wanted the code to “make sense” so that I could come back later (days, months, maybe years later)
and understand what I wrote. This is all part of “documenting the code” as you create it.
Documenting the Code
A major reason for documenting your project is to record what the code you write is supposed to perform. This is a habit I
learned long ago when I rst started writing BASIC programs on the Commodore 64. It is important that you include
enough notes in the code that describes what the code is doing and why. If you come back a year from now and look at
the code, the notes in the code should be adequate to tell you what you were doing at the time. If you are asking
yourself “Should I add a note here?” go ahead and add it. I have never heard another programmer complain that the code
they were reviewing had too many comments. The common complaint is that the previous programmer didn’t add
enough comments.
Layout
As you start to write your code you should develop a particular style. Even if you are just writing code for yourself, you
The Arduino Launch Control System (LCS): Page 7
will nd that there are certain things that you will do for each project. Once you have a style you like, it can be useful to
create a template. A template allows you to document each project in pretty much the same way each time. Its habit
forming and that's a good habit to have.
Using Functions
As you review the code you will nd it makes extensive use of functions. In the main loop you may see a single line that
calls another function. The code jumps to that function, executes the instructions, and then returns back. The use of
functions helps with organizing your code, makes debugging the code easier, and often allows you to use these
functions in other projects - either as is or with some slight modi cations. Not having to "reinvent the wheel" for each
project saves a lot of time and allows you to focus on new coding challenges. It also prevents you from having to scroll
up and down through long code listins looking for a particular section. That can be time consuming and frustrating.
Breaking the code into logical functions with descriptive names will be bene cial in the long run.
Multiple Tabs
One of the other characteristics in the code for the LCS is that it uses multiple tabs in the Arduino IDE. Most of these tabs
consist of a single function that we discussed in the above paragraph. Multiple tabs can help you organize your
programs. It also breaks down long, complicated programs into easy to digest chunks. It also makes it easier to nd stu .
If you haven't used functions and tabs in your previous projects I would encourage you to give them a try.
Attached Files
Each of the 17 Arduino les are an individual tab within the program. Make sure all of the les are in a single folder. Name
the folder "Launch_Controller_1.0.0.ino". You can open any le and all of them will open in the Arduino IDE as a single
project, with the rst tab "Launch_Controller_1.0.0" This rst tab contains the declarations, setup and main loop.
https://www.instructables.com/FTZ/GMBX/LCDDVYQC/FTZGMBXLCDDVYQC.ino
Download
https://www.instructables.com/F8A/1MBW/LCDDVYQD/F8A1MBWLCDDVYQD.ino
Download
https://www.instructables.com/FE5/Z2X4/LCDDVYQE/FE5Z2X4LCDDVYQE.ino
Download
https://www.instructables.com/F33/TCJN/LCDDVYQF/F33TCJNLCDDVYQF.ino
Download
https://www.instructables.com/FFI/EEAL/LCDDVYQH/FFIEEALLCDDVYQH.ino
Download
https://www.instructables.com/F8W/82IF/LCDDVYQI/F8W82IFLCDDVYQI.ino
Download
https://www.instructables.com/FB1/5ZOU/LCDDVYQJ/FB15ZOULCDDVYQJ.ino
Download
https://www.instructables.com/FHG/AQN7/LCDDVYQK/FHGAQN7LCDDVYQK.ino
Download
https://www.instructables.com/F74/0SOB/LCDDVYQL/F740SOBLCDDVYQL.ino
Download
https://www.instructables.com/FAR/NT9O/LCDDVYQM/FARNT9OLCDDVYQM.ino
Download
https://www.instructables.com/F0D/J5HJ/LCDDVYQN/F0DJ5HJLCDDVYQN.ino
Download
https://www.instructables.com/FUF/NW3G/LCDDVYQO/FUFNW3GLCDDVYQO.ino
Download
https://www.instructables.com/FN1/D7I8/LCDDVYQP/FN1D7I8LCDDVYQP.ino
Download
https://www.instructables.com/FBV/613J/LCDDVYQQ/FBV613JLCDDVYQQ.ino
Download
https://www.instructables.com/F5S/GBFL/LCDDVYQR/F5SGBFLLCDDVYQR.ino
Download
https://www.instructables.com/FZJ/8EI5/LCDDVYQS/FZJ8EI5LCDDVYQS.ino
At this stage of the development process I had created a working system on a breadboard and written and tested the
code. Everything is working as expected. It is time to transition the project from the breadboard to an actual box that you
can take with you to the ying eld.
There are a number of options that you can look at. There are electrical project boxes that can be purchased through
Amazon or electrical supply stores. You can also try the local hardware store’s electrical section to see what they have
available.
Another option is to look at something like a pelican case or other hard sided weather-proof case. A 3D printed case is an
option, either one downloaded from a web site or one that you design yourself. In this case, I decided to go to my local
Walmart and pick up a 13-inch toolbox for under $7.00. The tool box is the smallest one carried at our local Walmart. It
has two small compartments on the top, with the one on the right side divided into two compartments. It has a nice
handle, with a single latch on the front.
When the box is open it has a single lift-out tray. The tray is deep enough to mount the buttons for the launch system. The
box is also small enough that it ts nicely into my hands with my thumbs in the upper corners (this is where the Fire and
Safety buttons will be mounted.
With the tray removed there is enough open space in the bottom of the box to mount all of our sensors and our Nano
The Arduino Launch Control System (LCS): Page 10
board.
The lift-out tray in the top of the box is where all of the action will take place. It will contain the re and safety buttons,
the clock, the LCD screen, buttons and more. But before we can begin to layout any of this, we have to get rid of the
handle in the center of the tray.
There are a number of ways you can do this, but we decided to use a Dremel tool with a cutting wheel. It made quick
work of getting rid of the handle, but it was also a bit rough around the edges. It also leaves a pretty big hole in the
center of the tray. However, we had a plan for that.
Our next step is to take a piece of poster board and create a template of the inside of the tray. Take your time doing this
as everything else during the design of the items in the tray will be based o of this template. The initial template of the
inner part of the tray is then transferred to a piece of 1.5mm chipboard.
Chipboard is found at Hobby Lobby, Michael’s and other craft stores. While it is thicker than card stock it is still fairly easy
to work with. After cutting out the chipboard template it was time to start laying out our pieces.
Most of the items in the tray are symmetrical, and so this helps with the layout. We divided the template into sections
using a T-square and a triangle. Holes for the buttons and lights were drawn using a circle template. When we were
happy with the layout, we cut out the openings for the main components.
When building you launch controller, you don't have to follow the same pattern I chose. You can move things around to
where they work best for you. Our only caveat is that you keep the Fire and Safety buttons separated to provide that
extra layer of safety.
After cutting out the openings on the template, I would set it in the tray to see how these items would be positioned on
the remaining plastic of the tray. It also let us see what components would need to be secured to something other than
the tray itself.
With the command panel components in place, it is time to start putting the components in the base section of the box. I
will return to the command panel after mounting the base components in place.
Mounting the Arduino
The rst item to be added to the base is the Arduino Nano controller. However, the Nano can’t be mounted directly to the
base. We need some type of mount and were able to use our 3D printer along with a pattern from Thingiverse. The
designer “emccarron” (Ed) posted a Nano bracket back in December 2014 (https://www.thingiverse.com/thing:596400).
This is just one of 28 designs he has posted.
This bracket works perfectly for us. It holds the Nano tightly and allows room for access to the header pins. It also
provides four mounting points to hold the bracket to the base. In the picture you can see the bracket on the left, and
with the Nano inserted on the right.
I need it to be easy to connect the computer to the Nano. This can be for updating the software or to send the collected
data back to the computer. I purchased a USB mini extension cable through Amazon that had a mounting bracket on one
end (https://www.amazon.com/gp/product/B06Y1PWSY7). In order to determine where to position the Nano in the base
we attached the cable and placed it in the base of the box.
A small opening was cut into the side of the box to attach the USB bracket. The cable was then looped around the inside
of the box and back towards the center of the box. We knew we wanted the Arduino to be near the center of the box, but
o set to the rear to allow better placement of the remaining components.
Distribution Panel
With the Nano and USB cable in place it was time to turn to our distribution panel. I have a number of sensors and
components that require 5 volts to operate. I also have several that use I2C for communication. I also knew that at some
point in the future I may want to expand the capabilities of the system. With this in mind I used a small prototype board
to create a distribution panel.
The panel is 14 holes wide and 20 holes long with four mounting holes. I decided to create four rows of connectors in the
long axis. To create the distribution panel I soldered four rows of header pins to the panel. Each row ran the length of the
panel. To give me room for my fat ngers, each row of headers skipped a row of holes. I start by soldering each pin in
The Arduino Launch Control System (LCS): Page 17
place. Then I soldered (bridged) pairs together, and nally the pairs are bridged together. You can see the pins in di erent
stages of soldering in the picture.
The distribution panel is mounted next to the Nano and a set of connecting wires is soldered to the panel and run to the
Nano. You don’t need to solder these wires if you don’t want to. You can use wires with female DuPont connectors on
each end to make the connections if desired.
Launch Pad Connector
The next step is to install the pad connector. This two-pin connector is installed with the female end attached to the box.
The one pin contained two wires, with one going to the continuity lamp on the panel. This plug needed to be located
close to the continuity lamp and key switch, close to the relay for allowing full power to go to the pad, and where it
wouldn’t interfere with anything else in the box. This resulted in the plug being located on the same side of the box as
the continuity lamp.
The male end carries the wires out to the launch pad. This allows us to remove and replace the cables if necessary. I also
decided to install a drawer handle on the rear to act as a holder for the wire. There wasn’t any place we could store the
disconnected wire within the box, so the next best thing was to wrap it outside the box. The picture shows the wrapped
cable and the USB cable on the rear of the box.
Installing the Remaining Components
With the major items now installed, we can install the rest of the components in the bottom of the box. This includes the
relay, the Real Time Clock (RTC), the BMP180 and the DHT11 sensors. The relay is positioned close to the pad connector
to keep all of the pad ring components in the same general area.
The weather sensors (DHT11 and BMP180) are located on the opposite side. The BMP180 did come with a single
mounting hole that we are able to utilize however the DHT11 did not. To attach the sensor to the box, I simply hot glued
the DHT11 sensor to a scrap piece of foam board. A couple mounting holes were punched into the board to provide the
sensor a nice solid mount.
The Real Time Clock (RTC) also came with mounting holes which I made use of. The RTC was located where it really didn’t
get in the way of any of the other components.
One thing that I did use with the DuPont connector was labels. You will notice that each connector has a label that
identi es the connection. The distribution panel also has a label attached to the oor of the box identifying the purpose
of each row. The connections on the Nano are also marked, although they really can’t be seen in the picture at this angle.
This type of labeling helps you make the right connections when you need to replace or repair a component a year or
two later, or when a wire comes loose and you’re not sure exactly where it goes. This completes the bottom of the box.
There were a number of connections that needed to be made on the tray. The location of these components was
determined by the functions of the device and resulted in the layout seen in the picture.
To allow this layout to work we need to use a combination of attachments. Some of the buttons are attached directly to
the tray, while others are attached to prototype boards which attach to the tray. Finally, a number of connections are
required to traverse the depth of the box and connect directly to the Nano. The result was the layout seen in the picture.
In the picture you can clearly see the three separate prototype boards that we used. This was the area that gave us the
most trouble putting together. It is also the area that has some of the weakest connections – especially those wires that
hang down and connect to the Nano.
On the center prototype board I did try to use both a common power connection and ground connection. I did use
connectors where I could, but this section resulted in the most soldering of components.
This area is de nitely one that I should have given more thought to, both for the routing of the wiring and to strengthen
the connections. I should have made sure that the tray could be removed easily. While it can be removed, it is not easy.
While the top panel is busy, I believe better care and forethought would have made this a stronger component of the
entire Launch Control System.
The top of the box has two storage compartments with a cloudy white/clear cover. The compartment on the right was
divided into two separate sections.
To make the covers match the rest of the box, they were removed and painted satin black. However, instead of painting
the outside of the covers I painted the inside. This reduces the chance of the covers getting scratched and chipped.
The compartment on the left side was selected to store the batteries used to power the system, while right side would
hold our accessories – the USB cable and the safety key.
A four-slot AA battery holder t perfectly in the left compartment with room to spare. This would power the launch pad.
There was also enough room to t in either a 9-volt battery or a LiPo battery below the AA battery holder.
A small hole was drilled in the back corner to allow the wiring from both battery connections to enter into the main box.
To provide room for the wires to travel as well as allow both holders to be extended outside the box, a set of plastic rails
was glued into the compartment under the AA battery holder. The AA battery holder sits on top, and this provides free
movement of the wires underneath. The AA battery holder is not glued to the rails.
The USB cable and the safety key both t perfectly in the right compartment. Nothing needed to be done there.
I wanted to let folks know that this was not just another plain old tool box, but rather something unique.
The Arduino Launch Control System (LCS): Page 25
To give the inside of the box a more “high tech” look instead of looking like a tool box, I attached some “protective foam”.
The foam does provide some protection to the components in the tray, but its real reason for being there is to hide the
plastic molding of the lid. It also hides the wires running from the battery compartment down into the bottom of the
box. Our “high tech foam” is just a foam air conditioner lter cut to size.
On the top compartments I used our 1/4-inch white labels to identify the “Power” compartment and the “Extras”
compartment (“Accessories” was too long to t in the space). The raised edge of the cover made aligning the letters very
easy.
On the front of the box, we used our Cricut to cut the vinyl lettering for “Launch Control System” as well as the AAEN
logo.
If you have followed along from the beginning, you should now have a working, launch control system that tells time,
provides weather information and can be hooked up to a computer to monitor the status of the system. However, this is
just the beginning. In this section I am going to look at some of the changes, updates and improvements that can be
made to the system.
Hardware Updates
There are a number of components that are utilized in the LCS. Some of the components are selected because they are
available or they are cost e ective. Other components are selected because I already had them in our local stock. Like
any project, it can always be improved. Here are just a few things that can be done di erently on the hardware side of
the LCS.
Replace the DHT11 and BMP180 Sensors with a Single BME280 Sensor
This single sensor will do the work of the two sensors in the current system. It is also rather small, so it isn’t going to take
up a lot of space. Finally, it uses the I2C communications protocol, the same as the BMP180. This frees up the pin used by
the DHT11 allowing it to be used for something else.
Replace the LCD Screen
There are a couple of improvements that can be done here. The rst item would be to use an LCD screen that also uses
the I2C communications protocol. The LCD screen in our project uses 6 pins to communicate with the Arduino. Replacing
that screen with one that uses I2C would open up all 6 of those pins to be used for other sensors or equipment.
One of the fun things about the Arduino is that we can improve a project by rewriting parts of the software without
changing any of the hardware. Additionally, the Arduino can "talk" to other computers and computer programs
programs. We see that through the use of the Serial Monitor and the Serial Plotter within the Arduino IDE. These features
can allow us to expand the role of the system and how it can be used.
Computer Dashboard
One of the initial things that could be done is to create a dashboard to be displayed on a laptop connected via the USB
cable. Instead of having the Arduino calculate results, the raw data could be sent to the laptop through the USB
The Arduino Launch Control System (LCS): Page 28
connection. The laptop could take this information and post it on a continuously update dashboard display. This would
also be more usable than the current method of scrolling through the data on the Serial Monitor.
In addition to the data, the laptop could interface with the Launch Control System. This would allow the laptop to control
the launch. For a research project that would need certain tasks performed at various times during a countdown, the
laptop could track all of this, inject ‘holds’ to countdown as needed, and save all of the data for review at a later time.
Settings Section
The LCS has several variables that need to be set before the program can run. This includes the current elevation of the
launch pad (the variable baseElevation) and the LED brightness (the variable clockDisplay.setBrightness(5)). The baud
rate for communications with the serial monitor is hard coded at 9600 baud. If you want it faster, you currently have to
change the code.
You could include the number of seconds you want to start the countdown – ten seconds, ve seconds, 30 seconds?
Having the user be able to input basic settings instead of actually changing the code can be very bene cial to the user.
Interface with a Portable Weather Station
Many Nanos/Unos/Mega256/ESP32 boards have been pressed into service to run portable weather stations (here is a
picture and a link to a posting on Instructables – https://www.instructables.com/DIY-Weather-Station-With-ESP32). Such
weather stations could be incorporated into the LCS, providing additional environmental data. The Arduino could be
programmed to abort a launch if wind speeds above a certain range are encountered.
Time Synchronization
It is quite possible that the LCS will be used as part of a research project. It also possible that the launch vehicle will have
an electronic payload on board. The ability to have a laptop synchronize the time between the electronic payload and
the LCS will be necessary to align data points on the ground versus data points in ight, and perhaps even video time
sync.
Allow Users to Bypass Non-working Sensors
The current programming of the LCS checks all of the sensors during the boot phase of the Arduino. If it discovers a
problem with a sensor, it will display an error message and the program stops.
Additional programming could be crafted to allow the user to bypass the shutdown and ignore the bad sensor. The re
button, safety button and LCD screen select button could be used to accept user inputs (the Reset button is wired
directly to the Arduino reset pin and so could not be used).
Software Updates Dependent on Hardware Updates
There are a number of other updates that can be performed as hardware is changed and updated. For example, the
switch to a 4-line LCD would require a programming update to take advantage of the additional screen space. Switching
to a BME280 would require a rewriting of the current sensor code.
The use of WiFi or other wireless transmitters could allow for remote ring of the launch pad, removing the need for a
long cable between the LCS and the pad.
Continuing on the wireless path, a payload with a wireless transmitter/receiver could be sent commands from the LCS to
turn parts of the electronic payload on or o , as needed. You could even implement near real time telemetry from rocket.
The use of a Raspberry Pi also brings with it other options. As the Pi has 40 General Purpose Input Output (GPIO) pins
that can be programmed in much the same way as the Arduino, it can allow you to write software that interacts with the
launch system, the rocket’s electronic payload, and any accessories around the launch pad (such as cameras).
There are a number of new and exciting things that you can implement in your LCS. That's a big part of the fun and
challenge of making the system yours!
If you enjoy model rocketry and projects such as the Arduino Launch Control System, then consider joining the National
Association of Rocketry (NAR). The NAR is all about having fun and learning more with and about model rockets. It is the
oldest and largest sport rocketry organization in the world. Since 1957, over 80,000 serious sport rocket modelers have
joined the NAR to take advantage of the fun and excitement of organized rocketry.
The NAR is your gateway to rocket launches, clubs, contests, and more. Members receive the bi-monthly magazine
"Sport Rocketry" and the digital NAR Member Guidebook—a 290 page how-to book on all aspects of rocketry. Members
are granted access to the “Member Resources” website which includes NAR technical reports, high-power certi cation,
and more. Finally each member of the NAR is cover by $5 million rocket ight liability insurance.
For more information, visit their web site at https://www.nar.org/