Բովանդակություն:
- Քայլ 1: PCB- ի նախագծում
- Քայլ 2. Արձանագրության նախագծում
- Քայլ 3: irmրագրակազմի նախագծում
- Քայլ 4. Միացում հոսքի կոդի միջոցով
- Քայլ 5: Այլ միջերեսային մեթոդներ
- Քայլ 6: Պատրաստի արտադրանք
Video: Ներկառուցված ունիվերսալ ինտերֆեյսի տախտակ - USB/Bluetooth/WIFI կառավարում `6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Ես հաճախ գտնում եմ, որ զրոյից գրադարաններ եմ ստեղծում նոր ներդրված մոդուլների համար ՝ սարքի տվյալների թերթի հիման վրա: Գրադարանի ստեղծման ընթացքում ես գտնում եմ, որ խրված եմ կոդերի մի ցիկլի մեջ, կազմում եմ, ծրագրավորում և ստուգում, երբ երաշխավորում եմ, որ իրերն աշխատում են և առանց վրիպակների: Հաճախ կազմման և ծրագրի ժամանակը կարող է շատ ավելի երկար լինել, քան ծածկագիրը խմբագրելու համար պահանջվող ժամանակը, ուստի մշակման ժամանակ այս քայլերը կտրելու միջոցը շատ հարմար կլինի:
Ես նաև հաճախ եմ գտնում, որ ցանկանում եմ ներկառուցված մոդուլը միացնել համակարգչին: Եթե մոդուլը հատուկ չունի USB միացում, ինչը հաճախ լինում է, ապա դուք ընդհանրապես պետք է գնեք չափազանց թանկ USB փոխարկիչ, որը կկատարի մեկ աշխատանք, օրինակ ՝ պարզապես SPI կամ պարզապես I2C:
Այս պատճառներով ես որոշեցի ստեղծել ունիվերսալ ինտերֆեյսի տախտակ: Այն նախատեսված է համակարգչի վրա հիմնված մոդուլներով հեշտ հաղորդակցության հնարավորություն տալու համար:
Տախտակի ներդրված ինտերֆեյսի առանձնահատկությունները, որոնցով ես հաստատեցի, ներառում են:
- Թվային I/O
- I2C
- SPI
- UART
- PWM
- Servo Motor
- ADC մուտքագրում
- DAC արտադրանք
Բոլորը կարող են օգտագործվել ամբողջովին ինքնուրույն:
Ինտերֆեյսի տախտակը կարող է վերահսկվել համակարգչին USB միացման միջոցով, բայց ունի նաև WIFI կամ Bluetooth մոդուլի լրացուցիչ կապեր, որոնք թույլ են տալիս տախտակին օգտագործել հեռակա կամ IoT տիպի սցենարով:
Օգտագործելով ստանդարտ 2.54 մմ սկիպիդար SIL վերնագրեր, դուք կարող եք ուղղակիորեն միացնել կանացի dupont մալուխները տախտակի և ներկառուցված մոդուլի միջև, ինչը թույլ է տալիս արագ, հուսալի և առանց զոդման միացումներ:
Ես նաև մտածեցի CAN, LIN, H-Bridge և այլն ավելացնելու մասին, բայց դրանք գուցե հետագայում գան v2 վերանայմամբ:
Քայլ 1: PCB- ի նախագծում
PCB- ն նախագծելիս ես սիրում եմ ամեն ինչ հնարավորինս պարզ պահել: Երբ պատրաստվում եք ձեռքով տախտակներ կառուցել, կարևոր է միայն բաղադրիչներ ավելացնել, երբ դրանք կատարում են որոշակի նպատակ և օգտագործել հնարավորինս միկրոկառավարիչի ներքին հնարավորությունները:
Նայելով իմ նախընտրած էլեկտրոնիկայի մատակարարին, ես գտա ինձ համար հարմար մի չիպ, որն ուներ այն հատկությունները, որոնք ես փնտրում էի և ողջամիտ արժեք էր: Չիպը, որի վրա ես վայրէջք կատարեցի, PIC18F24K50- ն էր:
Մատչելի 23 մուտքի/ելքային կապում դա ինձ թույլ տվեց այս հնարավորությունները
- Digtal I/O
- I2C
- SPI
- UART
- PWM x 2
- Servo Motor x 6
- ADC մուտքագրում x 3
- DAC ելք x 1
- I/O, որը վարվում է 5V- ից կամ 3V3- ից
- Կարգավիճակի LED
Իմ ընտրած IC- ի մեկ թերությունն այն է, որ այն ունի միայն մեկ UART ծայրամասային սարք, ուստի Bluetooth կամ Wifi կառավարման մեթոդի օգտագործումը թույլ չի տա օգտագործել UART կապը:
Վերևում պատկերված են պատրաստի սխեման և PCB- ն:
Քայլ 2. Արձանագրության նախագծում
Արձանագրության նախագծման առաջին քայլը որոշում կայացնելն է, թե կոնկրետ ինչ կարիք կունենաք, որ խորհուրդը կարողանա անել: Իրերը քանդելը ավելացնում է վերահսկողության ավելի լավ մակարդակ, մինչդեռ իրերը համատեղելը պարզեցնում է ինտերֆեյսը և նվազեցնում կոմերցիոն երթևեկությունը տախտակի և ԱՀ -ի միջև: Դա հավասարակշռող խաղ է և դժվար է կատարելագործել:
Տախտակի յուրաքանչյուր գործառույթի համար պետք է նշեք ցանկացած պարամետր և վերադարձ: Օրինակ, ADC մուտքագրումը կարդալու գործառույթը կարող է պարամետր ունենալ `նշելու, թե որ մուտքն է նմուշը և արդյունքը պարունակող վերադարձ արժեքը:
Իմ դիզայնի մեջ ահա այն գործառույթների ցանկը, որոնք ես ցանկանում էի ներառել.
-
Թվային I/O
- SetPin (PinNumber, State)
- Նահանգ = GetPin (PinNumber)
-
SPI
- Նախնականացում (SPI ռեժիմ)
- DataIn = Փոխանցում (DataOut)
- ControlChipSelect (ալիք, նահանգ)
- SetPrescaler (տոկոսադրույք)
-
I2C
- Նախնականացնել ()
- Սկսել ()
- Վերսկսել ()
- Դադարեցնել ()
- SlaveAck = Ուղարկել (DataOut)
- DataIn = Ստանալ (վերջին)
-
UART
- Նախնականացնել ()
- TX բայթ (DataOut)
- BytesAvailable = RX Count ()
- DataIn = RX բայթ ()
- ՍեթԲաուդ (Բաուդ)
-
PWM
- Միացնել (ալիք)
- Անջատել (ալիք)
- SetFrequency (ալիք, հաճախականություն)
- GetMaxDuty (հերթապահություն)
- SetDuty (հերթապահություն)
-
Սերվո
- Միացնել (ալիք)
- Անջատել (ալիք)
- SetPosition (ալիք, պաշտոն)
-
ADC
ADCsample = Նմուշ (ալիք)
-
DAC
- Միացնել
- Անջատել
- SetOutput (լարման)
-
WIFI
- SetSSID (SSID)
- Սահմանել գաղտնաբառ (գաղտնաբառ)
- Կարգավիճակ = CheckConnectionStatus ()
- IP = GetIPAddress ()
Պարամետրերը ցուցադրվում են փակագծերում, իսկ վերադարձները `հավասարության նշանից առաջ:
Նախքան կոդավորումը սկսելը, յուրաքանչյուր գործառույթին տալիս եմ հրամանի կոդ `սկսած 128 -ից (երկուական 0b10000000) և աշխատում է դեպի վեր: Ես ամբողջությամբ արձանագրում եմ արձանագրությունը `ապահովելու համար, որ երբ գլուխս ծածկագրում է, ես ունեմ մի գեղեցիկ փաստաթուղթ, որին կարող եմ վերադառնալ: Այս նախագծի ամբողջական արձանագրային փաստաթուղթը կցված է և ներառում է մուտքային հրամանի կոդերը և բիտերի լայնությունները:
Քայլ 3: irmրագրակազմի նախագծում
Արձանագրությունը հաստատվելուց հետո այն գործնականում գործարկելու է սարքաշարի վրա:
Ես ընդունում եմ մի պարզ պետական մեքենայական տիպի մոտեցում, երբ մշակում եմ ստրուկ համակարգեր `փորձելու և առավելագույնի հասցնել պոտենցիալ հրամանատարության և տվյալների թողունակությունը` միաժամանակ որոնվածը պարզ հասկանալով և կարգաբերելիս: Փոխարենը կարող է օգտագործվել ավելի առաջադեմ համակարգ, ինչպիսին է Modbus- ը, եթե այլ միացված սարքերի հետ ավելի լավ փոխազդեցության կարիք ունեք, բայց դա ավելացնում է ծախսերը, ինչը կդանդաղեցնի գործերը:
Պետական մեքենան բաղկացած է երեք վիճակից.
1) Հրամանների սպասում
2) պարամետրերի ստացում
3) Պատասխանել
Երեք պետությունները փոխազդում են հետևյալ կերպ.
1) Մենք անցնում ենք բուֆերի մուտքային բայթերով, մինչև մենք կունենանք բայթ, որն ունի ամենակարևոր բիթ հավաքածուն: Երբ մենք ստանում ենք նման բայթ, մենք այն ստուգում ենք հայտնի հրամանների ցուցակի հետ: Եթե մենք գտնում ենք համընկնում, ապա մենք նշանակում ենք պարամետրերի բայթերի քանակը և վերադարձնում բայթերը `համապատասխանելու արձանագրությանը: Եթե պարամետրերի բայթեր չկան, մենք կարող ենք այստեղ կատարել հրամանը և կամ անցնել 3 վիճակին, կամ վերագործարկել վիճակը 1. Եթե պարամետրերի բայթեր կան, ապա մենք անցնում ենք 2 վիճակին:
2) Մենք անցնում ենք մուտքային բայթերը `դրանք պահելով, մինչև պահենք բոլոր պարամետրերը: Բոլոր պարամետրերն ունենալուց հետո կատարում ենք հրամանը: Եթե կան վերադարձի բայթեր, ապա մենք անցնում ենք 3 -րդ փուլ: Եթե ուղարկելու համար վերադարձի բայթեր չկան, ապա մենք վերադառնում ենք 1 -ին փուլ:
3) Մենք անցնում ենք մուտքային բայթերի միջոցով և յուրաքանչյուր բայտի համար մենք վերագրում ենք էխո բայթը `վավեր վերադարձի բայթով: Երբ մենք ուղարկենք բոլոր վերադարձի բայթերը, մենք վերադառնում ենք 1 -ին փուլ:
Ես օգտագործել եմ Flowcode- ը `որոնվածը նախագծելու համար, քանի որ այն գեղեցիկ տեսողականորեն ցույց է տալիս, թե ինչ եմ անում: Նույնը կարելի է անել հավասարապես Arduino- ում կամ այլ ներդրված ծրագրավորման լեզուներում:
Առաջին քայլը համակարգչի հետ հաղորդակցություն հաստատելն է: Դա անելու համար միկրո -ն պետք է կազմաձևվի ՝ ճիշտ արագությամբ աշխատելու համար, և մենք պետք է ավելացնենք կոդը ՝ USB և UART ծայրամասային սարքերը քշելու համար: Flowcode- ում դա նույնքան հեշտ է, որքան նախագծի մեջ քաշել USB սերիական բաղադրիչ և UART բաղադրիչ Comms բաղադրիչի ընտրացանկից:
Մենք ավելացնում ենք RX ընդհատում և բուֆեր ՝ UART- ում մուտքային հրամանները բռնելու համար, և մենք պարբերաբար հարցում ենք կատարում USB- ի միջոցով: Այնուհետև մենք կարող ենք մեր հանգստի գործընթացում բուֆերը:
Flowcode նախագիծը և գեներացված C ծածկագիրը կցված են:
Քայլ 4. Միացում հոսքի կոդի միջոցով
Flowcode սիմուլյացիան շատ հզոր է և թույլ է տալիս մեզ ստեղծել բաղադրիչ `տախտակի հետ խոսելու համար: Բաղադրիչ ստեղծելիս մենք այժմ կարող ենք պարզապես բաղադրիչը քաշել մեր նախագծի մեջ և ակնթարթորեն հասանելի դարձնել տախտակի գործառույթները: Որպես հավելյալ բոնուս, ցանկացած գոյություն ունեցող բաղադրիչ, որն ունի SPI, I2C կամ UART ծայրամասային սարք, կարող է օգտագործվել սիմուլյացիայի մեջ, իսկ կոմունալ ծառայությունների տվյալները կարող են ներարկիչի բաղադրիչի միջոցով տեղափոխվել միջերեսի տախտակին: Կցված պատկերները ցույց են տալիս էկրանին հաղորդագրություն տպելու պարզ ծրագիր: Հաղորդակցման տվյալները, որոնք ուղարկվում են Ինտերֆեյս տախտակի միջոցով փաստացի ցուցադրման ապարատին և բաղադրիչի կարգավորմանը `I2C Display, I2C Injector և Interface Board բաղադրիչներով:
Flowcode 8.1 -ի համար նոր SCADA ռեժիմը բացարձակ հավելյալ բոնուս է նրանով, որ մենք կարող ենք այնուհետև վերցնել ծրագիր, որն ինչ -որ բան անում է Flowcode սիմուլյատորում և արտահանել այն այնպես, որ այն առանձին աշխատի ցանկացած ԱՀ -ի վրա ՝ առանց լիցենզավորման խնդիրների: Սա կարող է հիանալի լինել այնպիսի նախագծերի համար, ինչպիսիք են փորձարկման սարքավորումները կամ սենսորային կլաստերները:
Ես օգտագործում եմ այս SCADA ռեժիմը `ստեղծելու WIFI կազմաձևման գործիք, որը կարող է օգտագործվել SSID- ի և գաղտնաբառի կազմաձևման, ինչպես նաև մոդուլի IP հասցեի հավաքագրման համար: Սա ինձ թույլ է տալիս ամեն ինչ կարգավորել USB կապի միջոցով, այնուհետև փոխանցել WIFI ցանցի միացմանը, երբ ինչ -որ բան աշխատում է:
Որոշ նախագծերի օրինակներ կցվում են:
Քայլ 5: Այլ միջերեսային մեթոդներ
Ինչպես նաև Flowcode- ը, ինտերֆեյսի տախտակի հետ հաղորդակցվելու համար կարող եք գրեթե օգտագործել ձեր նախընտրած ծրագրավորման լեզուն: Մենք օգտագործում էինք Flowcode- ը, քանի որ այն արդեն պարունակում էր մասերի գրադարան, որը մենք կարող էինք անմիջապես գործարկել, բայց դա վերաբերում է նաև շատ այլ լեզուների:
Ահա ինտերֆեյս տախտակի հետ հաղորդակցվելու լեզուների և մեթոդների ցանկ:
Python - սերիական գրադարանի օգտագործումը ՝ տվյալները COM պորտին կամ IP հասցեին հոսելու համար
Matlab - Ֆայլի հրամանների օգտագործումը ՝ տվյալները COM պորտին կամ IP հասցեին հոսելու համար
C ++ / C# / VB - Օգտագործելով կամ նախապես գրված DLL, ուղղակի մուտք դեպի COM պորտ կամ Windows TCP / IP API
Labview - Օգտագործելով կամ նախապես գրված DLL, VISA սերիական բաղադրիչ կամ TCP/IP բաղադրիչ
Եթե որևէ մեկը կցանկանա տեսնել, որ վերը նշված լեզուները կիրառվեն, խնդրում եմ ինձ տեղյակ պահեք:
Քայլ 6: Պատրաստի արտադրանք
Պատրաստի արտադրանքը, ամենայն հավանականությամբ, կլինի գալիք տարիների իմ ներկառուցված գործիքակազմի ակնառու հատկանիշը: Արդեն այն ինձ օգնել է մշակել Grove- ի տարբեր դիսփլեյների և տվիչների բաղադրիչներ: Այժմ ես կարող եմ ծածկագիրն ամբողջությամբ մեխել ՝ նախքան որևէ կոմպիլյացիայի կամ ծրագրավորման խարդախության դիմել:
Ես նույնիսկ որոշ տախտակներ եմ բաժանել գործընկերների համար, որպեսզի նրանք նույնպես կարողանան բարելավել իրենց աշխատանքային հոսքը, և դրանք շատ լավ ընդունվեցին:
Շնորհակալություն իմ Instructable- ը կարդալու համար: Հուսով եմ, որ այն օգտակար գտաք և հուսով եմ, որ դա ձեզ կներշնչի `ձեր սեփական արտադրողականությունը արագացնելու համար ձեր սեփական գործիքները ստեղծելու համար:
Խորհուրդ ենք տալիս:
PhytgetSBC3- ի համար Python վեբ ինտերֆեյսի ամբողջական հավաքածու: 6 քայլ
PhidgetSBC3- ի համար Python վեբ ինտերֆեյսի ամբողջական հավաքածու. Այն նման է ազնվամորի Pi- ի, բայց ունի 8 անալոգային սենսորային մուտք և 8 թվային մուտք և 8 թվային ելք: Այն ուղարկում է վեբ սերվեր և վեբ ծրագիր ՝ համատեղ
Սկսելով I2C տվիչների ինտերֆեյսի հետ ?? - Միացրեք ձեր MMA8451- ը ESP32- ների միջոցով. 8 քայլ
Սկսելով I2C տվիչների ինտերֆեյսի հետ ?? - Միացրեք ձեր MMA8451- ը ESP32- երի միջոցով. Այս ձեռնարկում դուք կսովորեք այն մասին, թե ինչպես սկսել, միացնել և ձեռք բերել վերահսկիչով աշխատող I2C սարքը (արագացուցիչ) (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
ESP8266 RGB LED STRIP WIFI Կառավարում - NODEMCU Որպես IR հեռակառավարիչ ՝ առաջնորդվող ժապավենի համար, որը վերահսկվում է WiFi- ով - RGB LED STRIP սմարթֆոնի կառավարում ՝ 4 քայլ
ESP8266 RGB LED STRIP WIFI Կառավարում | NODEMCU Որպես IR հեռակառավարիչ ՝ առաջնորդվող ժապավենի համար, որը վերահսկվում է WiFi- ով | RGB LED STRIP սմարթֆոնի վերահսկում. Բարև տղերք, այս ձեռնարկում մենք կսովորենք, թե ինչպես օգտագործել nodemcu կամ esp8266 որպես IR հեռակառավարիչ ՝ RGB LED ժապավենը կառավարելու համար, և Nodemcu- ն սմարթֆոնի միջոցով կառավարվելու է wifi- ով: Այսպիսով, հիմնականում դուք կարող եք վերահսկել RGB LED STRIP- ը ձեր սմարթֆոնի միջոցով
RC մեքենայի կառավարում վեբ ինտերֆեյսի միջոցով. 6 քայլ (նկարներով)
RC Car- ի կառավարում վեբ միջերեսի միջոցով. Մենք դա անլար կերպով վերահսկելու ենք մեր իսկ սերվերի միջոցով: Օգտագործելով այն մեթոդը, որը ես ձեզ ցույց կտամ, մենք կարիք չենք ունենա օգտագործել RC ընդունիչ: Համացանցը հյուրընկալելու համար
Ունիվերսալ ականջակալ/ականջակալների ձայնի ձայնի կառավարում. 8 քայլ (նկարներով)
Ունիվերսալ ականջակալ/ականջակալների ձայնի ձայնի կառավարում. Այսպիսով, ես Հոնկոնգից գնեցի PMP (դյուրակիր մեդիա նվագարկիչ), որպեսզի կարողանամ խաղալ NES- ի խաղերը ինքնաթիռի էմուլյատորի հետ, որտեղ հարմար էր: Երկար ճանապարհորդությունները, թռիչքները, սպասասրահները և այլն այն վայրերն են, որոնք ես սիրում եմ ժամանակ սպանել շարժական միջոցներով, բայց