This Instructable will show you how take a Radio Controller Helicopter and modify the remote control hardware such that it can be operated by free, open source computer software and flown based on brainwave measurements of concentration and relaxation taken by consumer-grade EEG headsets.

The software used in this Instructable consists of two applications, Puzzlebox Synapse and Puzzlebox Brainstorms. The former connects to commercially available consumer-grade EEG headsets, such as the NeuroSky MindSet or Emotiv EPOC. The latter connects to the transmitter chip extracted from the RC Helicopter's remote control and issues flight commands and settings based on detections received from Puzzlebox Synapse. Software (including source code) is available for download from the project website:


Required Materials
- Radio Controlled Helicopter
- EEG headset such as the NeuroSky MindSet or Emotiv EPOC
- USB-to-Serial converter cable, capable of being set at an arbitrary baud rate
- An oscilloscope
- A logic analyzer
- Soldering Iron and Solder (optional)
- Connection cables and prototyping board (optional)
- Puzzlebox Synapse and Puzzlebox Brainstorms software

Note: Items in bold can be found in the Glossary and Link Index listed the final step of this Instructable.

Before beginning, unpack the helicopter, charge and install the batteries, and make sure everything is in good working order before beginning to examine or disassemble any individual components.

You should also familiarize yourself with the basic controls of your helicopter, including how trim settings operate and basic flying characteristics.

Note: The RC Helicopter used in this Instructable is a Blade mCX2 :


Step 1: Examine Remote Control Components

The first step is to disassemble and examine the components of the circuit board of the remote control. It may be useful to employ a microscope to examine the manufacturer's name and part number of the various chips in order to research their features and protocols. This can save time later when working with the oscilloscope and logic analyzer.

Note: The remote control used for this Instructable is a Blade MLP4DSM.

There are 4 channels which are used for flying:

Throttle (Up/Down in the air)
Elevator (Forward/Backward while flying)
Aileron (Left/Right while flying)
Rudder (Rotate Clockwise/Counter-clockwise while flying)

The two joysticks are connected to potentiometers which adjust the voltage of the circuit to which each are connected from the DC power source through to an Atmega88PA micro-controller.

The micro-controller measures the input voltages and converts them to digital PCM values which are sent to a transmitter chip which uses the Spektrum DSM2 protocol to communicate with the RC Helicopter.

Layman's Explanation:

(Note: this explanation is not 100% accurate but may be a helpful way to visualize and understand what is going on)

It may be helpful to think of electricity as water, flowing through pipes as opposed to wires or tracks on the circuit board. If you were to measure the pressure or level of the water flowing inside the pipe at any one point that would be its voltage, with the diameter of the pipe the maximum voltage the circuit can handle. The volume of the water passing through that point is the current of the circuit, measured in amperes (amps). If you were to picture a large storm drain dripping a trickle of water that would be a high voltage, low current circuit, whereas a firehose blasting water would be a relatively low voltage, high current circuit. It is for this reason that amps are often considered more dangerous than voltage.

The batteries act as the both the source and the destination for the water (electricity) flowing through the pipes (circuit). The potentiometers connected to the joysticks on the front of the remote control act as gates which alter the level (voltage) of water flowing through the pipes. For example, when the throttle joystick is in the lowest position, where the rotor blades are normally off, the gate is entirely closes so no water is flowing throw the pipes and the voltage is zero. When the the throttle is in the highest position the gate is completely open and the water and voltage are likewise at their highest level.

If the pipes passed through a wheel on the way to their destination and that wheel turned the helicopter rotor blades, it might make sense that more water flowing through (high voltage) would turn the wheel and therefore rotor blades faster, allowing the helicopter to fly higher.

Now of course the joysticks and circuit we are talking about is on the remote control, not the helicopter, so we need a few extra steps.

In this imaginary example, the micro-controller measures the water level in the pipe as it flows past. This number represents the voltage and therefore the joystick position. The number is converted into a digital format and passed on to the transmitter, along with the number which correspond to all of the other joystick positions. The transmitter broadcasts these numbers to the helicopter. Finally the receiver in the helicopter talks to its own micro-controller which converts the digital values into the appropriate physical settings for the rotor blades and servos.

