Mündəricat:
- Addım 1: UI interfeysi dizaynı
- Addım 2: MCU Əlaqəsi
- Addım 3: Məntiq Kodunun Yazılması
- Addım 4: Sensorların alınması
- Addım 5: Həqiqi Əməliyyat Etkisi
Video: Ağıllı Evi olan Daş LCD: 5 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
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ı
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
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ı
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ı
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ə:
Arduino Nəzarət Rölesi Modulundan istifadə edərək Ağıllı Evi necə etmək olar - Ev avtomatlaşdırma fikirləri: 15 addım (şəkillərlə)
Arduino Nəzarət Rölesi Modulundan istifadə edərək Ağıllı Evi necə etmək olar | Ev Avtomatlaşdırma Fikirləri: Bu ev avtomatlaşdırma layihəsində 5 ev texnikasını idarə edə biləcək ağıllı bir ev rölesi modulu dizayn edəcəyik. Bu röle modulu Mobil və ya ağıllı telefondan, IR uzaqdan və ya TV uzaqdan, Manuel keçiddən idarə oluna bilər. Bu ağıllı röle həm də hiss edə bilər
LED Məlumatları + Sənəti olan Aydaho Ağıllı Xəritəsi: 8 Addım (Şəkillərlə)
LED Məlumatları + Sənəti olan Idaho Ağıllı Xəritəsi: Həmişə coğrafi məlumatları " rəsm " işıqlı bir xəritə. Mən Aydahoda yaşayıram və əyalətimi sevirəm, buna görə bunun başlamaq üçün əla bir yer olacağını düşündüm! Bir sənət əsəri olmaqla yanaşı, həm də
Ağıllı Köpək Evi: 6 addım
Ağıllı Köpək Evi: Əksər ev heyvanlarının sahibləri itlərinin yoxluğunda nə etdikləri ilə maraqlanırlar. Bir iş günündən sonra tətbiqi yoxlaya və "dəzgahında" keçirdiyi vaxta baxa bilərsiniz
IoT Cüzdan (Firebeetle ESP32, Arduino IDE və Google elektron cədvəli olan ağıllı cüzdan): 13 addım (şəkillərlə)
IoT Cüzdan (Firebeetle ESP32, Arduino IDE və Google Elektron Cədvəli olan Ağıllı Cüzdan): Cib Ölçülü Təlimatlandırılan Müsabiqədə birinci mükafat!: Əgər kriptovalyutalara bir az pul qoymusunuzsa, ehtimal ki, onların çox uçucu olduğunu bilirsiniz. Bir gecədə dəyişirlər və hələ də çörəyinizdə nə qədər çox "real" pul olduğunu bilmirsiniz
Yalnız bir DC Motoru olan 12V -dən 220V -ə qədər olan ən sadə çevirici: 3 addım (şəkillərlə)
12V -dən 220V -a qədər bir DC Motoru olan ən sadə İnverter: Salam! Bu təlimatda evdə sadə bir çevirici hazırlamağı öyrənəcəksiniz. Dəyişdirmə işlərindən yalnız DC Motor məsuldur