Мазмуну:

Stone LCD менен Smart Home: 5 кадам
Stone LCD менен Smart Home: 5 кадам

Video: Stone LCD менен Smart Home: 5 кадам

Video: Stone LCD менен Smart Home: 5 кадам
Video: КАК ПОДКЛЮЧИТЬ ТЕЛЕФОН К ТЕЛЕВИЗОРУ 2024, Ноябрь
Anonim
STONE LCD Smart Home менен
STONE LCD Smart Home менен

Бүгүн мен MCONдун сериялык порту аркылуу байланышка чыга турган STONE сериялык порт дисплейине ээ болдум жана бул дисплейдин UI логикалык дизайны STONE расмий сайтында берилген VGUS программасын колдонуу менен түздөн -түз иштелип чыгышы мүмкүн, бул биз үчүн абдан ыңгайлуу. Ошентип, мен аны ар кандай жарыктарды (жашоо бөлмө, ашкана, балдар бөлмөсү, ванна) башкарууну камтыган жөнөкөй шайман контроллерин жасоо үчүн колдонууну пландап жатам. Ошол эле учурда ички жана сырткы температураны, нымдуулукту жана абанын сапатын чогултса болот. Бул жөн эле демо жана мен берген код аркылуу экинчи иштеп чыгууну жүргүзө аласыз. STONE экраны боюнча кээ бир негизги үйрөткүчтөр вебсайтка кире алышат:

Веб -сайтта модель, колдонуучу жана дизайн документтери, ошондой эле видео үйрөткүчтөр жөнүндө ар кандай маалыматтар бар. Мен бул жерде өтө майда -чүйдөсүнө чейин токтолбойм.

1 -кадам: UI Interface Дизайн

UI интерфейсинин дизайны
UI интерфейсинин дизайны
UI интерфейсинин дизайны
UI интерфейсинин дизайны
UI интерфейсинин дизайны
UI интерфейсинин дизайны
UI интерфейсинин дизайны
UI интерфейсинин дизайны

Photoshop

Мен Photoshop менен төмөнкү эки UI баракчасын иштеп чыктым:

Бул долбоор жалпысынан жогорудагы эки барактан турат. Жогорку оң бурчтагы "Жарык" жана "Сенсор" бул эки барактын которуштуруучу баскычтары.

"Жарык" баракчасында сиз үйүңүздөгү ар кандай жарыкты көзөмөлдөй аласыз. "Сенсор" барагында ар кандай сенсорлор тарабынан аныкталган баалуулуктарды текшере аласыз.

Жогорудагы эки барактын дизайнынан кийин, биз STONE расмий сайтында берилген STONE TOOL программалык камсыздоосу аркылуу баскыч логикалык дизайнын жүргүзө алабыз.

Бул жерде убакытты көрсөтүү үчүн колдонулган сааттын булагы MCU сааттын булагы эмес, дисплейдин экрандын саат булагы экенин белгилей кетүү керек.

TAB баракты которуу эффекти

STONE TOOL программасында TAB баракчасын алмаштыруучу компонент табылган жок, ошондуктан мен TAB баракты которуу эффектине жетүү үчүн башка ыкманы ойлондум.

Байкоо аркылуу мен эки интерфейстин сүрөттөрүн жогорудагы эки сүрөттүн "Жарык" жана "Сенсор" тексттери экенин айырмалай алам, алардын пикселинин өлчөмү башкача, ошондуктан биз эки пикселдик позицияны орнотушубуз керек. ошол эле текстти, андан кийин шилтеме үчүн убакыттын жана датанын жогорку сол бурчу аркылуу, сиз таблицага эффектти которууга жетише аласыз.

Баскыч логикасы

Мисал катары "Living Room" баскычын алыңыз. Колдонуучу бул баскычты басканда, STONE сериялык портун көрсөтүү экраны сериялык порт аркылуу тиешелүү протоколдук көрсөтмөлөрдү жөнөтөт. Бул көрсөтмөнү алгандан кийин, колдонуучунун MCU MCU менен байланышкан жарыктардын которулуу абалын көзөмөлдөө үчүн протоколду талдайт.

Сенсор алуу

Мисалы, "абанын сапатын" алалы: эгер сиз үйдүн ичиндеги абанын сапатын алууну кааласаңыз, анда MCU санынын абанын оң жана терс жактарын салыштырган алгоритм аркылуу чогултулганда, абанын сапатын чогултуу үчүн MCU, абанын сапатынын сенсоруна ээ болушубуз керек. MCU сериялык порт аркылуу "Жакшы" же "Жаман" сактоо мейкиндигин көрсөтүү үчүн, "Текст өзгөрмөсү0" дисплейинин мазмунун өзгөртүү үчүн жөнөтүлөт, андан кийин колдонуучу интуитивдүү түрдө сапатты контролдоонун артыкчылыгын көрө алат. Булар MCU кодунда кийинчерээк түшүндүрүлөт.

