Mündəricat:

Ağıllı Evi olan Daş LCD: 5 addım
Ağıllı Evi olan Daş LCD: 5 addım

Video: Ağıllı Evi olan Daş LCD: 5 addım

Video: Ağıllı Evi olan Daş LCD: 5 addım
Video: Heydər Əliyev və Həyat yoldaşını Birdə belə görün #azerbaijan #president #prezident #xeberler #xeber 2024, Noyabr
Anonim
Ağıllı Evi olan STONE LCD
Ağıllı Evi olan STONE LCD

Bu gün, MCU -nun serial portu vasitəsi ilə ünsiyyət qura bilən STONE -in serial port sürücüsü ekranına sahib oldum və bu ekranın UI məntiqi dizaynı, STONE -un rəsmi saytında təqdim olunan VGUS proqramından istifadə etməklə birbaşa dizayn edilə bilər ki, bu da bizim üçün çox əlverişlidir. Buna görə müxtəlif işıqların (oturma otağı, mətbəx, uşaq otağı, vanna otağı) idarə olunmasını özündə cəmləşdirən sadə bir cihaz idarəedicisi etmək üçün istifadə etməyi planlaşdırıram. Eyni zamanda içəridə və xaricdə temperatur, rütubət və hava keyfiyyəti toplana bilər. Bu sadəcə sadə bir demodur və təqdim etdiyim kod vasitəsilə ikincil inkişaf etdirə bilərsiniz. STONE ekranı haqqında bəzi əsas dərslər veb saytına daxil ola bilər:

Veb saytında model, istifadəçi və dizayn sənədləri, video dərsləri haqqında müxtəlif məlumatlar var. Burada çox detala girməyəcəyəm.

Addım 1: UI interfeysi dizaynı

UI interfeysi dizaynı
UI interfeysi dizaynı
UI interfeysi dizaynı
UI interfeysi dizaynı
UI interfeysi dizaynı
UI interfeysi dizaynı
UI interfeysi dizaynı
UI interfeysi dizaynı

Photoshop

Photoshop ilə aşağıdakı iki UI səhifəsini hazırladım:

Bu layihənin yuxarıdakı iki səhifəsi var. Sağ üst küncdəki "İşıq" və "Sensor" bu iki səhifənin keçid düymələridir.

"İşıq" səhifəsində evinizdəki hər cür işığı idarə edə bilərsiniz. "Sensor" səhifəsində müxtəlif sensorlar tərəfindən aşkar edilən dəyərləri yoxlaya bilərsiniz.

Yuxarıdakı iki səhifənin dizaynından sonra, STONE -un rəsmi saytında təqdim olunan STONE TOOL proqramı vasitəsi ilə bir düymə məntiqi dizaynı həyata keçirə bilərik.

Buradakı vaxt göstərilməsi üçün istifadə olunan saat mənbəyinin MCU saat mənbəyi deyil, ekran ekranının saat mənbəyi olduğunu qeyd etmək lazımdır.

TAB səhifəsi dəyişdirmə effekti

STONE TOOL proqramında heç bir TAB səhifəsi dəyişdirmə komponenti tapılmadı, buna görə TAB səhifəsini dəyişdirmə effektinə nail olmaq üçün başqa bir üsul düşündüm.

Müşahidə vasitəsi ilə iki UI görüntüsünün yuxarıdakı iki şəklin "İşıq" və "Sensor" mətnləri olduğunu görə bilərik, fərqi onların piksel ölçüsündə fərqlidir, buna görə yalnız iki pikselli mövqeyi qoymalıyıq. eyni mətn və sonra istinad üçün vaxtın və tarixin yuxarı sol küncündən keçərək TAB sekmesine keçə bilərsiniz.

Düymə məntiqi

Nümunə olaraq "Otaq otağı" düyməsini götürün. İstifadəçi bu düyməni basdıqda, STONE serial port ekranında serial port vasitəsilə müvafiq protokol təlimatları göndəriləcək. Bu təlimatı aldıqdan sonra, istifadəçinin MCU, MCU ilə əlaqəli işıqların keçid vəziyyətini idarə etmək üçün protokolu təhlil edəcək.

Sensorların alınması

Məsələn, "hava keyfiyyəti" ni götürün: qapalı havanın keyfiyyətini əldə etmək istəyirsinizsə, MCU ədədi hava keyfiyyətinin müsbət və mənfi tərəflərini müqayisə edən alqoritmlə toplandıqda hava keyfiyyətini, hava keyfiyyəti sensoru toplamaq üçün bir MCU -ya sahib olmalıyıq. MCU, "Yaxşı" və ya "Pis" saxlama sahələrini göstərmək, "Mətn dəyişənləri 0" görüntü məzmununu dəyişdirmək üçün ardıcıl bir port vasitəsilə göndərildi və sonra istifadəçi keyfiyyətə nəzarətin mahiyyətini intuitiv olaraq görə bilər. Bunlar daha sonra MCU kodunda izah ediləcəkdir.

