Good Communication is everything
It was a pretty busy week once again since I had to study for tests, finish lab reports and write my Logbook for this project to get signed at my university. But it was exciting to see some of my parts arrive in the mail. Apart from that, I was able to acquire another quad-copter (a slightly larger model to the one I have) from my friend at the university. However, that copter is damaged (one arm got snapped off in a crash). I’ll be looking at the main differences between the toy copter I have and the new one I got. I’ll also take a look at the basics of RF communication using the hardware specifications derived by reverse engineering the quad-copter’s existing design.
This aspect of the project is probably the most foreign to me. As a Mechatronic Engineering student, I’ve had very little exposure to projects requiring the use of radio communication. As such, I might need a bit of time to understand the underlying theories involved, but I will try to keep my progress moving by working on the hardware at the same time.
After doing some reading on how the communication between the quad-copter and the remote control works, I was able to get a gist of the flow of operations that take place when the quad-copter and remote are working in tandem. The overall low level communication works as follows after both the remote control and the quad-copter is turned on:
1) The remote control initiates a handshake by broadcasting a unique network address.
2) The quad-copter receives the broadcast and acknowledges the handshake
3) The quad-copter starts listening to data from the specified address from the remote control
4) Once the acknowledgement is complete, the remote control transmits data packets for flying instructions every 20ms.
It is possible to control multiple quad-copters with one remote control by assigning different unique network addresses to them. This will be further explored later on in the project after the control of a single quad-copter is mastered.
I must put my hand up an acknowledge I made a mistake in last week’s post, which was the I mentioned that the RF transceiver used in the quad-copter toy was a nRF24L01. Upon further investigation of the hardware, I found that it was rather a Chinese clone of it instead. Does that have a huge impact? Not sure yet. The nRF24L01 is a very widely used RF transceiver used for most Arduino based projects and the models to use on an Arduino are readily available. Initial findings also show that the registers and protocols involved (not to mention the pin configurations) seem to be compatible to the quad-copter being used. However, we will see the results soon when I try to hack the remote’s protocols.
I had previously ordered the nRF24L01 modules for Arduino last week, and they arrived a couple of days ago to my great relief (finally a delivery on time!). I haven’t started testing on them yet, and I should be able to show some results this upcoming week or so.
A look at the nRF24L01 module
The nRF24L01 is a RF transceiver which operates at 2.4GHz. It communicates with the host controller (i.e. the Arduino in this case) via a 4 bit hardware SPI interface. The range of operation for this particular type of transceiver is quite short (around 100 feet at most) but this can be improved upon by using range extending antennas. The operating voltage for the module (like most other low powered transceiver modules) is 3.6V at most, but the good thing about this particular module is the fact that it is 5V tolerant for host interface, which means I don’t necessarily need to put a resistor in between the SPI channels to lower the voltage.
The module is primarily used for wireless connectivity between Arduino boards. But as mentioned above, it is hoped that it will be compatible to be used for the quad-copter control. The module has 8 simple pins that connect to the Arduino, 6 pins dedicated for the hardware SPI interface ( CE, SCK, CSN, MOSI, MISO, IRQ) and 2 power supply pins (VCC, GND). The module also has a hardware CRC for error detection.
Finding a bigger quad-copter
A bigger quad-copter was acquired and instantly the different was visible to the naked eye. The larger frame allowed for the design to incorporate larger propellers, much larger! The propellers for the quad-copter is more than twice as large as the smaller one and that gives it a distinct advantage in carrying payload and gaining impressive altitudes. More surprisingly, it was discovered that the motor used in the quad-copter was exactly the same model and build as the smaller toy making it much more interesting. However, one of the major concerns still remain; the battery capacity is still pretty low and thus the flight time is still only about 10 minutes or so.
This discovery might be of use later in the project when the implementation on multiple copters is done. If viable, perhaps a bigger copter may be implemented. However, right now, the solution at hand is to find a suitable small toy quad-copter (of similar size as the previous one) which already has a camera mounted on it. A few decent products have been found and will be purchased soon. In the meantime, the nRF24L01 module muse be interfaced with the previous quad-copter toy. One more thing that should be noted is that it is only a preference to use the nRF24L01 to interface with the Arduino as it is a cheap and popular RF transceiver, but if it is found in the coming weeks that the control is not efficient or does not work, the solution to be implemented would be to simply take out the RF transceiver from the remote control from the toy itself and interfacing that with the Arduino.
Lots to look forward to. Hopefully some hardware results will be shared soon. I will also start sharing more on Swarm Robotics and my understanding of it so far. Till then, have a great week!