<p>hello sir, i was hoping if you can provide the following regarding this project:</p><p>1.Current State of the Art</p><p>2.Challenges</p><p>3.Outcomes and Benefits</p><p>4.Research Objectives and Academic Objectives (if any)</p>
<p>Hi,</p><p>I looked at your source code for flying the helicopter and I would like to double check something with you. First the helicopter is turned on. Then in order to bind to the helicopter, the 'no_thrust' command packet is sent to the radio module every 22 ms for at least 4 seconds and at a baud rate of 133,000. Is that right?</p>
<p>Yes that's correct. You're sending packets with the complete settings for all motors and their power levels at a constant rate (determined by the helicopter's RC controller protocol), which is sort of a &quot;keep alive&quot; for the helicopter when sent with the &quot;no_thrust&quot; configuration. If you didn't send any packets at all the helicopter might &quot;time out&quot; after a certain period.</p>
Im thinking about getting the Puzzlebox Orbit. Can you actually fly it around with the headset or can you only make it go up?
<p>We always appreciate the support! You can cause the Orbit (or a hacked helicopter as per above) to take flight while you are focused or mentally relaxed and so on, but there's not enough information in most consumer-grade EEG headsets to be able to actually steer as well. For now you have to tilt your mobile phone or table and steer that way. However we're currently working on a guide that allows you to use an OpenBCI EEG and build your own headset to perform &quot;motor imagery&quot; for steering by using imaginary hand and feet gestures: </p><p><a href="https://puzzlebox.io/telekinesis/" rel="nofollow">https://puzzlebox.io/telekinesis/</a></p>
<p>IS it fine of I use the MindFlex headset?</p>
Yes, the MindFlex uses the same TGAM chip from NeuroSky as is in the headset we used (currently the MindWave Mobile). You'll need to perform a hardware hack to get the data stream out, but Puzzlebox Synapse will parse it on any platform.<br><br>https://github.com/PuzzleboxIO/synapse-python
Do I need to youse the blade RC Helicopter or can I use another one
<p>The hacking procedure should be applicable to any helicopter.</p>
Do I need to use a logic Analyzer and an Oscilloscope??<br>
<p>Only if you wish to perform the signal debugging yourself, either in order to learn or to apply the process to another helicopter model. Note that for a different helicopter you should only need one tool or the other, depending on whether the control signal you are hacking is analog or digital.</p>
<p>Hi, which of the Saleae logic analyzers would you recommend I buy in order to figure out the signals sent to the radio module? The basic 8 channel logic analyzer ($220): </p><p><a href="https://www.adafruit.com/products/2512" rel="nofollow">https://www.adafruit.com/products/2512</a></p><p>or the 8 channel pro version ($480): </p><p><a href="https://www.adafruit.com/products/2313" rel="nofollow">https://www.adafruit.com/products/2313</a></p><p>The specs for the more basic 8 channel analyzer are:</p><ul><li>Digital Sample Rate: 100 MS/s<li>Can view digital signals up to 25 MHz<li>1.8-5.5V logic levels (as well as RS-232 and RS-442/3)</ul><p>Whereas the pro version specs are:</p><ul><li>Digital Sample Rate: 500 MS/s<li>Can view digital signals up to 100 MHz<li>1.2-5.5V logic levels (as well as RS-232 and RS-442/3)</ul><p></p>
The basic edition will be more than adequate. The &quot;pro&quot; edition did not exist when we performed the original hack in 2010.<br> <br> <br> Cheers<br> <br> Sc<br> <br>
<p>Hi,</p><p>When you have a chance, could you post the signals sent from the transmitter chip to the radio module for the following situations?</p><p> -binding<br>-hovering<br>-flying forward</p><p>The reason I ask is that I'd like to see what those signals were for your transmitter and compare them to the signals I'm getting from my transmitter. Just to see if I'm on the right track. Thank you!</p><p>Chris</p>
Sure thing.<br> <br> You can find examples listed in our source code, here:<br> <br> <p> <a href="https://puzzlebox.io/brainstorms/development/browser/trunk/Puzzlebox/Brainstorms/Helicopter_Control.py#L141" rel="nofollow">https://puzzlebox.io/brainstorms/development/browser/trunk/Puzzlebox/Brainstorms/Helicopter_Control.py#L141</a><br> <br> <br> Cheers<br> <br> Sc<br> &nbsp;</p>
<p>That's really very great....</p><p>www.rcbazaar.com</p>
<p>Hey,<br>This is epic what you've got here. Im gonna make it for my high school exhibition and i live in the united arab emirates. Please can you suggest me the specific name of the eeg headset by neurosky.. because online there are many and i am not sure which to buy specifically. Please reply to this asap. <br>Looking forward to your co-ordination </p>
Hello MasoodA, we currently use the MindWave Mobile EEG headset by NeuroSky. I believe the bundle it with different software packages but it is the same headset inside.<br> <br> You can find more details on our website, as this project has evolved quite a bit in the years since this Instructable was posted: <a href="http://puzzlebox.io/orbit" rel="nofollow">http://puzzlebox.io/orbit</a><br> <br> Cheers
<p>Thanks a ton x)</p>
<p>thank you awesome projec</p>
<p>can you use a mind flex headset</p><p>for the neurosky mindset</p>
Yes, the Mind Flex will work though some hacking will be required.<br><br>Please refer to these websites for more detail:<br><br>http://frontiernerds.com/brain-hack<br><br>http://darrenmothersele.com/blog/2013/10/07/mindflex-raw-eeg-data/
dope yo
I should have read through it before I commented, sorry! I see that I would need a far more powerful EEG than what I'm willing to spend on in order to do that. Thx for the instructions!
<p>do you only need the eeg headset? and is it possible to program it to go forward when you think &quot;forward&quot; and turn right when you think &quot;turn right&quot;? if so could you post instructions on how to do so? sorry if I'm asking stupid questions, I don't build stuff very often.</p>
Thank you very much for your reply! <br>This is what I'm trying all the time, to change the '--command=', the blue LED turns on at the helicopter, the antenna achievement synchronize with the helicopter, but I get ERROR.<br>An example of this you can see in the following pictures that i add.<br>What should I do or Which part of the code I need to change to make the helicopter fly?<br><br>Thank you very much for your help.<br><br>Alejandro
could you use a hacked mindflex headset instead of the mindwave?
<p>Sorry for the delayed response, but yes absolutely that would work. The only thing you are missing when you used a hacked mindflex is the Raw EEG wave. You still get the Attention and Meditation algorithms.</p>
<p>Hello all there! I'm still trying but I fail to fly my helicopter (Blade mCX2 RTF) directly with Helicopter_Control.py on Windows 8</p><p> <br>This is what I get:<br> <br><br> <br>INFO: [Brainstorms:Helicopter_Control] Using PySide module<br> <br>&lt;---- [Helicopter Remote] Main thread running<br> <br>data_payload: 0000005e05ff0a4b0e17135414aa<br> <br>data_payload: 0000005e05ff0a4b0e17135414aa<br> <br>data_payload: 0000005e05ff0a4b0e17135414aa<br> <br>data_payload: 0000005e05ff0a4b0e17135414aa<br> <br>data_payload: 0000005e05ff0a4b0e17135414aa<br> <br><br> <br>Then i understood that these are the codes that perform this:<br> <br><br> <br>data_payload: 0000005e05ff0a4b0e17135414aa (neutral)<br> <br><br> <br>data_payload: 0000035405ff0a4b0e17135414aa (hover)<br> <br><br> <br>data_payload: 0000035405ff0b540e17135414aa (fly_forward)<br> <br><br> <br>data_payload: 0000005e05ff08aa0e17135414aa (fly_back)<br> <br><br> <br>Someone can help me please?<br></p><p>What should I do or Which part of the code I need to change to make the helicopter fly?<br> <br><br> <br>Thank you!<br> <br><br> <br>Alejandro</p><p>alejandrocontenti@hotmail.com</p>
<p>Answered in the Puzzlebox Brainstorms forums: https://puzzlebox.info/forums/showthread.php?tid=3060&amp;pid=3234#pid3234</p>
<p>Hey Steve,</p><p> Is there any problem if I use an USB Oscilloscope and Logic Analyzer instead of separate analogue model?</p><p>Pls reply soon. It's very urgent</p><p>Judes</p>
<p>That should work just fine. We use a Saleae Logic analyzer ourselves (which is also USB). The oscilloscope in the video is only being used to confirm that the control signal is digital instead of analog.</p>
wow... when i see things like this, I realize how limited my little brain is, LOL <br>Great build, really cool
This is awsome!!<br>But with some EEG paste and more electrodes, we can make this go<br>Forward, Backward, LAnd, Right, Left<br>I think we have to amplify the signal and decode it with a formula and program it<br><br>I think im gonna do this :)
Cool, how did you makeout with this?
How much does this cost?
Hi sir: <br> I am michael,a university student from China.Actually,i made a control for a aircraft (not a RC Helicopter like yours )by using a Mindwave after reading your artical.The software is written by myself,it is Labview and they are connencted by bluetooth.My question is since we just can get two datas:attention and meditation,how can we control our aircraft to a correct direction by Mindwave.For example,if i want the aircraft to go left,what should i do by dealing with the two datas?
Hye sir...<br><br>This technology is really new for us..even there is no implementation and development have been made in our country..<br><br>I am a student and would like to do this for my final year project..<br><br>So here,<br><br>I have questions to ask you..<br><br>1) If i don't have logic analyzer, can still proceed the project?<br><br>2) Why using serial usb converter instead of parellel?<br> <br>3) Is there any different if I use cheap helicopter in term of the microcontroller?<br> Still using the Serial-usb converter?<br><br>Hope to here the answer from you a.s.a.p or can reply to my email..<br>Thank you.
Hello there, thanks for writing.<br> <br> Before proceeding, you should be aware that you should assume every model helicopter will use a different&nbsp;microcontroller&nbsp;and/or transmitter chip and potentially an entirely different control mechanism, even when working with two models from the same manufacturer. Its even possible two helicopters which are listed as the same model will have different chips inside over time due to differences in production runs! There are no guarantees.<br> <br> That said, our helicopter used a &quot;Spektrum DSM2&quot; transmitter chip, which was printed on the side of the box. So its fairly reasonable to assume anything else with that same brand and logo will have a similar configuration. But again, no promises.<br> <br> To answer your questions more fully:<br> <br> 1) We used a logic analyzer to figure out what was going on with our circuit. The oscilloscope was a more important first step though as it helped us to learn about our circuit - specifically that there was a digital signal between the microcontroller and transmitter chip. If this wasn't the case we would not have had any use for a logic analyzer. If you are affiliated with a university they should have an oscilloscope and someone capable of educating you in its use.<br> <br> 2) Most digital devices speak to one another using some serial protocol. That's a good thing. Just as it is easier for you to read this message one word at a time (letter by letter in fact) than trying to read multiple lines all at once (ergo in parallel). Anyway you are probably thinking of the type of parallel port printers used to use but I think you'll find it is nearly impossible to locate a modern computer which still has one.<br> <br> 3) A &quot;cheap&quot; helicopter is likely to use less complex parts and likely different control mechanisms, such as IR. It would be easier to hack the joystick potentiometers for such a device.<br> <br> <br> Finally, one last word - if you do not have a solid foundation in electronics you're going to want to find and work directly in person with someone who does. Most of what I have learned personally was from working on projects such as this alongside much more experienced individuals. Trying to ask complex questions over an internet forum will quickly become an exercise in frustration - not the least of which for the person trying to answer them!<br> <br> <br> Cheers<br> <br> Steve Castellotti
Mind controlled helicopters may or may not get you laid, but I think you are a cool person for sharing knowledge and answering this person's questions in such detail.
who says mind controlled helis won't get you laid? =P
hello.sir <br> <br>I am from India <br> <br>i want to build this project. I have neurosky mind set.. <br> <br>So i want to ask few questions regarding other parts of that project .. <br> <br>Q-1. can i use another company's RC helicopter. I didn't find the same company's helicopter or if that helicopter company supplying their product in india then where should i buy? <br> <br>Q 2- can u tell me full specification of usb to serial cable that used by u and where can i buy is it available in india....? <br> <br>Q3- i didn't understands that why u by passing all the circuit and components and connceting only the transmitter chip to usb to serial cable .....can u please expalin it ... <br> <br> <br>
Hi.. one more thing to ask you.. can i use Arduino usb yo serial converter board or just build the simple board like what you have done? pls advise me.. thanks..
Here's a thought: Thought-controlled slot cars. The harder you concentrate, the faster the car goes. When you need to brake, however, you have to relax. Which is difficult, 'cause your car is hurtling towards a bend at far too high a speed. It'd be engaging, difficult and fun. I see a profit in this.
Hi.. <br> <br>I would like to ask few things.. <br> <br>1) Can we just use USB to parallel?why and why not? <br>2) Why you choose to use USB to serial?any advantages of using this kind of board? <br> <br>That's all .. <br> <br>
Hello shijau, thanks for writing.<br> <br> In this project we encountered a Spektrum DSM2 transmitter chip, which receives as its input a serial protocol from the remote's microcontroller. The chip does not, to my knowledge have a parallel interface.<br> <br> In any case we modified an existing hardware device, so our equipment had to match.<br> <br> <br> Cheers<br> <br> Steve Castellotti
Dude thats so cool.
Sir,<br> I have some doubts. So please me explain these...<br> Your project explanations are very nice...I can understand your explanations. But I can&rsquo;t able to understand your proto type board connections, because it is quite different from my text book explanations. So please explain me about &ldquo;there are four wires one is +ve, -ve, Gnd, and data sending connections in data cable and remote control and also why you are using Blade mCX2 model helicopter to control the MLP4DSM type of remote control...why not the same model helicopter... and after finishing connections, you have shown another one 55 seconds video, why you are using here same 2laptops and what are all the software installed in it&rdquo;...<br><br>

About This Instructable




More by puzzlebox:Puzzlebox Orbit: Using an Arduino to Control an Infrared Helicopter Brain-Controlled Wheelchair Robot Brain-Controlled RC Helicopter 
Add instructable to: