Introduction: Radio Control From Scratch
(sorry, i don't write&speak english very well, i'm french)
MODULE code, RADIO CONTROL code, and RADIO MODEL QUADCOPTER code are included as attachments.
I created an R/C Radio Control from scratch with my own programming system MODULE and my own electronics (so hardware and software, MODULE is independent system).
This programming system MODULE was written in 3 years from the pure C++ language (without any library, not arduino, not avr, not standard c++ library like stdio.h, stdlib.h, math.h, etc...).
Electronics was made&designed with prototyping, and final PCB with Kicad software on linux ubuntu, with my own electronics component library for Kicad.
The characteristics of the radio control:
- MODULABLE M32 programmable controller with the ATmega1284P microcontroller.
- 2.4Ghz radio transmitter / receiver (component nRF24L01 +, range 1km approximately).
- Bi-directional communication.
- Antenna Clover omnidirectional 3 branches.
- Communication by 32-bit frames.
- Digital display with MAX7219.
- Report Buzzer.
- Fault-tolerant system (faile-safe) sent to the model on 6 bits (0 to 63).
- 1 main menu + 1 settings menu.
- Low battery voltage setting of the model (from 0V to 100V).
- Setting of a time chronometer (from 0s to 3600s).
- No model memory (the memory is located in the models).
- Ability to copy settings from one model to another very easily.
- Up to 16 custom settings sent by the model.
- Lock the menus (no more possible settings or switch off the radio control).
- Display of the battery voltage of the radio control.
- Alarm (visual and audible) low battery level of the radio control.
- Display of the battery voltage of the model.
- Alarm (visual and audible) Low battery level of the model (if set).
- Display of a time chronometer (time of use of the model / other).
- Display trims (lock and reset to 0 possible by the selection button).
- Display custom telemetry.
- Display of custom settings.
- Menu for updating the parameters / settings of the model.
- Switching the radio control or the model on or off in any order.
- NIMH battery (+ 1.2V per cell) 8S 600mAh (+ 9.6V).
- Battery charging socket (XT30).
- Made with Aluminum, Stainless steel, wood (5mm plywood), and Ertalon.
- Dimensions: 214mm x 204mm x 117mm.
The electromechanical interface between man and machine:
- 2 analog sticks (1 gas / roll + 1 pitch / yaw) on 10 bits (0 to 1023).
- 4 trims switches (3 positions) on 2 bits each (0 to 2).
- 1 motor / other switch (2 positions) to 1 bit (0 to 1).
- 3 auxiliary switches (3 positions) on 2 bits each (0 to 2).
- 1 auxiliary rotary knob on 10 bits (0 to 1023).
- 1 rotary menu selection button on 10 bits (0 to 1023).
- 1 push-button for selecting the menu (2 positions, including 1 momentary) on 1 bit (0 to 1).
- 1 power switch held on / off (2 positions).
The concept of this radio control:
Since the early days when I have been piloting radio-controlled models in aeromodelling associations until today, I have often wondered and in view of the previous and current advances in embedded electronics : But why do commercial radio controls have model memories? The model memories allow you to retain the settings relating to a model in the memory of the radio control.
In this regard I would cite only the example of a friend in the field of modeling without naming it, which inadvertently makes a fairly regular mistake of model memory (it robs with many things). As a result it often happens to crush its settings, or to crash its model simply in the physical sense of the term!
In fact, this "gap" in model memories in modern radio controls is historically rooted in the very design of the first radio transmitters / receivers. Indeed, the first radiocommands were content merely to be transmitter of information, and the model being simply a receiver. In this situation (unidirectional), it is easy to understand that the model is always silent.
Later, the designers and various industrialists decided to add a communication of the model to the radio control, on a distinct electronic circuit and with an additional radio antenna on the model and the radio control. It is an air / ground return that has been called telemetry (related to telemetry in the early days of the space conquest until today).
The advances in miniaturization of the components now make it possible to have a transmitter and a receiver in the same chip, which uses the same radio antenna to communicate, these systems are called tranceivers.
The concept that I develop here allows to explain to you the very idea of my radio control, it has indeed no memory models, wishing to go to the end of my logic, it is the model that contains memory!
This simple idea allows many things, including the fact that it is the model that sends the custom settings to the remote control, which originally has a settings menu and settings almost empty. The radio control is then provided with customized parameters relating to the model that is currently communicating with it.
It also features the display of the battery voltage of the model in real time, and a telemetry customized according to the model. Once this notion is understood, everything is then possible. My radio control has a maximum of 16 parameters customized by the model, this is largely sufficient because by definition, they are specific to the model under consideration.
Done the endless settings and menus (often mostly unused) in commercial radio controls! In what I propose here, you have the settings only necessary for the model implemented, which greatly facilitates its use in the flying field!
I explain, for example, "copy from one model to another", or "speed of communication" and security, which may interest you!
Thanks for reading my post ;)