Բովանդակություն:

STONE LCD Smart Home- ով ՝ 5 քայլ
STONE LCD Smart Home- ով ՝ 5 քայլ

Video: STONE LCD Smart Home- ով ՝ 5 քայլ

Video: STONE LCD Smart Home- ով ՝ 5 քայլ
Video: 5 անօգուտ միֆեր նիհարելու կամ գիրանալու մասին 2024, Նոյեմբեր
Anonim
STONE LCD Smart Home- ով
STONE LCD Smart Home- ով

Այսօր ես ստացա STONE- ի սերիայի նավահանգստի սկավառակը, որը կարող է հաղորդակցվել MCU- ի սերիական նավահանգստի միջոցով, և այս ցուցադրման UI տրամաբանական դիզայնը կարող է ուղղակիորեն նախագծվել `օգտագործելով STONE- ի պաշտոնական կայքում ներկայացված VGUS ծրագրաշարը, որը մեզ համար շատ հարմար է: Այսպիսով, ես պլանավորում եմ օգտագործել այն պարզ սարքի վերահսկիչ պատրաստելու համար, որը ներառում է տարբեր լույսերի կառավարում (հյուրասենյակ, խոհանոց, մանկասենյակ, լոգարան): Միևնույն ժամանակ, կարելի է հավաքել ներքին և արտաքին ջերմաստիճանը, խոնավությունը և օդի որակը: Սա պարզապես պարզ ցուցադրական ծրագիր է, և դուք կարող եք երկրորդական զարգացում իրականացնել իմ տրամադրած կոդի միջոցով: ՔԱՐԻ էկրանի վերաբերյալ որոշ հիմնական ձեռնարկ կարող է այցելել կայք ՝

Կայքն ունի բազմազան տեղեկատվություն մոդելի, օգտագործողի և դիզայնի փաստաթղթերի, ինչպես նաև վիդեո ձեռնարկների վերաբերյալ: Այստեղ ես շատ մանրամասն չեմ անդրադառնա:

Քայլ 1: UI ինտերֆեյսի ձևավորում

UI ինտերֆեյսի ձևավորում
UI ինտերֆեյսի ձևավորում
UI ինտերֆեյսի ձևավորում
UI ինտերֆեյսի ձևավորում
UI ինտերֆեյսի ձևավորում
UI ինտերֆեյսի ձևավորում
UI ինտերֆեյսի ձևավորում
UI ինտերֆեյսի ձևավորում

Ֆոտոշոփ

Ես նախագծեցի հետևյալ երկու UI էջերը Photoshop- ով.

Այս նախագիծը ընդհանուր առմամբ ունի վերը նշված երկու էջերը: «Լույս» և «Սենսոր» վերին աջ անկյունում այս երկու էջերի անջատիչ կոճակներն են:

«Լույս» էջում կարող եք վերահսկել ձեր տան բոլոր տեսակի լույսերը: «Սենսոր» էջում կարող եք ստուգել տարբեր սենսորների կողմից հայտնաբերված արժեքները:

Վերոնշյալ երկու էջերի նախագծումից հետո մենք կարող ենք կոճակի տրամաբանական ձևավորում իրականացնել STONE- ի պաշտոնական կայքում ներկայացված STONE TOOL ծրագրաշարի միջոցով:

Հարկ է նշել, որ այստեղ ժամանակի ցուցադրման համար օգտագործվող ժամացույցի աղբյուրը ցուցադրման էկրանի ժամացույցի աղբյուրն է, այլ ոչ թե MCU ժամացույցի աղբյուրը:

TAB էջի փոփոխման էֆեկտ

STONE TOOL ծրագրաշարում TAB էջի միացման բաղադրիչ չի գտնվել, այնպես որ ես մտածեցի TAB էջի անջատման էֆեկտին հասնելու այլ մեթոդի մասին:

Դիտարկման միջոցով ես տրամադրում եմ երկու UI պատկեր, որոնք կարող են հայտնաբերվել, որ վերը նշված երկու պատկերները «Լույս» և «Սենսոր» տեքստ են, տարբերությունն այն է, որ դրանց պիքսելների չափերը տարբեր են, ուստի մեզ մնում է միայն երկու պիքսելանոց դիրքը դնել նույն տեքստը, այնուհետև հղման համար ժամանակի և ամսաթվի վերին ձախ անկյունում կարող եք հասնել TAB- ի ՝ էֆեկտ փոխելու համար:

Կոճակի տրամաբանություն

Որպես օրինակ վերցրեք «Հյուրասենյակ» կոճակը: Երբ օգտվողը սեղմում է այս կոճակը, STONE սերիայի նավահանգստի ցուցադրման էկրանը սերիական նավահանգստի միջոցով կուղարկի համապատասխան արձանագրության ցուցումները: Այս հրահանգը ստանալուց հետո օգտագործողի MCU- ն կվերլուծի արձանագրությունը `MCU- ի հետ կապված լույսերի անջատման վիճակը վերահսկելու համար:

Սենսորների ձեռքբերում

