Bitcoin / Multi Crypto Coin Ticker with 24 candlesticks chart

  • SOLVED!!!!!. My arduino software was not compiling the program correctly. Thank frittna for her work and willingness towards the community. Thanks for everything.

    alt text

    Hello . I have a problem, as you can see in the image. Do you know how I could solve it? When it starts if it connects. but then the loop problem. Thanks.

    Wifi connection Lost!

    I help, please

    When the program loads, it connects to the Wi-Fi correctly, but then it only makes it connect and disconnect, and the Wi-Fi connection lost message appears.

    WiFiClientSecure client;
    if (!client.connect(restApiHost, 443)) {
    error("\n\nWiFi connection lost!");
    wifi_error = true;
    return false;
    client.print("GET " + getRestApiUrl() + " HTTP/1.1\r\n" +
    "Host: " + restApiHost + "\r\n" +
    "Accept: application/json\r\n" +
    "User-Agent: BuildFailureDetectorESP8266\r\n" +
    "Connection: close\r\n\r\n");

    while (client.connected()) {
    M5.Lcd.fillCircle(101, topPanel + (infoPanel / 2), 4, TFT_YELLOW); //busy light yellow
    String line = client.readStringUntil('\r');
    if (line.startsWith("[") && line.endsWith("]")) {
    DeserializationError err = deserializeJson(jsonDoc, line);
    if (err) {
    ws_error = true;
    return false;
    } else if (<JsonArray>().size() == 0) {
    error("Empty JSON array");
    ws_error = true;
    return false;

  • @xvr Do you have any details on how you fixed it not compiling correctly ? Currently experiencing the exact same issue with it connecting on startup but looping that Wifi connection lost thereafter...

  • @batucker
    Hi, i was not able to track down the compatibility issue you both have. But it has to be related with my or your arduino version or wifi version used in it. It would be helpful if i would know if anybody has NO issues with my installation guide, since i know it is working for otheres too.. I was testing it on a fresh Win7x64 pc, my usual pc is win10 x64, Standalone or MS-AppStore-Version was no different and both are working good.

    But after all it would be best to make a quick version to load a precompiled BTC-PriceTicker file with the common SD-Loader App like many other apps from the community. With a seperate "settings.cfg" file which will be edited to only contains personal wifi settings and the coins you like to see. >>update: >>I tested the a promising ardunio library "SDConfig" which would be perfect but it will take some time to implement it..)

    even better would be an simple osd-settings menu with button access inside the PriceTicker but that's no easy job for me without the experience of coding this on the m5 yet.

  • I will post the end of my compiling log below so you can see my used lib versions.

    Multiple libraries were found for "WiFi.h"
    Used: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
    Not used: D:\TMP\ARDUINO\arduino-1.8.13\libraries\WiFi
    Multiple libraries were found for "SD.h"
    Used: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SD
    Not used: D:\TMP\ARDUINO\arduino-1.8.13\libraries\SD
    Multiple libraries were found for "ArduinoJson.h"
    Used: C:\Users\myusername\Documents\Arduino\libraries\arduino_639782
    Not used: C:\Users\myusername\Documents\Arduino\libraries\arduino_333198
    Using library M5Stack at version 0.3.1 in folder: C:\Users\myusername\Documents\Arduino\libraries\M5Stack
    Using library WiFi at version 1.0 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
    Using library Preferences at version 1.0 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\Preferences
    Using library Wire at version 1.0.1 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\Wire
    Using library SPI at version 1.0 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPI
    Using library FS at version 1.0 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\FS
    Using library SD at version 1.0.5 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SD
    Using library SPIFFS at version 1.0 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS
    Using library Timezone at version 1.2.4 in folder: C:\Users\myusername\Documents\Arduino\libraries\Timezone
    Using library Time at version 1.6 in folder: C:\Users\myusername\Documents\Arduino\libraries\Time
    Using library WebSockets at version 2.3.0 in folder: C:\Users\myusername\Documents\Arduino\libraries\WebSockets
    Using library WiFiClientSecure at version 1.0 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFiClientSecure
    Using library arduino_639782 at version 6.17.3 in folder: C:\Users\myusername\Documents\Arduino\libraries\arduino_639782
    Using library M5Stack-SD-Updater at version 0.5.2 in folder: C:\Users\myusername\Documents\Arduino\libraries\M5Stack-SD-Updater
    Using library Update at version 1.0 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\Update
    Using library Adafruit_NeoPixel at version 1.7.0 in folder: C:\Users\myusername\Documents\Arduino\libraries\Adafruit_NeoPixel
    Using library HTTPClient at version 1.2 in folder: C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\HTTPClient
    "C:\Users\myusername\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-80-g6c4433a-5.2.0/bin/xtensa-esp32-elf-size" -A "C:\Users\myusername\AppData\Local\Temp\arduino_build_405473/Crypto_Coin_Ticker.ino.elf"
    Sketch uses 1079642 bytes (82%) of program storage space. Maximum is 1310720 bytes.
    Global variables use 52312 bytes (15%) of dynamic memory, leaving 275368 bytes for local variables. Maximum is 327680 bytes.

    btw: the one warning from "timezone" concerning a possible wrong architecture type while compiling the code is ok.. does not matter

    have luck

  • Ran into same problem.

    For me it was an issue with library/package versions - its important to stick exactly to the versions listed by @frittna
    // name: from: version search library manager exactly for:
    // ---------------------------------------+------------------------------------------+------ + --------------------------------------------------------------|
    #include "Free_Fonts.h" // Library | Arduino | | |
    #include <WiFi.h> // Board-pkg| -> Problems? look in the compiler log window what version of WiFi.h is used -> its the ESP32 version **see below |
    #include <Preferences.h> // Library | Arduino | | |
    #include <M5Stack.h> // Library | Arduino Librarymanager M5Stack | 0.3.1 | "M5Stack" |
    #include <Timezone.h> // Library | Arduino Librarymanager Jack Christensen | 1.2.4 | "Timezone" |
    #include <time.h> // Library | Arduino Librarymanager Michael Margolis | 1.6 | "timekeeping" |
    #include <WebSocketsClient.h> // Library | Arduino Librarymanager Markus Sattler | 2.3.0 | "Websockets" watch for the exact version! |
    #include <ArduinoJson.h> // Library | Arduino Librarymanager Benoit Blanchon | 6.17.3| "ArduinoJson" |
    #include "M5StackUpdater.h" // Library | Arduino Librarymanager SD-Menu Loader | 0.5.2!| "M5Stack SD" i use 0.5.2 , not new 1.0.2 because of problems |
    #include <Adafruit_NeoPixel.h>// Library | Arduino Librarymanager Adafruit NeoPixel | 1.7.0 | "Adafriut Neopixel" |
    #include "FS.h" // Tool | github: esp32fs for SPIFFS filesystem | 1.0 | |
    // ---------------------------------------+------------------------------------------+-------+----------------------------------------------------------------

    Also, be sure to use esp32 version 1.04 from the Board Manager. 1.06 did not work for me given the above versions.


  • @silvereq
    thank you very much for your information

    i will update the instruction and btw, i am almost finished with a modified version of the code so that you can insert a config text file onto a sd card wich only has to contain the wifi-settings, timezone, pairs and the color of its name. I will updatede soon.
    It will then be much easier to "burn" the compiled app into the M5 and nobody needs to compile on its own if he is not intended to change or improove the bitcoin price ticker


  • Finally i updated my project to a version with a SD-Card config file for Wifi-Settings and coinpars, colors, etc.

    Now if you don't want to compile on your own you can load the precompiled .bin file with populair SD-Menu Loader App and get around all the hardcoding in Arduino-IDE with all the librarys and esp32 board manager..

    all you need is to flash my .bin and have a sd card with a folder in root called "ccticker" which holds the file "ccticker.cfg" and the "data" folder for the graphic files.

    I do not use SPIFFS memory anymore because it is easier without for the most people.. (btw: does anyone know if it is possible to burn with m5burner AND flashing spiffs together? Any info on m5burner to get the file and folder format right to flash a custom program like this?)

    have luck

    download my app at


  • @frittna I'm trying to build the application using the Arduino interface and I get one warning:

    WARNING: library Timezone claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).

    I read a few article that say it still works even though the warning is displayed so I continued to try uploading to my M5Stack

    When I compile and upload it completes 100%

    Hash of data verified.

    Hard resetting via RTS pin...

    However the M5Stack never does anything other than display a blank (black) screen.

    Any thoughts on why that would happen?



  • @wwhite
    maybe it is the wrong board manager? at menu: tools -> boards -> boardmanager - search for esp32 -> select version 1.0.4, not the new 1.0.6
    have you tried the serial monitor to see what the serial output is? is there any, at 115200 baud rate?
    btw: the one warning about avr architecture is no problem, its ok.

  • @frittna Thanks for responding I appreciate your help. Thanks for confirming the Warning issue would be ok. I made certain I installed the 1.0.4 version per the instructions. I was able to grab some output from the serial monitor and it's this 9 lines constantly scrolling? Thanks again.

    rst:0x10 (RTCWDT_RTC_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    ets Jul 29 2019 12:21:46

    rst:0x10 (RTCWDT_RTC_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    invalid header: 0xffffffff
    ets Jul 29 2019 12:21:46

  • @frittna OOPS - I lied to you! I seems that I no sooner installed the esp 1.0.4 version and the ide came up and said I had libraries with updates and I must have selected update. I found this because I thought I'd double check all of the libraries and the board versions. When I looked the board had changed to the latest version so I removed it and installed the 1.0.4. In a few minutes I was prompt regarding updates and this time I didn't allow the updates!

    The good news is I'm up and running but stuck at Connecting to.........

    If I'm compiling this way can I still use the config files on the sd card or do I have to hard code the wifi info?

    Thanks again.


  • @frittna YAY I got it running. There was something strange with my sd card so I formatted it and out the config files back on it and now it's working. This is an awesome application you put together! This is going to be fun.

  • @wwhite

    Yeah !!! - I'm glad you figured out that the board manager was updated without your notice! This is helpfulf for others as they can easiliy run into the same scenario i guess. If the SD-Card in not read correctly it will at least give you some lines on the display and serial output. I use FAT32 on a 2GB SD and always "safe remove" before unplugging the card from cardreader.

    @wwhite said:

    If I'm compiling this way can I still use the config files on the sd card or do I have to hard code the wifi info?/

    You can hardcode network settings but it doesn't matter and it's not intendet to do so in this sd-card version. When a sd-card is read-in and if the config file contains a ssid/password, it will use it. They will be stored in internal memory aswell (only ssid/pw1+2) and be used if no SD-card is inserted by accident.
    In this case it should connect as usual but with the 4 default coinpairs and missing images from the /data/ folder as they are loaded from there.
    BTW: I have an identical SPIFFS version on github (public folder) where you hardcode every setting in Arduino and have to upload all graphic files to the internal SPIFFS memory with esp32-data-upload tool, so no sd-card at all is needed.

    But for me it was important to make a SD-card version to provide an much more "easy solution" - without compiling by yourself.
    So theres no need to edit the Adruino code.

  • Hi
    thanks for setting this great project up! I got it running and I love it. I was looking quite some time for exactly this thing.

    One question, when I would have the pair BTC EURO, how would I set that up in the code? Thanks! Timo

  • Hi,
    I figured it out by myself (so proud ;-) ) how to have BTC/€ displayed:

    byte pairs = 2; // default: 8, total numbers of currency pairs, max 255
    String pair_name[] = {"BTC/EUR", " BTC/$", }; //name for TopPanel (6-8 letters)
    String pair_STRING[] = {"BTCEUR", "BTCUSDT", }; //name for url in BIG LETTERS
    String pair_string[] = {"btceur", "btcusdt", }; //name for url in small letters
    uint32_t pair_color[] = {TFT_ORANGE, TFT_PINK, }; //color in uint32_t format

    Greetings Timo

  • thx!!
    Hi, yes you got it right. The name must be the same when you look at the part of the url accessing a usual binance market with your webborwser.

    But i wanted to mention that i have updated the App a bit more.
    There is no modification with Arduino in the code needed for adjusting the settings.
    Now you can easily burn the app with few clicks, no Arduino needed, if you don't want. You only need a config text file on the root of your sd-card from where settings are read in, then you can eject it or not as you want.
    All settings including wifi, coinpairs, etc will be saved internal. They will update when you put in a modified configuration. No data folder on SD-Card is needed for graphics anymore as they moved back to internal spiffs memory.

    You can simply use and edit the config file. All done.

  • Hello all, thank you so much for the hard work on this project! I created a video demo flashing the M5Stack with the FW, changing the SD card configurations, and 3D printing a desk stand. I hope this helps more novice users get started

  • Has anyone been able to port this to the Core 2? I tried but the SD Card library seemed to be incompatible.

  • I saw a crypto project on the M5Stack and had to comment!

    First of all congrats to @frittna for the good execution of the concept. Didn't try it myself, but looks great on the photos!

    Seven years ago I started working on a similar crypto project. Decided to go all the way from idea to market, not just because I love crypto, but because I wanted to gain the learning and experience on the way. It was worth it!

    I've seen a lot of "weekend projects", but none of them had the features I wanted or was easily configurable by non-technical people. So I brought my crypto project to a full commercial product. I call it the TicrThing - your dedicated price ticker. (sorry for the obvious ad)

    The previous versions had custom-made hardware, but they always lacked something... Once I discovered the M5Stack, I thought it was a perfect fit. So I completely re-wrote my code for the M5Stack, wrote also the server side, and released the new product earlier this year. Hope this helps bring the M5Stack platform to a wider audience!


    P.S. It was not my intention to hijack the thread, but to share the story of a similar crypto project and how it evolved to use the M5Stack.

  • Hi, really nice to explore your project! You have really gone thought all the steps which i skipped so far on my ticker. (mobile app to config, fw updates, multiple sources, webstore) NICE and very professional.