2 -кадам: MCU Байланыш

MCU Байланыш
MCU Байланыш
MCU Байланыш
MCU Байланыш
MCU Байланыш
MCU Байланыш
MCU Байланыш
MCU Байланыш

STM32 - бул баарына тааныш болгон MCU жана бул эл аралык жалпы MCU модели. Ошондуктан, мен бул долбоордо колдонгон STM32 MCUдун конкреттүү модели STM32F103RCT6.

Рыноктун ар кандай талаптарына жооп бере турган көптөгөн STM32 сериялары бар. Ядро cortex-m0, M3, M4 жана M7 болуп бөлүнүшү мүмкүн жана ар бир ядро негизги агымга, жогорку өндүрүмдүүлүккө жана аз энергия керектөөгө бөлүнүшү мүмкүн.

Окуу көз карашынан алганда, сиз F1 жана F4 тандай аласыз, F1 cortex-m3 ядросуна негизделген негизги түрдү билдирет, негизги жыштыгы 72MHZ, F4 жогорку өндүрүмдүүлүктү билдирет, cortex-m4 ядросуна негизделген жыштыгы 180M.

F1, F4 (429 серия жана андан жогору) боюнча, ар кандай ядролордон жана негизги жыштыкты жакшыртуудан тышкары, жаңыртуунун ачык өзгөчөлүгү - бул ЖК контролери жана камера интерфейси, SDRAMди колдоо, бул айырмачылык долбоорду тандоодо артыкчылыкка ээ болот. Бирок, университетте окутуу жана колдонуучулардын баштапкы үйрөнүү көз карашынан алганда, F1 сериясы дагы эле биринчи тандоо. Учурда F1 сериясындагы STM32 рынокто материалдардын жана продукциянын эң чоң көлөмүнө ээ.

STM32 SCM иштеп чыгуу чөйрөсүн орнотуу жана программаны жүктөө ыкмасы жөнүндө мен киришүү кылбайм.

GPIO инициализациясы

Бул долбоордо биз жалпысынан 4 GPIO колдондук, алардын бири PWM чыгаруу пини. Адегенде үч жөнөкөй GPIO портун инициализациясын карап көрөлү:

Бул функция STM32F103C8дин PB0 / PB1 / PB2ин чыгаруу пини катары баштайт жана аны негизги функциядан чакырат. Инициализациядан кийин, бул GPIOнун жогорку жана төмөнкү деңгээлин көзөмөлдөө үчүн логикага ээ болушубуз керек, ошондуктан мен функцияны төмөндөгүдөй жаздым:

Бул функция, сиз интуитивдүү түрдө өзгөрмөнүн атына жараша түшүнө аласыз.

Сериялык портту инициализациялоо

Сериялык порттун баштоо бөлүгү uart.cде:

Андан кийин 115200 сериялык порттун жүгүртүү ылдамдыгын баштоо үчүн негизги функцияда uart_init деп атаңыз. Пиндер PA9/PA10 колдонот

PWM инициализациясы

Атайын кадамдар:

1. RCC саатын коюу;

2. GPIO саатын коюңуз; GPIO режими GPIO_Model_AF_PP, же пин кайра алмаштыруу керек болсо GPIO_PinRemapConfig () функциясына коюлушу керек.

3. TIMx таймеринин тиешелүү реестрлерин коюу;

4. TIMx таймеринин PWM менен байланышкан реестрин коюу;

A. PWM режимин коюу

B. Милдеттүү циклди белгилөө (формуланы эсептөө)

C. Чыгарууну салыштыруу полярдуулугун коюңуз (мурда киргизилген)

D. Эң негизгиси, TIMxтин чыгыш абалын иштетүү жана TIMxтин PWM өндүрүшүн иштетүү; Тиешелүү Орнотуулар аяктагандан кийин, TIMx таймери PIM өндүрүшүн алуу үчүн TIMx_Cmd () күйгүзүлөт. Бул функцияны TIM3_PWM_Init деп атаңыз.

3 -кадам: Логикалык код жазуу

Логикалык код жазуу
Логикалык код жазуу
Логикалык код жазуу
Логикалык код жазуу
Логикалык код жазуу
Логикалык код жазуу

Компоненттин дареги аныктамасын көрсөтүү

