Мазмұны:

Ақылды үйі бар STONE LCD: 5 қадам
Ақылды үйі бар STONE LCD: 5 қадам

Бейне: Ақылды үйі бар STONE LCD: 5 қадам

Бейне: Ақылды үйі бар STONE LCD: 5 қадам
Бейне: Титаниктің құпиясы: олар айсбергті қалай байқамады?! Ең егжей-тегжейлі оқиға! 2024, Қараша
Anonim
Ақылды үйі бар STONE LCD
Ақылды үйі бар STONE LCD

Бүгін мен MCU сериялық порты арқылы байланыса алатын STONE сериялық порты дискіні алдым, және бұл дисплейдің интерфейсінің логикалық дизайны STONE ресми сайтында берілген VGUS бағдарламалық жасақтамасының көмегімен тікелей жобалануы мүмкін, бұл бізге өте ыңғайлы. Сондықтан мен оны әртүрлі құрылғыларды (қонақ бөлме, ас үй, балалар бөлмесі, жуынатын бөлме) басқаруды қамтитын қарапайым құрылғы контроллерін жасау үшін қолдануды жоспарлап отырмын. Сонымен қатар үйдегі және сырттағы температураны, ылғалдылықты және ауа сапасын жинауға болады. Бұл қарапайым демо, және сіз мен берген код арқылы қайталама әзірлемені жүргізе аласыз. STONE экраны туралы кейбір негізгі оқулықтарды мына сайтқа кіруге болады:

Веб -сайтта модель, пайдаланушы және конструкторлық құжаттама, сонымен қатар бейне оқулықтар туралы әр түрлі ақпарат бар. Мен мұнда көп егжей -тегжейлі айтпаймын.

1 -қадам: интерфейс интерфейсінің дизайны

Интерфейс интерфейсінің дизайны
Интерфейс интерфейсінің дизайны
Интерфейс интерфейсінің дизайны
Интерфейс интерфейсінің дизайны
Интерфейс интерфейсінің дизайны
Интерфейс интерфейсінің дизайны
Интерфейс интерфейсінің дизайны
Интерфейс интерфейсінің дизайны

Photoshop

Мен келесі екі UI бетін фотошоппен жасадым:

Бұл жоба жоғарыда аталған екі беттен тұрады. Оң жақ жоғарғы бұрыштағы «Жарық» және «Сенсор» - бұл екі беттің коммутатор түймелері.

«Жарық» бетінде сіз өзіңіздің үйіңіздегі барлық шамдарды басқара аласыз. «Сенсор» бетінде әр түрлі сенсорлар анықтаған мәндерді тексеруге болады.

Жоғарыда көрсетілген екі бетті құрастырғаннан кейін, біз STONE ресми сайтында берілген STONE TOOL бағдарламалық қамтамасыз ету арқылы түймелердің логикалық дизайнын жүргізе аламыз.

Айта кету керек, мұнда уақытты көрсету үшін сағат көзі MCU сағат көзі емес, дисплей экранының сағат көзі болып табылады.

TAB бетін ауыстыру әсері

STONE TOOL бағдарламалық жасақтамасында TAB бетін ауыстыратын компонент табылмады, сондықтан мен TAB бетін ауыстыру әсеріне жетудің басқа әдісін ойладым.

Бақылау арқылы мен екі интерфейс суретін табамын: жоғарыдағы екі сурет «жарық» және «сенсор» мәтіні, олардың айырмашылығы олардың пиксель өлшемі әр түрлі, сондықтан бізге тек екі пиксельдік позицияны орнату керек. сол мәтінді, содан кейін сілтеме үшін уақыт пен күннің жоғарғы сол жақ бұрышынан әсер етуді өзгертуге TAB қол жеткізуге болады.

Түймешік логикасы

Мысал ретінде «Қонақ бөлме» түймесін алыңыз. Пайдаланушы осы түймені басқанда, STONE сериялық портының дисплейі сериялық порт арқылы сәйкес хаттама нұсқауларын жібереді. Осы нұсқаулықты алғаннан кейін, пайдаланушының MCU MCU -ға қосылған шамдардың ауысу күйін бақылау үшін хаттаманы талдайды.

Сенсорды алу

Мысалы, «ауа сапасын» алайық: егер сіз үй ішіндегі ауа сапасын алғыңыз келсе, бізде ауа сапасын жинау үшін MCU, ауа сапасының сенсоры болуы керек, егер MCU сандық көрсеткіштері ауа сапасының оң және теріс жақтарын салыстыратын алгоритм арқылы жиналса, MCU «Жақсы» немесе «Жаман» сақтау аймағын көрсету үшін мазмұндық дисплей мазмұнын өзгерту үшін сериялық порт арқылы жіберілді, содан кейін пайдаланушы сапаны бақылаудың тиімділігін интуитивті түрде көре алады. Олар кейінірек 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 кортекс-m3 ядросына негізделген негізгі түрді білдіреді, негізгі жиілігі 72 МГц, F4 жоғары өнімділікті білдіреді, кортекс-м4 ядросы негізінде жиілігі 180м.

F1, F4 (429 сериялы және одан жоғары) болсақ, әр түрлі ядролардан және негізгі жиілікті жақсартудан басқа, жаңартудың айқын ерекшелігі - СКД контроллері мен камера интерфейсі, SDRAM қолдау, бұл айырмашылық жобаны таңдауда басымдыққа ие болады. Алайда, университеттік оқыту мен қолданушылардың бастапқы білімі тұрғысынан F1 сериясы әлі де бірінші таңдау болып табылады. Қазіргі уақытта F1 сериялы STM32 нарықта материалдар мен өнімдердің ең көп мөлшеріне ие.

