Мазмұны:
- 1 -қадам: интерфейс интерфейсінің дизайны
- 2 -қадам: MCU байланысы
- 3 -қадам: Логикалық кодты жазу
- 4 -қадам: сенсорды алу
- 5 -қадам: Нақты жұмыс әсері
Бейне: Ақылды үйі бар STONE LCD: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:22
Бүгін мен 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 байланысы
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 -қадам: Нақты жұмыс әсері
Ұсынылған:
Қашықтан басқару пультінің үйі: 6 қадам
Қашықтан басқару пультінің үйі: Мен Тайваньның 13 жасар қызымын, егер мен грамматикалық немесе басқа қателіктер жіберген болсам, мені кешіріңіз. Мен бұл құрылғыны ойлап таптым ба? Мен жиі қайда екенін ұмытып кетемін
Байлардың үйі: 5 қадам
Байлардың үйі: Сәлем балалар! Қайта қош келдіңіз !! Бүгін мен сізге тек байлардың ішіндегі байлардың ғана меншігінде болатын үйдің үлгісін ұсынғым келеді. Бұл 3D модель TINKERCADlink көмегімен жасалған: https: //www.tinkercad. com/Бұл кіріспе
GroupONE ақылды үйі: 27 қадам
GroupONE ақылды үйі: қош келдіңіз! Бұл Raspberry Pi жобасы " ақылды үй " үйдің әртүрлі бөліктеріндегі температура, ылғалдылық және жарық шамалары сияқты әр түрлі деректерді өлшеуге қабілетті басқару жүйесі. Бұл нұсқаулық жазбаны орнатуды қамтиды
Ақылды ит үйі: 6 қадам
Ақылды иттер үйі: Үй жануарларының көптеген иелері сүйікті итінің жоқтығында не істегенін білуге қызығушылық танытады. Бұл нұсқаулықта біз Raspberry Pi негізіндегі иттердің мониторын жасаймыз. Жұмыс күнінен кейін сіз қосымшаны тексере аласыз және оның «орындықта» өткізген уақытын көре аласыз, қанша
Күн бар Барби үйі: 4 қадам
Барби үйі күнмен: Мен барби үйін гранд балаларының көмегімен жасадым. Жарықдиодты шам шам жағылады Бөлмелер, сонымен қатар дыбыс ойнатқышы бар кіретін асхана мен олардың батареялары күн батареяларымен зарядталған. Бейне 1. Барби үйінің 2 -бейне. Th