# Board - CJMCU

The CJMCU is a tiny (80mm) board running a STM32F103, which contains a 3-Axis Compass (HMC5883L) 
and an Accelerometer/Gyro (MPU6050).

This board does not have an onboard USB-Serial converter, so an external adapter is needed.

# Hardware revisions

| Revision | Notes |
| -------- | ----- |
| 1        | No boot jumper pads by LED1. Uses blue and red LEDs |
| 2        | Boot jumper pads presoldered with pins and a jumper by LED1. Uses green and red LEDs. |

Version 2 boards are supported from firmware v1.4.0 onwards, do NOT flash earlier versions to version 2 boards.

# Pins

## RX Connections

| Pin Label | Description              |
| --------- | ------------------------ |
| PA0       | RC Channel 1             |
| PA1       | RC Channel 2             |
| PA2       | RC Channel 3 / USART2 TX |
| PA3       | RC Channel 4 / USART2 RX |
| VCC       | Power (See note)         |
| GND       | Ground                   |

NOTE: The VCC RX Pin is not regulated and will supply what ever voltage is provided to the board, this will mean it'll provide 5v if a 5v serial connection is used. Be careful if you are using a voltage sensitive RX. A regulated 3.3v supply can be found on the top pin of column 1, just below the RX GND pin.

## Serial Connections

USART1 (along with power) is on the following pins.

| Pin Label | Description     |
| --------- | --------------- |
| TX1       | UART1 TX        |
| RX1       | UART2 RX        |
| GND       | Ground          |
| 3V3       | Power +3.3v     |
| 5V        | Power +5v       |

USART2 is the following pins.

| Pin Label | Description |
| --------- | ----------- |
| PA2       | USART2 TX   |
| PA3       | USART2 RX   |


## Power Connections

| Pin Label | Description             |
| --------- | ----------------------- |
| Power +   | Power - 1 Cell 3.7v Max |
| Power -   | Ground                  |

## Motor Connections

In standard QUADX configuration, the motors are mapped:

| Cleanflight | CJMCU  |
| ----------- | ------ |
| Motor 1     | Motor3 |
| Motor 2     | Motor2 |
| Motor 3     | Motor4 |
| Motor 4     | Motor1 |

It is therefore simplest to wire the motors:
 * Motor 1 -> Clockwise
 * Motor 2 -> Anti-Clockwise
 * Motor 3 -> Clockwise
 * Motor 4 -> Anti-Clockwise

If you are using the Hubsan x4/Ladybird motors, clockwise are Blue (GND) / Red (VCC) wires, anticlockwise
are Black (GND) / White (VCC).
i.e. there is one wire on each motor out of the standard RED/BLACK VCC/GND polarity colors that can be used to identify polarity.

If you have wired as above, Motor1/Motor2 on the board will be forward.

# Connecting a Serial-USB Adapter

You will need a USB -> Serial UART adapter. Connect:

| Adapter           | CJMCU                      |
| ----------------- | -------------------------- |
| Either 3.3v OR 5v | The correct 3.3v OR 5v pin |
| RX                | TX                         |
| TX                | RX                         |

When first connected this should power up the board, and will be in bootloader mode. If this does not happen, check 
the charge switch is set to POW.
After the flashing process has been completed, this will allow access via the cleanflight configurator to change 
settings or flash a new firmware.

WARNING: If the motors are connected and the board boots into the bootloader, they will start 
to spin after around 20 seconds, it is recommended not to connect the motors until the board
is flashed.

# Flashing

To flash the board:
 * Open Cleanflight Configurator
 * Choose the latest CJMCU firmware from the list.
 * Select "Load Firmware [Online]" and wait for the firmware to download.
 * Tick "No Reboot Sequence" and "Full Chip Erase"
 * Connect the USB->Serial adapter to the board
 * Select the USB-UART adapter from the top left box
 * Click "Flash Firmware"
 * You should see "Programming: SUCCESSFUL" in the log box
 * Click "Connect" -> This should open the "Initial Setup" tab and you should see sensor data from the quad shown
 * Unplug the quad and short the 2 "BOOT0" pins. Revision 1 boards require this to be soldered, revision 2 boards can connect the included jumper to the two pre-soldered pins - This prevents the board from going into bootloader mode on next
   boot, if anything goes wrong, simply disconnect these two pins and the bootloader will start, allowing you to reflash. You cannot
   overwrite the bootloader.

# Charging

The CJMCU has on it a TP4056 Lithium battery charging IC that can charge a 1S battery at 1A using a provided 5v supply attached to the 5v serial pin.

To charge an attached battery:
 * Set the power switch to OFF
 * Set the charge switch to CHG
 * Plug in a 1S battery to the battery pins
 * Plug in a 5v supply to the 5v serial pins

The charger will finish when either the battery reaches 4.2v, or the battery's voltage is greater than the charger's input voltage.

The two nearby LEDs will show the status of charging:

| Status             | Green LED | Red LED   |
|--------------------|-----------|-----------|
| Charging           | On        | Off       |
| Finished           | Off       | On        |
| 5v not connected   | Off       | Off       |
| Batt not connected | Flashing  | On        |


# Helpful Hints

 * If you are only using a 4 channel RX, in the auxiliary configuration tab, you can add a "Horizon" mode range around 1500 
 for one of the the AUX channels which will result in it being always on
 * Enabling the feature MOTOR_STOP helps with crashes so it doesn't try to keep spinning on its back
 * When the power runs low, the quad will start jumping around a bit, if the flight behaviour seems strange, check your batteries charge

