Bu bölümde, ML35DZ ısı sensörünü elimizdeki F401-RE karta bağlayarak, sensör ile okunan ısı değerini seri port üzerinden ekranda göstermemizi sağlayan programı Mbed ve STM32CubeIDE yoluyla yazmaya çalışacağız.
LM35 santigrat sıcaklığına linear olarak orantılı çıkış voltajı üreten entegre devreli yarı iletken bir ısı sensörüdür.
STM32F401RE mikrodenetleyici kart ile LM35 ısı sensörü bağlantısı aşağıdaki şemaya uygun olarak yapılacaktır:
ML35 ısı sensörü bağlantısını aşağıdaki esaslara göre yapalım:
1. Önce buradaki talimatları uygulayarak, Mbed OS online geliştirme ortamında yeni bir program oluşturalım.
2. main.cpp dosyası içine aşağıdaki kodları yazarak kaydedelim:
#include "mbed.h"
Serial pc(USBTX, USBRX, 115200);
AnalogIn sensor(A1);
int main() {
int id = 297;
float fd;
while (1) {
fd = sensor.read();
pc.printf("\nTemperature: %4.2f", fd*id); // Seri porta yazma
wait(1);
}
}
3. Programı derleyelim ve elde ettiğimiz .bin uzantılı dosyayı bilgisayarımıza kaydedelim.
4. Bilgisayarımıza kaydettiğimiz .bin uzantılı dosyayı, kart bilgisayara bağlandığında Windows Explorer’da görünen flash bellek içine kopyalayalım.
5. Windows Explorer'da kartı temsil eden sürücüye kopyaladığımız .bin uzantılı dosya kart tarafından otomatik olarak okunarak çalıştırılır. Kart kendini resetler ve .bin uzantılı dosya silinir.
6. Program çalışmaya başladığında, LM35 ısı sensörü ile okunan değerler seri porta aktarılacaktır.
CoolTerm programı çalıştırdığımızda aktarılan değerler ekranda görülecektir.
1. Önce buradaki talimatları uygulayarak, STM32CubeIDE ortamında yeni bir proje oluşturalım.
2. Projemize verdiğimizin isme sahip .ioc uzantılı dosyaya tıkladığımızda karşımıza gelen pencerede, mikrodenetleyici kart üzerindeki Arduiono konnektörün D2, D3, D4, D5, D6, D7 ve D8 pinlerine sırasıyla karşılık gelen PA10, PB3, PB5, PB4, PB10, PA8 ve PA9 kutularına tıkladığımızda karşımıza gelen seçeneklerden GPIO_Output seçeneğini seçelim:
4. main.c dosyasının içindeki kodları aşağıdaki şekilde düzenleyerek ve sonuna display_LED() fonksiyonunu ekleyerek kaydedelim:
#include "main.h"
#include <stdio.h>
int main(void)
{
/* USER CODE BEGIN 1 */
char cdizi[40];
int id=0;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_UART_Transmit(&huart2, (uint8_t*) cdizi, sprintf(cdizi, "Data send: %d\n", id++), 100);
HAL_Delay(1000);
}
/* USER CODE END 3 */
}
5. Programı derleyelim.
6. Doğrudan Run butonuna basarak veya elde ettiğimiz .bin uzantılı dosyayı, kart bilgisayara bağlandığında Windows Explorer’da görünen flash bellek içine kopyalayalım.
7. Program kart tarafından otomatik olarak okunarak çalıştırılır. Kart kendini resetler.
6. Program çalışmaya başladığında, LED ekranı 0-9 arasındaki sayıları 2 saniye ara ile göstermeye başlar.