Օրինակ ՝ վերցրեք «օդի որակը». Եթե ցանկանում եք ստանալ օդի որակը ներսում, մենք պետք է ունենանք MCU օդի որակը հավաքելու համար, օդի որակի սենսոր, երբ MCU- ի թվային տվյալները հավաքվում են ալգորիթմի միջոցով ՝ համեմատելով օդի որակի առավելություններն ու թերությունները, այնուհետև MCU- ն ուղարկվում է սերիական նավահանգստի միջոցով `« Լավ »կամ« Վատ »պահեստավորման տարածքը ցուցադրելու,« Տեքստային փոփոխական 0 »ցուցադրման բովանդակությունը փոխելու համար, այնուհետև օգտագործողը կարող է ինտուիտիվ կերպով տեսնել որակի վերահսկման արժանիքները: Դրանք ավելի ուշ բացատրվում են MCU ծածկագրում:

Քայլ 2: MCU հաղորդակցություն

MCU Communication
MCU Communication
MCU Communication
MCU Communication
MCU Communication
MCU Communication
MCU Communication
MCU Communication

STM32- ը MCU է, որին բոլորը ծանոթ են, և դա միջազգային MCU- ի սովորական մոդել է: Հետևաբար, այս նախագծում օգտագործված STM32 MCU- ի հատուկ մոդելը STM32F103RCT6 է:

Կան բազմաթիվ շարքեր STM32, որոնք կարող են բավարարել շուկայի տարբեր պահանջներ: Միջուկը կարելի է բաժանել cortex-m0, M3, M4 և M7, և յուրաքանչյուր միջուկը կարելի է բաժանել հիմնական հոսանքի, բարձր արդյունավետության և էներգիայի ցածր սպառման:

Learningուտ ուսուցման տեսանկյունից կարող եք ընտրել F1 և F4, F1- ը ներկայացնում է հիմնական տիպը ՝ հիմնված կորտեքս-մ 3 միջուկի վրա, հիմնական հաճախականությունը 72 ՄՀց է, F4- ը ներկայացնում է բարձր կատարողականություն ՝ հիմնվելով կորտեքս-մ 4 միջուկի վրա, հիմնականը հաճախականությունը `180 Մ

Ինչ վերաբերում է F1- ին, F4- ին (429 սերիա և ավելի բարձր), բացի տարբեր միջուկներից և հիմնական հաճախականության բարելավումից, արդիականացման ակնհայտ առանձնահատկությունն LCD վերահսկիչն ու տեսախցիկի ինտերֆեյսն է, SDRAM- ի աջակցությունը: Այս տարբերությունը առաջնահերթություն կտրվի նախագծերի ընտրության հարցում: Այնուամենայնիվ, համալսարանական դասավանդման և օգտագործողների նախնական ուսուցման տեսանկյունից, F1 շարքը դեռ առաջին ընտրությունն է: Ներկայումս F1 շարքի STM32- ն ունի շուկայում ամենամեծ քանակությամբ նյութեր և ապրանքներ:

STM32 SCM- ի զարգացման միջավայրի տեղադրման և ծրագրի ներբեռնման եղանակի մասին, ես ներածություն չեմ անի:

GPIO- ի նախաստորագրում

Այս նախագծում մենք ընդհանուր առմամբ օգտագործեցինք 4 GPIO, որոնցից մեկը PWM ելքային քորոցն է: Եկեք նախ նայենք երեք սովորական GPIO նավահանգստի սկզբնավորմանը.

Այս գործառույթը նախաստորագրում է STM32F103C8- ի PB0 / PB1 / PB2- ը որպես ելքային փին և այն կանչում հիմնական գործառույթից: Նախաստորագրումից հետո մենք պետք է տրամաբանություն ունենանք ՝ վերահսկելու այս GPIO- ի ելքային վիճակը, բարձր և ցածր մակարդակը, ուստի ես ֆունկցիան գրել եմ հետևյալ կերպ.

Սա գործառույթ է, որը դուք կարող եք ինտուիտիվ կերպով հասկանալ փոփոխականի անունով:

Սերիայի պորտի սկզբնավորում

Սերիական նավահանգստի սկզբնավորման մասը գտնվում է uart.c- ում:

Այնուհետև հիմնական գործառույթում զանգահարեք uart_init ՝ 115200 սերիական նավահանգստի բաուդ արագությունը նախաստորագրելու համար: Պիներն օգտագործում են 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 ժամաչափը միացված է TIMx_Cmd () - ի կողմից ՝ PWM ելք ստանալու համար: Callանգահարեք այս TIM3_PWM_Init հիմնական գործառույթից:

Քայլ 3: Տրամաբանական ծածկագրի գրառում

Տրամաբանական ծածկագրի գրառում
Տրամաբանական ծածկագրի գրառում
Տրամաբանական ծածկագրի գրառում
Տրամաբանական ծածկագրի գրառում
Տրամաբանական ծածկագրի գրառում
Տրամաբանական ծածկագրի գրառում

Displayուցադրել բաղադրիչի հասցեի սահմանումը

Theուցադրման բաղադրիչներն ունեն առանձին հասցեներ, և ահա դրանք բոլորը գրել եմ որպես մակրո սահմանումներ ՝ սերիական տվյալների ընդունում

