
//Author Danny van den brande.#include "DHT.h"#include // Core graphics library#include // Hardware-specific library#include // BEGIN CLOCK#include //clock module DS1302#include //Need for clock module#define DS1302_SCLK_PIN 21// Arduino pin for the Serial Clock//PIN 21 (SCLK_PIN) = CLK on CLOCK and SCL on arduino#define DS1302_IO_PIN 20// Arduino pin for the Data I/O//PIN 20 (IO_PIN) = DAT on CLOCK and SDA on arduino#define DS1302_CE_PIN 19// Arduino pin for the Chip Enable//PIN 19 (CE_PIN) = RST on CLOCK and TX1 on arduino for this you can define any free Digital pin.#define bcd2bin(h,l) (((h)*10) + (l))#define bin2bcd_h(x) ((x)/10)#define bin2bcd_l(x) ((x)%10)#define DS1302_SECONDS 0x80#define DS1302_MINUTES 0x82#define DS1302_HOURS 0x84#define DS1302_DATE 0x86#define DS1302_MONTH 0x88#define DS1302_DAY 0x8A#define DS1302_YEAR 0x8C#define DS1302_ENABLE 0x8E#define DS1302_TRICKLE 0x90#define DS1302_CLOCK_BURST 0xBE#define DS1302_CLOCK_BURST_WRITE 0xBE#define DS1302_CLOCK_BURST_READ 0xBF#define DS1302_RAMSTART 0xC0#define DS1302_RAMEND 0xFC#define DS1302_RAM_BURST 0xFE#define DS1302_RAM_BURST_WRITE 0xFE#define DS1302_RAM_BURST_READ 0xFF#define DS1302_D0 0#define DS1302_D1 1#define DS1302_D2 2#define DS1302_D3 3#define DS1302_D4 4#define DS1302_D5 5#define DS1302_D6 6#define DS1302_D7 7#define DS1302_READBIT DS1302_D0// READBIT=1: read instruction// Bit for clock (0) or ram (1) area,// called R/C-bit (bit in address)#define DS1302_RC DS1302_D6// Seconds Register#define DS1302_CH DS1302_D7// 1 = Clock Halt, 0 = start// Hour Register#define DS1302_AM_PM DS1302_D5// 0 = AM, 1 = PM#define DS1302_12_24 DS1302_D7// 0 = 24 hour, 1 = 12 hour// Enable Register#define DS1302_WP DS1302_D7// 1 = Write Protect, 0 = enabled#define DS1302_ROUT0 DS1302_D0#define DS1302_ROUT1 DS1302_D1#define DS1302_DS0 DS1302_D2#define DS1302_DS1 DS1302_D2#define DS1302_TCS0 DS1302_D4#define DS1302_TCS1 DS1302_D5#define DS1302_TCS2 DS1302_D6#define DS1302_TCS3 DS1302_D7// Bit for reading (bit in address)#define DS1302_READBIT DS1302_D0// READBIT=1: read instruction#define DHTPIN 16// what pin we"re connected to#define DHTTYPE DHT11// DHT 11#define DS1302_READBIT DS1302_D0// READBIT=1: read instruction#define LCD_CS A3// Chip Select goes to Analog 3#define LCD_CD A2// Command/Data goes to Analog 2#define LCD_WR A1// LCD Write goes to Analog 1#define LCD_RD A0// LCD Read goes to Analog 0#define LCD_RESET A4// Can alternately just connect to Arduino"s reset pin// Assign human-readable names to some common 16-bit color values:#define BLACK 0x0000#define BLUE 0x001F#define RED 0xF800#define GREEN 0x07E0#define CYAN 0x07FF#define MAGENTA 0xF81F#define YELLOW 0xFFE0#define WHITE 0xFFFF// OBJECTS LCD ET DHTAdafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);DHT dht(DHTPIN, DHTTYPE);float hprev, tprev, hicprev;int moisture = 0;int moisture1 = 0;int moisture2 = 0;int moisture3 = 0;int moisture4 = 0;int moisture5 = 0;int sensorValue1;int sensorValue2;int sensorValue3;int sensorValue4;int sensorValue5;int sensorValue;int relay = 35;int relay1 = 36;int relay2 = 37;int relay3 = 38;int relay4 = 39;int relay5 = 40;// Structure for the first 8 registers.// These 8 bytes can be read at once with// the "clock burst" command.// Note that this structure contains an anonymous union.// It might cause a problem on other compilers.typedef struct ds1302_struct{uint8_t Seconds:4; // low decimal digit 0-9uint8_t Seconds10:3; // high decimal digit 0-5uint8_t CH:1; // CH = Clock Haltuint8_t Minutes:4;uint8_t Minutes10:3;uint8_t reserved1:1;union{struct{uint8_t Hour:4;uint8_t Hour10:2;uint8_t reserved2:1;uint8_t hour_12_24:1; // 0 for 24 hour format} h24;struct{uint8_t Hour:4;uint8_t Hour01:1;uint8_t AM_PM:1; // 0 for AM, 1 for PMuint8_t reserved2:1;uint8_t hour_12_24:1; // 1 for 12 hour format} h12;};uint8_t Date:4; // Day of month, 1 = first dayuint8_t Date10:2;uint8_t reserved3:2;uint8_t Month:4; // Month, 1 = Januaryuint8_t Month10:1;uint8_t reserved4:3;uint8_t Day:3; // Day of week, 1 = first day (any day)uint8_t reserved5:5;uint8_t Year:4; // Year, 0 = year 2000uint8_t Year10:4;uint8_t reserved6:7;uint8_t WP:1; // WP = Write Protect};void setup(){ds1302_struct rtc;Serial.begin(9600);// Serial.println(F("BLUECORE TECH"));pinMode (relay, OUTPUT);pinMode (relay1, OUTPUT);pinMode (relay2, OUTPUT);pinMode (relay3, OUTPUT);pinMode (relay4, OUTPUT);pinMode (relay5, OUTPUT);// digitalWrite (relay, HIGH);#ifdef USE_ADAFRUIT_SHIELD_PINOUT// Serial.println(F("Using Adafruit 2.8\" TFT Arduino Shield Pinout"));#else// Serial.println(F("Using Adafruit 2.8\" TFT Breakout Board Pinout"));#endif// Serial.print("TFT size is "); Serial.print(tft.width()); Serial.print("x"); Serial.println(tft.height());//tft.reset();uint16_t identifier = tft.readID();if(identifier == 0x9325) {// Serial.println(F("Found ILI9325 LCD driver"));} else if(identifier == 0x9327) {// Serial.println(F("Found ILI9327 LCD driver"));} else if(identifier == 0x9328) {// Serial.println(F("Found ILI9328 LCD driver"));} else if(identifier == 0x7575) {// Serial.println(F("Found HX8347G LCD driver"));} else if(identifier == 0x9341) {// Serial.println(F("Found ILI9341 LCD driver"));} else if(identifier == 0x8357) {// Serial.println(F("Found HX8357D LCD driver"));} else if(identifier == 0x0154) {// Serial.println(F("Found S6D0154 LCD driver"));}tft.begin(identifier);iniText();dht.begin();//CLOCK MODULE START// Start by clearing the Write Protect bit// Otherwise the clock data cannot be written// The whole register is written,// but the WP-bit is the only bit in that register.DS1302_write (DS1302_ENABLE, 0);// Disable Trickle Charger.DS1302_write (DS1302_TRICKLE, 0x00);// Remove the next define,// after the right date and time are set.// #define SET_DATE_TIME_JUST_ONCE //= 300)digitalWrite (relay, HIGH); //TURN ON/OFF OFF RELAY 0 for watering pumpelsedigitalWrite (relay, LOW);//SENSOR 1 set your sensor here!}// OPTIONAL SENSORS PLACES FOR VALUES ON SCREEN BEGINif (sensorValue) {tft.setTextSize(2);tft.setCursor(98, 127);tft.setTextColor(GREEN);tft.fillRect(93,117,67,34,BLACK);tft.println (moisture1/1.01);if (sensorValue1 >= 300)digitalWrite (relay1, HIGH); //TURN ON/OFF OFF RELAY 1 for watering pumpelsedigitalWrite (relay1, LOW);//SENSOR 2 set your sensor here!}if (sensorValue) {tft.setTextSize(2);tft.setCursor(98, 164);tft.setTextColor(GREEN);tft.fillRect(93,154,67,34,BLACK);tft.println (moisture2/1.01);if (sensorValue2 >= 300)digitalWrite (relay2, HIGH); //TURN ON/OFF OFF RELAY 2 for watering pumpelsedigitalWrite (relay2, LOW);//SENSOR 3 set your sensor here!} // BEGIN SECTION 2 - right sectionif (sensorValue) {tft.setCursor(10,60);tft.setTextSize(2);//tft.println ("BODEM VOCHT%");tft.setCursor(256, 90);tft.setTextColor(GREEN);tft.fillRect(250,80,67,34,BLACK);tft.println (moisture3/1.01);if (sensorValue3 >= 300)digitalWrite (relay3, HIGH); //TURN ON/OFF OFF RELAY 3 for watering pumpelsedigitalWrite (relay3, LOW);//SENSOR 4 set your sensor here!}if (sensorValue) {tft.setCursor(10,60);tft.setTextSize(2);//tft.println ("BODEM VOCHT%");tft.setCursor(256, 127);tft.setTextColor(GREEN);tft.fillRect(250,117,67,34,BLACK);tft.println (moisture4/1.01);if (sensorValue4 >= 300)digitalWrite (relay4, HIGH); //TURN ON/OFF OFF RELAY 4 for watering pumpelsedigitalWrite (relay4, LOW);//SENSOR 5 set your sensor here!}if (sensorValue) {tft.setCursor(10,60);tft.setTextSize(2);//tft.println ("BODEM VOCHT%");tft.setCursor(256, 164);tft.setTextColor(GREEN);tft.fillRect(250,154,67,34,BLACK);tft.println (moisture5/1.01);if (sensorValue5 >= 300)digitalWrite (relay5, HIGH); //TURN ON/OFF OFF RELAY 5 for watering pumpelsedigitalWrite (relay5, LOW);//SENSOR 6 set your sensor here!}// OPTIONAL SENSORS PLACES ON SCREEN ENDif (hprev != h) {tft.setCursor(10, 25);tft.setTextSize(3);tft.setTextColor(CYAN);tft.fillRect(3,25,103,25,BLACK);tft.print(h);hprev = h;}if (tprev != t) {tft.setCursor(118, 25);tft.setTextSize(3);tft.setTextColor(RED);tft.fillRect(111,25,101,25,BLACK);tft.print(t);tprev = t;}if (hicprev != hic) {tft.setCursor(225, 25);tft.setTextSize(3);tft.setTextColor(YELLOW);tft.fillRect(217,25,100,25,BLACK);tft.print(hic);hicprev = hic;}ds1302_struct rtc;char buffer[80]; // the code uses 70 characters.// Read all clock data at once (burst mode).DS1302_clock_burst_read( (uint8_t *) &rtc);//+++++++++++ BEGIN TEXT CLOCK TEXT+++++++++++tft.setTextSize(2);tft.setTextColor(GREEN);tft.setCursor(13, 220);tft.fillRect(3,215,115,25,BLACK);sprintf( buffer, "%02d:%02d:%02d ", \bcd2bin( rtc.h24.Hour10, rtc.h24.Hour), \bcd2bin( rtc.Minutes10, rtc.Minutes), \bcd2bin( rtc.Seconds10, rtc.Seconds));tft.print(buffer);tft.setTextSize(1);tft.setTextColor(BLACK);tft.setCursor(127, 218);tft.fillRect(122,215,195,25,GREEN);sprintf(buffer, "%d,%d," \"Dag %d van week,%d", \bcd2bin( rtc.Date10, rtc.Date), \bcd2bin( rtc.Month10, rtc.Month), \rtc.Day, \2000 + bcd2bin( rtc.Year10, rtc.Year));tft.println( buffer);tft.setTextSize(1);tft.setTextColor(BLACK);tft.setCursor(127, 230);// tft.fillRect(122,215,194,25,GREEN);sprintf(buffer, "%d,%d," \"Day %d of week,%d", \bcd2bin( rtc.Month10, rtc.Month), \bcd2bin( rtc.Date10, rtc.Date), \rtc.Day, \2000 + bcd2bin( rtc.Year10, rtc.Year));tft.println( buffer);//+++++++++++ EINDE CLOCK +++++++++++if(timeStatus() != timeSet) {tft.setTextSize(1.5);tft.setTextColor(BLACK);tft.setCursor(28, 198);///ERROR TEXT need to be coded correctlytft.fillRect(3,191,157,19,RED);//tft.print(F("CLOCK ERROR: SYNC!"));// return micros() - start;delay(1000);}}unsigned long iniText() {// unsigned long start = micros();tft.fillScreen(BLACK);tft.setRotation(3);tft.setTextSize(1);tft.setTextColor(WHITE);tft.setCursor(15,5);tft.println("Humidity %");tft.setCursor(119,10);tft.println("Temperature oC");tft.setCursor(235,5);tft.println("Heat Index"); //Gevoels temperatuurtft.setCursor(122,2);tft.println ("BlueCore TECH"); //Put your NAME here COMPANY NAMEtft.setCursor(190,198);tft.println ("ArduinoSensors.NL"); //Put your NAME here COMPANY NAME website//TEXT SENSORStft.setCursor(10,90);tft.setTextColor(WHITE);tft.println ("SENSOR:1");tft.setCursor(10,127);tft.println ("SENSOR:2");tft.setCursor(10,164);tft.println ("SENSOR:3");tft.setCursor(170,90);tft.println ("SENSOR:4");tft.setCursor(170,127);tft.println ("SENSOR:5");tft.setCursor(170,164);tft.println ("SENSOR:6");// end TEXT SENSORS//Interface DESIGN BEGINtft.fillRect(0,0,345,1,WHITE); //Top line header whitetft.fillRect(0,19,345,2,WHITE); //Top line header 2 whitetft.fillRect(0,20,345,5,BLACK); //Top line header blacktft.fillRect(106,0,5,50,WHITE); //center vertical line header lefttft.fillRect(212,0,5,50,WHITE); //center vertical line header righttft.fillRect(0,50,345,5,WHITE); //bottom line header.tft.fillRect(160,78,5,135,WHITE);//center vertical linetft.fillRect(317,0,5,240,WHITE);//center vertical line righttft.fillRect(0,0,3,240,WHITE);//center vertical line lefttft.fillRect(0,210,345,5,WHITE);//BOTTOM LINE Footertft.fillRect(118,215,4,25,WHITE);//BOTTOM LINE Footer2 vertical smalltft.fillRect(0,210,345,5,WHITE);//BOTTOM LINE Footertft.fillRect(0,78,345,2,WHITE);//top line center screentft.fillRect(0,115,345,2,WHITE);//line 2 center screentft.fillRect(0,152,345,2,WHITE);//line 3 center screentft.fillRect(0,189,345,2,WHITE);//line 4 center screen//Interface DESIGN END// return micros() - start;}void DS1302_clock_burst_read( uint8_t *p)///BEGIN CLOCK MODULE PART2{int i;_DS1302_start();// Instead of the address,// the CLOCK_BURST_READ command is issued// the I/O-line is released for the data_DS1302_togglewrite( DS1302_CLOCK_BURST_READ, true);for( i=0; i<8; i++){*p++ = _DS1302_toggleread();}_DS1302_stop();}// --------------------------------------------------------// DS1302_clock_burst_write//// This function writes 8 bytes clock data in burst mode// to the DS1302.//// This function may be called as the first function,// also the pinMode is set.//void DS1302_clock_burst_write( uint8_t *p){int i;_DS1302_start();// Instead of the address,// the CLOCK_BURST_WRITE command is issued.// the I/O-line is not released_DS1302_togglewrite( DS1302_CLOCK_BURST_WRITE, false);for( i=0; i<8; i++){// the I/O-line is not released_DS1302_togglewrite( *p++, false);}_DS1302_stop();}// --------------------------------------------------------// DS1302_read//// This function reads a byte from the DS1302// (clock or ram).//// The address could be like "0x80" or "0x81",// the lowest bit is set anyway.//// This function may be called as the first function,// also the pinMode is set.//uint8_t DS1302_read(int address){uint8_t data;// set lowest bit (read bit) in addressbitSet( address, DS1302_READBIT);_DS1302_start();// the I/O-line is released for the data_DS1302_togglewrite( address, true);data = _DS1302_toggleread();_DS1302_stop();return (data);}// --------------------------------------------------------// DS1302_write//// This function writes a byte to the DS1302 (clock or ram).//// The address could be like "0x80" or "0x81",// the lowest bit is cleared anyway.//// This function may be called as the first function,// also the pinMode is set.//void DS1302_write( int address, uint8_t data){// clear lowest bit (read bit) in addressbitClear( address, DS1302_READBIT);_DS1302_start();// don"t release the I/O-line_DS1302_togglewrite( address, false);// don"t release the I/O-line_DS1302_togglewrite( data, false);_DS1302_stop();}// --------------------------------------------------------// _DS1302_start//// A helper function to setup the start condition.//// An "init" function is not used.// But now the pinMode is set every time.// That"s not a big deal, and it"s valid.// At startup, the pins of the Arduino are high impedance.// Since the DS1302 has pull-down resistors,// the signals are low (inactive) until the DS1302 is used.void _DS1302_start( void){digitalWrite( DS1302_CE_PIN, LOW); // default, not enabledpinMode( DS1302_CE_PIN, OUTPUT);digitalWrite( DS1302_SCLK_PIN, LOW); // default, clock lowpinMode( DS1302_SCLK_PIN, OUTPUT);pinMode( DS1302_IO_PIN, OUTPUT);digitalWrite( DS1302_CE_PIN, HIGH); // start the sessiondelayMicroseconds( 4); // tCC = 4us}// --------------------------------------------------------// _DS1302_stop//// A helper function to finish the communication.//void _DS1302_stop(void){// Set CE lowdigitalWrite( DS1302_CE_PIN, LOW);delayMicroseconds( 4); // tCWH = 4us}// --------------------------------------------------------// _DS1302_toggleread//// A helper function for reading a byte with bit toggle//// This function assumes that the SCLK is still high.//uint8_t _DS1302_toggleread( void){uint8_t i, data;data = 0;for( i = 0; i <= 7; i++){// Issue a clock pulse for the next databit.// If the "togglewrite" function was used before// this function, the SCLK is already high.digitalWrite( DS1302_SCLK_PIN, HIGH);delayMicroseconds( 1);// Clock down, data is ready after some time.digitalWrite( DS1302_SCLK_PIN, LOW);delayMicroseconds( 1); // tCL=1000ns, tCDD=800ns// read bit, and set it in place in "data" variablebitWrite( data, i, digitalRead( DS1302_IO_PIN));}return( data);}// --------------------------------------------------------// _DS1302_togglewrite//// A helper function for writing a byte with bit toggle//// The "release" parameter is for a read after this write.// It will release the I/O-line and will keep the SCLK high.//void _DS1302_togglewrite( uint8_t data, uint8_t release){int i;for( i = 0; i <= 7; i++){// set a bit of the data on the I/O-linedigitalWrite( DS1302_IO_PIN, bitRead(data, i));delayMicroseconds( 1); // tDC = 200ns// clock up, data is read by DS1302digitalWrite( DS1302_SCLK_PIN, HIGH);delayMicroseconds( 1); // tCH = 1000ns, tCDH = 800nsif( release && i == 7){// If this write is followed by a read,// the I/O-line should be released after// the last bit, before the clock line is made low.// This is according the datasheet.// I have seen other programs that don"t release// the I/O-line at this moment,// and that could cause a shortcut spike// on the I/O-line.pinMode( DS1302_IO_PIN, INPUT);// For Arduino 1.0.3, removing the pull-up is no longer needed.// Setting the pin as "INPUT" will already remove the pull-up.// digitalWrite (DS1302_IO, LOW); // remove any pull-up}else{digitalWrite( DS1302_SCLK_PIN, LOW);delayMicroseconds( 1); // tCL=1000ns, tCDD=800ns}}///////////////////////////// END CLOCK MODULE part 2}