Дисплейдин компоненттеринин өзүнчө даректери бар, бул жерде мен алардын бардыгын макро аныктамалар катары жаздым: Сериялык маалыматтарды кабыл алуу

STONE дисплейи жөнүндө маалыматты карап жатып, сиз баскыч басылганда, дисплейдеги сериялык порт тиешелүү форматтагы протоколдорду жөнөтөрүн көрө аласыз, аларды колдонуучу MCU кабыл алып, талдай алат. Кнопка басылганда, дисплейдеги сериялык порт колдонуучулардын маалыматтарын кошкондо тогуз байт маалыматтарды жөнөтөт. Сериялык маалыматтарды кабыл алуу Handlerде жазылган: Алынган маалыматтар "USART_RX_BUF" массивинде сакталат. Бул долбоордо кабыл алуу узундугу белгиленген. Кабыл алуу узундугу 9 байттан ашык болгондо, кабыл алуу аягы каралат.

Лампанын которулуу абалын көзөмөлдөңүз

Негизги функцияда мен лампанын которуштуруу абалын көзөмөлдөө үчүн логикалык код жаздым: Көрүп турганыбыздай, код биринчи кезекте сериялык порттун маалыматы алынганын, ал эми сериялык порттун маалыматы алынганда колдонуучунун кайсы баскычты аныктай турганын аныктайт. дисплей экранына басат. Дисплейдеги ар кандай баскычтар башка даректерге ээ, аларды STONE TOOL программасынан көрүүгө болот: Колдонуучу "Living Room" баскычын басканда, дисплей экрандын сериялык порту жөнөткөн маалыматтын төртүнчү жана бешинчи биттери баскычтын дареги. Бул жерде коюлган бардык баскычтардын төртүнчү бити 0x00 болгондуктан, колдонуучу кайсы баскычты басарын бешинчи биттин маалыматтарын түздөн -түз баалоо менен баалай алабыз. Колдонуучу баскан баскычты алгандан кийин, баскыч басылганда алынган колдонуучу маалыматын соттошубуз керек, бул дисплей экранынан жөнөтүлгөн маалыматтын сегизинчи цифрасы. Ошондуктан, биз төмөнкү көзөмөлдү жасайбыз: жарыктын өчүү абалын көзөмөлдөө үчүн баскычтын дареги параметрин жана колдонуучу маалыматын "Light_Contral" функциясына жазыңыз. Light_Contral функциясы төмөнкүчө: Көрүнүп тургандай, эгер баскычтын дареги "Конок бөлмөсү" жана колдонуучунун маалыматы "LightOn" болсо, анда MCUдун PB0 пини жогорку деңгээлдеги чыгууга коюлган жана жарык күйүп турат. Калган үч баскыч окшош, бирок мен бул жакка барбайм.

PWM чыгаруу

Мен иштеп чыккан UIде "Балдар бөлмөсүнүн" жарыгынын жарыгын көзөмөлдөө үчүн колдонулуучу жылдыргыч бар. MCU PWM тарабынан ишке ашырылат. PWM чыгаруу пин PB5 болуп саналат. Код төмөнкүчө: Жылдыруучу жөндөгүч 0x00 минималдуу мааниге жана 0x64 максималдуу мааниге коюлган. Жылдырганда, дисплей экранынын сериялык порту дагы тиешелүү даректерди жана маалыматтарды жөнөтөт, андан кийин төмөнкү функцияны чакырып PWM өндүрүшүнүн иштөө коэффициентин коет:

4 -кадам: Sensor алуу

Сенсор алуу
Сенсор алуу
Сенсор алуу
Сенсор алуу
Сенсор алуу
Сенсор алуу

Дисплей экрандын "Сенсор" барагында төрт сенсор маалыматы бар.

Маалыматтардын дисплейде сактоо дареги да бар жана биз MCUдун сериялык порту аркылуу бул даректерге маалыматтарды жазуу менен чыныгы мазмунду өзгөртө алабыз.

Бул жерде мен жөнөкөй кодду ишке ашырдым:

Дисплейдин маалыматтары 5 секунд сайын жаңыртылып турат жана мен сенсорлорду чогултуу функциясынын жөн гана демосун жаздым, анткени менин колумда бул сенсорлор жок.

Реалдуу долбоорду иштеп чыгууда, бул сенсорлор ADC тарабынан чогултулган маалыматтар же IIC, UART жана SPI байланыш интерфейстери тарабынан чогултулган маалыматтар болушу мүмкүн. Сиз эмне кылышыңыз керек болсо, бул маалыматтарды кайтаруу мааниси катары тиешелүү функцияга жазыңыз.

5 -кадам: Иш жүзүндөгү операция эффекти

Сунушталууда: