STM32F429 Discovery STM32F429 Discovery ile Akıllı Dijital Termometre By Konuk Yazar Posted on 2 Haziran 2015 6 min read 3 0 5,570 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr 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. 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ı [php] #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); } } [/php] Çalışma Videosu Umarız faydalı bir çalışma olmuştur. Saygılar.