Comms Emulator Board - Requirements
Firmware requires a board that can act as a stand-in for an RC comms link so that it can be easily used to test motors, peripherals, etc. when there is radio silence, or when RC comms are being used by someone else. Here are some of the requirements regarding peripherals, etc. that can be used by electrical for board design as well as firmware. This board will be the first step towards having a full HIL → how?
Requirements
Requirements | Owner | Reason |
---|---|---|
Be able to emulate controller PPM. | Anthony | Needs to be able to emulate a PPM signal when acting as a emulator for the RC Link |
Be able to send GS arm/disarm instructions. (in a data telemetry format) | @Anthony Luo @Mika Shaw (please add relevant data telemetry members) | Needs to be able to act as an emulator for telemetry information. |
Be able to emulate hardware arm button | @Anthony Luo | Needs to be able to arm the drone when hardware button is not there. |
Be able to receive incoming telemetry data & display aircraft state & information (orientation, calibrations, etc). from airside & groundside (drone & groundstation) | @Anthony Luo @Mika Shaw | Need quick way to check aircraft status when doing diagnostics? |
Be able to (optionally) passthrough telemetry data to the GSPC (as if it were an rfd900). |
| GS Needs to be able to see how the drone is doing in radio silence for systems check. → can be done over USB |
Have analog components that are able to mimick the inputs from an RC Controller (TX16s Mk2) | @Anthony Luo @Christopher Chung | Want a simple, easy way to mock controller inputs from the interface board to the drone. |
Supports individual outputs for each system. (ppm/telem/GS passthrough) |
|
|
Runs off nucleo power (micro B ) |
| (does not take from ZP3 power) |
Power LED |
| Tells us board is powered |
Telemetry LED |
| Tells us board is receiving something? |
PPM Send LED |
| Tells us board is sending something. |
Is a nucleo shield |
| Nucleo Shield for…which nucleo? (Probably the F401?). Probably on the bottom of the nucleo. |
has attachment points for standoffs to the nucleo. |
|
|
Outputs labelled & standardized |
| Do we want locking & normal headers → one on each end. |
Emulator board size ~ same size as nucleo |
|
|
|
|
|
Implementation
Outputs:
PPM pin (timer)
RSSI pin (pwm → timer)
Telemetry (uart)
gs passthrough (uart)
Power LED (gpio)
Telem LED (gpio)
PPM Activity LED (gpio)
Inputs
4x Potentiometer
4 channels on our controller that are usually controlled
Could look into getting actual joysticks on the board if you were extra
2x switches
arm/disarm switch
+ 1 extra switch.
2x Buttons
General buttons that may be on controller
Takes regular USB Power
can use regular USB battery bank
Has 5V / GND pin
so that we can power it off of a PDB board + battery or ST-Link (in case we pair it with VTX ground station)
Implementation (Firmware)
Rough notes:
Plan:
Get critical inputs such as Potentiometer, switches, and buttons first then start implementing debug stream, crossfire and xbees emulations
Start on Nucleo board first for proof of concept
UART: Use HAL UART
PM GPIO: Using interrupts and timers to emulate ppm output
PWM: HAL timer
LED: HAL GPIO
Board heartbeat
USB Connection:
Leave that to Aadi
Button: Interrupts
Switches: Interrupts
Potentiometer: ADC with polling