wemos d1 mini tft display made in china

So many of my projects involve displaying data fetched from the internet, which means the majority of my projects involve connecting a display to ESP8266. I wanted to make a device that would make this as simple as possible.

Even for projects involving a sensor and a display, I found it frustrating to have to the same wiring for the displays I was using over and over again.

I recently came across the S77789 display and I was really impressed by it. A relatively high resolution display (in Arduino terms at least) with full colour makes it a really nice display to work with!

While there are some display shields for ESP8266 boards, they usually use very small screens with low resolutions. Using the SMD female header to connect the D1 mini to the shield allowed me to use the large display while keeping the overall size of the board as small as possible.

Why are there 2 rows of headers either side? 2x8 SMD headers are much stronger than 1x8 SMD headers, so I thought it would make sense to use the 2x8 ones. The space was needed for the display anyways.

Is it compatible with the ESP32 D1 Mini? No, I thought it would be better for prototyping if the second row of headers were connected to the inner row, so you could just connect dupont wires directly into the shield. The consequence of this is that ESP32 version of the D1 mini would have GPIO pins connected to each other and some even connected directly to power pins. Let me know if you have interest in a version for the ESP32!

wemos d1 mini tft display made in china

I’ve chose not to remove the SD card slot and attach the enclosed Wemos D1 Mini Pro using a connector instead of soldering directly. It will allow for future replacements and adding another shield, where I want to plant some basic temperature/humidity sensor (possibly remotely connected). The board does not leave much pins free, however more devices can be easily chained through I2C bus.

What you’ll build in less that 20 minutes of soldering is a device, that (with demo sketch for Arduino IDE) is able to connect to your WiFi and fetch current WeatherStation data for pre-defined location. On first start, it will require to calibrate touch display used to control the device.

Even though it might not be visible at first sight, there’s a tremendous amount of work behind this thing (and by ‘thing’ is meant a combination of software and hardware). When you start installing the sample Weather Station sketch, it appears that you need to install some libraries, all of them by Daniel Eichhorn: ESP8266 WeatherStation which is a WeatherUnderground client, Json Streaming Parser that helps keeping low memory profile while getting huge API responses, and Mini Grafx library that implements a VSYNC equivalent through framebuffer for embedded devices.

The Arduino sketch has 438k built so there’s still plenty of room to add more features. However, I’m looking to dive deeply into existing example code in order to reuse as much as possible. There’s NNTP, visual WiFi display, display carousel, icons, fonts, colours and last but not least the touch screen support.

wemos d1 mini tft display made in china

In the previous article (“WiFi OLED Mini Weather Station with ESP8266“) I have used the OLED kit from https://blog.squix.org. And as promised, this time it is about the “ESP8266 WiFi Color Display Kit”:

I had ordered both because I thought that the Color Display kit is needs the other kit as a base. Well, it turned out that both kits work independently. My bad. Actually this is good, as I have now two independent ESP8266 weather stations :-). An addition to that, they can exchange data (e.g. temperature/humidity) with a server, so that makes them a perfect dual weather station.

