Build your own EMU Bluetooth Display for ~$20

Hi guys, After many hours of trial and error, I have completed the V2 of my EMU Bluetooth display and the code is available for free, and you can buy the hardware from AliExpress, Ebay or from your local shops. (V3 will include touch functions and multiple tabs)

You can find the complete source code and the hardware information here https://github.com/danuecumaster/ECUMaster-Black-ESP32-Bluetooth-Display

Video: https://jmp.sh/s/WEkvVIzCmtFlNIeilFbQ | https://jmp.sh/s/iN8ujgNTJGvjnUhCfg7O

9 Likes

Good Job. Videos are not working though

Looks good! Just ordered the screen to give it a try

This is so good… I’d love to do a Portrait GUI version, to fit where the old, analogue clock is, in my E30. I’ll have to put this on the list of things to have a crack at!!! Thanks for sharing

This is great, I’ll definitely be giving this a try

Mybad, here you go

https://youtu.be/b16–jYl7CY

https://youtu.be/1yv-feC6I2c

Video links updated

By default, it’s supposed to be portrait (240x320 px). There are also 320x480px 3.5" models available.

I have just enough space to keep it portrait in my setup, so I rotated the screen via code.

Good luck. My code is synchronous because while (SerialBT.available() >= 5) {

It works fine for my use-case but if you want to use touch controls, you should probably change to to async by doing something like this. (I will also fix this in V3)

static uint8_t frame[5];
static int frameIndex = 0;
void loop() {
frame[frameIndex++] = SerialBT.read();
if (frameIndex == 5) {

This is really awesome work! I have this board laying around from another project. And this will be the perfect use for it.

I got as far as getting the display to function but was not successful with the blue tooth connection. I’ll figure it out tomorrow.

Thanks again for sharing this with the community!

2 Likes

(post deleted by author)

Did you update the MAC address?
If not, you can also uncomment //#define USE_NAME and use the BT name and pin
Also, EMU CAN BT Adapter can only connect to 1 device at a time, so do make sure you are not connected to it with your mobile or any other devices. (connecting via MAC address is much faster though)

If nothing works, try changing the ESP32’s BT name String myBtName = “ESP32-BT-Master”; to something else.

I just checked the EMU BT module and the led goes solid when I power up the ESP32, so it is connecting. its just staying on the screen in my picture.

No I am relatively new to Arduino, so this is something I am doing wrong.

I am using the esp32 board manage by Espressif Systems, v2.0.17

I selected the “ESP32 DEV MODULE”

And the following libraries:
Bluetoothserial v1.1.0
lvgl v8.3.0
TST_eSPI v2.5.43

Initially I was getting a complication error: ‘LV_HOR_RES_MAX’ was not declared in this scope

So I added the following to lv_conf.h
#define LV_HOR_RES_DEF 320
#define LV_VER_RES_DEF 240
#define LV_HOR_RES_MAX 320
#define LV_VER_RES_MAX 240

Again, I am new at this so it’s a lot of reading followed by trial and error.

@Stauff

You can find my LVGL and eSPI config files here https://we.tl/t-lKPrbiwG9I.

But if your issue is with the BT connection, please follow this.


#4 is the fastest method, but you need to find your EMU MAC address and update it.
#3 is the BT name of EMU
#2 is the BT pin of EMU
#1 when commented, ESP will use MAC address to connect. If uncommented, ESP will use name and pin to connect, MAC address is faster.

If BT connection / display driver is not the issue, you can post the latest error you get in your serial monitor, and I’ll try to help.

Thank you so much!

Looks like my error was in how I setup the TFT file.

It works amazing! Now to make a nice mount for it.

1 Like

@Stauff Great. There’s a link to a 3d printable case in my GIT. Feel free to use it and print using ASA or ABS if you are living in a high temp location.