- Потребни материјали
- Повезивање Распберри Пи са ЛоРа
- Повезивање Ардуина са ЛоРа
- пиЛоРа за Распберри Пи
- Конфигурисање модула Распберри Пи за ЛоРа
- Програмирање Распберри Пи за ЛоРа
- Ардуино код за ЛоРа за комуникацију са Распберри Пи
- Тестирање ЛоРа комуникације између Распберри Пи и Ардуино
ЛоРа постаје све популарнија појавом ИоТ-а, повезаних аутомобила, М2М-а, Индустрије 4.0 итд. Због своје способности да комуницира на велике удаљености са врло мањом снагом, пожељно је да га дизајнери користе за слање / пријем података од ствари на батерије. Већ смо разговарали о основама ЛоРа и како користити ЛоРа са Ардуином. Иако је технологија првобитно намењена ЛоРа чвору за комуникацију са ЛоРа мрежним пролазом, постоји много сценарија у којима ЛоРа чвор мора да комуницира са другим ЛоРа чвором да би размењивао информације на велике удаљености. Дакле, у овом упутству ћемо научити како се користи ЛоРа модул СКС1278 са Распберри пиза комуникацију са другим СКС1278 повезаним са микроконтролером попут Ардуина. Ова метода може бити корисна на многим местима, јер Ардуино може деловати као сервер за преузимање података са сензора и слање их Пи-у на даљину преко ЛоРа, а затим Пи који делује као клијент може да прими ове информације и учита их на могао пошто има приступ Интернету. Звучи занимљиво, зар не? Па, кренимо.
Потребни материјали
- СКС1278 433МХз ЛоРа модул - 2 бр
- 433МХз ЛоРа антена - 2Бр
- Ардуино УНО- или друга верзија
- Распберри Пи 3
Претпоставља се да је ваш Распберри Пи већ спојен са оперативним системом и да је у могућности да се повеже на Интернет. Ако није, следите Водич за почетак рада са Распберри Пи пре него што наставите. Овде користимо Расбиан Јессие инсталирану Распберри Пи 3.
Упозорење: Увек користите свој СКС1278 ЛоРа модул са антенама од 433 МХз; у супротном би се модул могао оштетити.
Повезивање Распберри Пи са ЛоРа
Пре него што уђемо у софтверске пакете, припремимо хардвер. СКС1278 је 16-пин Лора модуле који комуницира користећи СПИ он 3.3В Логиц. Распберри пи такође ради на 3.3В логичком нивоу и такође има уграђени СПИ порт и 3.3В регулатор. Тако можемо директно повезати ЛоРа модул са Распберри Пи. Табела веза је приказана исподРаспберри Пи | Лора - СКС1278 модул |
3.3В | 3.3В |
Приземље | Приземље |
ГПИО 10 | МОСИ |
ГПИО 9 | МИСО |
ГПИО 11 | СЦК |
ГПИО 8 | Нсс / Омогући |
ГПИО 4 | ДИО 0 |
ГПИО 17 | ДИО 1 |
ГПИО 18 | ДИО 2 |
ГПИО 27 | ДИО 3 |
ГПИО 22 | РСТ |
За референцу такође можете користити доњи дијаграм кола. Имајте на уму да је дијаграм кола направљен помоћу модула РФМ9к који је врло сличан модулу СКС1278, па се изглед може разликовати на доњој слици.
Везе су прилично равне, једини проблем с којим бисте се могли суочити је тај што СКС1278 није компатибилан са плочама, па за повезивање морате да користите директно повезујуће жице или да користите две мале плоче како је приказано доле. Такође мало људи сугерише да се ЛоРа модул напаја одвојеном мрежом од 3.3 В јер Пи можда неће моћи да произведе довољно струје. Међутим, Лора као модул мале снаге треба да ради на 3.3В шини Пи, тестирао сам исти и открио да ради без икаквих проблема. Али, ипак га узмите са мало соли. Моја поставка везе ЛоРа са Распберри пи изгледа некако овако у наставку
Повезивање Ардуина са ЛоРа
Веза за модул Ардуино остаје иста као она коју смо користили у претходном водичу. Једина разлика ће бити уместо да користимо библиотеку из Сандееп Мистри-а, ми ћемо користити Рспреал библиотеку засновану на радијској глави о чему ћемо разговарати касније у овом пројекту. Коло је дато испод
Опет можете да користите 3.3В пин на Ардуино Уно или да користите засебни регулатор од 3.3В. У овом пројекту користио сам уграђени регулатор напона. Табела пин прикључака дата је у наставку како би вам помогла да лако успоставите везе.
ЛоРа СКС1278 модул | Одбор Ардуино УНО |
3.3В | 3.3В |
Гнд | Гнд |
Ен / Нсс | Д10 |
Г0 / ДИО0 | Д2 |
СЦК | Д13 |
МИСО | Д12 |
МОСИ | Д11 |
РСТ | Д9 |
Пошто се модул не уклапа у плочицу за повезивање, за повезивање сам директно користио прикључне жице. Након успостављања везе, подешавање Ардуино ЛоРа ће изгледати отприлике овако у наставку
пиЛоРа за Распберри Пи
Постоји много питхон пакета које можете користити са ЛоРа. Такође се често Распберри Пи користи као ЛоРаВАН за добијање података из више ЛоРа чворова. Али, у овом пројекту желимо да успоставимо равноправну комуникацију између два Распберри Пи модула или између Распберри Пи и Ардуина. Дакле, одлучио сам да користим пакет пиЛоРа. Има рпсреал ЛоРа Ардуино и рпсреал ЛоРа Распберри пи модуле који се могу користити на Ардуино и Распберри Пи окружењу. За сада се фокусирајмо на окружење Распберри Пи.
Конфигурисање модула Распберри Пи за ЛоРа
Као што је раније речено, ЛоРа модул ради са СПИ комуникацијом, тако да морамо омогућити СПИ на Пи, а затим инсталирати пакет пилора . Следите кораке у наставку да бисте учинили исто, након отварања прозора терминала Пи. Опет, користим кит за повезивање са мојим Пи-ом, можете користити свој прикладан метод.
1. корак: Уђите у прозор за конфигурацију помоћу следеће наредбе. Да бисте добили прозор испод
судо распи-цонфиг
Корак 2: Идите на опције повезивања и омогућите СПИ као што је приказано на доњој слици. Морамо омогућити СПИ интерфејс јер, као што смо разговарали, ЛЦД и ПИ комуницирају путем СПИ протокола
Корак 3: Сачувајте промене и вратите се у прозор терминала. Обавезно ажурирајте пип и питхон, а затим инсталирајте пакет РПи.ГПИО помоћу следеће наредбе.
пип инсталирати РПи.ГПИО
Ова класа пакета ће нам помоћи да контролишемо ГПИО пин на Пи-у. Ако се успешно инсталира, екран ће изгледати овако
Корак 4: Слично наставите са инсталирањем спидев пакета помоћу следеће наредбе. Спидев је питхон везивање за Линук које се може користити за обављање СПИ комуникације на Распберри Пи.
пип инсталирај спидев
Ако је инсталација успешна, терминал би требао изгледати отприлике овако у наставку.
Корак 5: Следећи омогућава инсталацију пакета пиЛоРа помоћу следеће наредбе пип. Овај пакет инсталира радио моделе повезане са ЛоРа.
пип инсталирати пиЛоРа
Ако је инсталација успешна, видећете следећи екран.
Пакет ПиЛоРа такође подржава шифровану комуникацију која се без проблема може користити са Ардуином и Распберри Пи. Ово ће побољшати сигурност података у вашој комуникацији. Али након овог корака морате инсталирати засебни пакет, што ја не радим, јер шифровање није у обиму овог водича. Можете пратити горње гитхуб везе за више детаља.
Након овог корака можете додати информације о путањи пакета у пи и покушати са програмом питхон датим на крају. Али путању нисам могао успешно да додам, па сам зато морао ручно да преузмем библиотеку и да је користим директно за своје програме. Зато сам морао да наставим са следећим корацима
Корак 6: Преузмите и инсталирајте питхон-рпи.гпио пакет и спидев пакет помоћу наредбе у наставку.
судо апт-гет инсталација питхон-рпи.гпио питхон3-рпи.гпио судо апт-гет инсталација питхон-спидев питхон3-спидев
Прозор терминала би требао приказати нешто слично након обје инсталације.
Корак 7: Такође инсталирајте гит, а затим га користите за клонирање питхон директорија за нашу Распберри Пи. То можете учинити помоћу следећих команди.
судо апт-гет инсталл гит судо гит клон хттпс://гитхуб.цом/рпсреал/пиСКС127к
Када је овај корак завршен , требали бисте пронаћи поддиректориј СКС127к у матичној фасцикли Распберри Пи. Ово ће имати све потребне датотеке повезане са библиотеком.
Програмирање Распберри Пи за ЛоРа
У равноправној ЛоРа комуникацији модул који преноси информације назива се сервером, а модул који прима информације зове се клијент. У већини случајева Ардуино ће се користити на терену са сензором за мерење података, а Пи ће се користити за примање тих података. Дакле, одлучио сам да користим Распберри Пи као клијента, а Ардуино као сервер у овом упутству. Комплетан програм Распберри Пи клијент може наћи на дну ове странице. Овде ћу покушати да објасним важне редове у програму.
Опрез: Проверите да ли се програмска датотека налази у истом директоријуму у којем је и фасцикла СКС127к библиотеке. Можете копирати ову фасциклу и користити је било где ако желите да пребаците пројекат.
Програм је прилично једноставан, морамо подесити ЛоРа модул да ради на 433 МХз, а затим ослушкивати долазне пакете. Ако нешто примимо, једноставно их одштампамо на конзоли. Као и увек започињемо програм увозом потребних питхон библиотека.
од времена увоз спавање са СКС127к.ЛоРа увоз * са СКС127к.боард_цонфиг увоз БОАРД БОАРД.сетуп ()
У овом случају временски пакет се користи за стварање кашњења, Лора пакет се користи за ЛоРа комуникацију, а боард_цонфиг се користи за постављање параметара плоче и ЛоРа. Такође постављамо плочу помоћу функције БОАРД.сетуп () .
Даље креирамо класу питхон ЛоРа са три дефиниције. Будући да увлачимо само да би програм радио као клијент малине, класа има само три функције, а то су класа инит, класа старт и класа он_рк_доне . Класа инит иницијализује ЛоРа модул на 433МХз са пропусним опсегом 125кХз како је постављено у методи сет_па_цонфиг . Тада модул такође ставља у режим спавања ради уштеде енергије.
# Подразумеване вредности средњег опсега након покретања су 434,0 МХз, Бв = 125 кХз, Цр = 4/5, Сф = 128 чипова / симбол, ЦРЦ на 13 дБм лора.сет_па_цонфиг (па_селецт = 1) деф __инит __ (селф, вербосе = Фалсе): супер (ЛоРаРцвЦонт, селф).__ инит __ ( детаљно ) селф.сет_моде (МОДЕ.СЛЕЕП) селф.сет_дио_маппинг (* 6)
Функција покретања је место где конфигуришемо модул као пријемник и добијамо попут РССИ (индикатор јачине пријемног сигнала), статуса, радне фреквенције итд. Подесили смо модул да ради у режиму континуираног пријемника (РКСЦОНТ) из режима спавања, а затим помоћу петље вхиле чита вредности као што су РССИ и статус модема. Такође испиремо податке у серијском баферу на терминал.
деф старт (селф): селф.ресет_птр_рк () селф.сет_моде (МОДЕ.РКСЦОНТ) вхиле Труе: слееп (.5) рсси_валуе = селф.гет_рсси_валуе () статус = селф.гет_модем_статус () сис.стдоут.флусх ()
Коначно, функција он_рк_доне се извршава након читања долазног пакета. У овој функцији примљене вредности се премештају у променљиву која се назива корисни терет из Рк бафера након постављања високе заставе пријема. Затим се примљене вредности декодирају помоћу утф-8 за испис корисничких читљивих података на љусци. Такође враћамо модул у режим спавања док се не прими друга вредност.
деф он_рк_доне (селф): принт ("\ нРецеивед:") селф.цлеар_ирк_флагс (РкДоне = 1) паилоад = селф.реад_паилоад (ноцхецк = Труе) принт (битес (паилоад).децоде ("утф-8", 'игноре'))) селф.сет_моде (МОДЕ.СЛЕЕП) селф.ресет_птр_рк () селф.сет_моде (МОДЕ.РКСЦОНТ)
Преостали део програма је само испис примљених вредности на конзоли и завршавање програма помоћу прекида са тастатуре. Поново смо поставили плочу у режим спавања чак и након прекида програма ради уштеде енергије.
покушајте: лора.старт () осим КеибоардИнтеррупт: сис.стдоут.флусх () принт ("") сис.стдерр.врите ("КеибоардИнтеррупт \ н") коначно: сис.стдоут.флусх () принт ("") лора. сет_моде (МОДЕ.СЛЕЕП) БОАРД.теардовн ()
Ардуино код за ЛоРа за комуникацију са Распберри Пи
Као што сам раније поменуо, рпсреал код подржава и Ардуино и Пи и стога је могућа комуникација између Ардуина и Пи. Ради на основу библиотеке Радиохеад из АирСпаице-а. Дакле, прво морате инсталирати библиотеку радијских глава на свој Ардуино ИДЕ.
Да бисте то урадили, посетите Гитхуб страницу и преузмите библиотеку у ЗИП директоријуму. Затим га ставите у фасциклу библиотеке вашег Ардуино ИДЕ-а. Сада поново покрените Ардуино ИДЕ и пронаћи ћете примере датотека за Радио хеад библиотеку. Овде ћемо Ардуино програмирати да ради као ЛоРа сервер за слање тест пакета попут 0 до 9. Комплетни код који ће учинити исто може се наћи на дну ове странице као и увек. Овде ћу објаснити неколико важних редова у програму.
Програм започињемо увозом СПИ библиотеке (подразумевано инсталиране) да бисмо користили СПИ протокол, а затим библиотеку РХ_РФ95 из главе Радио за обављање ЛоРа комуникације. Затим дефинишемо на који пин Ардуина смо повезали чип селецт (ЦС), Ресет (РСТ) и Интеррупт (ИНТ) пин ЛоРа са Ардуино. На крају такође дефинишемо да модул треба да ради на фреквенцији 434МХз и иницијализује ЛоРа модул.
#инцлуде
Унутар функције подешавања ресетоваћемо ЛоРа модул тако што ћемо повући његов пин за ресетовање на 10 секунди, да почне свеже. Затим га иницијализујемо модулом који смо раније креирали помоћу библиотеке Радио хеад. Затим смо поставили фреквенцију и снагу преноса за ЛоРа сервер. Што је пренос већи, то ће већи пакет прећи даљину, али ће трошити више енергије.
воид сетуп () { // Иницијализација серијског монитора Сериал.бегин (9600); // Ресетуј ЛоРа модул пинМоде (РФМ95_РСТ, ИЗЛАЗ); дигиталВрите (РФМ95_РСТ, ЛОВ); кашњење (10); дигиталВрите (РФМ95_РСТ, ХИГХ); кашњење (10); // Иницијализација модула ЛоРа вхиле (! Рф95.инит ()) { Сериал.принтлн ("ЛоРа радио инит није успео"); док (1); } // Подесимо подразумевану фреквенцију 434,0МХз ако (! Рф95.сетФрекуенци (РФ95_ФРЕК)) { Сериал.принтлн ("сетФрекуенци фаилед"); док (1); } рф95.сетТкПовер (18); // Снага преноса Лора модула }
Унутар функције бесконачне петље , једноставно морамо послати пакет података кроз ЛоРа модул. Ови подаци могу бити било шта попут вредности сензора корисничке наредбе. Али ради једноставности, послат ћемо вредност цхар од 0 до 9 за сваких 1 секунду, а затим иницијализирати вриједност натраг на 0 након постизања 9. Имајте на уму да вриједности могу бити послане само у формату низа цхар, а врста података треба бити унит8_т да је 1 бајт одједном. Код за исто је приказан испод
воид лооп () { Сериал.принт ("Сенд:"); цхар радиопацкет = цхар (вредност)}; рф95.сенд ((уинт8_т *) радио пакет, 1); кашњење (1000); вредност ++; иф (вредност> '9') вредност = 48; }
Тестирање ЛоРа комуникације између Распберри Пи и Ардуино
Сада, када смо припремили и свој хардвер и програм, једноставно морамо да отпремимо Ардуино код на УНО таблу, а скица питхона би требало да се покрене на пи. Моја тестна поставка са оба спојена хардвера, изгледа отприлике овако у наставку
Једном када се скицира питхон клијентска скица на Пи (користите само питхон 3), ако све ради како треба, требало би да видите Ардуино пакете примљене у пи кроз прозор љуске. Требали бисте приметити „Примљено: 0“ до 9, као што је приказано на доњој слици.
Комплетни Распберри пи код са свим потребним библиотекама можете преузети овде.
Сада можете да преместите Ардуино сервер и проверите домет модула; такође је могуће приказати РССИ вредност на љусци ако је потребно. Комплетан радни пројекта може се наћи у споту чија је веза испод. Сада, када знамо како да успоставимо ЛоРа комуникацију мале снаге између Ардуино и Распберри пи, можемо наставити са додавањем сензора на Ардуино страни и платформе у облаку на Пи страни како бисмо направили комплетан ИоТ пакет.
Надам се да сте разумели пројекат и уживали сте у његовој изради. Ако имате проблема са постизањем резултата, користите одељак за коментаре испод или форуме за остале техничке захтеве.