Мазмуну:
- 1 -кадам: PCB долбоорлоо
- 2 -кадам: Протоколду иштеп чыгуу
- 3 -кадам: Камтылган программаны иштеп чыгуу
- 4 -кадам: Flowcode аркылуу интерфейс
- 5 -кадам: Башка интерфейс ыкмалары
- 6 -кадам: даяр продукт
Video: Камтылган Universal Interface Board - USB/Bluetooth/WIFI Control: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Мен көбүнчө жаңы камтылган модулдар үчүн китепканаларды түзмөктүн маалымат барагынын негизинде нөлдөн баштап түзөм. Китепкананы түзүүдө мен коддордун циклине кептелип калам, компиляция жасайм, программалайм жана тесттер иштешин камсыз кылат жана катасыз. Көбүнчө компиляция жана программалоо убактысы кодду түзөтүү убактысынан алда канча узак болушу мүмкүн жана иштеп чыгууда бул кадамдарды кесүү ыкмасы абдан ыңгайлуу болмок.
Ошондой эле, мен көбүнчө орнотулган модулду компьютер менен интерфейске салгым келет. Эгерде модулда атайын USB туташуусу жок болсо, анда көбүнчө ушундай болсо, анда көбүнчө SPI же жөн эле I2C сыяктуу бир жумушту аткара турган өтө кымбат USB конвертерин сатып алууга туура келет.
Дал ушул себептерден улам универсалдуу интерфейс тактасын түзүүнү чечтим. Бул орнотулган модулдар менен компьютерге негизделген оңой байланышууга мүмкүнчүлүк берүү үчүн иштелип чыккан.
Мен тактага орнотулган интерфейстин өзгөчөлүктөрү кирет.
- Санариптик I/O
- I2C
- SPI
- UART
- PWM
- Servo Motor
- ADC киргизүү
- DAC чыгаруу
Мунун баары толугу менен өз алдынча колдонулушу мүмкүн.
Интерфейс тактасын компьютерге USB туташуусу аркылуу көзөмөлдөсө болот, бирок тактаны алыстан же IoT сценарийинде колдонууга уруксат берүү үчүн кошумча WIFI же Bluetooth модулунун туташуулары бар.
Стандарттык 2.54мм SIL аталыштарын колдонуу менен, тактай менен камтылган модулдун ортосундагы аял дюпон кабелдерин тез, ишенимдүү жана ширетпей туташтырууга мүмкүндүк берет.
Мен ошондой эле CAN, LIN, H-bridge сыяктуу нерселерди кошуу жөнүндө ойлондум, бирок булар кийинчерээк v2 версиясы менен келиши мүмкүн.
1 -кадам: PCB долбоорлоо
ПКБны иштеп чыгууда мен нерселерди мүмкүн болушунча жөнөкөй сактоону жакшы көрөм. Кол менен такталарды кура турган болсоңуз, компоненттерди белгилүү бир максатты аткарганда гана кошуу жана микроконтроллердин мүмкүн болушунча ички мүмкүнчүлүктөрүн колдонуу маанилүү.
Тандалган электроника жеткирүүчүсүнө карап, мен издеп жүргөн өзгөчөлүктөргө ээ болгон ыңгайлуу болгон чипти таптым жана бул акылга сыярлык баа. Мен түшкөн чип PIC18F24K50 болчу.
Жеткиликтүү 23 I/O казыктары менен бул мага бул өзгөчөлүктөрдү берди
- Digtal I/O
- I2C
- SPI
- UART
- PWM x 2
- Серво мотору x 6
- ADC киргизүү x 3
- DAC чыгаруу x 1
- I/O 5V же 3V3 менен шартталган
- LED абалы
Мен тандаган ICдин бир кемчилиги - бул бир гана UART перифериялык түзүлүшү бар, ошондуктан Bluetooth же Wifi башкаруу ыкмасын колдонуу UART туташуусун колдонууну токтотот.
Жогорудагы сүрөттөрдө даяр схема жана ПХБ көрсөтүлгөн.
2 -кадам: Протоколду иштеп чыгуу
Протоколду иштеп чыгуунун биринчи кадамы, тактага эмне кылуу керек экенин чечүү болуп саналат. Бөлүшүү жакшыраак көзөмөл деңгээлин кошот, ал эми нерселерди чогуу чогултуу интерфейсти жөнөкөйлөтөт жана такта менен ЖКнын ортосундагы трафикти азайтат. Бул теңдештирүүчү оюн жана аны өркүндөтүү кыйын.
Тактанын ар бир функциясы үчүн сиз каалаган параметрлерди жана кайтарымдарды көрсөтүшүңүз керек. Мисалы, ADC кирүүсүн окуу функциясы кайсы киришти тандап алууну жана натыйжаны камтыган кайтарым маанини көрсөтө турган параметрге ээ болушу мүмкүн.
Менин дизайнымда бул жерде мен киргизгим келген функциялардын тизмеси:
-
Санариптик I/O
- SetPin (PinNumber, штаты)
- Мамлекет = GetPin (PinNumber)
-
SPI
- Баштоо (SPI режими)
- DataIn = Transfer (DataOut)
- ControlChipSelect (Канал, Мамлекет)
- SetPrescaler (Rate)
-
I2C
- Баштоо ()
- Баштоо ()
- Кайра жүргүзүү ()
- Токтоо ()
- SlaveAck = Жөнөтүү (DataOut)
- DataIn = Алуу (Акыркы)
-
UART
- Баштоо ()
- TX байт (DataOut)
- BytesAvailable = RX саны ()
- DataIn = RX байт ()
- SetBaud (Baud)
-
PWM
- Иштетүү (Канал)
- Өчүрүү (Канал)
- SetFrequency (Channel, Frequency)
- GetMaxDuty (Милдет)
- SetDuty (Милдет)
-
Servo
- Иштетүү (Канал)
- Өчүрүү (Канал)
- SetPosition (Канал, Позиция)
-
ADC
ADCsample = Үлгү (Канал)
-
DAC
- Иштетүү
- Өчүрүү
- SetOutput (Voltage)
-
WIFI
- SetSSID (SSID)
- Сырсөз коюу (Сырсөз)
- Статус = CheckConnectionStatus ()
- IP = GetIPAddress ()
Параметрлер кашааларда көрсөтүлөт жана кайтаруулар барабар символдун алдында көрсөтүлөт.
Мен коддоону баштоодон мурун мен ар бир функцияга 128ден башталган командалык кодду (бинардык 0b10000000) жана жогору карай иштөөнү тапшырам. Мен протоколду толугу менен документтештирип, башым коддо болгондон кийин кайрыла турган жакшы документ бар экенин камсыз кылуу үчүн. Бул долбоордун толук протоколу документи тиркелет жана кирген буйрук коддорун жана бит туурасын камтыйт.
3 -кадам: Камтылган программаны иштеп чыгуу
Протокол түзүлгөндөн кийин, бул аппараттык функцияларды ишке ашыруу учуру.
Мен потенциалдуу буйрукту жана маалымат өткөрүмдүүлүгүн жогорулатуу үчүн кул системаларын иштеп чыгууда жөнөкөй мамлекеттик типтеги ыкманы кабыл алам, ал эми микрофонду түшүнүү жана мүчүлүштүктөрдү оңой сактоо. Башка туташкан түзмөктөр менен жакшыраак өз ара аракеттенүү керек болсо, анын ордуна Modbus сыяктуу өнүккөн системаны колдонсо болот, бирок бул нерселерди жайлатуучу кошумча чыгымдарды кошот.
Мамлекеттик машина үч абалдан турат:
1) буйруктарды күтүү
2) параметрлерди алуу
3) Жооп берүү
Үч мамлекет төмөнкүчө өз ара аракеттенишет:
1) Биз эң маанилүү битке ээ болгон байтка чейин буфердеги кирүүчү байттарды аралайбыз. Биз мындай байтты алган соң, аны белгилүү буйруктардын тизмеси менен текшеребиз. Эгерде биз дал келүүнү тапсак, анда биз протоколго дал келүү үчүн параметр байттардын санын жана кайтаруучу байттарды дайындайбыз. Эгерде эч кандай параметр байттары жок болсо, анда биз бул жердеги буйрукту аткара алабыз же 3 -абалга өтөбүз же 1 -абалды кайра баштайбыз. Эгерде параметр байттары бар болсо, анда биз 2 -абалга жылабыз.
2) Биз бардык параметрлерди сактаганга чейин аларды сактап жаткан кирүүчү байттарды аралайбыз. Бардык параметрлер бар болгондон кийин биз буйрукту аткарабыз. Эгерде кайтуу байттары бар болсо, анда биз 3 -этапка өтөбүз. Эгерде жөнөтүүчү байт жок болсо, анда биз 1 -этапка кайтабыз.
3) Биз кирген байттарды аралайбыз жана ар бир байт үчүн жарактуу кайтаруучу байт менен эхо байтты кайра жазабыз. Бардык кайтаруу байттарын жөнөткөндөн кийин, биз 1 -этапка кайтабыз.
Мен программалык камсыздоону иштеп чыгуу үчүн Flowcode колдондум, анткени ал эмне кылып жатканымды визуалдуу түрдө көрсөтөт. Ушул эле нерсени Arduino же башка камтылган программалоо тилдеринде да бирдей жасаса болот.
Биринчи кадам - ЖК менен байланыш түзүү. Бул үчүн микро туура ылдамдыкта иштеши үчүн конфигурацияланышы керек жана биз USB жана UART перифериялык түзүлүштөрүн айдай турган кодду кошушубуз керек. Flowcodeдо бул долбоорго Comms компоненти менюсунан USB Serial компоненти менен UART компонентин сүйрөө сыяктуу оңой.
Биз UART боюнча келген буйруктарды кармоо үчүн RX үзгүлтүгүн жана буферин кошобуз жана USBден дайыма сурамжылоо жүргүзөбүз. Биз бош убактыбызда буферди иштете алабыз.
Flowcode долбоору жана түзүлгөн C коду тиркелет.
4 -кадам: Flowcode аркылуу интерфейс
Flowcode симуляциясы абдан күчтүү жана такта менен сүйлөшүү үчүн компонент түзүүгө мүмкүндүк берет. Компонентти түзүүдө биз азыр компонентти долбоорубузга сүйрөп кирип, ошол замат доска функцияларын колдоно алабыз. Кошумча бонус катары, SPI, I2C же UART перифериялык түзүлүштөрү бар болгон бардык компоненттер симуляцияда колдонулушу мүмкүн жана комм маалыматтары Инжектор компоненти аркылуу интерфейс тактасына өткөрүлүшү мүмкүн. Тиркелген сүрөттөр дисплейге билдирүү басып чыгаруу үчүн жөнөкөй программаны көрсөтөт. Интерфейс тактасы аркылуу I2C Display, I2C Injector жана Interface Board компоненттери менен иш жүзүндөгү дисплей жабдыктарына жана компоненттерди орнотууга жөнөтүлгөн комм маалыматтары.
Flowcode 8.1 үчүн жаңы SCADA режими - бул абсолюттук кошумча бонус, анда биз Flowcode симуляторунда бир нерсе кылган программаны алып, аны экспорттой алабыз, ошондо ал эч кандай лицензиялык көйгөйсүз каалаган компьютерде жалгыз иштейт. Бул сыноо жабдуулары же сенсордук кластерлер сыяктуу долбоорлор үчүн сонун болушу мүмкүн.
Мен бул SCADA режимин SSIDди жана паролду конфигурациялоодо, ошондой эле модулдун IP дарегин чогултууда колдонула турган WIFI конфигурация куралын түзүү үчүн колдоном. Бул мага USB туташуусун орнотуп, анан нерселер иштеп баштаганда WIFI тармагына өткөрүүгө мүмкүнчүлүк берет.
Кээ бир долбоорлордун мисалдары тиркелет.
5 -кадам: Башка интерфейс ыкмалары
Flowcode сыяктуу эле, интерфейс тактасы менен баарлашуу үчүн сиз каалаган программалоо тилин колдонсоңуз болот. Биз Flowcode колдонгонбуз, анткени анын бөлүктөрүнүн китепканасы бар болчу, биз аны дароо ишке киргизе алмакпыз, бирок бул башка көптөгөн тилдерге да тиешелүү.
Бул жерде Interface тактасы менен байланышуу үчүн тилдердин жана методдордун тизмеси келтирилген.
Python - COM портуна же IP дарегине маалыматтарды берүү үчүн сериялык китепкананы колдонуу
Matlab - Маалыматты COM портуна же IP дарегине жеткирүү үчүн File командаларын колдонуу
C ++ / C# / VB - Алдын ала жазылган DLLди колдонуу менен, COM портуна же Windows TCP / IP API түз кирүү
Labview - Алдын ала жазылган DLL, VISA Serial компоненти же TCP/IP компонентин колдонуу
Эгерде кимде -ким жогорудагы тилдердин аткарылышын кааласа, анда мага кабарлаңыз.
6 -кадам: даяр продукт
Даяр продукт кийинки жылдарда менин камтылган шаймандар топтомумда көрүнүктүү өзгөчөлүк болуп калышы мүмкүн. Буга чейин ал мага ар кандай Grove дисплейлеринин жана сенсорлорунун компоненттерин иштеп чыгууга жардам берген. Мен азыр кодду кандайдыр бир компиляцияга же программалоо shenanigansка кайрылуудан мурун толугу менен кадап ала алам.
Мен дагы кесиптештериме иштөө процессин жакшыртуу үчүн кээ бир тактайчаларды тапшырдым, алар абдан жакшы кабыл алынды.
Менин көрсөтмөмдү окуганыңыз үчүн рахмат, мен сизге пайдалуу болду деп үмүттөнөм жана бул сиздин өндүрүмдүүлүгүңүздү тездетүү үчүн өзүңүздүн шаймандарыңызды түзүүгө дем берет деп үмүттөнөм.
Сунушталууда:
Камтылган динамик менен сүрөт кармагыч: 7 кадам (сүрөттөр менен)
Камтылган динамик менен сүрөт кармагыч: Бул жерде сиз дем алыш күндөрү ишке ашыра турган эң сонун долбоор, эгерде сиз сүрөттөрдү/почта карттарын, ал тургай сиз кыла турган иштердин тизмесин кармай турган спикериңизди жасоону кааласаңыз. Куруунун бир бөлүгү катары, биз Raspberry Pi Zero Wди долбоордун жүрөгү катары колдонобуз жана
Камтылган терезе менеджери: 10 кадам
Камтылган терезе менеджери: Бул долбоор терезе башкаруучусун ЖК панели жана сенсордук экраны бар камтылган микро контроллерде кыймылдуу капталган терезелери менен кантип ишке ашырууну көрсөтөт. Бул үчүн коммерциялык жактан жеткиликтүү программалык пакеттер бар, бирок алар акчага турат жана жакын
Камтылган шкаф: 4 кадам
Камтылган шкаф.: Бактылуу аурада, нерселерди ичинде сактоо - бул чоң толкундануу сыяктуу нерсе. "Кулпунун кулпусу" деген ат чындыгында күнүмдүк макалаларымдын чукул бөлүгү болуп саналат, анткени анын табияты бардык жерде кездешет, бирок ал эмне кылат? Жөнөкөй
UCL камтылган - B0B Linefollower: 9 кадам
UCL камтылган-B0B Linefollower: Бул B0B.*B0B-бул жалпы радио көзөмөлдөгөн унаа, анын артынан линияны ээрчиген роботтун негизин тейлейт. Ага чейинки көптөгөн Line-follow роботтору сыяктуу эле, ал дагы калуу үчүн болгон күчүн жумшайт. кабат менен AC ортосундагы өтүүдөн улам пайда болгон сызык
3D Басылган Light Saber Arduino Powered Sound менен (файлдар камтылган): 6 кадам
3D басып чыгарылган жарык сабер Arduino Powered Sound менен (файлдар камтылган): Мен бул проектте иштеп жүргөндө эч качан жакшы окуу куралын таба алган эмесмин, ошондуктан мен аны жаратам деп ойлогом. Бул окуу куралы 3DPRINTINGWORLDдин кээ бир файлдарын колдонот жана коддун кээ бир бөлүктөрү JakeS0ftThingsтен келет: 1. 3D принтери