Skip to the content
2 layers92.3 × 50.2 mmMotoMate, the printed circuit board in 3D

An STM32-based GPS receiver handheld board with a small display and microSD card slot: eventually, I'd like to make some simple mapping / logging firmware and a case for mounting it to motorcycle handlebars.

Size
92.3 × 50.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
63
Nets
82
Pads
302
Tracks, vias
799, 118
Pours
5
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
25 Oct 2019
Updated
16 Dec 2019

Overview

MotoMate is an open-source printed circuit board by WRansohoff, from the WRansohoff/MotoMate repository on GitHub, published under the MIT licence. It is a 2-layer board of 92.3 × 50.2 mm with 63 parts on 82 nets, routed with 799 tracks and 118 vias.

It is built around the LDFM33PVR and MCP73831. Its parts include 18 capacitors, 11 connectors, 8 resistors, 6 diodes and 6 switches. It belongs with the radio and wireless boards and the STM32 boards of this library.

Main components

2

README

README.md

"MotoMate" Handheld GPS Receiver

This is a small board designed to act as a handheld GPS receiver, and eventually (I hope) a handlebar-mounted GPS mapper / tracker for offroad motorcycling.

Details

The microcontroller core is an STM32L496Rx chip - I recommend the STM32L496RGT3, because it costs less than $1 to get an extra 512KB of Flash (although the chip itself is more like $10). The 320KB of built-in RAM is enough to store a 150KB framebuffer for the 320x240 16bpp ILI9341 display, but it doesn't leave much room for storage-intensive algorithms such as image processing. Still, there's no external storage to worry about besides the microSD card.

The board is wired to use hardware periphererals for driving the SD/MMC interface, USB OTG, SPI for the display, and UART for talking to a "GY-NEO6MV2" GPS module. I've noticed that some listings for these u-blox Neo-6M-based GPS modules have red-colored boards with pinouts that won't work with this design; look for blue-colored ones and double-check the pinouts against the schematic. I might update the design to use the module itself instead of a cheap breakout board in the future, but for now, sorry for the inconvenience.

There's also a single-channel audio amplifier connected to one of the chip's DACs with a mute switch, and some ADCs are used to monitor a photodiode and the board's battery voltage. And there are pads exposed for an extra UART and I2C connection, and seven button inputs split across two tactile buttons and a 'navigation switch'. The buttons are assigned to pins so that there shouldn't be any conflicts with EXTI lines when setting up interrupts to listen for presses.

I'll write up more comprehensive information (and upload some proper gerber files) once I've had a chance to test this revision and upload some basic test firmwares to confirm the board's various functions.

Schematic and Board Renders

Schematic

Board Top

Board Bottom

Previous Revision

I've assembled an earlier version of this design and confirmed that most parts of the design work, but I haven't written a comprehensive "GPS mapper" firmware yet. The first version has too much space between the TFT ribbon connector and the edge of the board to fold the display over the USB connector and mute switch, so it was awkward to handle. I hope that this version will fit together better, but I haven't received it yet for testing.

V1 Top

V1 Bottom

Sorry that I didn't get a better picture of the lit-up TFT; it's hard to take pictures of backlit displays, and it's not that important anyways. I also edited one of the images to remove the actual GPS coordinates, because I didn't feel like driving out to the middle of the woods to take a picture.

Anyways, so far I've tested (or not) the following parts:

  • Battery monitoring: the 'charging' and 'done' LEDs seem to reflect the charge status, and the 12-bit ADC reads close to 4.2V on a full charge using the formula: VBatt = ( ADC * 2 / 4095 ) * 3.3. Note that for an accurate reading, you need to set one of the highest sampling times (250-650 cycles) due to the low amount of current flowing through the voltage divider.

  • TFT display: The backlight can be adjusted with a PWM signal, and the SPI peripheral can be used with DMA to draw a framebuffer to the display. This makes it much easier to test other parts of the board :)

  • GPS module: Appears to work, although I haven't tried configuring it with anything other than the default settings. After placing the antenna with a clear view of the sky and letting it acquire a few satellites, it reports latitude and longitude readings that appear to be accurate to within maybe 5 meters or so.

  • microSD card: Not tested.

  • Buttons: Tested using falling-edge interrupts with the pins configured as inputs with pull-up resistors enabled. These low-profile buttons are really designed to be used with a case that has plastic or rubber 'pegs' connected to larger buttons, though.

  • Auxiliary UARTs and I2C: Not tested.

  • 'Heartbeat' LED: Works.

  • Photodiode: Not tested; in the first revision of the board, I put the photodiode underneath where the display's ribbon connector folded over, so it was always in darkness. D'oh!

  • Speaker: Works well enough to play a sine wave accurately enough for a tuner to read the desired note. I haven't tried playing music or speech though, and it probably wouldn't do that very well. This is only a 12-bit DAC with poor filtering, after all. The speaker is mostly intended for beeps, buzzes, and chirps.

See firmware/ for the source code used to run those tests, and fw_lib/ for some shared helper functions.

Parts