The DHT11 is an all-in-one temperature and humidity digital sensor that includes an internal resistive moisture measurement element and an NTC temperature measurement element and is connected to a high performance 8-bit micro-controller.
A simple external circuit connection is all that is needed to collect local temperature and humidity in real time. the DHT11 communicates with controllers such as micro-controllers using a simple single bus, requiring only one I/O port.
The sensor internal temperature and humidity data 40Bit is transmitted to the micro-controller at once, and the data is checked by means of checksum, which effectively ensures the accuracy of data transmission.
The Arduino Uno is an ATmega328P based micro-controller board. It has 14 digital input/output pins (6 of which can be used as PWM outputs), 6 analog inputs, a 16MHz ceramic resonator (CSTCE16M0V53-R0), a USB connection, a power socket, an ICSP header, and a reset button.
To develop based on our STONE TFT LCD, you first need to use to an upper computer development software STONE designer, in this upper computer, all screen-related settings are carried out in this upper computer, so how to download it, click the link below to go to the official website:https://www.stoneitech.com/support/download
First add a button control to the temperature, select “button” control, and draw the corresponding area; then in the right feature settings, set the button effect, here select page 2, that is, when the button is pressed, the corresponding area to display the effect of page 2; then select the page switch function, here select the No. 4 page, that is, when this button is pressed, the page will immediately switch to page 4, that is, the temperature display interface.
Under the temperature display interface, a text display control is needed to display the real-time temperature data passed by the Arduino, so it is necessary to add a data variable control, as shown in the following figure.
The STONE TFT LCD sometimes needs to control the micro-controller to achieve a two-way interaction, which is also the case here, and needs to implement the start and stop acquisition function, using the START button as an example.

