Bitcoin / Multi Crypto Coin Ticker with 24 candlesticks chart

  • @frittna i just noticed in the pics that the one you're using has the black frame which would lead me to believe that the ESP32 Basic Core IoT Dev Kit will be sufficient, yes?

  • @op8 sorry for the late reply, thank you very much, i still love it to watch the price on it. The M5 core is the regular black framed M5-core and the bottom is the M5GO/FIRE Battery Bottom Charging Base SKU:A014 from this M5-Stack-Shop (do not forget to buy the chargning base plate as i did, these are 2 seperate items to buy) It has the rgb-led strip built-in but it is only barely used in my code.. My Intention was to show major price movements with red/green flashing lights (and sounds) for example. Unfortunately i did not implement additional functions since then.

  • sorry -- i just now saw your reply! but thank you for responding and for the input! i just ordered the items needed, looking forward to putting this all together

  • Anyone successfully got this running on M5 Core 2?

  • @innovationsmaker no i don't have the new Core2 version or know further details but i guess it will need only minor adjustments..
    I hope someone will try it out and post the results. Would be interesting for all other existing apps too..

  • 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