İçeriğe geç

STM32 ile Nextion Ekran Kullanımı

Bu blog yazısında Nextion HMI Ekranının STM32 serisi kartlarla nasıl iletişim kurduğunu öğreneceğiz. Basit bir led yakma uygulaması yapacağız. STM32cubeIDE, Bluepill adı verilen stm32f10c8 kartı ve nextion 2.4  ekranı kullanacağız.

 Nextion için UART2’yi yapılandıralım.

Üzerinde UART hattı bulunan herhangi bir STM32 serisi kartı kullanabilirsiniz. Bağlantı şemasını sahip olduğunuz karta göre değiştirmeyi unutmayın.

Bu eğitimde temel bir uygulama yapacağız. Ekrandaki bir düğmeyi kullanarak kart üzerindeki bir led’i açıp kapatacağız.

Nextion HMI ile iletişim kurmak için herhangi bir kütüphane kullanmayacağız. Nextion iletişim protokolünü kullanacağız. Bu bağlantıyla Itead tarafından oluşturulan talimatlara erişebilirsiniz. Tüm talimatlar üç baytlık “0xff 0xff 0xff” ile biter. Bu, verilerin sonuna  3 kez 0xff sonunu eklemeniz gerektiği anlamına gelir.

Stm32f103c8’de UART2 kullanacağım. Nextion için UART2’yi yapılandıralım. Nextion’ın geçerli bağlı hızının 9600 olduğunu unutmayın. Usart’ı UART olarak kullanmak için senkronize olmayan modu(asynchronous) ayarlayın.

Yapılandırmanız bittiğinde, mikro denetleyici UART’da hangi pinlerin kullanıldığını görebilirsiniz. Stm32f10c8 için A3 ve A2 pinleri A3 -> USART2_Tx ve A2 -> USART2_Rx olarak kullanılmaktadır.

Kodları oluşturduktan sonra programlamaya hazırız. Önce alınan verileri saklamak için tampon(Buffer) ekleyeceğiz.

uint8_t rx_buff[7];      //7 is max data length.
 

main fonksiyonununa neler ekleyeceğiz :

1
2
3
4
5
__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE);
//Enable Read data register not empty
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0);  
// led state default off
HAL_UART_Recieve_IT(&huart2,(uint8_t*)rx_buff,7);
//Receives an amount of data in non blocking mode.

Hal kütüphanesi Uart işlevi hakkında daha fazla bilgi edinmek isterseniz, hepsini buradan görebilirsiniz. Hal kütüphane kullanım kılavuzundaki pdf’de bu HAL_UART_Recieve_IT fonksiyonu hakkında daha fazla bilgi aşağıda verilmiştir.

Son kullanacağımız fonksiyon HAL_UART_RxCpltCallback fonksiyonudur. Bu fonksiyon  tamamlanan her Rx Aktarımı’nda çalıştır.

Hal kütüphane kullanım kılavuzundaki pdf’de bu fonksiyon hakkında daha fazla bilgi aşağıda verilmiştir.

Tüm bilgilerden sonra HAL_UART_RxCpltCallback () fonksiyonunun içine HAL_UART_Recive_IT () fonksiyonunu ekleyeceğiz. Bu şekilde, veri gönderildiğinde verileri sürekli olarak almış olacağız.

1
2
3
4
5
HAL_UART_RxCpltCallback(UART_handleTypeDef *huart){      
       
HAL_UART_Receive_IT(&huart2),(uint8_t*)rx_buff,7);  
 
}                    
 

Her şey veri almaya hazır, şimdi ne almamız gerektiğini kontrol edeceğiz. Nextion Editor’de bir düğme oluşturup simüle ettiğimizde Nextion HMI Ekranının ne ileteceğini görebiliriz.

Nextion HMI Ekranı düğmesine bastığımızda bize 0x65 0x00 0x01 0x01 0xFF 0xFF 0xFF gönderdiğini görebiliriz.

Son 3 0xFF‘nin veri sonu  gönderildiğini biliyoruz. 0x65, bize veri paketinin dokunma olayı dönüş verileri olduğunu söylüyor. Bu veri paketi formatı aşağıdaki gibidir.

0X65+Sayfa ID+Bileşen ID+TouchEvent +Son

Bu paket biçimini bizimkiyle karşılaştırırsak, Sayfa Kimliği = 0, Bileşen Kimliği = 1, TouchEvent = 1’i görebiliriz. TouchEvent 1, düğmeye basıldığı anlamına gelir. Düğme bırakıldığında sıfır olur.

Şimdi tek yapmamız gereken, buffer’ı while(1) döngüsünde gönderilen veri paketine eşit olup olmadığını kontrol etmektir.

 
 
 
1
2
3
4
5
6
7
8
9
10
11
 
while(1){      
if(rx_buff[0] == 0x65 && rx_buff[4] == 0xFF &&
rx_buff[5] == 0xFF && rx_buff[6] == 0xFF){

HAL_GPIO_TogglePin(
GPIOC,GPIO_PIN_13);

rx_buff[0]=0x00;//clear buff
}
}
 

Nextion kullanarak STM32 ile led yakıp kapamak için söyleyeceklerim bu kadar. Biraz uzun oldu ama bu konuda net olmak istedim. Sonraki yazılarda kullanmak için bir nextion kütüphanesi oluşturacağız. GitHub hesabımdaki tüm bilgilere aşağıdaki bağlantıdan erişebilirsiniz.

Bu konudaki Github sayfası:

 https://github.com/mertwhocodes/STM32-Nextion-Screen-Led-Toggle

Kaynakça :

https://www.st.com/resource/en/user_manual/dm00105879-description-of-stm32f4-hal-and-ll-drivers-stmicroelectronics.pdf

https://server4.eca.ir/eshop/000/HMI(3011002027-28)/Nextion%20Instruction%20Set%20-%20ITEAD%20Wiki.pdf

Tarih:GenelSTM32 ile uygulamalar

İlk Yorumu Siz Yapın

Bir cevap yazın

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