- РС-485 серијска комуникација
- Компоненте потребне
- Кружни дијаграм
- Програмирање СТМ32Ф103Ц8 и Ардуино УНО за серијску комуникацију РС485
- Тестирање РС485 комуникације између СТМ32Ф103Ц8 и Ардуино УНО:
Комуникацијски протоколи су саставни дио дигиталне електронике и уграђеног система. Где год постоји повезивање више микроконтролера и периферних уређаја, комуникациони протокол се мора користити за размену гомиле података. Доступне су многе врсте протокола серијске комуникације. РС485 је један од серијских комуникационих протокола и користи се у индустријским пројектима и тешким машинама.
О серијској комуникацији РС485 између Ардуино Уно и Ардуино Нано сазнали смо у претходном водичу . Овај водич говори о коришћењу серијске комуникације РС-485 у микроконтролеру СТМ32Ф103Ц8. Ако сте нови у СТМ32 микроконтролеру, започните са Почетком рада са СТМ32 помоћу Ардуино ИДЕ: Трепћућа ЛЕД лампица и овде проверите све СТМ32 пројекте.
У овом упутству Мастер СТМ32Ф103Ц8 има три тастера која се користе за контролу статуса три ЛЕД диоде присутне на Славе Ардуино Уно помоћу серијске комуникације РС-485.
Почнимо са разумевањем рада серијске комуникације РС-485.
РС-485 серијска комуникација
РС-485 је асинхрони серијски комуникацијски протокол за који није потребан сат. Користи технику која се назива диференцијални сигнал за пренос бинарних података са једног уређаја на други.
Па шта је овај метод диференцијалног преноса сигнала ??
Метода диференцијалног сигнала делује тако што ствара диференцијални напон коришћењем позитивних и негативних 5В. Омогућава Халф-Дуплек комуникацију када се користе две жице и Фулл-Дуплек комуникацију када се користе четири жице.
Коришћењем ове методе:
- РС-485 подржава већу брзину преноса података од максимално 30Мбпс.
- Такође пружа максималну удаљеност преноса података у поређењу са РС-232 протоколом. Преноси податке до максимално 1200 метара.
- Главна предност РС-485 у односу на РС-232 је вишеструки славе са једним Мастер док РС-232 подржава само једног славе.
- Може имати највише 32 уређаја повезана на РС-485 протокол.
- Још једна предност РС-485 је имуна на буку јер користе метод диференцијалног сигнала за пренос.
- РС-485 је бржи у поређењу са И2Ц протоколом.
РС-485 модул се може повезати са било којим микроконтролером који има серијски порт. За употребу РС-485 модула са микроконтролерима потребан је модул назван 5В МАКС485 ТТЛ до РС485 који се заснива на Маким МАКС485 ИЦ, јер омогућава серијску комуникацију на великим удаљеностима од 1200 метара, двосмеран је и полудуплекс има брзину преноса података од 2,5 Мбпс. Овај модул захтева напон од 5В.
РС-485 Опис пина:
Пин Наме |
Опис |
ВЦЦ |
5В |
А. |
Неинвертујући улаз пријемника Неинвертујући излаз возача |
Б. |
Инвертовање улаза пријемника Инвертовање излаза управљачког програма |
ГНД |
ГНД (0 В) |
Р0 |
Пријемник излаз (РКС пин) |
РЕ |
Излаз пријемника (ЛОВ-Енабле) |
ДЕ |
Излаз за возача (ХИГХ-Енабле) |
ДИ |
Улаз за возача (ТКС пин) |
РС485 модул има следеће карактеристике:
- Радни напон: 5В
- Уграђени чип МАКС485
- Ниска потрошња енергије за РС485 комуникацију
- Примопредајник са ограниченом брзином пораста
- 2П терминал са кораком од 5,08 мм
- Погодно РС-485 ожичење за комуникацију
- Сви пинови чипа до којих се може довести могу се контролисати преко микроконтролера
- Величина плоче: 44 к 14 мм
Коришћење овог модула са СТМ32Ф103Ц8 и Ардуино УНО је врло једноставно. Користе се хардверски серијски портови микроконтролера. Хардверски серијски пинови у СТМ32 и ардуино УНО дати су у наставку.
- У СТМ32Ф103Ц8: пинови ПА9 (ТКС) и ПА10 (РКС)
- У Ардуино Уно: Пин 0 (РКС) & 1 (ТКС)
Програмирање је такође једноставно, само користите Сериал.принт () за писање на РС-485 и Сериал.Реад () за читање са РС-485, а пинови ДЕ & РЕ РС-485 су НИЗКИ за примање података и ВИСОКИ за уписати податке на РС-485 магистралу.
Компоненте потребне
- СТМ32Ф103Ц8
- Ардуино УНО
- Конвертерски модул МАКС485 ТТЛ у РС485 - (2)
- 10К потенциометар
- Тастер - 3
- ЛЕД - 3
- Отпорници
- Бреадбоард
- Повезивање жица
Кружни дијаграм
У овом упутству СТМ32Ф103Ц8 се користи као мастер са једним РС-485 модулом, а Ардуино УНО се користи као славе са другим РС-485 модулом.
Кружна веза између РС-485 и СТМ32Ф103Ц8 (мастер):
РС-485 |
СТМ32Ф103Ц8 |
ДИ |
ПА9 (ТКС1) |
ДЕ РЕ |
ПА3 |
Р0 |
ПА10 (РКС1) |
ВЦЦ |
5В |
ГНД |
ГНД |
А. |
До А славе-РС-485 |
Б. |
До Б Славе РС-485 |
СТМ32Ф103Ц8 са три тастера:
Три тастера са три отпорника за извлачење од 10 к повезана су на пинове ПА0, ПА1, ПА2 СТМ32Ф103Ц8.
Кружна веза између РС-485 и Ардуино УНО (славе):
РС-485 |
Ардуино УНО |
ДИ |
1 (ТКС) |
ДЕ РЕ |
2 |
Р0 |
0 (РКС) |
ВЦЦ |
5В |
ГНД |
ГНД |
А. |
До А мастер РС-485 |
Б. |
До Б мастер РС-485 |
Користе се три ЛЕД диоде где су аноде ЛЕД диода са отпорником од 330 ома повезане на пинове 4, 7, 8 Ардуино УНО и катода ЛЕД диода повезане на ГНД.
Програмирање СТМ32Ф103Ц8 и Ардуино УНО за серијску комуникацију РС485
Ардуино ИДЕ се користи за развој и програмирање обе плоче, односно СТМ32 и Ардуино УНО. Али проверите да ли сте изабрали одговарајући ПОРТ из Тоолс-> Порт анд Боард из Тоолс-> Боард. Ако наиђете на било какве потешкоће или сумње, једноставно погледајте Програмирање вашег СТМ32 у АРДУИНО ИДЕ. Програмирање овог водича састоји се од два дела, првог за СТМ32Ф103Ц8 (Мастер) и другог за Ардуино УНО (Славе). Оба кода ће бити објашњена један по један у наставку.
СТМ32Ф103Ц8 као мастерНа страни Мастер, статус тастера се чита, а затим серијски уписује те вредности у РС-485 магистралу кроз хардверске серијске портове 1 (ПА9, ПА10) СТМ32Ф103Ц8. Такође, до сада није потребна спољна библиотека. Ардуино има сву потребну библиотеку за серијску комуникацију.
Започните серијску комуникацију помоћу хардверских серијских пинова (ПА9, ПА10) са брзином од 9600.
Сериал1.бегин (9600);
Прочитајте статус дугмета на пиновима ПА0, ПА1, ПА2 СТМ32Ф103Ц8 и сачувајте их у променљивој буттон1вал, буттон2вал, буттон3вал. Вредност је ХИГХ ако се притисне дугме и ЛОВ када се не притисне.
инт буттон1вал = дигиталРеад (буттон1); инт буттон2вал = дигиталРеад (буттон2); инт буттон3вал = дигиталРеад (буттон3);
Пре слања вредности дугмета на серијски порт, пинови ДЕ & РЕ РС-485 треба да буду ВИСОКИ и повезани су на пин ПА3 СТМ32Ф103Ц8 (Да би пин ПА3 био ВИСОК):
дигиталВрите (енаблеПин, ХИГХ);
Следеће за стављање тих вредности у серијски порт и слање вредности у зависности од тога који је тастер притиснут, користите иф иф израз и пошаљите одговарајућу вредност када се притисне дугме.
Ако се притисне прво дугме, услов се поклапа и вредност '1' се шаље на серијски порт на који је повезан Ардуино УНО.
иф (буттон1вал == ХИГХ) { инт нум1 = 1; Сериал1.принтлн (нум1); }
Слично томе, када се притисне дугме 2, вредност 2 се шаље преко серијског порта, а када се притисне дугме 3, вредност 3 се шаље преко серијског порта.
иначе иф (буттон2вал == ХИГХ) { инт нум2 = 2; Сериал1.принтлн (нум2); } иначе иф (буттон3вал == ХИГХ) { инт нум3 = 3; Сериал1.принтлн (нум3); }
А када се не притисне ниједно дугме, вредност 0 се шаље у Ардуино Уно.
елсе { инт нум = 0; Сериал1.принтлн (нум); }
Овим се завршава програмирање за конфигурисање СТМ32 као главног.
Ардуино УНО као робНа подређеној страни Ардуино УНО прима целобројну вредност која се шаље од главног СТМ32Ф103Ц8 који је доступан на серијском прикључку хардвера Ардуино УНО (П0, 1) где је повезан РС-485 модул.
Једноставно прочитајте вредност и сачувајте је у променљивој. У зависности од примљене вредности, одговарајућа ЛЕД лампица се УКЉУЧУЈЕ или ИСКЉУЧУЈЕ на Ардуино ГПИО.
Да бисте примили вредности од Мастер-а, само направите пинове ДЕ & РЕ на РС-485 модулу ЛОВ. Дакле, пин-2 (енаблеПин) Ардуина УНО направљен је НИСКО.
дигиталВрите (енаблеПин, ЛОВ);
Сада само прочитајте целобројне податке доступне на серијском порту и сачувајте их у променљивој.
инт пријем = Сериал.парсеИнт ();
У зависности од примљене вредности, тј. (0, 1, 2, 3), одговарајући један од три ЛЕД-а је УКЉУЧЕН.
иф (рецеиве == 1) // У зависности од примљене вредности, одговарајућа ЛЕД се УКЉУЧУЈЕ или ИСКЉУЧУЈЕ { дигиталВрите (ледпин1, ХИГХ); } иначе иф (рецеиве == 2) { дигиталВрите (ледпин2, ХИГХ); } иначе иф (рецеиве == 3) { дигиталВрите (ледпин3, ХИГХ); } елсе { дигиталВрите (ледпин1, ЛОВ); дигиталВрите (ледпин2, ЛОВ); дигиталВрите (ледпин3, ЛОВ); }
Овим се завршава програмирање и конфигурисање Ардуина УНО као славе. Такође се тиме завршавају комплетне конфигурације за Ардуино УНО и СТМ32. Радни видео и сви кодови су приложени на крају овог водича.
Тестирање РС485 комуникације између СТМ32Ф103Ц8 и Ардуино УНО:
1. Када се притисне тастер-1, који је повезан на мастер СТМ32, ЛЕД 1 се УКЉУЧУЈЕ повезан на славе Ардуино.
2. Када се притисне тастер-2, који је повезан на мастер СТМ32, ЛЕД 2 се УКЉУЧУЈЕ повезан на славе Ардуино.
3. Слично томе, када се притисне тастер-3, ЛЕД 3 се УКЉУЧУЈЕ повезан на Славе Ардуино.
Овим је завршена серијска комуникација РС485 између СТМ32Ф103Ц8 и Ардуино УНО. Плоче Ардуино УНО и СТМ32 су широко коришћене плоче за брзо прототипирање и урадили смо много корисних пројеката на тим плочама. Ако нађете било какве сумње или имате било какав предлог за нас, пишите и коментаришите у наставку.