The main algoritm is taking the recent temperature and humidity values from related environment which the sensor has located, we see the results on the display. Since the display is multicolored, I add colored response when it is hot or cold. These are:if (DHT.temperature > 30){

Innovation, excellent and reliability are the core values of our business. These principles today extra than ever form the basis of our success as an internationally active mid-size company for 5 Inch Tft Display Arduino, Bare Lcd Panel, Lcd Displays, Large Character Lcd Display,Tft Touch Screen Display. With advantage of industry management, the business has generally been committed to supporting prospects to become the current market leader in their respective industries. The product will supply to all over the world, such as Europe, America, Australia,Anguilla, Iceland,Vietnam, Karachi.Over the years, with high-quality solutions, first- class service, ultra-low prices we win thee trust and favor of customers. Nowadays our products sell all over the domestic and abroad. Thanks for the regular and new customers support. We offer high quality product and competitive price, welcome the regular and new customers cooperate with us!

WF43WTYBEDST0 is a 4.3-inch IPS TFT-LCD display with a Resistive Touch screen, made of resolution 480x272 pixels. This module is built-in with BT816 controller IC, and it supports SPI and QSPI interfaces. The QSPI interface can achieve four times data rate compared with the current SPI interface and make a smoother display accordingly. The series of BT815/6 controller IC with EVE (Embedded Video Engine) technology simplifies the system architecture, Eve technology is a revolutionary concept that utilizes an object-oriented approach to creating high-quality human-machine interfaces (HMI). This new technology supports display, audio and touch, enabling engineers to quickly and efficiently design HMI and provide a powerful solution for high-resolution displays that reduce material costs.
We offer the TFT module WF43WTYBEDST0#000 designed to support the Arduino board. The control signal for WF43WTYBEDST0 is 3.3V; it has a built-in storage device (FLASH 32M). The control signal of WF43WTYBEDST0#000 is 5V; without a built-in storage device (FLASH); but with a MicroSD Socket, pins CON1~CON4 are designed for SPI control (such as for Arduino Uno Rev3). WF43W model can be operating at temperatures from -20℃ to+ 70℃ and storage temperatures from -30℃ to +80℃.

We have thousands of standard products that are in stock and available from our Seattle, WA and Hong Kong warehouses to support fast product development and preproduction without MOQ. The stock covers TN, STN LCD display panels, COB, COG character LCD display, graphic LCD display, PMOLED, AMOLED display, TFT display, IPS display, high brightness and transflective, blanview sunlight readable display, super high contrast ratio display, lightning fast response displays, efficient low power consumption display, extreme temperature range display, HMI display, HDMI display, Raspberry Pi Display, Arduino display, embedded display, capacitive touch screen, LED backlight etc. Customers can easily purchase samples directly from our website to avoid time delays with setting up accounts and credit terms and shipping within 24 hours.
Many of our customers require customized OEM display solutions. With over two decades of experience, we apply our understanding of available display solutions to meet our customer’s requirements and assist from project concept to mass production. Using your ideas and requirements as a foundation, we work side by side with you to develop ideas/concepts into drawings, build prototypes and to final production seamlessly. In order to meet the fast changing world, we can provide the fastest turnaround in the industry, it takes only 3-4 weeks to produce LCD panels samples and 4-6 weeks for LCD display module, TFT LCD, IPS LCD display, and touch screen samples. The production time is only 4-5 weeks for LCD panels and 5-8 weeks for LCD display module, TFT LCD, IPS LCD display, and touch screen.

It is known that the cooling machine is widely used in the industry. In this paper, I will show you how to use STONE HMI LCD as the display to combine the temperature sensor with Arduino esp8266 cooler application; the communication between the temperature sensor and Arduino esp8266 is realized by single line communication, and the communication mode between esp8266 and stone intelligent display is serial communication.
This time, the function of the cooler is divided into automatic mode and manual mode. In the automatic mode, the temperature threshold can be set on the STONE TFT LCD screen. We can obtain the current ambient temperature through the DS18B20 sensor and then compare it with the set temperature threshold. When it is higher than the current ambient temperature range, esp8266 starts the stepper motor as a cooling function, and we can also stop the cooling through the stop button; in the manual mode, we can use the STONE TFT LCD directly sets the rotation speed and rotation times of the cooling motor. After the setting is completed, click the start button. Similarly, you can click the stop button to stop in advance.
In terms of device selection, this application needs to use a temperature sensor to detect the environmental temperature change. An esp8266 is used as the main control, a stepping motor, and an LED indicator. The most important is the STONE TFT LCD screen, which is used to communicate with the MCU.
The temperature sensor I use DS18B20, DS18B20 is a commonly used digital temperature sensor, its output is a digital signal, with small size, low hardware overhead, strong anti-interference ability, high precision characteristics, development has certain difficulty.
To complete the code development of esp32, Arduino is used to develop and compile. First, you need to install the environment and enter the Arduino official website: https://www.arduino.cc/en/Main/Software. download the version for your own platform.
After installation, we will build a new project. Here we will write the logic code, and then formulate the serial port protocol with stone TFT LCD, mainly to receive BUF.

The 6cm TFT touch-screen display TS1 is basically an Arduino shield, which can be mounted on top of the Arduino Uno board. This is one of the advantages of this display because you don’t need any external wires to interface with Arduino.
It is the heart of the project. Temperature and humidity data, TFT touch input display, and device control inputs are processed through Arduino programming.
This temperature and humidity sensor gives more accurate readings as compared to the popular DHT11 sensor. With this sensor, you can easily program to get humidity in %, and temperature in °C and °F units. In this project, its output pin is connected to pin 11 of the Arduino board.
The module has a filtering capacitor and pull-up resistor inbuilt, but for the sensor, you must use them externally, if required. Otherwise, the performance of both is same. The sensor is also factory calibrated and hence easy to interface with microcontrollers. It can measure temperature from -40°C to +80°C and humidity from 0% to 100%.
This electromechanical sugar-cube, a single-channel relay is used to switch on/off the electrical device connected across its COM and NO terminals. You can use a readily available single-channel relay module. In that case, you can connect digital pin 11 of Arduino to IN pin of the relay module.
The circuit diagram of the weather station with device control is shown below. It comprises Arduino Uno Board, DHT22 temperature and humidity sensor, BC548 transistor T1, a 5V single changeover relay, light-emitting diode LED1, and resistors R1 and R2.
A 9V-12V DC power supply is used to power the Arduino board. The 5V supply from the Arduino board powers the touch-screen, DHT22 sensor, and BC548 device driver sections.
The code (weather_light_control.ino) for this project is written in Arduino programming language. The project requires specific libraries for DHT22 and a touch-screen display such as DHT.h, SPFD5408_Adafruit_GFX.h, SPFD5408_Adafruit_TFTLCD.h, and SPFD5408_TouchScreen.h
After uploading the code to the Arduino Uno board, mount the TFT touch-screen on top of the Arduino board through the header pins already provided on the Arduino board. You can carefully place it with a slight push on the touch-screen from the top. Ensure the correct positions of the male header pins from the touch-screen display are inserted into the corresponding female pins on the Arduino board.
The working of the circuit is simple. After uploading the code to the Arduino Uno board and connecting all the components, as shown in the circuit, switch on the circuit. You will see the main panel on the TFT touch-screen, as shown below. Touch the Device Control option using a stylus or your fingertip, to turn on or turn off the appliance/device such as a tube light or air-conditioner. Otherwise, touch on the Weather Station option to check the current temperature and humidity.
If you touch the ‘Weather Station’ option, it will take you to another screen, as shown below. You can see the current humidity and temperature values captured by the DHT22 sensor.
The humidity here is basically the relative humidity expressed in percentage, which represents the amount of water vapor in the air at a given temperature compared with the maximum possible water vapor at that same temperature. Here the temperature values are read in both °C and °F units. So, no conversion is required.
Since most of the Arduino pins are used by the TFT touch-screen display, you need external wires to solder at digital pin 11 of Arduino for the relay driver and analog pin A5 for the DHT22.
You also need to solder 5V and GND pins of Arduino for power supply to the Veroboard. If you are using the DHT22 sensor instead of the module, make sure you connect a 5-kilo-ohm pull-up resistor at its output pin, otherwise, you may not get the correct temperature and humidity readings.
Also, note that some 6cm TFT touch-screen displays may not work. So, it is recommended to use the model that we used here. If you want to control an appliance like a cooler or AC, you need to replace the sugar-cube relay with a high-power relay having contact ratings above 16A.

This is a 2.8” TFT Resistive Touchscreen Display. The module, with a resolution of 320x240, adopts ILI9341 as driver IC and SPI (4-line) communication mode. The board integrates touch chip XPT2046, which converts the touch data collected by the AD to SPI data. The module also integrates an SD card slot allowing you to easily read the full-color bitmap. There are two modes of wiring supplied, normal pin header wiring and GDI. The latter one requires to work with a main controller board with a GDI interface (e.g. FireBeetle-M0). You can use it with only one FPC line plugging in, which reduces the complexity of the wiring. Furthermore, it features high resolution, wide viewing angle, and simple wiring, which can be used in all sorts of display applications, such as, IoT controlling device, game console, desktop event notifier, touch interface, etc.