Addım 2: MCU Əlaqəsi

MCU Əlaqəsi
MCU Əlaqəsi
MCU Əlaqəsi
MCU Əlaqəsi
MCU Əlaqəsi
MCU Əlaqəsi
MCU Əlaqəsi
MCU Əlaqəsi

STM32, hər kəsin tanıdığı MCU -dur və beynəlxalq aləmdə ümumi bir MCU modelidir. Buna görə də, bu layihədə istifadə etdiyim STM32 MCU -nun xüsusi modeli STM32F103RCT6 -dır.

Bazarın müxtəlif tələblərinə cavab verə biləcək bir çox STM32 seriyası var. Nüvəni cortex-m0, M3, M4 və M7-ə bölmək olar və hər bir nüvəni əsas cərəyana, yüksək performansa və aşağı enerji istehlakına bölmək olar.

Yalnız öyrənmə baxımından, F1 və F4 seçə bilərsiniz, F1, cortex-m3 nüvəsinə əsaslanan əsas növü təmsil edir, əsas tezlik 72MHZ, F4 yüksək performansı, cortex-m4 nüvəsinə əsaslanaraq, əsas tezliyi 180M -dir.

F1, F4 (429 seriyası və daha yuxarı) modellərinə gəldikdə, fərqli nüvələrdən və əsas tezliyin təkmilləşdirilməsindən başqa, təkmilləşdirmənin aşkar xüsusiyyəti LCD nəzarətçi və kamera interfeysi, SDRAM dəstəyi, layihə seçimində bu fərqə üstünlük veriləcək. Bununla birlikdə, universitet tədrisi və istifadəçilərin ilkin öyrənməsi baxımından F1 seriyası hələ də birinci seçimdir. Hal -hazırda, F1 seriyasından olan STM32, bazarda ən çox miqdarda material və məhsula malikdir.

STM32 SCM inkişaf mühitinin quraşdırılması və proqram yükləmə üsulu haqqında, giriş etməyəcəyəm.

GPIO başlanğıcı

Bu layihədə biri PWM çıxış pimi olmaqla ümumilikdə 4 GPIO istifadə etdik. Əvvəlcə üç adi GPIO portunun işə salınmasına baxaq:

Bu funksiya STM32F103C8 -in PB0 / PB1 / PB2 -ni çıxış pin olaraq işə salır və onu əsas funksiyadan çağırır. Başladıqdan sonra, bu GPIO -nun çıxış vəziyyətini, yüksək və aşağı səviyyəsini idarə etmək üçün bir məntiqə sahib olmalıyıq, buna görə funksiyanı aşağıdakı kimi yazdım:

Bu, dəyişənin adı ilə intuitiv şəkildə başa düşə biləcəyiniz bir funksiyadır.

Serial portun işə salınması

Serial portun başlanğıc hissəsi uart.c -dədir:

Ardından 115200 seriyalı port baud sürətini işə salmaq üçün əsas funksiyada uart_init -ə zəng edin. Pinlər PA9/PA10 istifadə edir

PWM başlanğıcı

Xüsusi addımlar:

1. RCC saatını təyin edin;

2. GPIO saatını təyin edin; Pin dəyişdirmə tələb olunarsa GPIO rejimi GPIO_Model_AF_PP və ya GPIO_PinRemapConfig () funksiyasına təyin edilməlidir.

3. TIMx taymerinin müvafiq reyestrlərini təyin edin;

4. TIMx taymerinin PWM ilə əlaqəli reyestrini təyin edin;

A. PWM rejimini təyin edin

B. Vəzifə dövrünü təyin edin (formula hesablama)

C. Çıxış müqayisə polaritesini təyin edin (əvvəllər təqdim edilmişdi)

D. Ən əsası, TIMx -in çıxış vəziyyətini təmin etmək və TIMx -in PWM çıxışını təmin etmək; Müvafiq Ayarlar tamamlandıqdan sonra, PWM çıxışı əldə etmək üçün TIMx timer TIMx_Cmd () tərəfindən açılır. Əsas funksiyadan bu TIM3_PWM_Init -ə zəng edin.

Addım 3: Məntiq Kodunun Yazılması

Məntiq Kodunun Yazılması
Məntiq Kodunun Yazılması
Məntiq Kodunun Yazılması
Məntiq Kodunun Yazılması
Məntiq Kodunun Yazılması
Məntiq Kodunun Yazılması

