- Увод у ЦАН
- Поређење ЦАН-а са СПИ и И2Ц
- Примене ЦАН протокола
- Како се користи ЦАН протокол у Ардуину
- Компоненте потребне
- Кружни дијаграм
- Веза између два МЦП2515 ЦАН модула
- Програмирање Ардуина за ЦАН комуникацију
- Објашњење бочног кода ЦАН предајника (Ардуино Нано)
- Објашњење бока ЦАН пријемника (Ардуино УНО)
- Рад ЦАН комуникације у Ардуину
Данас се сваки просечни аутомобил у њему састоји од око 60 до 100 сензорских јединица за откривање и размену информација. Будући да произвођачи аутомобила непрестано чине свој аутомобил паметнијим, са функцијама попут аутономне вожње, системом ваздушних јастука, надзором притиска у гумама, системом темпомата итд., Очекује се да ће овај број бити висок. За разлику од осталих сензора, ови сензори обрађују критичне информације и стога би подаци са тих сензора требало да се преносе помоћу стандардних протокола аутомобилске комуникације. На пример, подаци система темпомата попут брзине, положаја лептира за гас итд. Су виталне вредности које се шаљу електронској управљачкој јединици (ЕЦУ)да би се одлучило о степену убрзања аутомобила, погрешна комуникација или губитак података овде може довести до критичних кварова. Стога, за разлику од стандардних комуникационих протокола попут УАРТ, СПИ или И2Ц, дизајнери користе много поузданије аутомобилске комуникационе протоколе попут ЛИН, ЦАН, ФлекРаи итд.
Од свих доступних протокола, ЦАН се претежније користи и популарнији. Већ смо разговарали о томе шта је ЦАН и како ЦАН ради. Дакле, у овом чланку ћемо поново проучити основе, а затим ћемо коначно разменити податке између два Ардуиноа користећи ЦАН комуникацију. Звучи занимљиво, тачно! Па, кренимо.
Увод у ЦАН
ЦАН ака Цонтроллер Ареа Нетворк је серијска комуникациона магистрала дизајнирана за индустријске и аутомобилске примене. То је протокол заснован на порукама који се користи за комуникацију између више уређаја. Када је више ЦАН уређаја повезано заједно, као што је приказано доле, веза формира мрежу која делује попут нашег централног нервног система омогућавајући било ком уређају да разговара са било којим другим уређајем у чвору.
МОГУ Мрежа ће се састојати од само две жице се висока и ЦАН Лов за двосмерну пренос података као што је приказано горе. Обично се брзина комуникације за ЦАН креће од 50 Кбпс до 1Мбпс, а удаљеност се може кретати од 40 метара при 1Мбпс до 1000 метара при 50кббс.
Формат ЦАН поруке:
У ЦАН комуникацији подаци се преносе у мрежи као одређени формат поруке. Овај формат поруке садржи много сегмената, али два главна сегмента су идентификатор и подаци који помажу у слању и одговору на поруке у ЦАН сабирници.
Идентификатор или ЦАН ИД: Идентификатор је познат и као ЦАН ИД или ПГН (број групе параметара). Користи се за идентификацију ЦАН уређаја присутних у ЦАН мрежи. Дужина идентификатора је 11 или 29 бита на основу врсте ЦАН протокола који се користи.
Стандардни ЦАН: 0-2047 (11-битни)
Проширени ЦАН: 0-2 29 -1 (29-бит)
Подаци: Ово су стварни подаци сензора / управљања који се шаљу са једног уређаја на други. Подаци о величини могу бити од 0 до 8 бајтова.
Код дужине података (ДЛЦ): 0 до 8 за број присутних бајтова података.
Жице које се користе у ЦАН-у:
ЦАН протокол састоји се од две жице, наиме ЦАН_Х и ЦАН_Л за слање и примање информација. Обе жице делују као диференцијална линија, што значи да је сигнал ЦАН (0 или 1) представљен потенцијалном разликом између ЦАН_Л и ЦАН_Х. Ако је разлика позитивна и већа од одређеног минималног напона, онда је 1, а ако је разлика негативна 0.
Обично се за ЦАН комуникацију користи кабл са уврнутим парицама. Појединачни отпорник од 120 ома обично се користи на два краја мреже ЦАН, као што је приказано на слици, то је зато што линија мора бити уравнотежена и везана за исти потенцијал.
Поређење ЦАН-а са СПИ и И2Ц
Пошто смо већ научили како да користимо СПИ са Ардуином и ИИЦ са Ардуино, упоредимо карактеристике СПИ и И2Ц са ЦАН
Параметар | СПИ | И2Ц | МОЋИ |
Брзина | 3Мбпс до 10Мбпс | Стандардно: 100Кбпс | 10КБпс до 1МБпс Такође зависи од дужине кориштене жице |
Брзо: 400 Кбпс | |||
Велика брзина: 3.4Мбпс | |||
Тип | Синхроно | Синхроно | Асинхрони |
Број жица | 3+ (МИСО, МОСИ, СЦК, СС1, СС2… СС (н)) | 2 жице (СДА, СЦЛ) | 2 жице (ЦАН_Х, ЦАН_Л) |
Дуплек | Фулл Дуплек | Халф Дуплек | Халф Дуплек |
Примене ЦАН протокола
- Због робусности и поузданости ЦАН протокола, користе се у индустријама попут аутомобилске, индустријских машина, пољопривреде, медицинске опреме итд.
- Како се у ЦАН-у смањује сложеност ожичења, они се углавном користе у аутомобилским апликацијама попут аутомобила.
- Ниска цена за имплементацију, а такође и цена хардверских компонената је такође мања.
- Једноставно додавање и уклањање уређаја сабирнице ЦАН.
Како се користи ЦАН протокол у Ардуину
Како Ардуино не садржи уграђени ЦАН порт, користи се ЦАН модул назван МЦП2515. Овај ЦАН модул је повезан са Ардуином помоћу СПИ комуникације. Да видимо детаљније о МЦП2515 и како је он повезан са Ардуином.
МЦП2515 ЦАН модул:
МЦП2515 модул има ЦАН контролер МЦП2515 који је брзи ЦАН примопредајник. Веза између МЦП2515 и МЦУ је преко СПИ. Дакле, лако је успоставити везу са било којим микроконтролером који има СПИ интерфејс.
За почетнике који желе да науче ЦАН Бус, овај модул ће деловати као добар почетак. Ова ЦАН СПИ плоча идеална је за индустријску аутоматизацију, кућну аутоматизацију и друге аутомобилске пројекте.
Карактеристике и спецификације МЦП2515:
- Користи брзи ЦАН примопредајник ТЈА1050
- Димензије: 40 × 28мм
- СПИ контрола за проширење интерфејса сабирнице Мулти ЦАН
- Кристални осцилатор од 8 МХз
- Отпор стезаљке 120Ω
- Има независни тастер, ЛЕД индикатор, индикатор напајања
- Подржава 1 Мб / с ЦАН рад
- Слаба струја у стању приправности
- Може се повезати до 112 чворова
Пиноут модула МЦП2515 ЦАН:
Пин Наме |
УСЕ |
ВЦЦ |
Пин за улаз снаге 5В |
ГНД |
Приземни пин |
ЦС |
СПИ СЛАВЕ изаберите пин (Ацтиве лов) |
ТАКО |
СПИ главни улазни помоћни излазни кабл |
СИ |
СПИ главни излазни славе улазни кабл |
СЦЛК |
СПИ игла за сат |
ИНТ |
МЦП2515 пин за прекид |
У овом упутству ћемо видети како послати податке сензора влажности и температуре (ДХТ11) са Ардуино Нано на Ардуино Уно преко модула сабирнице ЦАН МЦП2515.
Компоненте потребне
- Ардуино УНО
- Ардуино НАНО
- ДХТ11
- ЛЦД екран од 16к2
- МЦП2515 ЦАН модул - 2
- 10к потенциометар
- Бреадбоард
- Повезивање жица
Кружни дијаграм
Прикључак на страни ЦАН предајника:
Компонента - Пин |
Ардуино Нано |
МПЦ2515 - ВЦЦ |
+ 5В |
МПЦ2515 - ГНД |
ГНД |
МПЦ2515 - ЦС |
Д10 (СПИ_СС) |
МПЦ2515 - СО |
Д12 (СПИ_МИСО) |
МПЦ2515 - СИ |
Д11 (СПИ_МОСИ) |
МПЦ2515 - СЦК |
Д13 (СПИ_СЦК) |
МПЦ2515 - ИНТ |
Д2 |
ДХТ11 - ВЦЦ |
+ 5В |
ДХТ11 - ГНД |
ГНД |
ДХТ11 - ОУТ |
А0 |
Кружне везе на страни ЦАН пријемника:
Компонента - Пин |
Ардуино УНО |
МПЦ2515 - ВЦЦ |
+ 5В |
МПЦ2515 - ГНД |
ГНД |
МПЦ2515 - ЦС |
10 (СПИ_СС) |
МПЦ2515 - СО |
12 (СПИ_МИСО) |
МПЦ2515 - СИ |
11 (СПИ_МОСИ) |
МПЦ2515 - СЦК |
13 (СПИ_СЦК) |
МПЦ2515 - ИНТ |
2 |
ЛЦД - ВСС |
ГНД |
ЛЦД - ВДД |
+ 5В |
ЛЦД - В0 |
На ПИН центра за потенциометар 10К |
ЛЦД - РС |
3 |
ЛЦД - РВ |
ГНД |
ЛЦД - Е. |
4 |
ЛЦД - Д4 |
5 |
ЛЦД - Д5 |
6 |
ЛЦД - Д6 |
7 |
ЛЦД - Д7 |
8 |
ЛЦД - А |
+ 5В |
ЛЦД - К |
ГНД |
Веза између два МЦП2515 ЦАН модула
Х - МОЖЕ високо
Л - МОЖЕ низак
МЦП2515 (Ардуино Нано) |
МЦП2515 (Ардуино УНО) |
Х. |
Х. |
Л |
Л |
Једном када су успостављене све везе, мој хардвер је изгледао овако доле
Програмирање Ардуина за ЦАН комуникацију
Прво морамо да инсталирамо библиотеку за ЦАН у Ардуино ИДЕ. Повезивање МЦП2515 ЦАН модула са Ардуином постаје лакше коришћењем следеће библиотеке.
- Преузмите ЗИП датотеку библиотеке Ардуино ЦАН МЦП2515.
- Из Ардуино ИДЕ: Скица -> Укључи библиотеку -> Додај.ЗИП библиотеку
У овом упутству кодирање је подељено на два дела, један као ЦАН код предајника (Ардуино Нано) и други као ЦАН код пријемника (Ардуино УНО), а оба се могу наћи на дну ове странице. Објашњење истог је следеће.
Пре писања програма за слање и примање података, уверите се да сте инсталирали библиотеку пратећи горње кораке и да ли је ЦАН модул МЦП2515 иницијализован у вашем програму на следећи начин.
Иницијализујте МЦП2515 ЦАН модул:
Да бисте креирали везу са МЦП2515, следите кораке:
1. Подесите пин број на који је повезан СПИ ЦС (10 подразумевано)
МЦП2515 мцп2515 (10);
2. Подесите брзину преноса података и фреквенцију осцилатора
мцп2515.сетБитрате (ЦАН_125КБПС, МЦП_8МХЗ);
Доступне брзине преноса:
ЦАН_5КБПС, ЦАН_10КБПС, ЦАН_20КБПС, ЦАН_31К25БПС, ЦАН_33КБПС, ЦАН_40КБПС, ЦАН_50КБПС, ЦАН_80КБПС, ЦАН_83К3БПС, ЦАН_95КБПС, ЦАН_100КБПС, ЦАН_125КБПС ЦАН_125КБПС ЦАН_125КБПС ЦАН_125КБПС ЦАН_125КБПС ЦАН_125КБПС ЦАН_125КБПС ЦАН_125КБПС ЦАН_125 КБ
Доступне брзине сата:
МЦП_20МХЗ, МЦП_16МХЗ, МЦП_8МХЗ
3. Подесите режиме.
мцп2515.сетНормалМоде (); мцп2515.сетЛоопбацкМоде (); мцп2515.сетЛистенОнлиМоде ();
Објашњење бочног кода ЦАН предајника (Ардуино Нано)
У одељку предајника, Ардуино Нано повезан са модулом МЦП2515 ЦАН преко СПИ пинова и ДХТ11 шаље податке о температури и влажности на ЦАН магистралу.
Прво су укључене потребне библиотеке, СПИ библиотека за употребу СПИ комуникације, МЦП2515 библиотека за употребу ЦАН комуникације и ДХТ библиотека за употребу ДХТ сензора са Ардуином . Претходно смо повезали ДХТ11 са Ардуином.
#инцлуде
Сада је дефинисано име пина ДХТ11 (ОУТ пин) које је повезано са А0 Ардуино Нано-а
#дефине ДХТПИН А0
Такође, ДХТТИПЕ је дефинисан као ДХТ11.
#дефине ДХТТИПЕ ДХТ11
А цанМсг струцт тип података за чување МОГУ формат поруке.
струцт цан_фраме цанМсг;
Подесите пин број на који је повезан СПИ ЦС (10 подразумевано)
МЦП2515 мцп2515 (10);
Такође, објекат дхт за класу ДХТ са ДХТ пином са Ардуино Нано и ДХТ типом као ДХТ11 је иницијализован.
ДХТ дхт (ДХТПИН, ДХТТИП);
Следеће у воид сетуп ():
Започните СПИ комуникацију користећи следећу изјаву
СПИ.бегин ();
А затим користите доњу изјаву да бисте почели да примате вредности температуре и влажности са ДХТ11 сензора.
дхт.бегин ();
Даље се МЦП2515 РЕСЕТује помоћу следеће наредбе
мцп2515.ресет ();
Сада је МЦП2515 подешена брзина од 500КБПС и 8МХЗ као сат
мцп2515.сетБитрате (ЦАН_500КБПС, МЦП_8МХЗ);
А МЦП2525 је постављен у нормални режим
мцп2515.сетНормалМоде ();
У воид петљи ():
Следећа изјава добија вредност влажности и температуре и чува у целобројној променљивој х и т.
инт х = дхт.реадХумидити (); инт т = дхт.реадТемпературе ();
Даље се ЦАН ИД даје као 0к036 (по избору), а ДЛЦ као 8, а ми дајемо х и т податке подацима и подацима и све податке одмарамо са 0.
цанМсг.цан_ид = 0к036; цанМсг.цан_длц = 8; цанМсг.дата = х; // Ажурирање вредности влажности у цанМсг.дата = т; // Ажурирање вредности температуре у цанМсг.дата = 0к00; // Одмарај све са 0 цанМсг.дата = 0к00; цанМсг.дата = 0к00; цанМсг.дата = 0к00; цанМсг.дата = 0к00; цанМсг.дата = 0к00;
На крају, за слање поруке на ЦАН БУС користимо следећу изјаву.
мцп2515.сендМессаге (& цанМсг);
Дакле, сада се подаци о температури и влажности шаљу као порука ЦАН магистрали.
Објашњење бока ЦАН пријемника (Ардуино УНО)
У одељку пријемника, Ардуино УНО се повезао са МЦП2515 и 16к2 ЛЦД екраном. Овде Ардуино УНО прима температуру и влажност са ЦАН магистрале и приказује податке примљене на ЛЦД-у.
Прво су укључене потребне библиотеке, СПИ библиотека за коришћење СПИ комуникације, МЦП2515 библиотека за употребу ЦАН комуникације и ЛикуидЦрситал библиотека за употребу 16к2 ЛЦД-а са Ардуином .
#инцлуде
Следеће су дефинисани ЛЦД пинови који се користе за повезивање са Ардуино УНО.
цонст инт рс = 3, ен = 4, д4 = 5, д5 = 6, д6 = 7, д7 = 8; ЛЦД ЛикуидЦристал (рс, ен, д4, д5, д6, д7);
, Струцт тип података је проглашен за складиштење МОГУ формат поруке.
струцт цан_фраме цанМсг;
Подесите пин број на који је повезан СПИ ЦС (10 подразумевано)
МЦП2515 мцп2515 (10);
У воид подешавању ():
Прво се ЛЦД постави у режим 16к2 и приказује се порука добродошлице.
лцд.бегин (16,2); лцд.сетЦурсор (0,0); лцд.принт ("ДИГЕСТ ЦИРЦУИТ"); лцд.сетЦурсор (0,1); лцд.принт ("МОЖЕ АРДУИНО"); кашњење (3000); лцд.цлеар ();
Започните СПИ комуникацију користећи следећу изјаву.
СПИ.бегин ();
Даље се МЦП2515 РЕСЕТује помоћу следеће наредбе.
мцп2515.ресет ();
Сада је МЦП2515 подешена брзина од 500КБПС и 8МХЗ као сат.
мцп2515.сетБитрате (ЦАН_500КБПС, МЦП_8МХЗ);
А МЦП2525 је постављен у нормални режим.
мцп2515.сетНормалМоде ();
Следећа у воид петљи ():
Следећа изјава се користи за примање поруке са ЦАН сабирнице. Ако је порука примљена, она прелази у стање иф .
иф (мцп2515.реадМессаге (& цанМсг) == МЦП2515:: ЕРРОР_ОК)
У стању иф подаци се примају и чувају у ц анМсг , подаци који имају вредност влажности и подаци који имају вредност температуре. Обе вредности се чувају у целом броју к и и.
инт к = цанМсг.дата; инт и = цанМсг.дата;
Након пријема вредности, вредности температуре и влажности се приказују на ЛЦД дисплеју 16к2 користећи следећу изјаву.
лцд.сетЦурсор (0,0); лцд.принт ("Влажност:"); лцд.принт (к); лцд.сетЦурсор (0,1); лцд.принт ("Темп:"); лцд.принт (и); кашњење (1000); лцд.цлеар ();
Рад ЦАН комуникације у Ардуину
Када је хардвер спреман, отпремите програм за ЦАН предајник и ЦАН пријемник (комплетни програми су дати у наставку) на одговарајуће Ардуино плоче. Када поверед требало би да приметите температура вредност чита ДХТ11 ће бити послат у другу Ардуино кроз ЦАН комуникацију и приказују на ЛЦД на 2 ј Ардуино као што можете видети у наставку сликом. Такође сам помоћу даљинског управљача за наизменичну струју проверио да ли је температура приказана на ЛЦД-у близу стварне собне температуре.
Комплетан рад можете пронаћи на видео линку испод. Ако имате питања, оставите их у одељку за коментаре или користите наша форума за друга техничка питања.