{"id":13790483,"url":"https://github.com/bleskomat/bleskomat-diy","last_synced_at":"2025-05-12T09:32:50.115Z","repository":{"id":40406646,"uuid":"255871630","full_name":"bleskomat/bleskomat-diy","owner":"bleskomat","description":"The do-it-yourself (DIY) version of the Bleskomat Bitcoin Lightning ATM project.","archived":false,"fork":false,"pushed_at":"2024-04-16T09:36:08.000Z","size":23057,"stargazers_count":89,"open_issues_count":8,"forks_count":27,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-02-09T00:02:55.122Z","etag":null,"topics":["bitcoin","lightning-network"],"latest_commit_sha":null,"homepage":"https://www.bleskomat.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bleskomat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-15T09:43:10.000Z","updated_at":"2025-02-06T16:18:51.000Z","dependencies_parsed_at":"2024-04-16T10:45:11.186Z","dependency_job_id":"651fea71-b8b1-41c4-836f-4858db42c4e7","html_url":"https://github.com/bleskomat/bleskomat-diy","commit_stats":null,"previous_names":["samotari/bleskomat-diy"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bleskomat%2Fbleskomat-diy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bleskomat%2Fbleskomat-diy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bleskomat%2Fbleskomat-diy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bleskomat%2Fbleskomat-diy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bleskomat","download_url":"https://codeload.github.com/bleskomat/bleskomat-diy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253709355,"owners_count":21951123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","lightning-network"],"created_at":"2024-08-03T22:00:44.866Z","updated_at":"2025-05-12T09:32:45.101Z","avatar_url":"https://github.com/bleskomat.png","language":"C++","funding_links":[],"categories":["Awesome Embedded Bitcoin [![Awesome](https://awesome.re/badge-flat.svg)](https://awesome.re)"],"sub_categories":["Embedded Projects"],"readme":"# Bleskomat DIY\n\nThe Bleskomat DIY is an offline Bitcoin Lightning Network ATM which accepts coins and pays-out bitcoin. It's a great educational tool to give others a practical first experience with Bitcoin's Lightning Network.\n\nYou can buy the [Bleskomat DIY kit](https://shop.bleskomat.com/product/bleskomat-diy-kit/) from the official Bleskomat shop - includes all the parts needed to build the project. Alternatively, you can find all the components and equipment needed from various other sources - see [Parts Suppliers](#parts-suppliers).\n\nThe Bleskomat DIY must be paired with a server to facilitate Lightning Network payments on its behalf; see the options below:\n* [Bleskomat Platform](https://platform.bleskomat.com) - non-custodial, requires a monthly subscription\n* [bleskomat-server](https://github.com/bleskomat/bleskomat-server) - non-custodial, open-source, self-hosted solution\n* [lnbits](https://github.com/lnbits/lnbits-legend) via the Bleskomat extension - open-source, self-hosted and possible to use custodial instances hosted by others; public instances of lnbits:\n\t* [legend.lnbits.com](https://legend.lnbits.com) - unstable, don't leave funds on this instance for very long\n\nThe rest of this document details the hardware and software requirements, how to build the hardware yourself, and instructions for compiling and uploading the firmware from source.\n\n* [Requirements](#requirements)\n\t* [Hardware Requirements](#hardware-requirements)\n\t\t* [Parts Suppliers](#parts-suppliers)\n\t* [Software Requirements](#software-requirements)\n* [Building the Hardware Device](#building-the-hardware-device)\n\t* [Prepare the breadboards](#prepare-the-breadboards)\n\t\t* [ESP32 devkit pinout](#esp32-devkit-pinout)\n\t* [Wiring the Power Supply](#wiring-the-power-supply)\n\t\t* [Optionally power the ESP32 devkit via 5V pin](#optionally-power-the-esp32-devkit-via-5v-pin)\n\t* [Wiring the TFT Display](#wiring-the-tft-display)\n\t\t* [Wiring the SD card slot](#wiring-the-sd-card-slot)\n\t* [Wiring the button](#wiring-the-button)\n\t* [Wiring the Coin Acceptor](#wiring-the-coin-acceptor)\n\t\t* [Wiring the DG600F](#wiring-the-dg600f)\n\t\t* [Wiring the HX616](#wiring-the-hx616)\n\t* [Wiring the Bill Acceptor](#wiring-the-bill-acceptor)\n* [Configure and Train Coin Acceptor](#configure-and-train-coin-acceptor)\n\t* [Configure and Train the DG600F](#configure-and-train-the-dg600f)\n\t* [Configure and Train the HX616](#configure-and-train-the-hx616)\n* [Configure Bill Acceptor](#configure-bill-acceptor)\n* [Installing Libraries and Dependencies](#installing-libraries-and-dependencies)\n* [Configure Firmware Build Flags](#configure-firmware-build-flags)\n* [Compiling and Uploading to Device](#compiling-and-uploading-to-device)\n* [Configuring the Device](#configuring-the-device)\n\t* [List of Configuration Options](#list-of-configuration-options)\n\t* [Browser-Based Configuration Tool](#browser-based-configuration-tool)\n\t* [Command-Line Configuration Tool](#command-line-configuration-tool)\n\t* [Hard-Coded Configuration](#hard-coded-configuration)\n\t* [Configuration via SD Card](#configuration-via-sd-card)\n* [Changelog](#changelog)\n* [Support](#support)\n* [License](#license)\n* [Trademark](#trademark)\n\n\n## Requirements\n\nThis section includes information about the software and hardware requirements needed to build this project.\n\n\n### Hardware Requirements\n\nBasic components/equipment needed to build your own Bleskomat DIY:\n* 2 x breadboard (400-pin)\n* Jumper wires (M-M)\n* Jumper wires (M-F)\n* ESP32 Devkit\n* Coin Acceptor - DG600F or HX616\n* 1.8\" TFT display\n* Button\n* 10k ohm resistor\n* DC 5.5/2.1 mm DIP adapter\n* 12V DC power adaptor with \\~1A\n* Standard USB to micro USB cable\n* Multimeter\n\nOptional components/equipment:\n* Soldering iron\n* 2.54 mm pins\n* To power the ESP32 devkit from the 12V DC power supply:\n\t* XL4005 step-down converter\n\t* USB (F) adapter\n\t* Alternatively, you could use a USB car charger which includes both a step-down converter and USB (F) output\n* If you wish to configure your Bleskomat via SD card:\n\t* Micro SD card with macro adapter\n\nSee the [Parts Suppliers](#parts-suppliers) section below for links to suppliers for each component/equipment.\n\n\n#### Parts Suppliers\n\nBelow are parts lists based on geographic location:\n\n* [Czech Republic](docs/parts-lists/czech-republic.md)\n* [United Kingdom](docs/parts-lists/uk.md)\n* [USA](docs/parts-lists/usa.md)\n\nIf you'd like to add your own list, please create a pull-request using [this template](docs/parts-lists/TEMPLATE.md) as a guide. Links with referral codes will not be accepted.\n\n\n### Software Requirements\n\n* [make](https://www.gnu.org/software/make/)\n* [PlatformIO Core (CLI)](https://docs.platformio.org/en/latest/core/)\n\t* Version 6 or newer\n\t* Only the CLI (\"Core\") is required\n\n\n## Building the Hardware Device\n\nBefore proceeding, be sure that you have all the project's [hardware requirements](#hardware-requirements).\n\nStep-by-step build process for the hardware device.\n\n### Prepare the breadboards\n\nOne breadboard is not large enough to accommodate all the pins of the ESP32 devkit due to the width of the devkit. This is why we recommend to connect two breadboards together.\n\nRemove one of the power rails from one of the breadboards. Use the notches on the sides of the breadboards to connect them together length-wise.\n\nInsert the ESP32 devkit into the pin holes of the new, combined breadboard.\n\n![](docs/bleskomat-diy-build-breadboard-and-esp32-devkit.png)\n\nFamiliarize yourself with the ESP32 devkit's pinout reference below.\n\n#### ESP32 devkit pinout\n\n![](docs/ESP32-devkit-v1-board-pinout-36-gpio-pins.jpg)\n\n\n### Wiring the Power Supply\n\nThe first step to building the device is wiring the power supply. If already plugged in, __unplug__ the 12V DC power supply now. Connect the DC 5.5/2.1 end of the power supply to the DIP adapter. The positive (+) pins should be the power pins and the negative (-) pins should be the ground. You can use your multimeter to check in case you want to be extra safe:\n* Plug-in the power supply to electricity\n* Turn on your multimeter and set it to measure voltage in the appropriate range (probably 20V)\n* Touch the __red__ lead of your multimeter to one of the positive pins\n* Touch the __black__ lead of your multimeter to one of the negative pins\n* If you see a negative voltage reading, swap the leads between the two wires\n* The pin touched by the __black__ lead is the ground (\"GND\")\n* The pin touched by the __red__ lead is the hot wire (\"DC12V\")\n* Unplug the power supply again\n\nUse a pair of M-F jumper wires to connect the DC 5.5/2.1 DIP adapter to one of the breadboard's power rails. Negative to negative, positive to positive. This rail will be your 12V DC power (positive) and the common ground (negative).\n\n#### Optionally power the ESP32 devkit via 5V pin\n\nIf you'd like to make your Bleskomat build a little bit more portable, you can power the ESP32 devkit via its 5V pin. To do this you will need the XL4005 (or equivalent) step-down converter and the USB (F) adapter. Note that powering the ESP32 devkit via its micro USB port requires a regulated voltage of approximately 5V.\n\nIt's also possible to use a USB car charger in case you have an extra one lying around.\n\nConnect the step-down converter's input pins to the 12V DC power rail and common ground using (M-F) jumper wires. Use a multimeter to measure the voltage at the out pins. In the case of the XL4005, use a small screwdriver to turn the screw on the little blue box. Turning the screw counter clockwise should lower the voltage, turning it the opposite direction should increase the voltage. Once you have the voltage set to 5V, connect the out pins to the center power rails of the breadboard. This will be your 5V DC power rail.\n\nUse a soldering iron to solder four 2.54 mm pins to the USB (F) DIP adapter. Insert the pins directly into the breadboard wherever you have space available. Using (M-M) jumper wires, connect the negative and positive pins of the USB (F) DIP adapter to the 5V DC power rail.\n\nConnect the negative pin of the 5V DC power rail to the negative of the 12V DC power rail to ensure that they share a common ground. This is important because without a common ground shared between the coin acceptor and ESP32 devkit, the ESP32 will not receive a clean signal from the coin acceptor.\n\nUse a standard USB to micro USB cable to connect the USB (F) DIP adapter to the ESP32 devkit.\n\nThere are other options when powering the ESP32 - e.g via the 3.3V pin or the 5V/VIN pin. You should __never__ power the ESP32 via more than one of these options at the same time. For example, do not power the ESP32 via its 3.3V pin while also connecting the ESP32 via USB to your computer. This can damage the ESP32 and possibly also your computer.\n\n\n### Wiring the TFT Display\n\nInsert the pins of the TFT display module into the breadboard where you have space available.\n\n![](docs/bleskomat-diy-build-tft-display.png)\n\nUse the table below to connect the ESP32 devkit to the TFT display module.\n\n|  ESP32       | TFT         |\n|--------------|-------------|\n| VIN (V5)     | VCC         |\n| GND          | GND         |\n| GPIO22       | CS          |\n| GPIO4        | RESET (RST) |\n| GPIO2        | AO (RS)     |\n| GPIO23       | SDA         |\n| GPIO18       | SCK (CLK)   |\n| 3V3          | LED (NC)    |\n\nNotes on pin naming:\n* There are boards where `GPIXXX` are marked as `GXX` instead of `DXX`.\n* The `G23` may be there **twice** - the correct one is next to `GND`.\n* Some boards have typos so a bit of guess-and-check is necessary sometimes.\n\n![](docs/bleskomat-diy-build-tft-display-with-wires.png)\n\nRefer to the [ESP32 devkit pinout](#esp32-devkit-pinout) for help identifying the pins on your ESP32.\n\n\n#### Wiring the SD card slot\n\nThis step is only needed if you would like to configure your Bleskomat via an SD card.\n\nThe TFT display includes an SD card slot. The pins are located above the screen and not soldered to the module by default but the pins can be added. The table of mappings is the following:\n\n| ESP32  | TFT     |\n|--------|---------|\n| GPIO15 | SD_CS   |\n| GPIO13 | SD_MOSI |\n| GPIO12 | SD_MISO |\n| GPIO14 | SD_SCK  |\n\nRefer to the [ESP32 devkit pinout](#esp32-devkit-pinout) for help identifying the pins on your ESP32.\n\n\n### Wiring the button\n\nInsert button pins into the breadboard wherever you have space available. Typically, its best to place the button at the center of a breadboard (over the gap).\n\nConnect the button using the following table as a guide:\n\n| ESP32    | Button    |\n|----------|-----------|\n| VIN (V5) | left pin  |\n| GPIO33   | right pin |\n\nConnect the right pin of the button to GND with a 10k ohm resistor.\n\n![](docs/bleskomat-diy-build-button-with-wires.png)\n\nRefer to the [ESP32 devkit pinout](#esp32-devkit-pinout) for help identifying the pins on your ESP32.\n\n\n### Wiring the Coin Acceptor\n\nThis project supports two possible coin acceptors - the DG600F and the HX616. The DG600F is more expensive, but is easier to configure and more reliable.\n\n\n#### Wiring the DG600F\n\n| ESP32       | DG600F   | Power Supply  |\n|-------------|----------|---------------|\n| GPIO1 (TX0) | INHIBIT  |               |\n|             | COUNTER  |               |\n|             | GND      | - Ground      |\n| GPIO3 (RX0) | SIGNAL   |               |\n|             | DC12V    | + 12V DC      |\n\n![](docs/bleskomat-diy-build-coin-acceptor-dg600f.png)\n\nRefer to the [ESP32 devkit pinout](#esp32-devkit-pinout) for help identifying the pins on your ESP32.\n\n\n#### Wiring the HX616\n\n| ESP32       | HX616   | Power Supply  |\n|-------------|----------|---------------|\n|             | DC12V    | + 12V DC      |\n| GPIO3 (RX0) | COIN     |               |\n|             | GND      | - Ground      |\n\nRefer to the [ESP32 devkit pinout](#esp32-devkit-pinout) for help identifying the pins on your ESP32.\n\n\n### Wiring the Bill Acceptor\n\nThis project supports the NV10 (USB+) and NV9 bill acceptors. The SIO protocol is used to communicate with the bill acceptor unit.\n\n|  ESP32       | NV10/NV9 | Power Supply  |\n|--------------|----------|---------------|\n| GPIO16       | 1 (Tx)   |               |\n| GPIO17       | 5 (Rx)   |               |\n|              | 16       | - Ground      |\n|              | 15       | + 12V DC      |\n\nRefer to the [ESP32 devkit pinout](#esp32-devkit-pinout) for help identifying the pins on your ESP32.\n\n\n## Configure and Train Coin Acceptor\n\nThis project supports two possible coin acceptors - the DG600F and the HX616.\n\n### Configure and Train the DG600F\n\nPhysical switches on the DG600F should set as follows:\n\n| Switch           | State         |\n|------------------|---------------|\n| 1 (Port Level)   | Down (NO)     |\n| 2 (Security)     | Down (Normal) |\n| 3 (Transmitting) | Up (RS232)    |\n| 4 (Inhibiting)   | Down (\u003e +3V)  |\n\n![](docs/DG600F-DIP-switch-configuration.png)\n\nOpen the [DG600F manual](docs/DG600F-Coin-Acceptor-Technical-Manual.pdf) to \"Coin Acceptor Parameters Setting\" on page 18. Set the parameters as follows:\n\n| Parameter | Description                      | Value | Meaning                                          |\n|-----------|----------------------------------|-------|--------------------------------------------------|\n| A1        | machine charge amount            | 01    | min. coin value before data sent                 |\n| A2        | serial output signal pulse-width | 01    | 25ms / 9600 bps (RS232 baud rate)                |\n| A3        | faulty alarm option              | 01    | (rings only one time)                            |\n| A4        | serial port RS232 signal length  | 03    | 3 bytes: 0xAA, coin value, XOR of prev two bytes |\n| A5        | serial port output               | 01    | output to serial pin                             |\n\n\nTo train the coin acceptor, have a look at \"Coin Parameters Setting\" on page 16 of the [DG600F manual](docs/DG600F-Coin-Acceptor-Technical-Manual.pdf). Be sure to set the \"coin value\" for each coin in series, incremented by 1. For example:\n* 0.05 EUR = 1 coin value\n* 0.10 EUR = 2 coin value\n* 0.20 EUR = 3 coin value\n* 0.50 EUR = 4 coin value\n* 1.00 EUR = 5 coin value\n* 2.00 EUR = 6 coin value\n\nThen set the `coinValues` configuration equal to `0.05,0.10,0.20,0.50,1,2`. For example, in the bleskomat.conf:\n```\ncoinValues=0.05,0.10,0.20,0.50,1,2\n```\n\n\n### Configure and Train the HX616\n\nThere are two switches on the back of the HX616 coin acceptor:\n* \"NO\" (normally open) / \"NC\" (normally closed) - This should be set to \"NO\"\n* \"Fast\" / \"Medium\" / \"Slow\" - This should be set to \"Fast\"\n\nAn instruction sheet is included with the coin acceptor that will guide you through the training process:\n\n![](docs/coin-acceptor-hx616-instructions-side-1.jpg)\n\n| PANEL  | Meaning                                     |\n|--------|---------------------------------------------|\n| E      | number of coin values                       |\n| Hn     | sampling quantity of coin n                 |\n| Pn     | signal output value of coin n               |\n| Fn     | recognition accuracy of coin n (8 advised)  |\n| A      | training the acceptor                       |\n| An     | start inserting coins for coin n            |\n\nPress ADD + MINUS to get to the setting menu for Hn, Pn, Fn. Then press SET to swap between possibilities. To change the option press ADD or MINUS to select the desired value and confirm with SET.\n\nPress SET to enter the training menu (A appears on the panel). After pressing SET again you can start inserting the coins.\n\nIf training the HX616 to accept EUR coins, you can set the `coinValueIncrement` equal to `0.05`. For example, in bleskomat.conf:\n```\ncoinValueIncrement=0.05\n```\n\n\n## Configure Bill Acceptor\n\nPlease refer to the following user manuals for detailed instructions regarding how to configure the NV10 (USB+) or NV9 bill acceptors:\n* [NV10 User Manual](docs/NV10-User-Manual-v1.1.pdf)\n* [NV9 User Manual](docs/NV9-User-Manual-v1.1.pdf)\n\n\n\n## Installing Libraries and Dependencies\n\nBefore proceeding, be sure that you have all the project's [software requirements](#software-requirements).\n\nUse make to install libraries and dependencies needed to build the firmware:\n```bash\nmake install\n```\n* The firmware's dependencies are defined in its platformio.ini file located at `./platformio.ini`\n\nIf while developing you need to install a new library, use the following as a guide:\n```bash\nplatformio lib install LIBRARY_NAME[@VERSION]\n```\nYou can find PlatformIO's libraries repository [here](https://platformio.org/lib).\n\n\n## Configure Firmware Build Flags\n\nThere are several build flags that can be changed in file platformio.ini file located at `./platformio.ini` before the firmware is compiled. If you follow the wire mappings in this readme file, then you most likely do not need to change any flags.\n\n\n## Compiling and Uploading to Device\n\nTo compile the firmware (without uploading to a device):\n```bash\nmake compile\n```\n\nTo compile and upload to your device:\n```bash\nmake upload DEVICE=/dev/ttyUSB0\n```\nThe device path for your operating system might be different. If you receive a \"Permission denied\" error about `/dev/ttyUSB0` then you will need to set permissions for that file on your system:\n```bash\nsudo chown $USER:$USER /dev/ttyUSB0\n```\n\nTo open the serial monitor:\n```bash\nmake monitor DEVICE=/dev/ttyUSB0\n```\nAgain the device path here could be different for your operating system.\n\n\n## Configuring the Device\n\nIt is possible to configure the device via the following methods:\n* [Browser-Based Configuration Tool](#browser-based-configuration-tool)\n* [Command-Line Configuration Tool](#command-line-configuration-tool)\n* [Hard-Coded Configuration](#hard-coded-configuration)\n* [Configuration via SD Card](#configuration-via-sd-card)\n\n\n### List of Configuration Options\n\nThe following is a list of possible configuration options for the Bleskomat DIY:\n* `apiKey.id` - The API key ID of the device. This is needed by the server to verify signatures created by the device.\n* `apiKey.key` - The API key secret that is used to generate signatures.\n* `apiKey.encoding` - The explicit encoding of the API key secret. This can be \"hex\", \"base64\", or empty-string (e.g \"\") to mean no encoding. When generating a new API key on the server, it will store the encoding along with the ID and secret.\n* `callbackUrl` - The LNURL server base URL plus endpoint path. Example:\n\t* `https://p.bleskomat.com/u`\n* `shorten` - Whether or not to shorten the LNURL; see the [lnurl-node module](https://github.com/chill117/lnurl-node#signed-lnurls) for more details.\n* `uriSchemaPrefix` - The URI schema prefix for LNURLs generated by the device. It has been discovered that some wallet apps mistakenly only support lowercase URI schema prefixes. Uppercase is better because when encoded as a QR code, the generated image is less complex and so easier to scan. Set this config to empty-string (e.g `uriSchemaPrefix=`) to not prepend any URI schema prefix.\n* `fiatCurrency` - The fiat currency symbol for which the device is configured; see [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).\n* `fiatPrecision` - The number of digits to the right of the decimal point when rendering fiat currency amounts.\n* `billValues` - The value of bills for which the bill acceptor has been configured. Each value separated by a comma. Integers and floating point (decimal) values are accepted. Examples:\n\t* CZK: `100,200,500,1000,2000,5000`\n\t* EUR: `5,10,20,50,100,200,500`\n* `billTxPin` - The GPIO connected to the NV10/NV9's Tx pin.\n* `billRxPin` - The GPIO connected to the NV10/NV9's Rx pin.\n* `billBaudRate` - The baud rate of the SIO protocol communication with the NV10/NV9. This value will be `300` or `9600`.\n* `coinValues` - For the DG600F coin acceptor. The value of coins for which the coin acceptor has been configured. Each value separated by a comma. Integers and floating point (decimal) values are accepted. For example, when trained with EUR coins this configuration could be set to `0.05,0.10,0.20,0.50,1,2`.\n* `coinValueIncrement` - For the HX616 coin acceptor, which communicates via pulses to the ESP32. The value here will determine how much fiat value each pulse represents. For example, when trained with EUR coins this value could be `0.05` with the following number of pulses set for each coin denomination:\n\t* 0.05 EUR = 1 pulse\n\t* 0.10 EUR = 2 pulses\n\t* 0.20 EUR = 4 pulses\n\t* 0.50 EUR = 10 pulses\n\t* 1.00 EUR = 20 pulses\n\t* 2.00 EUR = 40 pulses\n* `coinSignalPin` - The GPIO connected to the HX616's \"COIN\" pin or DG600F's \"SIGNAL\" pin.\n* `coinInhibitPin` - The GPIO connected to the DG600F's \"INHIBIT\"\n* `coinBaudRate` - The baud rate for serial communication with the DG600F\n* `coinAcceptorType` - \"hx616\" or \"dg600f\"\n* `buttonPin` - The GPIO connected to the button\n* `buttonDelay` - The number of milliseconds to wait before pressing the button can clear the QR code\n* `buttonDebounce` - The number of milliseconds of debounce to prevent flickering button press/release\n* `tftRotation` - The orientation of the TFT display. This is useful to allow different positions of the display. The possible rotation values are:\n\t* 0 = 0 degrees\n\t* 1 = 90 degrees\n\t* 2 = 180 degrees\n\t* 3 = 270 degrees\n* `logLevel` - Possible values:\n\t* `trace` - everything\n\t* `debug`\n\t* `info` - default\n\t* `warn`\n\t* `error`\n\t* `none` - nothing\n\n\n### Browser-Based Configuration Tool\n\nThe Bleskomat Platform provides a [browser-based configuration tool](https://platform.bleskomat.com/serial) to upload pre-built device firmware, view real-time log output, update device configurations, run JSON-RPC serial commands, and more.\n\n\n### Command-Line Configuration Tool\n\nIt is also possible to use the [bleskomat-cli](https://github.com/bleskomat/bleskomat-cli) command-line utility to communicate with a Bleskomat hardware device via JSON-RPC over serial API. Please refer to that project's readme for installation and usage information.\n\n\n### Hard-Coded Configuration\n\nHard-coded configurations can be set by modifying the source file [config.cpp](https://github.com/bleskomat/bleskomat-diy/blob/master/src/config.cpp#L196).\n\nEach time you make changes to the hard-coded configurations, you will need to re-compile and flash the ESP32's firmware.\n\n\n### Configuration via SD Card\n\nFirst you will need to format the SD card with the FAT32 filesystem.\n\nCreate a new file named `bleskomat.conf` at the root of the SD card's filesystem.\n\nThe following is an example `bleskomat.conf` file:\n```\napiKey.id=6d830ddeb0\napiKey.key=b11cd6b002916691ccf3097eee3b49e51759225704dde88ecfced76ad95324c9\napiKey.encoding=hex\ncallbackUrl=https://p.bleskomat.com/u\nshorten=true\nuriSchemaPrefix=\nfiatCurrency=EUR\nfiatPrecision=2\ncoinValues=0.05,0.10,0.20,0.50,1,2\ncoinValueIncrement=0.05\ncoinSignalPin=3\ncoinInhibitPin=1\ncoinBaudRate=9600\ncoinAcceptorType=hx616\nbuttonPin=33\nbuttonDelay=5000\nbuttonDebounce=100\ntftRotation=2\nlogLevel=info\n```\n\n\n## Changelog\n\nSee [CHANGELOG.md](https://github.com/bleskomat/bleskomat-diy/blob/master/CHANGELOG.md)\n\n\n## Support\n\nNeed some help? Join us in the official [Telegram group](https://t.me/bleskomat) or send us an email at [support@bleskomat.com](mailto:support@bleskomat.com) and we will try our best to respond in a reasonable time. If you have a feature request or bug to report, please [open an issue](https://github.com/bleskomat/bleskomat-diy/issues) in this project repository.\n\n\n## License\n\nThe project is licensed under the [GNU General Public License v3 (GPL-3)](https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)):\n\u003e You may copy, distribute and modify the software as long as you track changes/dates in source files. Any modifications to or software including (via compiler) GPL-licensed code must also be made available under the GPL along with build \u0026 install instructions.\n\n\n## Trademark\n\n\"Bleskomat\" is a registered trademark. You are welcome to hack, fork, build, and use the source code and instructions found in this repository. However, the right to use the name \"Bleskomat\" with any commercial products or services is withheld and reserved for the trademark owner.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbleskomat%2Fbleskomat-diy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbleskomat%2Fbleskomat-diy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbleskomat%2Fbleskomat-diy/lists"}