İçindekiler:
- Adım 1: UI Arayüz Tasarımı
- Adım 2: MCU İletişimi
- 3. Adım: Mantık Kodu Yazma
- Adım 4: Sensör Toplama
- Adım 5: Gerçek Çalışma Etkisi
Video: Akıllı Evli STONE LCD: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Bugün, STONE'nin MCU'nun seri portu üzerinden haberleşebilen seri port sürücü ekranını aldım ve bu ekranın UI mantık tasarımı, bizim için çok uygun olan STONE'nin resmi web sitesinde sağlanan VGUS yazılımı kullanılarak doğrudan tasarlanabilir. Bu yüzden, çeşitli ışıkların (oturma odası, mutfak, çocuk odası, banyo) kontrolünü içeren basit bir cihaz kontrolörü yapmak için kullanmayı planlıyorum. Aynı zamanda iç ve dış sıcaklık, nem ve hava kalitesi toplanabilir. Bu sadece basit bir demo ve verdiğim kod aracılığıyla ikincil geliştirme yapabilirsiniz. STONE ekranı hakkında bazı temel eğitimler web sitesine gidebilir:
Web sitesinde model, kullanıcı ve tasarım belgeleri ile video eğitimleri hakkında çeşitli bilgiler bulunur. Burada çok fazla ayrıntıya girmeyeceğim.
Adım 1: UI Arayüz Tasarımı
Photoshop
Aşağıdaki iki UI sayfasını photoshop ile tasarladım:
Bu proje toplamda yukarıdaki iki sayfaya sahiptir. Sağ üst köşedeki "Işık" ve "Sensör" bu iki sayfanın geçiş butonlarıdır.
"Işık" sayfasında evinizdeki her türlü ışığı kontrol edebilirsiniz. "Sensör" sayfasında, çeşitli sensörler tarafından algılanan değerleri kontrol edebilirsiniz.
Yukarıdaki iki sayfanın tasarımından sonra STONE'nin resmi web sitesinde bulunan STONE TOOL yazılımı ile buton mantığı tasarımı yapabiliriz.
Burada zaman gösterimi için kullanılan saat kaynağının MCU saat kaynağı değil, gösterim ekranının saat kaynağı olduğunu belirtmekte fayda var.
SEKME sayfa değiştirme efekti
STONE TOOL yazılımında TAB sayfa değiştirme bileşeni bulunamadı, bu yüzden TAB sayfa değiştirme efektini elde etmek için başka bir yöntem düşündüm.
Gözlem yoluyla, iki UI görüntüsü sağladığım, yukarıdaki iki görüntünün "Işık" ve "Sensör" metni olduğunu, farkın piksel boyutlarının farklı olduğunu, bu nedenle yalnızca iki piksel konumunu ayarlamamız gerektiğini görebilirsiniz. aynı metin ve daha sonra referans için saat ve tarihin sol üst köşesinden, efekti değiştirmek için TAB'ı elde edebilirsiniz.
Düğme mantığı
Örnek olarak "Oturma Odası" düğmesini alın. Kullanıcı bu düğmeye bastığında, STONE seri port görüntüleme ekranı seri port üzerinden ilgili protokol talimatlarını gönderecektir. Bu talimatı aldıktan sonra, kullanıcının MCU'su, MCU'ya bağlı ışıkların anahtarlama durumunu kontrol etmek için protokolü ayrıştırır.
Sensör edinimi
Örneğin "hava kalitesini" alın: iç mekan hava kalitesini elde etmek istiyorsanız, hava kalitesini toplamak için bir MCU'ya, hava kalitesinin artılarını ve eksilerini karşılaştıran bir algoritma aracılığıyla MCU sayısal toplandığında hava kalitesi sensörüne sahip olmamız gerekir. MCU, "İyi" veya "Kötü" depolama alanını görüntülemek, "Metin değişkeni0" ekran içeriğini değiştirmek için bir seri bağlantı noktası aracılığıyla gönderilir ve ardından kullanıcı, kalite kontrolünün yararlarını sezgisel olarak görebilir. Bunlar daha sonra MCU kodunda açıklanmıştır.
Adım 2: MCU İletişimi
STM32, herkesin aşina olduğu MCU'dur ve uluslararası alanda yaygın bir MCU modelidir. Bu nedenle, bu projede kullandığım STM32 MCU I'nin spesifik modeli STM32F103RCT6'dır.
Piyasanın çeşitli taleplerini karşılayabilecek birçok STM32 serisi bulunmaktadır. Çekirdek korteks-m0, M3, M4 ve M7'ye bölünebilir ve her çekirdek ana akım, yüksek performans ve düşük güç tüketimi olarak ayrılabilir.
Tamamen öğrenme açısından, F1 ve F4'ü seçebilirsiniz, F1, korteks-m3 çekirdeğine dayalı temel türü temsil eder, ana frekans 72MHZ'dir, F4, korteks-m4 çekirdeğine dayanan yüksek performansı temsil eder, ana frekans 180M'dir.
F1, F4 (429 serisi ve üstü), farklı çekirdekler ve ana frekansın iyileştirilmesi dışında, yükseltmenin belirgin özelliği LCD denetleyici ve kamera arayüzü, SDRAM desteği, proje seçiminde bu farka öncelik verilecektir. Ancak, üniversite öğretimi ve kullanıcıların ilk öğrenimi açısından F1 serisi hala ilk tercihtir. Şu anda F1 serisinin STM32'si piyasadaki en büyük malzeme ve ürün miktarına sahip.
STM32 SCM geliştirme ortamı kurulumu ve program indirme yöntemi hakkında tanıtım yapmayacağım.
GPIO başlatma
Bu projede biri PWM çıkış pini olmak üzere toplam 4 GPIO kullandık. Önce üç sıradan GPIO bağlantı noktasının başlatılmasına bakalım:
Bu fonksiyon, STM32F103C8'in PB0\PB1\PB2'sini çıkış pini olarak başlatır ve ana fonksiyondan çağırır. Başlattıktan sonra, bu GPIO'nun çıkış durumunu, yüksek ve düşük seviyesini kontrol etmek için bir mantığa ihtiyacımız var, bu yüzden işlevi aşağıdaki gibi yazdım:
Bu, değişkenin adıyla sezgisel olarak anlayabileceğiniz bir işlevdir.
Seri bağlantı noktası başlatma
Seri bağlantı noktasının başlatma kısmı uart.c'dedir:
Ardından, 115200 seri port baud hızını başlatmak için ana fonksiyonda uart_init'i arayın. Pinler PA9/PA10 kullanır.
PWM başlatma
Belirli adımlar:
1. RCC saatini ayarlayın;
2. GPIO saatini ayarlayın; GPIO modu, GPIO_Model_AF_PP'ye veya pin yeniden eşlemesi gerekiyorsa GPIO_PinRemapConfig() işlevine ayarlanmalıdır.
3. TIMx zamanlayıcının ilgili kayıtlarını ayarlayın;
4. TIMx zamanlayıcısının PWM ile ilgili kaydını ayarlayın;
A. PWM modunu ayarla
B. Görev döngüsünü ayarlayın (formül hesaplaması)
C. Çıkış karşılaştırma polaritesini ayarlayın (önceden tanıtılmıştı)
D. En önemlisi, TIMx'in çıkış durumunu etkinleştirin ve TIMx'in PWM çıkışını etkinleştirin; İlgili Ayarlar tamamlandıktan sonra TIMx zamanlayıcı TIMx_Cmd() ile PWM çıkışı almak için açılır. Ana işlevden bu TIM3_PWM_Init'i çağırın.
3. Adım: Mantık Kodu Yazma
Bileşen adres tanımını görüntüle
Ekran bileşenlerinin ayrı adresleri var ve burada hepsini makro tanımları olarak yazdım: Seri veri alımı
STONE ekranı ile ilgili bilgilere bakıldığında, butona basıldığında ekrandaki seri portun kullanıcı MCU'sunun alıp ayrıştırabileceği uygun formatta protokoller gönderdiğini görebilirsiniz. Düğmeye basıldığında, ekrandaki seri port, kullanıcı verileri dahil olmak üzere dokuz bayt veri gönderir. Seri veri alımı İşleyicide yazılır: Alınan veriler "USART_RX_BUF" dizisinde saklanır. Bu projede alıcı uzunluk sabittir. Alma uzunluğu 9 bayttan fazla olduğunda, alıcı uç değerlendirilir.
Lambanın anahtarlama durumunu kontrol edin
Ana fonksiyonda, lambanın switch durumunu kontrol etmek için bazı mantık kodları yazdım: Gördüğümüz gibi kod öncelikle seri port verisinin alınıp alınmadığını, seri port verisi alındığında ise kullanıcının hangi butondan olduğunu belirler. ekrana basar. Ekrandaki farklı düğmelerin farklı adresleri vardır, bu STONE TOOL yazılımında görülebilir: Kullanıcı "Oturma Odası" düğmesine bastığında, ekranın seri portu tarafından gönderilen verilerin dördüncü ve beşinci bitleri, düğmenin adresi. Burada ayarlanan tüm düğmelerin dördüncü biti 0x00 olduğundan, doğrudan beşinci bitin verilerini değerlendirerek kullanıcının hangi düğmeye bastığını yargılayabiliriz. Kullanıcının bastığı butonu elde ettikten sonra butona basıldığında alınan kullanıcı datasını yani display ekranından gönderilen datanın sekizinci basamağı olup olmadığına karar vermemiz gerekmektedir. Bu nedenle şu kontrolü yapıyoruz: ışığın açık-kapalı durumunu kontrol etmek için "Light_Contral" fonksiyonuna buton adres parametresini ve kullanıcı verilerini yazın. Light_Contral fonksiyon varlığı aşağıdaki gibidir: Gördüğünüz gibi buton adresi "Oturma Odası" ve kullanıcı datası "LightOn" ise MCU'nun PB0 pini yüksek seviye çıkışa ayarlanmış ve ışık yanıyor. Diğer üç düğme benzer, ama burada devam etmeyeceğim.
PWM çıkışı
Tarafımdan tasarlanan kullanıcı arayüzünde "Çocuk Odası" ışığının parlaklığını kontrol etmek için kullanılan sürgülü bir regülatör bulunmaktadır. MCU, PWM. PWM tarafından uygulanmaktadır çıkış pini PB5'tir. Kod aşağıdaki gibidir: Kayar ayarlayıcı minimum 0x00 değerine ve maksimum 0x64 değerine ayarlanmıştır. Kaydırıldığında, ekranın seri portu da ilgili adresleri ve verileri gönderecek ve ardından aşağıdaki işlevi çağırarak PWM çıkışının görev oranını ayarlayacaktır:
Adım 4: Sensör Toplama
Görüntü ekranının "Sensör" sayfasında dört Sensör verisi vardır.
Verilerin ayrıca ekranda bir depolama adresi vardır ve MCU'nun seri portu üzerinden bu adreslere basitçe veri yazarak gerçek içeriği değiştirebiliriz.
Burada basit bir kod uygulaması yaptım:
Görüntü verileri her 5 saniyede bir güncellenir ve elimde bu sensörler olmadığı için ilgili sensör toplama işlevinin yalnızca basit bir demosunu yazdım.
Gerçek proje geliştirmede, bu sensörler ADC tarafından toplanan veriler veya IIC, UART ve SPI iletişim arayüzleri tarafından toplanan veriler olabilir. Tek yapmanız gereken bu verileri karşılık gelen fonksiyona dönüş değeri olarak yazmaktır.
Adım 5: Gerçek Çalışma Etkisi
Önerilen:
Akıllı Masa LED Işık - Arduino ile Akıllı Aydınlatma - Neopiksel Çalışma Alanı: 10 Adım (Resimlerle)
Akıllı Masa LED Işık | Arduino ile Akıllı Aydınlatma | Neopixels Çalışma Alanı: Artık evde çok fazla zaman geçirdiğimiz, sanal olarak çalıştığımız ve çalıştığımız bir gün, öyleyse neden çalışma alanımızı özel ve akıllı bir aydınlatma sistemi Arduino ve Ws2812b LED'leri ile büyütmeyelim. Burada size Smart'ınızı nasıl oluşturacağınızı gösteriyorum. Masa LED Işık o
Kullanılmayan Akıllı Telefonu Akıllı Ekrana Dönüştürün: 6 Adım (Resimlerle)
Kullanılmayan bir Akıllı Telefonu Akıllı Ekrana Dönüştürün: Deze öğreticisi, Hollanda'da çok iyi. Kullanılmayan (eski) bir akıllı telefonunuz var mı? Bu kolay adım adım öğreticiyi izleyerek Google E-Tablolar ve biraz kağıt kalem kullanarak akıllı bir ekrana dönüştürün. Bitirdiğinizde
STONE HMI Disp'te Akıllı Ev Kontrol Sistemi Yapın: 23 Adım
STONE HMI Disp'te Akıllı Ev Kontrol Sistemi Yapın: Proje tanıtımı Aşağıdaki eğitim, basit bir ev aleti kontrol sistemi yapmak için STONE STVC050WT-01 dokunmatik ekran modülünün nasıl kullanılacağını gösterir
SONOFF Akıllı Anahtarlarla Akıllı Stor Perdeler Nasıl Kendin Yapılır?: 14 Adım
SONOFF Akıllı Anahtarlarla Akıllı Stor Perde Kendin Yap Nasıl Yapılır?: Sıradan stor perdelerinizi/panjurlarınızı akıllı hale getirmek için SONOFF akıllı anahtarlarında Kilitleme Modundan yararlanın Çoğunuz bunun sabahları storları/panjurları çekmenizin bir angarya olduğunu kabul edecek mi? ve akşam aşağı çekmek? Her neyse, ben
Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba: 7 Adım
Bluetooth Akıllı Telefon Kontrollü Akıllı LED Lamba: Her zaman aydınlatma cihazlarımı kontrol etmeyi hayal ediyorum. Sonra biri inanılmaz renkli bir LED lamba yaptı. Geçenlerde Youtube'da Joseph Casha'nın bir LED Lambasına rastladım. Ondan ilham alarak, bağlantıyı korurken birkaç işlev eklemeye karar verdim