63
QtyValueFootprintReferences
4100nCapacitor_SMD:C_0402_1005MetricC3, C4, C5, C6
44u7Capacitor_SMD:C_0603_1608MetricC1, C2, C19, C20
2100KResistor_SMD:R_0603_1608MetricR2, R3
210nCapacitor_SMD:C_0402_1005MetricC7, C13
220pCapacitor_SMD:C_0402_1005MetricC9, C10
2220nCapacitor_SMD:C_0603_1608MetricC16, C17
25pCapacitor_SMD:C_0402_1005MetricC11, C12
110KResistor_SMD:R_0603_1608MetricR4
110uCapacitor_SMD:C_0805_2012MetricC18
11uCapacitor_SMD:C_0603_1608MetricC8
132KHzCrystal:Crystal_SMD_EuroQuartz_EQ161-2Pin_3.2x1.5mmY2
18MHzCrystal:Crystal_SMD_Abracon_ABM3-2Pin_5.0x3.2mmY1
1AUX_I2CMotoMate:Conn_01x04_H_SMDJ6
1AUX_UARTMotoMate:Conn_01x04_H_SMDJ5
1BackMotoMate:Snap_Tac_Switch_SMTSW4
1BatteryConnector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_HorizontalJ7
1Bead+Resistor_SMD:R_0603_1608MetricFB2
1Bead-Resistor_SMD:R_0603_1608MetricFB3
1ChargingLED_SMD:LED_0603_1608MetricD5
1Cin1Resistor_SMD:R_Array_Convex_4x0603CN1
1Cin2Resistor_SMD:R_Array_Convex_4x0603CN2
1DoneLED_SMD:LED_0603_1608MetricD6
1FerriteResistor_SMD:R_0603_1608MetricFB1
1GPSConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ4
1HeartbeatLED_SMD:LED_0603_1608MetricD3
1ILI9341MotoMate:ILI9341_18P_0.8mmJ8
1K-WireMotoMate:Conn_01x03_H_SMDJ9
1LDFM33MotoMate:ST_LDFM_2x2DFNU2
1LOGOMotoMate:oshw_logoG***
1MCP73831Package_TO_SOT_SMD:SOT-23-5U4
1ModeMotoMate:Snap_Tac_Switch_SMTSW3
1MuteMotoMate:mini_slide_switchSW2
1NavMotoMate:NavSwitch_SMTSW6
1On/OffMotoMate:mini_slide_switchSW5
1PAM8302Package_SO:MSOP-8_3x3mm_P0.65mmU3
1PhotodiodeLED_SMD:LED_0603_1608MetricD2
1ProgConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_HorizontalJ1
1ProgResistor_SMD:R_0603_1608MetricR5
1ProtectDiode_SMD:D_SOD-123FD4
1RChrgResistor_SMD:R_0603_1608MetricR6
1RDoneResistor_SMD:R_0603_1608MetricR7
1RLEDResistor_SMD:R_0603_1608MetricR8
1RTFTResistor_SMD:R_0603_1608MetricR1
1ResetMotoMate:Snap_Tac_Switch_SMTSW1
1RinResistor_SMD:R_Array_Convex_8x0602RN1
1STM32L496RxMotoMate:LQFP-64_10x10mm_P0.5mmU1
1SpeakerConnector_PinHeader_2.00mm:PinHeader_1x02_P2.00mm_Vertical_SMD_Pin1LeftLS1
1TFT_PWMPackage_TO_SOT_SMD:SOT-23Q1
1TVSResistor_SMD:R_0603_1608MetricRV1
1TVSPackage_TO_SOT_SMD:SOT-143D1
1microSDConnector_Card:microSD_HC_Hirose_DM3D-SFJ3
1uUSBMotoMate:MyMicroUSBJ2

Similar boards

  • 2 layers35 × 38.4 mmHandgelenk, the printed circuit board in 3D

    Handgelenk

    Jeija/esp8266-smartwatch

    ESP8266 DIY WiFi Smartwatch with MPU-9250, RTC, OLED, FT232, ...

    61 parts233
  • 2 layers109 × 71 mmGamma split, the printed circuit board in 3D

    Gamma split

    ahtn/keyboard_pcb

    156 parts96
  • 2 layers35 × 47 mmXling, the printed circuit board in 3D

    Xling

    mcusim/Xling

    Xling, a pocket demon

    77 parts67
  • 2 layers22.9 × 50.8 mmPenguino STM32WL LoRa E5, the printed circuit board in 3D

    Penguino STM32WL LoRa E5

    azerimaker/Penguino-STM32WL-LoRa-E5

    This repo contains all the necessary design and fabrication files for the Seeed Studio LoRa-E5 based Penguino Feather breakout board.

    58 parts42
  • 2 layers132 × 90.7 mmDao choc ble right, the printed circuit board in 3D

    Dao choc ble right

    Mposiblee/Zireael

    The keyboard is based on Dao Chok BLE. The locations of components on the board have been changed, space for the battery has been added, and the thumb cluster has also been changed.

    79 parts42CERN-OHL-P-2.0
  • 2 layers29.2 × 38.1 mmHD150-mod, the printed circuit board in 3D

    HD150-mod

    OpenEPaperLink/Hardware

    Hardware files for the OpenEpaperLink project

    30 parts42
  • 2 layers70 × 151 mmDm50, the printed circuit board in 3D

    Dm50

    xavierbasc/dm50

    DM50 is a cheap, powerful, easy to build, open source hardware, and high precision calculator.

    131 parts38GPL-3.0

Questions

How big is the MotoMate PCB?

It measures 92.3 × 50.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MotoMate use?

63 parts, built around the LDFM33PVR and MCP73831. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the MotoMate KiCad files?

From the WRansohoff/MotoMate repository on GitHub, at the commit this page was made from: the board is MotoMate.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the MotoMate design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).