RaceChronoDiyBleDevice/README.md

92 lines
3.3 KiB
Markdown
Raw Normal View History

2020-08-21 10:07:24 -07:00
# RaceChronoDiyBleDevice
2020-08-21 10:20:07 -07:00
DIY BLE device for RaceChrono, currently supports reading data from the CAN bus.
There are some optimizations in the code that are specific to the FT86 platform
cars (Subaru BRZ, Toyota 86, Scion FR-S), but it should be straightforward to
tweak the code for other cars.
## Supported Hardware
* Adafruit Feather nRF52832
* Adafruit ItsyBitsy nRF52840 Express
* 16 MHz MCP2515 breakout boards (probably MCP25625 as well)
## Prerequisites
You will need to install two libraries for Arduino:
```sh
cd ~/Documents/Arduino/libraries/ # ~/Arduino/libraries on Mac OS
git clone https://github.com/timurrrr/arduino-CAN CAN
git clone https://github.com/timurrrr/arduino-RaceChrono arduino-RaceChrono
```
It's important that you don't use the arduino-CAN library available in the
Arduino IDE built-in library manager, as it has multiple bugs, and many
operations are implemented in an ineffective way. My pull requests to address
those have not been reviewed at the time of writing.
2020-08-21 10:36:39 -07:00
## Assembling
Recommended parts list:
* [Adafruit ItsyBitsy nRF52840 Express](https://www.adafruit.com/product/4481)
* [MCP2515 boards](https://www.amazon.com/gp/product/B07J9KZ4L4/) (2+ pcs recommended so you can test without a car)
* [16 MHz quarz oscillators](https://www.amazon.com/gp/product/B00NQ82OM0/) (in case your MCPs have 8 MHz quartzes)
* [Jumper](https://www.sparkfun.com/products/9044) (in case your MCP comes without it, like mine)
* [Mini Breadboard](https://www.sparkfun.com/products/12047)
* [Jumper wires](https://www.sparkfun.com/products/124)
* [JST SM connectors](https://www.amazon.com/gp/product/B07QG2TN1X/)
* Crimping tool for JST connectors
* ~22 AWG wires
First, solder the male headers to your microcontroller board.
You'll need G, USB, SCK, MO, MI and 7.
It's also recommended to solder 9, R and 3V for future improvements and
mechanical stability on the breadboard.
Soldering male headers is a lot easier if you first insert them into a
breadboard.
Put the jumpers on the breadboard this way to allow for neat hidden
connections:
![Breadboard with jumpers](images/board_with_jumpers.jpg)
Then, put the microcontroller board on the breadboard:
![Adafruit ItsyBitsy nRF52840 Express on the breadboard](images/nRF_on_board.jpg)
Un-solder the header from the MCP board and solder a new header on the other
side of the board to make it more breadboard-friendly.
Replace the 8 MHz quartzes on your MCPs with 16 MHz quartzes, if needed.
Install the jumper that connects the 120 Ohm terminal resistor.
Optionally, un-solder the screw terminal and solder a twisted pair of wires to
the board, and finish with a nice JST SM connector:
![MCP2515 board with mods](images/mcp_mods_closeup.jpg)
Finally, put the MCP on the breadboard.
Check connections:
MCP pin | Microcontroller pin
------- | ------------------
VCC | USB
GND | G
CS | 7
SO | MI
SI | MO
SCK | SCK
INT | Currently unused, may use 9 in the future
Optionally, put everything into a nice enclosure.
2020-08-21 10:36:39 -07:00
## Testing
2020-08-27 22:29:25 -07:00
You don't need to always be in the car to test changes.
Instead, you can build another device (possibly using a cheaper board, such as
Arduino Uno), and use the
[FakeSubaruBRZ example](https://github.com/timurrrr/arduino-CAN/tree/master/examples/FakeSubaruBRZ)
from my fork of the `arduino-CAN` library, and connect the two boards into a
small CAN network.