Նայելով STONE էկրանին վերաբերող տեղեկատվությանը ՝ կարող եք տեսնել, որ կոճակը սեղմելիս ցուցադրման սերիական պորտը համապատասխան ձևաչափով արձանագրություններ է ուղարկում, որոնք MCU օգտագործողը կարող է ստանալ և վերլուծել: Երբ կոճակը սեղմվում է, ցուցադրման սերիական պորտը ուղարկում է ինը բայթ տվյալներ, ներառյալ օգտագործողի տվյալները: Սերիական տվյալների ընդունումը գրված է Handler- ում: Ստացված տվյալները պահվում են «USART_RX_BUF» զանգվածում: Այս նախագծում ընդունման երկարությունը ամրագրված է: Երբ ստացման երկարությունը 9 բայթից ավելի է, ընդունման վերջը դատվում է:

Վերահսկեք լամպի անջատիչ վիճակը

Հիմնական գործառույթում ես որոշ տրամաբանական ծածկագիր եմ գրել ՝ լամպի անջատիչի վիճակը վերահսկելու համար. սեղմում է ցուցադրման էկրանին: Էկրանի տարբեր կոճակներն ունեն տարբեր հասցեներ, որոնք կարելի է տեսնել STONE TOOL ծրագրաշարում. Երբ օգտվողը սեղմում է «Հյուրասենյակ» կոճակը, ցուցադրման էկրանի սերիական պորտով ուղարկված տվյալների չորրորդ և հինգերորդ բիթերն են կոճակի հասցեն: Քանի որ այստեղ դրված բոլոր կոճակների չորրորդ բիթը 0x00 է, մենք կարող ենք դատել, թե օգտվողը որ կոճակին է սեղմում `ուղղակիորեն դատելով հինգերորդ բիտի տվյալները: Օգտագործողի կողմից սեղմված կոճակը ձեռք բերելուց հետո մենք պետք է դատենք կոճակը սեղմելիս ստացված օգտագործողի տվյալները, որը ցուցադրման էկրանից ուղարկված տվյալների ութերորդ նիշն է: Հետևաբար, մենք կատարում ենք հետևյալ հսկողությունը. Գրեք կոճակի հասցեի պարամետրը և օգտվողի տվյալները «Light_Contral» գործառույթի մեջ ՝ լուսավորության անջատման վիճակը վերահսկելու համար: Light_Contral ֆունկցիայի սուբյեկտը հետևյալն է. Ինչպես տեսնում եք, եթե կոճակի հասցեն է «Հյուրասենյակ», իսկ օգտվողի տվյալները ՝ «LightOn», ապա MCU- ի PB0 կապը սահմանվում է բարձր մակարդակի ելքի վրա, և լույսը միացված է:. Մյուս երեք կոճակները նման են, բայց ես այստեղ չեմ շարունակի:

PWM արտադրանք

Իմ նախագծած UI- ում կա լոգարիթմական կարգավորիչ, որն օգտագործվում է «Մանկական սենյակ» -ի լույսի պայծառությունը վերահսկելու համար: MCU- ն իրականացվում է PWM- ի կողմից: PWM ելքային կապը PB5 է: Կոդը հետևյալն է. Լոգարիթմական կարգավորիչը սահմանվում է 0x00 նվազագույն արժեքի և 0x64 առավելագույն արժեքի վրա: Երբ սահում է, ցուցադրման էկրանի սերիական նավահանգիստը կուղարկի նաև համապատասխան հասցեներ և տվյալներ, այնուհետև սահմանում է PWM արտադրանքի հերթապահության հարաբերակցությունը ՝ կանչելով հետևյալ գործառույթը.

Քայլ 4: Սենսորների ձեռքբերում

Սենսորների ձեռքբերում
Սենսորների ձեռքբերում
Սենսորների ձեռքբերում
Սենսորների ձեռքբերում
Սենսորների ձեռքբերում
Սենսորների ձեռքբերում

Theուցադրման էկրանի «Սենսոր» էջում կան չորս սենսորային տվյալներ:

Տվյալները ցուցադրման մեջ ունեն նաև պահեստավորման հասցե, և մենք կարող ենք փոխել իրական բովանդակությունը ՝ պարզապես այս հասցեներին տվյալներ գրելով MCU- ի սերիական նավահանգստի միջոցով:

Այստեղ ես կատարեցի մի պարզ կոդի իրականացում.

Displayուցադրման տվյալները թարմացվում են ամեն 5 վայրկյանը մեկ, և ես գրել եմ սենսորների հավաքման համապատասխան գործառույթի պարզ ցուցադրություն, քանի որ իմ ձեռքում այդ սենսորները չեն:

Projectրագրի իրական զարգացման ընթացքում այս տվիչները կարող են լինել ADC- ի կողմից հավաքված տվյալներ, կամ IIC, UART և SPI հաղորդակցական միջերեսների կողմից հավաքված տվյալներ: Մնում է այս տվյալները համապատասխան գործառույթի մեջ գրել որպես վերադարձելի արժեք:

Քայլ 5. Գործողության իրական էֆեկտ

Խորհուրդ ենք տալիս: