ARM – Blog eTechPath https://blog.etechpath.com Tue, 03 Jan 2023 12:22:17 +0000 en-US hourly 1 https://wordpress.org/?v=6.5.5 https://blog.etechpath.com/wp-content/uploads/2017/08/BrandLogo12-150x150.png ARM – Blog eTechPath https://blog.etechpath.com 32 32 Interfacing TFT LCD ILI9163C & DHT11 Temperature Sensor with STM32F103 32bit Microcontroller https://blog.etechpath.com/interfacing-tft-lcd-ili9163c-dht11-temperature-sensor-with-stm32f103-32bit-microcontroller/ https://blog.etechpath.com/interfacing-tft-lcd-ili9163c-dht11-temperature-sensor-with-stm32f103-32bit-microcontroller/#respond Sat, 23 Feb 2019 08:21:48 +0000 https://blog.etechpath.com/?p=662 About:

In this project i will teach you how to interface ILI9163C TFT LCD  color display module with STM32F103 Arm cortex microcontroller to display DHT11 temperature sensor value.




ILI9163C : It is a 1.44″ color TFT display with SPI interface. This tft comes very cheap but has lot of impressive futures and support very high speed SPI transfer of about 40Mhz. Available in two variants in market, one with the  black pcb and other one with the red pcb. In this project we will use black pcb.

STM32F103: A 32bit arm cortex high speed microcontroller. This is a very cheap, fast & advanced alternative to Arduino and can be program using Arduino IDE with simple USB bootloader. In this project we will use Black Pill STM32F103 board with USB bootloader.

DHT11: A very famous and widely used temperature & humidity sensor. This sensor uses resistive type NTC temperature measurement component with high performance 8bit microcontroller to provide calibrated digital signal output. It has measurement range of 0 to 50 degree Celsius.




Circuit Diagram:

 



Code:

 /* 
* Project: Interfacing TFT LCD ILI9163C & DHT11 Temperature Sensor with STM32F103 32bit Microcontroller 
* Author: Pranay SS, eTechPath 
* Website: www.etechpath.com 
* Tutorial Link: 
* Video Link: 
*/
  
  
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <TFT_ILI9163C.h>
#include <Fonts/FreeSerifItalic9pt7b.h>
#include <dht11.h>
#define RST PB5
#define DC PB6
#define CS PB7


dht11 DHT11;

#define DHT11PIN PC13

// Definition of colours
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0  
#define WHITE   0xFFFF

float xh = 0;
float yh = 0;
int zh; 


TFT_ILI9163C tft = TFT_ILI9163C(CS, DC, RST);  

void setup() {
  tft.begin();
  tft.drawRect(5,70,118,20,WHITE);
  tft.setCursor(22,79);
  tft.setFont(&FreeSerifItalic9pt7b);
  tft.setTextColor(RED);  
  tft.setTextSize(1);
  tft.print("eTechPath");
  tft.setFont();
  tft.setCursor(10,91);
  tft.setTextColor(WHITE);
  tft.print("www.etechpath.com");
  
}

void loop(){

    int chk = DHT11.read(DHT11PIN);
  if(zh != chk)
  {tft.fillRect(00,15,128,8,BLACK);}
  tft.setCursor(5, 5);
  tft.setTextColor(WHITE);  
  tft.setTextSize(1);
  tft.println("Sensor Status");
  Serial.print("Read sensor: ");
  switch (chk)
  {
    case DHTLIB_OK:
        tft.setCursor(10, 15);
        tft.println("OK");
        Serial.println("OK ");
        break;
    case DHTLIB_ERROR_CHECKSUM:
        tft.setCursor(10, 15);
        tft.println("Checksum Error");
        Serial.println("Checksum error");
        break;
    case DHTLIB_ERROR_TIMEOUT:
        tft.setCursor(10,15);
        tft.println("Time out error");
        Serial.println("Time out error");
        break;
    default:
        tft.setCursor(10,15);
        tft.println("Unknown error");
        Serial.println("Unknown error");
        break;
  }

  float x = DHT11.humidity;
  float y = DHT11.temperature; 

  if (xh != x)
  {tft.fillRect(70,30,30,8,BLACK);
  tft.setCursor(5,30);
  tft.print("Humidity = ");
  tft.print(x);
  tft.println(" (%)");}
  if (yh != y)
  {tft.fillRect(46,50,30,8,BLACK);
  tft.setCursor(5,50);
  tft.print("Temp = ");
  tft.print(y);
  tft.print(" (C) ");}
  Serial.print("Temperature = ");
  Serial.print((float)DHT11.temperature);
  Serial.print(" (C) ");
  delay(500);
  xh = x;
  yh = y;
  zh = chk;
}





Project Images:

Note: Follow bellow tutorial if you want to know, how to burn USB bootloader in STM32 black-pill board.




 

]]>
https://blog.etechpath.com/interfacing-tft-lcd-ili9163c-dht11-temperature-sensor-with-stm32f103-32bit-microcontroller/feed/ 0
How to flash USB bootloader in STM32 black-pill board to program it with Arduino IDE https://blog.etechpath.com/how-to-flash-usb-bootloader-in-stm32-black-pill-board-to-program-it-with-arduino-ide/ https://blog.etechpath.com/how-to-flash-usb-bootloader-in-stm32-black-pill-board-to-program-it-with-arduino-ide/#comments Mon, 12 Nov 2018 10:59:39 +0000 https://blog.etechpath.com/?p=665 About:

STM32 is a 32bit ARM cortex microcontroller and normally we need USB to TTL module or ST-link stick to dump program to its memory. So, here in this project i will teach you how to flash USB bootloader in STM32 microcontroller so that we can program it with direct USB port from Arduino IDE.

Things you will need:

  1. STM32 board. (Black pill or Blue pill)

2. USB to serial converter ( TTL module) (3.3v compatible)

3. 3.3v power supply to power the board (or separate 5v micro USB cable would work )

Circuit Diagram:

Procedure:

Windows

  1. Download the suitable boot-loader binary file from given download link. If you don’t know which binary file will suits your black-pill, then simply trace its LED pin track and notice its pin number. This same pin number binary file you will have to flash into your board.
  2. Put your black-pill board on serial programming mode by setting boot0 pin high and boot1 pin low.
  3. Connect black-pill board to serial converter as shown in circuit diagram and connect serial connector to your computer USB port.
  4. Download Flash Loader Demonstrator program to flash the boot-loader into black-pill.
  5. Open up Flash Loader Demonstrator and follow the steps. Reference snapshots are as shown bellow..
  6. After finishing flashing process you will get conformation message as shown in the reference image. After that you need to change the board programming mode to normal by replacing the jumpers as previous, without switching off the board power.

Linux

Follow step 1 to 3 same as windows procedure and then use the following command to flash the boot-loader binary into your board. Change the path and file name according to your binary file.

Change the serial programming mode to normal by changing the jumper setting as previous, without switching of the power supply.

Reference Images:

Downloads:

]]>
https://blog.etechpath.com/how-to-flash-usb-bootloader-in-stm32-black-pill-board-to-program-it-with-arduino-ide/feed/ 2