Repository navigation
Releases
BX Tacho 2.4.3
BX Tacho firmware 2.4.3, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's changed
-
Lower default load levels: a board without a load calibration now takes 100 / 200 mV (empty / loaded) on a black launcher, and 490 / 690 mV on a white one (were 100 / 300 and 490 / 750 mV). It then switches to the white launcher's settings above 670 mV instead of 724 mV, so a board whose load sensor reads a little low still recognises a white launcher, and back to black below 140 mV instead of 180 mV.
The defaults only apply to a board with no saved settings: a newly flashed board (merged image), or after
cfg reset. A board that already has settings saved keeps the levels it has. To give such a board the new levels without a calibration, set them directly (from 2.4.2):cal load black loaded 200 cal load white loaded 690A load calibration (
cal load black|white empty|loaded) on each launcher is still the best fit for each board.
From 2.4.1 or earlier, this also brings cal load black|white empty|loaded <mV> (2.4.2: set a level directly), and from 2.4.0 or earlier the fixes of 2.4.1: the load calibration no longer drifts into the saved settings, and cal vbat verify passes within ±15 mV.
Updating
From 2.0.0 or later: your settings and calibration are kept.
From 1.x: calibrate again as described in the 2.0.0 release (the layout changed in 2.0.0).
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until a bey has been loaded (or the pin pushed up) for 3 seconds. Until then the empty white launcher shows LOADED.
Boards with R7 = 100k: FULL never shows once the battery is charged (see the 2.4.0 release); replacing R7 with 4.7k fixes it.
Files
| File | For |
|---|---|
bx-tacho-v2.4.3.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v2.4.3-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibrations are kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.4.3.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.4.3.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.4.3-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 2.4.2
BX Tacho firmware 2.4.2, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's new
-
Set the load calibration levels directly:
cal load black|white empty|loaded <mV>sets a launcher's empty or loaded level to the value given, instead of measuring it. For example, to put back levels recorded before (statusshows the saved ones):cal load black empty 120 cal load black loaded 860A level set this way is checked and saved like a measured one: the calibration is valid once both levels are in and at least 30 mV apart. Without a value,
cal loadmeasures as before.
From 2.4.0 or earlier, this also brings the fixes of 2.4.1: the load calibration no longer drifts into the saved settings (status shows load empty N mV (tracking M mV)), and cal vbat verify passes within ±15 mV.
Updating
From 2.0.0 or later: your settings and calibration are kept.
From 1.x: calibrate again as described in the 2.0.0 release (the layout changed in 2.0.0).
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until a bey has been loaded (or the pin pushed up) for 3 seconds. Until then the empty white launcher shows LOADED.
Boards with R7 = 100k: FULL never shows once the battery is charged (see the 2.4.0 release); replacing R7 with 4.7k fixes it.
Files
| File | For |
|---|---|
bx-tacho-v2.4.2.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v2.4.2-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibrations are kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.4.2.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.4.2.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.4.2-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 2.4.1
BX Tacho firmware 2.4.1, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's fixed
-
The load calibration no longer drifts into the saved settings. While a launcher sits empty, BX Tacho slowly re-learns its empty level, so that slow drift doesn't cause false loads. Up to 2.4.0 it did this in the saved settings themselves. So whenever any setting was saved (
rpm thr,cal loadof the other launcher, acfgcommand), the re-learned level was stored as that launcher's calibration, andstatusshowed it as the calibration, different on every read. The re-learned level is now kept apart, in memory only: the calibration stays as you measured it, andstatusshows both:cal black : load empty 120 mV (tracking 134 mV), loaded 860 mV; rpm threshold 1400 mVIf the load detection on a board seemed off after changing settings, run
cal load black empty(andwhite) once more after updating. -
VBAT calibration check within ±15 mV.
cal vbat verifynow passes within 15 mV instead of 10: the supply used as the reference in production is itself off by up to about 10 mV.
Updating
From 2.0.0 or later: your settings and calibration are kept.
From 1.x: calibrate again as described in the 2.0.0 release (the layout changed in 2.0.0).
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until a bey has been loaded (or the pin pushed up) for 3 seconds. Until then the empty white launcher shows LOADED.
Boards with R7 = 100k: FULL never shows once the battery is charged (see the 2.4.0 release); replacing R7 with 4.7k fixes it.
Files
| File | For |
|---|---|
bx-tacho-v2.4.1.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v2.4.1-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibrations are kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.4.1.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.4.1.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.4.1-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 2.4.0
BX Tacho firmware 2.4.0, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's new
-
Battery percentage calibration (
cal batt): the battery percentage used to come from a rough LiPo curve. BX Tacho can now measure the real curve of the battery fitted, by discharging it once at a steady load:- Do the VBAT calibration first (
cal vbat), and charge the battery untilstatusshows the power as USB, full. cal batt start, then unplug USB: the run starts. BX Tacho turns Bluetooth off, keeps the display on at constant brightness, stays awake at full CPU clock and keeps the sensors' LEDs off, so it draws a steady current, and logs the battery voltage every 10 s.- When the battery reaches the deep-sleep cutoff (3.3 V), it saves the curve (100 % to 0 % in 10 % steps), shows CURVE SAVED and goes to deep sleep. Plug in USB to wake it and charge.
This takes as long as the battery lasts (about 8 hours for 200 mAh). 0 % then means BX Tacho is about to go to sleep.
cal batt showprints the curve,cal batt cleargoes back to the rough one,statusshows which is in use. The curve is kept bycfg resetand by flashing the merged image. Plugging in USB during the run cancels it. - Do the VBAT calibration first (
-
Bluetooth icon: when Bluetooth is stopped (before deep sleep, during the battery calibration) the display and
statusnow show it as off.
Hardware note: FULL on boards with R7 = 100k
Once charged, the charger chip pulls its status pin down weakly instead of letting it go. With R7 = 100k the pin then still reads as charging, so FULL never shows and the battery reading stays "not trusted" on USB. Replacing R7 with 4.7k (0603) fixes it; a 10k soldered across the existing R7 works too. No firmware change is needed either way.
Updating
From 2.0.0 or later: your settings and calibration are kept.
From 1.x: calibrate again as described in the 2.0.0 release (the layout changed in 2.0.0).
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until a bey has been loaded (or the pin pushed up) for 3 seconds. Until then the empty white launcher shows LOADED.
Files
| File | For |
|---|---|
bx-tacho-v2.4.0.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v2.4.0-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibrations are kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.4.0.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.4.0.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.4.0-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 2.3.0
BX Tacho firmware 2.3.0, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's new
- No false switch to the white launcher: pushing a bey in too far on a black launcher lifts the pin high for a moment, which read like a loaded white launcher and switched BX Tacho to the white settings. Switching to white now needs readings above the white launcher's loaded threshold for 3 seconds without a break; a pushed pin drops back long before that. On a white launcher, BX Tacho now switches about 3 seconds after the first bey is loaded, and the launch arms normally then. Switching back to black is unchanged.
cfg autowhite on|off: turns the automatic white launcher detection off (on by default). Off, BX Tacho always uses the black launcher's settings, for anyone who only uses dark launchers. Saved at once and kept bycfg reset;statusnotes when it's off.- New defaults (used after
cfg resetor on a new board): RPM threshold 80 mV on black and 90 mV on white, and a white launcher loaded level of 750 mV. Saved calibrations aren't changed. - Web app: both consoles (USB and Bluetooth) stay scrolled to their latest output.
Updating
From 2.0.0 or later: your settings and calibration are kept.
From 1.x: calibrate again as described in the 2.0.0 release (the layout changed in 2.0.0).
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until a bey has been loaded (or the pin pushed up) for 3 seconds. Until then the empty white launcher shows LOADED.
Files
| File | For |
|---|---|
bx-tacho-v2.3.0.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v2.3.0-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibration is kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.3.0.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.3.0.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.3.0-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 2.2.0
BX Tacho firmware 2.2.0, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's new
- Steadier VBAT calibration: while
cal vbat pointorcal vbat verifymeasures (about 0.5 s), the display is frozen: no redraws and no traffic to it, so the board's current, and with it the voltage being measured, stays steady. Calibration mode already keeps the RPM channel and the load LED off and the chip out of light sleep. Bluetooth keeps running, as it carries the console; calibrating over a data-only USB connection withble offremoves its radio bursts too.
Everything else is as in 2.1.0.
Updating
From 2.0.0 or 2.1.0: your settings and calibration are kept.
From 1.x: calibrate again as described in the 2.0.0 release (the layout changed in 2.0.0).
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until the first top is loaded (or the pin pushed up). Until then the empty white launcher shows LOADED.
Files
| File | For |
|---|---|
bx-tacho-v2.2.0.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v2.2.0-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibration is kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.2.0.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.2.0.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.2.0-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 2.1.0
BX Tacho firmware 2.1.0, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's new
- Cleaner launch curves: while a top is loaded, the load sensor's LED is flashed to watch for the release, and some of its light reaches the RPM sensor. The flash now starts exactly at an RPM edge, when the disc shows white, and is off again within 90 % of the white part, so its light can't add or shift an edge any more. That removes the spikes it caused on black launchers, and the release is now seen up to about 30,000 rpm (about 20,000 before).
statuscounts any flash that had to be cut short. - RPM threshold scan:
rpm scan … applynow sets the threshold 60 % of the way from the black to the white level (it was the midpoint), and keeps the load LED off while it samples, so the LED's light can't raise the white level it finds. - Calibration commands always name the launcher:
cal load black|white …,rpm thr black|white <mV>andrpm scan black|white … apply. Right after switching on, BX Tacho is on the black settings until a white launcher shows itself, so leaving the name out could save a white launcher's value as the black one's.rpm thralone still shows both thresholds. load led on|off|auto(diag or meter mode):offnow keeps the LED dark (before, it only releasedon, and the diag readings kept flashing it);autogoes back to normal. While it's held,loadand the diag screen show the live raw LOAD_SENSE voltage instead of freezing.
Updating
From 2.0.0: your settings and calibration are kept. Running the RPM scan again on each launcher is worth it, for the new 60 % threshold:
diag on
rpm scan black 5 apply (on a black launcher, turn it slowly)
rpm scan white 5 apply (on a white launcher)
diag off
From 1.x: calibrate again as described in the 2.0.0 release (the layout changed in 2.0.0).
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until the first top is loaded (or the pin pushed up). Until then the empty white launcher shows LOADED.
Files
| File | For |
|---|---|
bx-tacho-v2.1.0.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v2.1.0-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibration is kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.1.0.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.1.0.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.1.0-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 2.0.0
BX Tacho firmware 2.0.0, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's new
- Black and white launchers: a launcher with a white housing reflects far more of the load sensor's light, so one calibration couldn't fit both. Each kind now keeps its own load levels and RPM threshold, and BX Tacho switches between them by itself: it starts on the black launcher's settings, a reading only a loaded white launcher gives switches to white, one only a black launcher gives switches back.
status, the diag screen andeventsshow the launcher in use. - Steadier load detection: while a top is loaded, the load sensor is sampled with short LED flashes. They were too short for the little light a black launcher reflects and read low, which could drop a loaded top. They now read the same level as a normal reading (
load flashshows both). - No more spikes on the live RPM: chatter on the slow edges at the end of a spin-down could show for a moment as about 20,000 rpm. The filter now catches it for the whole launch.
- Console:
cal load,rpm thrandrpm scantakeblackorwhite(without one, the launcher in use);load flash [n] [settle_us]compares the flash sample with a full reading. - File names carry the version (
bx-tacho-v2.0.0.bin), and the web app can install the latest release straight from GitHub (Use the latest release, USB or Bluetooth tab), checking its SHA-256.
Updating from 1.x: calibrate again
The calibration layout changed, so 2.0.0 starts the load and RPM calibration and cfg edges from defaults. The display, Bluetooth and light-sleep settings, the shot history and the battery calibration are kept. On each kind of launcher you use:
cal load black empty (no top)
cal load black loaded (top attached)
diag on
rpm scan black 5 apply (turn the launcher slowly)
diag off
and the same with white on a white launcher. Set cfg edges <n> again if yours isn't the default.
Known limitation: after switching on, or moving BX Tacho from a black launcher to a white one, it stays on the black settings until the first top is loaded (or the pin pushed up). Until then the empty white launcher shows LOADED, and inserting the ripcord can start a launch that isn't one.
Files
| File | For |
|---|---|
bx-tacho-v2.0.0.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. The shot history and battery calibration are kept (see above for the rest). |
bx-tacho-v2.0.0-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibration is kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v2.0.0.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v2.0.0.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v2.0.0-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho 1.2.0
BX Tacho firmware 1.2.0, for the Beyblade X launcher RPM meter. Web app: https://dazchi.github.io/bx-tacho/
What's new
- Steadier Battle Pass connections: every connect, disconnect and subscription starts a fresh session, so data meant for one connection never reaches the next (a dump cut short by a disconnect no longer continues after a reconnect). If Bluetooth can't take a packet for 1.5 s, BX Tacho drops the link so the app starts over cleanly.
- Battle Pass debug log: connects, disconnects and subscriptions, every write from an app, each status packet with its reason, and each history/curve dump appear in the USB log (tag
bbp), handy when an app doesn't behave. - Optional extensions: the Battle Pass emulation can take an extension built in separately (see "Optional extension" in the firmware README). This release doesn't include one, and nothing changes without it;
cfg extsays so. - Boot screen: shows just the version (
v1.2.0), so longer version strings fit.
Third-party Battle Pass apps see exactly what 1.1.0 sent.
Files
| File | For |
|---|---|
bx-tacho-v1.2.0.bin |
Updates. In the web app: USB tab (computer, or Chrome on Android with a USB-C cable) or Bluetooth tab. Settings, shot history and calibration are kept. |
bx-tacho-v1.2.0-merged.bin |
A blank board: everything from address 0x0. Overwrites settings and shot history; the battery calibration is kept. |
ota_data_initial.bin |
A blank otadata (8 KB of 0xFF), only for flashing bx-tacho-v1.2.0.bin by hand (below). |
SHA256SUMS.txt |
Checksums of all three. |
Release build, optimised for speed (-O2), ESP-IDF v6.1.
Updating from a firmware before 0.8 (single app slot): update over USB once. That writes the two-slot partition table that Bluetooth updates need; settings, shot history and calibration stay. After that, Bluetooth updates work too.
Flashing by hand (esptool):
python -m esptool --chip esp32c3 write-flash 0x10000 bx-tacho-v1.2.0.bin 0x10e000 ota_data_initial.bin
python -m esptool --chip esp32c3 write-flash 0x0 bx-tacho-v1.2.0-merged.bin
The first form writes the app and a blank otadata, so the board boots this app rather than one in the other slot; the web app does that for you. The second is for a blank board.
Licensed under the GPL, version 3 or later (see NOTICE for the additional permission covering extensions).
BX Tacho hardware v1.0 (JLCPCB production files)
JLCPCB production files for the BX Tacho board (v1.0): 4 layers, 56 × 28 mm, ESP32-C3-WROOM-02. KiCad sources are in hardware/ at this tag.
| File | What it is |
|---|---|
GERBER-bx-tacho.zip |
Gerbers and drill files for PCB fabrication |
BOM-bx-tacho.csv |
Bill of materials with LCSC part numbers, for JLCPCB assembly |
CPL-bx-tacho.csv |
Component placement list (positions and rotations), for JLCPCB assembly |
Exported with the JLCPCB tools plugin (kicad-jlcpcb-tools) for KiCad.
Warning
Check the placement preview before you pay. The plugin's default rule for SOT-23 parts (−90°) placed LDO1, U1, U2 and Q1 sideways. Those four rotations have been corrected by hand in the CPL attached here:
| Part | Plugin output | Corrected |
|---|---|---|
| LDO1 (ME6211C33M5G-N) | 0° | 90° |
| U1 (TP4054) | 90° | 180° |
| U2 (LMV331IDBVR) | 90° | 180° |
| Q1 (AO3401A) | 90° | 0° |
The corrections come from comparing the board footprints with the EasyEDA footprints JLCPCB places these parts from. In JLCPCB's preview, confirm that each part's pin-1 mark lines up with the footprint's. Also check KEY1 and KEY2, which are on the bottom side.
Notes
- Not assembled by JLCPCB: J1 (battery pads) and J2 (UART header) have no part number and are hand-soldered. R18 is not fitted (DNP).
- Through-hole parts: SW1 (slide switch) and U4 (OLED module) are through-hole, so they need JLCPCB's through-hole assembly or hand soldering.
- Stock: low on SW1 (C2848884) and the OLED (C5248080). Check stock on the BOM page before ordering.
- Teardrops: the gerbers were exported from the board with 200 teardrops. The PCB at this tag has 192 after a later zone refill. Tracks, vias, pads and copper pours are identical.