This time assembling the kit needs basic soldering skills. With the excellent tutorial by Daniel Eichhorn  (https://blog.squix.org/wifi-color-display-kit) this should be a piece of cake. The only consideration is what kind of headers to use. I opted for the ‘larger but flexible’ approach. That way I can separate the boards if needed.

wemos d1 mini tft display made in china

ILI9341 is a 262,144-color single-chip SOC driver for a-TFT liquid crystal display with resolution of 240RGBx320 dots, comprising a 720-channel source driver, a 320-channel gate driver, 172,800 bytes GRAM for graphic display data of 240RGBx320 dots, and power supply circuit. ILI9341 supports parallel 8-/9-/16-/18-bit data bus MCU interface, 6-/16-/18-bit data bus RGB interface and 3-/4-line serial peripheral interface (SPI). The moving picture area can be specified in internal GRAM by window address function. The specified window area can be updated selectively, so that moving picture can be displayed simultaneously independent of still picture area.

You can find ILI9341-based TFT displays in various sizes on eBay and Aliexpress. The one I chose for this tutorial is 2.2″ length along the diagonal, 240×320 pixels resolution, supports SPI interface, and can be purchased for less than $10.

Note that we will be using the hardware SPI module of the ESP8266 to drive the TFT LCD. The SPI communication pins are multiplexed with I/O pins D5 (SCK), D6 (MISO), and D7 (MOSI). The chip select (CS) and Data/Command (DC) signal lines are configurable through software.

For ILI9341-based TFT displays, there are some options for choosing the library for your application. The most common one is using Bodmer. We will use this library in this tutorial. So go ahead and download the

Configuration of the library font selections, pins used to interface with the TFT and other features is made by editting the User_Setup.h file in the library folder. Fonts and features can easily be disabled by commenting out lines.

Now you are all set to try out tons of really cool built-in examples that come with the library. The following output corresponds to the TFT_Pie_Chart example.

My favorite example is TFT terminal, which implements a simple “Arduino IDE Serial Monitor” like serial receive terminal for monitoring debugging messages from another Arduino or ESP8266 board.

wemos d1 mini tft display made in china

The ESP32 touch sensor development kit, ESP32-Sense Kit, is used for evaluating and developing ESP32 touch sensor system. ESP32-Sense Kit consists of one motherboard and multiple daughterboards. The motherboard contains a display unit, a main control unit and a debug unit. The daughterboards have touch electrodes in different combinations or shapes, such as linear slider, wheel slider, matrix buttons and spring buttons, depending on the application scenarios. Users can design and add their own daughterboards for special usage cases.

ESP-WROOM-32 based development board with SH1106 OLED display (128×64 pixels), RJ-45 Ethernet connector, CAN-bus connector, Micro USB connector, USB-to-UART bridge, LiPo battery connector and charging circuit.

ESP32 development board with ePaper display, TI PCM5102A DAC, ICS43434 MEMS Microphone, CP2102N USB-to-UART bridge, microSD card slot, and LiPo charger.

wemos d1 mini tft display made in china

The WeMos D1 Mini family of boards is one of the latest additions to the ESP8266-based IoT ecosystem. The WeMos D1 Mini Relay Shield includes a high-power SPDT relay that allows you to control electrical devices that run on AC Voltage up to 250VAC or 30VDC.

The WeMos D1 Mini Relay Shield is designed so that pin D1 on the WeMos D1 Mini v2 board is connected to the control side of the relay. This means that setting pin D1 to a HIGH state will power the relay coil and activate the relay (connecting the Normally Open and Common pins). Conversely, setting pin D1 to a LOW state will deactivate the relay.

What makes the WeMos family of development boards for the ESP8266 great is the availability of stackable, plug-and-play shields such as this WeMos D1 Mini Relay Shield. Without much fuss, it"s very easy to connect, control, and monitor a wide variety of electronic components to the ESP8266. The WeMos family is a great solution for building projects quickly using the ESP8266 SoC.

Different users have different applications for the WeMos shields, thus we"ve found that the easiest way to please everyone is to ship the boards with the headers unsoldered. Each board in this kit includes a pair of Male, Female, Long Female pin headers for you to choose. Soldering is required for installing the header pins!

wemos d1 mini tft display made in china

I am using a 1.8 Inch LCD Screen SPI Serial Port Module TFT Color Display Touch Screen ST7735 (128*160) for Arduino”, bought for 9€ from aliexpress.com.

Details: Display Processor: ST7735, Touch Processor: XPT2046, Display Type: ZJY180-TV2.0,128*160, as ESP8266 I am using the WEMOS D1 Mini Pro (v 2.0) https://wiki.wemos.cc/products:d1:d1_mini_pro.

Actually I got the Touchdisplay running at the RPI after a lot of tries – but what do I have on my desk: A big black RPI4 box with a touch-display. Not looking good.

My alternative: I build a tiny Touchdisplay with ESP8266 in a little box with battery, that I can place anywhere. I will communicate via WIFI to my RPI. No black box on the desk, just a cool multifunctional switch and status-display for RPI Remote control. Kind of a long running project – lets see how it goes.

Of course, from china – there is not much documentation. Below some information I found at AliExpress about the display and all contacts at the display have labels. To note: PEN (11) is high, and gets low, when the display is touched – so can be directly linked to the Wemos (see below).

This is a very nice ESP8266 processor, small size and including LiPo charger unit, so any 3.7V battery can be directly attached on it and can be charged via the mini USB. Its Pin-Compatible to the well known WEMOS Mini, that has some interesting soldering-pads on the back:

SLEEP: This connect the Reset and the XPD_DCD – Deep Sleep Wakeup, so the WEMOS can waket-up itself from Deep-Sleep. For easy programming and the serial interface to work, this should not be connected. So do it, before you put it into production

If its running with display connected, but without backlight (BLK to GND), its consuming 0.48 mA (500uA) – what is approx 100 days runtime, 3 month is ok