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

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:

  1. Get critical inputs such as Potentiometer, switches, and buttons first then start implementing debug stream, crossfire and xbees emulations

  2. 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