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

Անհավատալիորեն հեշտ է ծրագրավորել: 10 քայլ
Անհավատալիորեն հեշտ է ծրագրավորել: 10 քայլ

Video: Անհավատալիորեն հեշտ է ծրագրավորել: 10 քայլ

Video: Անհավատալիորեն հեշտ է ծրագրավորել: 10 քայլ
Video: ⚽️ Radhi Jaïdi: Une histoire de patience et de détermination. 2024, Հուլիսի
Anonim
Image
Image
Անհավատալիորեն հեշտ է ծրագրավորել
Անհավատալիորեն հեշտ է ծրագրավորել

Այսօր ես կխոսեմ STM32 Core- ի, L476RG- ի մասին, որը Ultra Low Power- ի դեմքն է: Դուք կարող եք տեսնել այն պատկերի ձախ կողմում: Այս սարքն ունի երկու կանացի քորոց, յուրաքանչյուր կողմում մեկը, որոնք ոչ այլ ինչ են, քան arduino վահանի միակցիչները: Սա հիանալի է, այնպես չէ՞:

Իմ կարծիքով, STMicroelectronics- ը դա արեց իր զարգացման հավաքածուում, քանի որ գիտի, որ մասնագետներն օգտագործում են այս չիպը: Այս ընկերությունը գնալով գնում է դեպի arduino: Եվ դա նաև ճշմարիտ է մի քանի այլ մասնագիտական STMicroelectronics հավաքածուների համար:

Վերջապես, այսօր նախագծի վերաբերյալ, մենք L476RG- ից բացի, կօգտագործենք երկու DS18b20 տվիչ: Այսպիսով, մենք կկազմենք պարզ հավաքում L476RG- ի միջոցով, գրադարան կներմուծենք MBED միջավայր, կստեղծենք ծրագիր MBED միջավայրում և տվյալներ կստանանք L476RG- ից USB / սերիայի միջոցով:

Այս տեսանյութում ես արդեն մի փոքր խոսել եմ L476RG- ի մասին. ՄԻԿՐՈԿՈՏԵԼՈLԻՉ PROՐԱԳՐԵԼՈAS ՀԵՌՈ ՀԱՐAY, որտեղ ես ցույց եմ տալիս, թե ինչպես կարգավորել MBED միջավայրը, որն առցանց է:

Որոշ մարդիկ, ովքեր հետևում են իմ տեսանյութերին, ինձ հարցնում են, թե արդյոք STM32- ը փոխարինում է ESP32- ին: Ես ասում եմ մի բան. Այն չի փոխարինում և չէր կարող, քանի որ դրանք երկու բոլորովին տարբեր բաներ են:

Այս STM32 չիպը միկրոկոնտրոլեր է, ավելի ճիշտ; դա «իրերի կլաստեր» չէ, ինչպես ESP32- ն է: Այսպիսով, անունը կարող է նման լինել, բայց դրանք բոլորովին այլ են: STM32- ը ընդհանուր նշանակության միկրոկոնտրոլեր է, օրինակ ՝ PIC, Atmel, օրինակ:

Քայլ 1: Օգտագործված ռեսուրսներ

Օգտագործված ռեսուրսներ
Օգտագործված ռեսուրսներ

1 միջուկ L476RG

2 սենսոր DS18b20 (մենք օգտագործում ենք շուկայում առկա ընդհանուր անջրանցիկ մոդուլները)

1 4k7 ռեզիստոր

Մինի նախատախտակ

Թռիչքներ միացման համար

Քայլ 2: Հավաքում

Ժողով
Ժողով