Komponent ünvanı tərifini göstərin

Ekranın komponentlərinin ayrı ünvanları var və burada hamısını makro tərif olaraq yazdım: Serial məlumat qəbulu

STONE displeyi haqqında məlumatlara baxaraq görə bilərsiniz ki, düyməyə basıldıqda ekrandakı seriyalı port istifadəçinin MCU -nun qəbul edib təhlil edə biləcəyi uyğun formatda protokollar göndərir. Düymə basıldıqda, ekrandakı serial port istifadəçi məlumatları da daxil olmaqla doqquz bayt məlumat göndərir. Serial məlumat qəbulu Handler -də yazılmışdır: Alınan məlumatlar "USART_RX_BUF" massivində saxlanılır. Bu layihədə qəbul müddəti sabitdir. Qəbul uzunluğu 9 baytdan çox olduqda, qəbulun sonu qiymətləndirilir.

Lampanın keçid vəziyyətinə nəzarət edin

Əsas funksiyada lampanın keçid vəziyyətini idarə etmək üçün bir neçə məntiq kodu yazdım: Gördüyümüz kimi, kod əvvəlcə seriya port məlumatlarının alındığını və serial port məlumatları alındıqda istifadəçinin hansı düyməni təyin etdiyini təyin edir. ekranda basın. Ekrandakı fərqli düymələrin fərqli ünvanları var, bunları STONE TOOL proqramında görmək olar: İstifadəçi "Otaq otağı" düyməsini basdıqda, ekranın serial portu tərəfindən göndərilən məlumatların dördüncü və beşinci bitləri düymənin ünvanı. Burada təyin olunan bütün düymələrin dördüncü biti 0x00 olduğundan, istifadəçinin hansı düyməni basdığını beşinci bitin məlumatlarını birbaşa mühakimə etməklə qiymətləndirə bilərik. İstifadəçinin basdığı düyməni əldə etdikdən sonra, düymə basıldıqda alınan istifadəçi məlumatlarını mühakimə etməliyik ki, bu da ekrandan göndərilən məlumatların səkkizinci rəqəmidir. Buna görə də, aşağıdakı nəzarəti həyata keçiririk: işığın açılma vəziyyətini idarə etmək üçün düymə ünvanı parametrini və istifadəçi məlumatlarını "Light_Contral" funksiyasına yazın. Light_Contral funksiyası aşağıdakı kimidir: Gördüyünüz kimi, düymənin ünvanı "Qonaq otağı" və istifadəçi məlumatları "LightOn" olarsa, MCU-nun PB0 pimi yüksək səviyyəli çıxışa qoyulur və işıq yanır. Digər üç düymə oxşardır, amma bura davam etməyəcəyəm.

PWM çıxışı

Tərtib etdiyim UI -də "Uşaq otağı" işığının parlaqlığını idarə etmək üçün istifadə olunan sürüşmə tənzimləyicisi var. MCU PWM tərəfindən həyata keçirilir. PWM çıxış pin PB5 -dir. Kod aşağıdakı kimidir: Sürüşən tənzimləyici minimum 0x00 və maksimum dəyər 0x64 olaraq təyin edilmişdir. Sürüşərkən, ekranın seriyalı portu da müvafiq ünvanları və məlumatları göndərəcək və sonra aşağıdakı funksiyanı çağıraraq PWM çıxışının vəzifə nisbətini təyin edəcək:

Addım 4: Sensorların alınması

Sensorların alınması
Sensorların alınması
Sensorların alınması
Sensorların alınması
Sensorların alınması
Sensorların alınması

Ekranın "Sensor" səhifəsində dörd Sensor məlumatı var.

Məlumatların ekranda bir saxlama ünvanı da var və MCU -nun serial portu vasitəsilə bu ünvanlara sadəcə məlumat yazaraq əsl məzmunu dəyişə bilərik.

Burada sadə bir kod tətbiqini etdim:

Ekran məlumatları hər 5 saniyədə bir yenilənir və əlimdə bu sensorlar olmadığından yalnız müvafiq sensor toplama funksiyasının sadə bir demosunu yazdım.

Həqiqi layihə inkişafında bu sensorlar ADC tərəfindən toplanan məlumatlar və ya IIC, UART və SPI rabitə interfeysləri tərəfindən toplanan məlumatlar ola bilər. Etməyiniz lazım olan şey, bu məlumatları qaytarma dəyəri olaraq uyğun funksiyaya yazmaqdır.

Addım 5: Həqiqi Əməliyyat Etkisi

Tövsiyə: