Ana Sayfa STM32F429 Discovery STM32F429 Discovery ile Akıllı Dijital Termometre

STM32F429 Discovery ile Akıllı Dijital Termometre

6 min read
2
0
1,111

Merhaba arkadaşlar,

Bu çalışmamızda,STM32F429 Discovery ile Dallas’ın DS18B20 sıcaklık sensörünü kullanarak basit bir akıllı dijital termometre yapmaya çalıştık.

Bu uygulamamızda sisteme basit de olsa akıllı bir özellik katmak istedik.Bunun içinde,30 derece altında ekranda beyaz bir şerit kaymaktadır.30 derece üstünde ise turuncu bir şerit kaymaktadır.Sizler çok daha değişik uygulamalar düşünebilirsiniz.Videomuzda da biraz bahsettik.Mesala;sıcaklık yükseldiği zaman bir fan çalışabilir,sıcaklık arttığı zaman sesli bir uyarı verdirebilirsiniz.Bu örneklerimizi arttırmamız mümkündür.Temel olarak sistem bundan ibarettir.Dilerseniz kullanılan malzemelere geçelim.

Kullanılan Malzemeler

  • STM32F429 Discovery
  • DS18B20 Sıcaklık Sensörü
  • Jumper Kablolar
  • Bread Board

Sensör hakkında detaylı bilgiyi buradan öğrenebilirsiniz.

DS18B20

 

 

 

 

 

 

 

 

 

 

STM32f429 kartımız ile sensörümüz arasındaki gerekli bağlantılar şekilde ayrıntılı olarak gösterilmektedir.

main.c kodları


#include "defines.h"
#include "stm32f4xx.h"

#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
#include "tm_stm32f4_delay.h"
#include "tm_stm32f4_onewire.h"
#include "tm_stm32f4_usart.h"
#include "tm_stm32f4_ds18b20.h"
#include "tm_stm32f4_fonts.h"
#include "tm_stm32f4_ili9341_ltdc.h"
#include "tm_stm32f4_disco.h"
#include <stdio.h>

#define EXPECTING_SENSORS 1

int main(void) {
char buf[40];
uint8_t devices, i, j, count;
uint8_t device[EXPECTING_SENSORS][8];
float temps[EXPECTING_SENSORS];

SystemInit();

TM_DELAY_Init();

TM_OneWire_Init();
TM_ILI9341_Init();
TM_ILI9341_Rotate(TM_ILI9341_Orientation_Landscape_2);
TM_ILI9341_Fill(ILI9341_COLOR_RED);
TM_ILI9341_Puts(75, 160, "www.roboturka.com", &TM_Font_11x18, ILI9341_COLOR_RED, ILI9341_COLOR_WHITE);
TM_ILI9341_Puts(110, 200, "Bilal Kaya", &TM_Font_11x18, ILI9341_COLOR_RED, ILI9341_COLOR_WHITE);
TM_ILI9341_Puts(72, 30, "Dijital Termometre", &TM_Font_11x18, ILI9341_COLOR_RED, ILI9341_COLOR_WHITE);

devices = TM_OneWire_First();
count = 0;
while (devices) {
count++;

TM_OneWire_GetFullROM(&device[count - 1][0]);

devices = TM_OneWire_Next();
}

for (i = 0; i < count; i++) {
TM_DS18B20_SetResolution(&device[i][0], TM_DS18B20_Resolution_12bits);
}

TM_DS18B20_SetAlarmHighTemperature(&device[0][0], 25);

TM_DS18B20_DisableAlarmTemperature(&device[1][0]);

while (1) {

TM_DS18B20_StartAll();

while (!TM_DS18B20_AllDone());

for (i = 0; i < count; i++) {

TM_DS18B20_Read(&device[i][0], &temps[i]);

sprintf(buf, "Sicaklik: %3.5f", temps[i]);
TM_ILI9341_Puts(72, 90, buf, &TM_Font_11x18, ILI9341_COLOR_WHITE, ILI9341_COLOR_RED);
if(temps[i]<30)
{
TM_ILI9341_Puts(30, 120, "Sicaklik Normal Gibi :-)", &TM_Font_11x18, ILI9341_COLOR_WHITE, ILI9341_COLOR_WHITE);
TM_ILI9341_Puts(30, 120, "Sicaklik Artiyor Gibi :-)", &TM_Font_11x18, ILI9341_COLOR_RED, ILI9341_COLOR_RED);
}
if(temps[i]>30)
{
TM_ILI9341_Puts(30, 120, "Sicaklik Artiyor Gibi :-)", &TM_Font_11x18, ILI9341_COLOR_ORANGE, ILI9341_COLOR_ORANGE);

TM_ILI9341_Puts(30, 120, "Sicaklik Normal Gibi :-)", &TM_Font_11x18, ILI9341_COLOR_RED, ILI9341_COLOR_RED);

}
}

Delayms(1000);
}
}

Çalışma Videosu

Umarız faydalı bir çalışma olmuştur.

Saygılar.

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Bilal Kaya
Daha Fazla Göster -  STM32F429 Discovery

2 Yorumlar

  1. ömer

    23 Haziran 2015 at 14:57

    lütfen burda kulllandığınız kutubhaneleri keıle nasıl eklediğinizi anlatırmısınız
    kutubhanalerı eklıyorum solda kırmızı çarpı çıkıyor
    bu sorunu nasıl çözebiliriz

    Reply

    • Bilal Kaya

      Bilal Kaya

      23 Haziran 2015 at 18:13

      Tamam Ömer,isteğin dikkate alınmıştır.
      İyi çalışmalar,

      Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Akıllı Röle (Zelio) Nedir ve Nasıl Çalışır?

Piyasada farklı firmalara ait çeşitli akıllı röle kartları bulunuyor.Bu uygulamamızda , Sc…