Սկզբում մենք կիրականացնենք հավաքումը `օգտագործելով ջերմաստիճանի տվիչներից մեկը:

Նրա հզորությունը կլինի 5 Վ:

Տվյալների գծում (1-Wire) քաշքշուկ կատարելու համար կօգտագործվի 4k7 ռեզիստոր:

Մենք կկարդանք տվյալները ՝ օգտագործելով A0 կապը:

Քայլ 3. Նոր ծրագիր MBED- ում

Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում

Երբ ձեր հաշիվը ստեղծեք MBED- ում և մուտք գործեք այն, մենք կստեղծենք նոր ծրագիր: Դա անելու համար աջ սեղմեք «Իմ ծրագրերը» և ընտրեք «Նոր ծրագիր …»:

Հաստատեք, որ «Հարթակը» համապատասխանում է ձեր օգտագործած տախտակին:

Այժմ մենք կտտացնում ենք «Կաղապար»:

Մենք կստեղծենք ծրագիր ՝ հիմնվելով «Displayուցադրել հաղորդագրություն համակարգչում ՝ օգտագործելով UART» օրինակը:

Մուտքագրեք ծրագրի անունը «Nameրագրի անվանումը»:

Ստուգեք «Թարմացրեք այս ծրագիրը և գրադարանները վերջին վերանայմանը» տարբերակը:

Ձեր ծրագրի համար նոր թղթապանակ կստեղծվի, ներառյալ կանխադրված MBED գրադարանը և main.cpp ֆայլը:

Դուք կարող եք օգտագործել այն փորձարկելու համար, եթե ամեն ինչ լավ է աշխատում: Դա անելու համար պարզապես կազմեք այն և պատճենեք այն հարթակին:

Օգտագործելով ձեր ընտրած սերիական տերմինալը, կարող եք ստանալ հետևյալ հաղորդագրությունները:

Քայլ 4: DS18b20 գրադարանի ներմուծում

Ներմուծում DS18b20 գրադարանը
Ներմուծում DS18b20 գրադարանը

Քանի որ Ds18b20- ի համար գրադարանների մի քանի տարբերակ կա, մենք կներմուծենք url- ի միջոցով, որպեսզի ձեր օրինակը օգտագործի նույն գրադարանը:

Քայլ 5. Նոր ծրագիր MBED- ում

Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում
Նոր ծրագիր MBED- ում

«Աղբյուրի URL» դաշտում լրացրեք ՝ https://os.mbed.com/users/Sissors/code/DS1820/ և կտտացրեք ներմուծմանը:

Ձեր DS1820 գրադարանը պետք է հայտնվի ձեր ծրագրի թղթապանակում:

Քայլ 6: Աղբյուրի կոդ

Ներառում է

Մենք սկսեցինք ՝ ներառելով անհրաժեշտ գրադարանները:

#ներառել «mbed.h» // ներառյալ biblioteca padrão do MBED#ներառել «DS1820.h» // ներառյալ biblioteca do sensor DS1820

Մենք սահմանում ենք հաստատուններ, որոնք կներկայացնեն օգտագործվող կապում:

Նկատի ունեցեք, որ DS18b20- ը 1-WIRE հաղորդակցմամբ սենսոր է: Այդ պատճառով մենք օգտագործում ենք այն գրադարանը, որը կզբաղվի սարքերի հետ հաղորդակցության ամբողջ արձանագրությամբ: Սա ներառում է յուրաքանչյուր սարքի նույնականացում մինչև կարդալու հրամանները:

#սահմանել PINO_DE_DADOS A0 // սահմանել pino para leitura dos dados#սահմանել MAX_SENSORES 16 // սահմանել o número máximo para o vetor de sensores

Մենք ստեղծում ենք վեկտոր, որը մատնանշելու է տվյալների տողին միացված 16 հնարավոր սարքերից յուրաքանչյուրը:

DS1820* տվիչ [MAX_SENSORES]; // cria um vetor com 16 posições para os sensores

Մենք սկսում ենք հիմնական () մեթոդը, որտեղ, օգտագործելով DS1820 գրադարանում պարունակվող «unassignedProbe ()» մեթոդը, մենք փնտրում ենք բոլոր հասանելի սարքերը կապի գծում:

Մենք լրացնում ենք տվիչների վեկտորը այն դեպքերով, որոնք կներկայացնեն առկա սենսորներից յուրաքանչյուրը:

Մենք դա անում ենք մինչև վերջինը չգտնվի կամ մինչև հասնենք առավելագույնը 16 սենսորների:

int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensores sensor [encontrados] = new DS1820 (PINO_DE_DADOS); // cria uma instancia para o sensor encontrado encontrados ++; եթե (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; }

Մենք ուղարկում ենք գծում հայտնաբերված տվիչների քանակը:

printf ("Dispositivos encontrado (ներ): %d / r / n / n", encontrados);

Մենք սկսում ենք անսահման օղակ ՝ խնդրելով, որ առկա բոլոր տվիչները հաշվեն իրենց համապատասխան ջերմաստիճանը, այնուհետև կրկնվեն սենսորային վեկտորի միջով ՝ ուղարկելով ստացված ընթերցումները:

printf ("Dispositivos encontrado (ներ): %d / r / n / n", encontrados); մինչդեռ (1) {տվիչ [0]-> convertTemperature (ճշմարիտ, DS1820:: all_devices); // solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature ()); //… e retorna a temperatura printf ("\ r / n"); սպասել (1); }

Քայլ 7: Ստացված տվյալները

Ստացված տվյալները
Ստացված տվյալները

Օգտագործելով մեկ սենսոր ՝ մենք ստանում ենք հետևյալ սերիական ելքը:

Քայլ 8. Ներառեք ավելի շատ տվիչներ

Ներառյալ ավելի շատ տվիչներ
Ներառյալ ավելի շատ տվիչներ
Ներառյալ ավելի շատ տվիչներ
Ներառյալ ավելի շատ տվիչներ

Կոդը ստուգելու համար մենք մեկ այլ սենսոր ենք ներդնում կապի գծում ՝ պարզապես այն միացնելով առաջին սենսորին զուգահեռ:

Հիշեք, որ անջատեք հավաքումը նախքան նոր սենսորներ միացնելը:

Համագումարը վերագործարկելիս մենք ստացանք հետևյալ ելքը ՝ առանց աղբյուրի կոդի որևէ փոփոխության:

Քայլ 9: Դիտեք աղբյուրը

#ներառել «mbed.h» // ներառյալ biblioteca padrão do MBED #ներառել «DS1820.h» // ներառյալ biblioteca do sensor DS1820 #սահմանել PINO_DE_DADOS A0 // սահմանել պինո պարապմունքների համար dados #սահմանել MAX_SENSORES 16 // սահմանել o número máximo para o vetor de sensores DS1820* տվիչ [MAX_SENSORES]; // cria um vetor com 16 posições para os sensores int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensores sensor [encontrados] = new DS1820 (PINO_DE_DADOS); // cria uma instancia para o sensor encontrado encontrados ++; եթե (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; } printf ("Dispositivos encontrado (ներ): %d / r / n / n", encontrados); մինչդեռ (1) {տվիչ [0]-> convertTemperature (ճշմարիտ, DS1820:: all_devices); // solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature ()); //… e retorna a temperatura printf ("\ r / n"); սպասել (1); }}

Քայլ 10: Ֆայլեր

PDF

Մյուսները

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