STM32 SCM әзірлеу ортасын орнату және бағдарламаны жүктеу әдісі туралы мен кіріспе жасамаймын.

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

Бұл жобада біз барлығы 4 GPIO қолдандық, олардың бірі PWM шығыс түйреуіші. Алдымен үш қарапайым GPIO портын инициализациялауды қарастырайық:

Бұл функция STM32F103C8 PB0 / PB1 / PB2 шығыс түйреуіші ретінде инициализациялайды және оны негізгі функциядан шақырады. Инициализациядан кейін бізге шығыс күйін, осы GPIO -ның жоғары және төмен деңгейін бақылау логикасы қажет, сондықтан мен функцияны төмендегідей жаздым:

Бұл айнымалының атымен интуитивті түрде түсінуге болатын функция.

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

Сериялық порттың инициализация бөлігі uart.c -те орналасқан:

Содан кейін uart_init қоңырау шалыңыз, 115200 сериялық порт беру жылдамдығын инициализациялау үшін.

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 шығуын қосу; Тиісті параметрлер аяқталғаннан кейін, PWM шығысын алу үшін TIMx таймері TIMx_Cmd () арқылы қосылады. Негізгі функциядан осы TIM3_PWM_Init деп атаңыз.

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

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

Компонент адресінің анықтамасын көрсету

Дисплейдің компоненттері бөлек адрестерге ие, мен мұнда олардың барлығын макро анықтамалар ретінде жаздым: Сериялық деректерді қабылдау

STONE дисплейі туралы ақпаратқа қарап, түймені басқан кезде дисплейдегі сериялық порт сәйкес форматтағы хаттамаларды жіберетінін көруге болады, оны MCU қолданушысы қабылдай алады және талдай алады. Түйме басылған кезде, дисплейдегі сериялық порт пайдаланушы деректерін қосқанда тоғыз байтты деректерді жібереді. Сериялық деректерді қабылдау Handler -де жазылған: Алынған деректер «USART_RX_BUF» массивінде сақталады. Бұл жобада қабылдау ұзындығы бекітілген. Қабылдау ұзындығы 9 байттан артық болған кезде, қабылдау соңы бағаланады.

Шамның ауысу күйін бақылау

Негізгі функцияда мен шамның ауысу күйін басқару үшін бірнеше логикалық кодты жаздым: Көріп отырғанымыздай, код алдымен сериялық порт деректері алынғанын, ал сериялық порт деректері алынған кезде пайдаланушының қай батырманы анықтайтынын анықтайды. дисплей экранында басады. Дисплейдегі әр түрлі түймелердің мекен -жайы әр түрлі, оларды STONE TOOL бағдарламалық жасақтамасынан көруге болады: пайдаланушы «қонақ бөлмесі» түймесін басқанда, дисплей экранының сериялық порты жіберетін деректердің төртінші және бесінші биттері түйменің мекенжайы. Мұнда орнатылған барлық түймелердің төртінші биті 0x00 болғандықтан, біз пайдаланушы қай түймені басатынын бесінші разрядтағы деректерді тікелей бағалау арқылы бағалай аламыз. Пайдаланушы басқан түймені алғаннан кейін, біз дисплей экранынан жіберілген деректердің сегізінші цифры болып табылатын түйме басылған кезде алынған пайдаланушы деректерін бағалауымыз керек. Сондықтан біз келесі бақылауды жасаймыз: жарықтың қосылу күйін басқару үшін «Light_Contral» функциясына түйменің мекенжай параметрі мен пайдаланушы деректерін жазамыз. Light_Contral функция нысаны келесідей: Көріп отырғаныңыздай, егер түйменің мекенжайы «қонақ бөлмесі» болса және пайдаланушы деректері «LightOn» болса, онда MCU PB0 түйреуіші жоғары деңгейлі шығысқа орнатылады және жарық қосылады. Қалған үш түйме ұқсас, бірақ мен мұнда жалғастырмаймын.

PWM шығысы

Мен құрастырған интерфейсінде «Балалар бөлмесі» жарықының жарықтығын басқару үшін қолданылатын жылжымалы реттегіш бар. MCU PWM арқылы жүзеге асады. PWM шығыс түйіні PB5. Код келесідей: сырғымалы реттегіш минималды 0x00 мәніне және максималды мәні 0x64 мәніне орнатылған. Жылжу кезінде дисплей экранының сериялық порты сәйкес мекенжайлар мен деректерді жібереді, содан кейін келесі функцияны шақыру арқылы PWM шығысының жұмыс коэффициентін орнатады:

4 -қадам: сенсорды алу

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

Дисплей экранының «Сенсор» бетінде сенсордың төрт деректері бар.

Деректердің дисплейде сақтау мекенжайы да бар және біз MCU сериялық порты арқылы осы мекенжайларға деректерді жазу арқылы нақты мазмұнды өзгерте аламыз.

Мұнда мен қарапайым кодты енгіздім:

Дисплей деректері әр 5 секунд сайын жаңартылып отырады, мен сенсорларды жинаудың тиісті функциясының қарапайым демонстрациясын жаздым, себебі бұл сенсорлар менің қолымда жоқ.

Жобаны нақты әзірлеу кезінде бұл датчиктер ADC жинаған деректер немесе IIC, UART және SPI байланыс интерфейстері жинайтын деректер болуы мүмкін. Сізге бұл деректерді қайтару мәні ретінде сәйкес функцияға жазу жеткілікті.

5 -қадам: Нақты жұмыс әсері

Ұсынылған: