Мазмұны:

Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне-роботты жасаңыз: 15 қадам (суреттермен)
Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне-роботты жасаңыз: 15 қадам (суреттермен)
Anonim
Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне ағынды роботты жасаңыз
Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне ағынды роботты жасаңыз
Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне ағынды роботты жасаңыз
Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне ағынды роботты жасаңыз
Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне ағынды роботты жасаңыз
Arduino және Raspberry Pi көмегімен Интернетпен басқарылатын бейне ағынды роботты жасаңыз

Мен @RedPhantom (aka LiquidCrystalDisplay / Itay), Израильден келген 14 жасар студент, Макс Шейн атындағы орта білім беру мен математика орта мектебінде оқиды. Мен бұл жобаны барлығына үйренуге және бөлісуге жасаймын!

Сіз өзіңіз ойлаған шығарсыз: хмм … Мен геикпін … Ал менің балаларым олармен жоба жасауымды қалайды … Ол робот жасағысы келді. Ол оны кішкентай күшік сияқты киіндіргісі келді. Демалыс күндері жақсы жоба!

Raspberry Pi кез келген жағдайда қолдануға жарамды: бүгін біз бұл микро компьютердің робот жасау қабілеттерін ашамыз. Бұл робот жасай алады:

  • Айдап жүріңіз және Raspberry Pi сияқты бір WiFi желісіне қосылған кез келген компьютерді LAN (WiFi) арқылы басқарыңыз.
  • Raspberry Pi камера модулінің көмегімен бейнені тікелей эфирде көрсетіңіз
  • Сенсорлық деректерді Arduino көмегімен жіберіңіз

Бұл жақсы жарық жобасына не қажет екенін білу үшін келесі қадамды (ескертулерді) оқыңыз, содан кейін Қажетті: компоненттер қадамын оқыңыз.

Міне GitHub репо: GITHUB РЕПО МЕНІҢ

Міне, жоба сайты: ЖОБАЛЫҚ САЙТ МЕНІҢ

1 -қадам: Ескерту: Мұны үйде байқап көріңіз

ЕСКЕРТУ:

ОСЫНЫҢ АВТОРЫ сізде электр энергиясы мен электр қондырғыларының негізгі жұмысы туралы жеткілікті білімге ие. ЕСКЕРТПЕСЕҢІЗ, ОСЫ НҰСҚАУЛАРДЫ ОРЫНДАМАСАҢЫЗ: ЭЛЕКТРОНДЫҚ ЖАБДЫҚТАРҒА ЗАҢ келтіріңіз, ӨЗІҢІЗДІ КҮНДІРЕҢІЗ ЖӘНЕ ОТТЫ САҚТАҢЫЗ. Егер сізде бұл оқулыққа қажетті білім болмаса (дәнекерлеу, электроника негіздері), білетін адаммен бірге орындаңыз. Рақмет сізге.

БҰЛ НҰСҚАУЛЫҚТЫҢ АВТОРЫ ҚАНДАЙ ЖАУАПКЕРШІЛІКТІ ӨЗІНЕН ЖАУАПТАУҒА ЖӘНЕ ЖОҚТАЛУЫНА ЖӘНЕ ФИЗИКАЛЫҚ ЗЫЯНҒА АРНАЛДЫ. ЖАЛПЫ СЕНІМДІ ПАЙДАЛАНУ

2 -қадам: компоненттер

Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар
Қосылымдар

Дәнекерлеу үтікті қыздырмас бұрын, немен байланыстыру керектігін қарастыру керек. Мен осы қарапайым диаграмманы жасадым (MS Paint мені ешқашан төмендетпейді), онда белгілі бір бөлік роботтың ішінде орналасқан.

Сурет үлкейтілген, толық ажыратымдылықта көруге және мәтінді оқуға мүмкіндік береді.

6 -қадам: Pi мекенжайы

Ардуино Пи -мен жоспар бойынша сөйлеседі. Ал Pi компьютермен сөйлеседі, осының бәрі қалай жұмыс істейді?

Қосылымды бастау тізбегін қарастырайық:

  1. Raspberry Pi басталады
  2. Ардуино басталады
  3. Raspberry Pi TCP клиентін іске қосады. Ол өзінің IP -адресін светодиод арқылы шығарады.
  4. Raspberry Pi сериялық байланыс қызметін бастайды және Arduino -ға қосылады

Сондықтан біз қандай да бір байланыс орнаттық:

Компьютер Raspberry Pi Arduino

Мен Arduino/Raspberry Pi хаттамасын жазу үшін Raspberry Pi және Python -мен сөйлесетін бағдарламаны жазу үшін Visual Basic. NET (Microsoft Visual Studio 2013 қауымдастығы) қолдандым.

Pi IP мекенжайын білу үшін сізге оны HDMI экранына қосу, Shell -ге кіру және пәрменді енгізу жеткілікті:

хост атауы -I.

7 -қадам: Жоспар

Бізде Pi -дің IP -адресі бар болса, біз оған SSH енгіземіз (SSH - бұл қауіпсіз қабық - біз Linux қабығына қашықтан қосыламыз) және сервердің IP -адресін көрсететін файлды жазамыз. Пи, іске қосылған кезде де солай жасайды және тыңдайтын портты жазады. Мұнда мен кодтан бірнеше мысал келтіремін, бірақ оны осы қадамнан және мен жасаған GitHub филиалынан жүктеуге болады. Бұл туралы толығырақ кейінірек.

Ол келесідей жұмыс істейді:

  1. RPi іске қосылады.
  2. RPi Tcp бағдарламасын жергілікті IP -де және тағайындалған портта бастайды.
  3. RPI бейне ағынын бастайды
  4. RPI жабылады.

8 -қадам: физикалық жаттығулар

Енді біз бәрін физикалық түрде құруға дайынбыз. Егер сіз 1 -қадамды (ескерту мәтіні мен лицензиялау) оқымаған болсаңыз, оны жалғастырмас бұрын орындаңыз. Мен келтірілген зиян үшін жауап бермеймін. Егер күмән туындаса, бұл роботты зомби апокалипсисі болмаса, әскери мақсатта қолдануға болмайды. Содан кейін де ақылға қонымды түрде қолданыңыз.

Нұсқаулықтарды оқу тізімінде оқу ұсынылады.

Қосылым схемасын «Қосылымдар» қадамынан жүктеп алыңыз.

МОТОРЛАР

Сіз сатып алған қозғалтқыштар, бәлкім, осылай көрінеді, егер олар болмаса, бұл жақсы: егер оларда тек екі сым болса (көп жағдайда қара және қызыл), ол жұмыс істеуі керек. Олардың жұмыс кернеуі мен токын білу үшін олардың онлайн кестесін қараңыз. Пікір бөлімінде сұрақтар қоюдан тартынбаңыз. Мен оларды үнемі оқимын.

H-BRIDGE

Мен бұрын H-Bridge-пен жұмыс істеген емеспін. Мен аздап гугл жасадым және HB принциптерін түсіндіретін жақсы нұсқаулық таптым. Сіз ол жаққа қарай аласыз (Оқу тізімі қадамын қараңыз) және өзіңізге де іліңіз. Мен көп түсіндірмеймін. Сіз бұл жерден оқи аласыз және осы схема туралы бәрін біле аласыз.

ЖАРЫҚ ДИОДТЫ ИНДИКАТОР

Бұл шам шам шамасы логикалық кернеуден жұмыс істей алады, себебі оған ток қажет емес, кернеуі 3В-5В 4мА-18мА. Қосымша.

ARDUINO

Arduino сигналдар мен командаларды Raspberry Pi -ден сериялық байланыс арқылы алады. Біз Arduino -ны қозғалтқыштарды басқару үшін қолданамыз, себебі Raspberry Pi аналогты мәндерді GPIO арқылы шығара алмайды.

9 -қадам: Raspberry Pi автоматты түрде іске қосылады

Сіз Raspberry Pi қосқан сайын пайдаланушы аты мен құпия сөзді теруіңіз керек болады. Біз мұны жасағымыз келмейді, себебі кейде біз Пи-ге пернетақтаны байланыстыра алмаймыз, сондықтан біз Пиді дайындайтын бағдарламаны автоматты түрде бастау үшін осы оқулықтағы келесі қадамдарды орындаймыз. Егер ол циклде қалса, біз оны үзу үшін әрқашан Ctrl+C пернелер тіркесімін қолдана аламыз.

  • sudo crontab -e
  • Содан кейін біз cron менеджерінде бұл файлды автоматты түрде қосуға қосатын пәрменді енгіземіз.

Біз pibot.sh файлын шақырамыз, ол роботты басқару үшін барлық питон сценарийлерін іске қосуға пәрмен береді. Мұны қарастырайық: (Біз бағдарламаға GPIO -ға кіруге рұқсат беру үшін Python перделері бар sudo)

raspivid -o --t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv ағыны: /// dev/stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264

Pi жағындағы барлық жұмыстарды орындайтын код on_startup.sh деп аталады.

Бұл бәрін басқаратын қарапайым қабық сценарийі.

10 -қадам: Хоестон, бізде проблема болды … DC моторлары бір модель емес

Мен H-Bridge-ді сынап көрдім және ол жақсы жұмыс істейді, бірақ мен робот платформасынан алған қозғалтқыштарды қосқанда, мен желіге тапсырыс бердім, бұл екі қозғалтқыш әр түрлі жылдамдықта айналады және әртүрлі дыбыстар шығарады. Мен дроссельді қозғалтқыштарда 100% -ға ауыстырдым. Екеуі де максималды мүмкіндігімен жүгіре алмады.

Бұл екі түрлі қозғалтқыш сияқты. Біреуінде үлкен момент бар, бұл робот үшін өте қолайлы, бірақ екіншісі роботты қозғалтпайды. Ол шеңберлерге айналады.

Бұл жерде менде бар нәрсе - Arduino сериялық бағдарламасы өте жақсы жұмыс істейді, бірақ компьютердегі Tcp сервері мен Piдегі Tcp клиенті әлі кодталмаған. Мен конкурсқа осы жазбаны толтыруым керек. Маған не істеу керек?

  1. Біріншіден, мен қозғалтқыштардың кернеуін үш есе арттырамын. Деректер кестесінде 3V, 6V оларды қозғалтпады деп жазылған. Ол кезде 9В болады. Мен аккумуляторды токты екі есеге параллель қостым, кернеу өзгеріссіз қалады.
  2. Менде платформаға бекітілген басқа қозғалтқыштар бар ма? Мүмкін, егер олар ұқсас модельдер болса, мен көре аламын.
  3. Егер шоколад желдеткішке қатты тиіп кетсе, мен Сервоға алмастыра аламын.

Мектеп басталды. Мен не істеу керектігін көруім керек.

Ескерту: Неліктен мен бұл жерде кездесетін мәселелерді жазамын? Егер сізде тәжірибе аз болса және сізде осындай проблемалар болса, сіз не істеу керектігін білесіз.

Шешім:

Сондықтан мен тағы бір тест тапсырдым. Мен жылдамдықтың айырмашылығын Arduino кодына бейімдедім.

ЕСКЕРТПЕ: қозғалтқыштар сіз үшін әр түрлі жылдамдықта айналуы мүмкін! Arduino эскизіндегі мәндерді өзгертіңіз.

11 -қадам: [TCP]: Неліктен Tcp және Shell қауіпсіз емес? TCP дегеніміз не?

Менде PC үшін SSH емес, Tcp қолданудың екі түсіндірмесі бар. - Пи байланыс.

  1. Біріншіден, SSH (Secure Shell, түсініктемелерді қараңыз) қашықтағы компьютерден командаларды іске қосуға арналған. Пи -ге біз қалаған ақпаратпен жауап беру қиынырақ, себебі біздің деректерді талдаудың жалғыз нұсқасы - қатаң және жалықтыратын жолдарды өңдеу.
  2. Екіншіден, біз SSH -ды қалай пайдалану керектігін білеміз және осы оқулықта құрылғылар арасындағы байланыс туралы көбірек білгіміз келеді.

TCP немесе Трансмиссияны басқару протоколы - Internet Protocol Suite негізгі хаттамасы. Ол Интернет -протоколды (IP) толықтыратын алғашқы желілік іске асырудан пайда болды. Сондықтан бүкіл пакет әдетте TCP/IP деп аталады. TCP IP желісі арқылы байланысатын хосттарда жұмыс істейтін қосымшалар арасында сегіздік ағынының сенімді, реттелген және қателікпен тексерілуін қамтамасыз етеді.

(Википедиядан)

Сонымен, TCP артықшылықтары:

  • Қауіпсіз
  • Жылдам
  • Желінің кез келген жерінде жұмыс істейді
  • Деректердің дұрыс берілуін тексеру әдістерін ұсынады
  • Ағынды басқару: егер деректерді жіберуші клиентті тіркеуге және өңдеуге деректерді тым жылдам жіберсе, қорғанысы бар.

Ал кемшіліктері:

  • TCP-де сіз деректерді желідегі барлық құрылғыларға жібере алмайсыз және мультикаст жібере алмайсыз (бірдей, бірақ айырмашылығы- әр құрылғыға сервер сияқты таратуға мүмкіндік береді).
  • Бағдарлама мен операциялық жүйе кітапханаларындағы қателер (олар TCP байланысын басқарады, сіздің маршрутизатор екі [немесе одан да көп] құрылғыны қосудан басқа ештеңе істемейді)

Неліктен UDP қолданбау керек, сіз сұрай аласыз ба? TCP -ден айырмашылығы, UDP сіздің клиентіңіз көп мәлімет жібермес бұрын деректерді алатынына сенімді емес. Электрондық поштаны жіберу және клиенттің оны алатынын білмеу сияқты. Сонымен қатар, UDP қауіпсіздігі төмен. Қосымша ақпарат алу үшін Stack Exchange Super User -ден осы жазбаны оқыңыз

Бұл мақала жақсы және ұсынылады.

12 -қадам: [TCP]: Клиент жасауға рұқсат етіңіз

Деректерді серверден алатын клиент (біздің жағдайда Raspberry Pi) (біздің компьютерде біздің жағдайда) Pi -ге (Arduino -да орындалатын сериялық командалар) жіберу және деректерді қайтару үшін деректерді алады (сенсорлық көрсеткіштер) және тікелей Arduino -дан кері байланыс. Қосылған схема үшеуінің арасындағы байланысты көрсетеді.

Python Wiki TcpCommunication мақаласы кіріктірілген розетка модулін қолдана отырып, кодтың бірнеше жолымен мұндай байланыс жасау өте қарапайым екенін көрсетеді. Бізде компьютерде бағдарлама болады, ал Pi -де басқа бағдарлама болады.

Біз үзілістермен жұмыс жасаймыз. Толығырақ олар туралы түсініктеме қадамынан біліңіз. Буферлер туралы оқыңыз. Енді біз data = s.recv (BUFFER_SIZE) көмегімен деректерді оқи аламыз, бірақ біз бос шағулармен анықталған қанша таңбаны аламыз. Біз үзілістерді қолдана аламыз ба? Тағы бір сұрақ: буфер бос болады ма, әлде сервер көбірек деректерді жіберуді күтеді ме, бұл жағдайда сервер/клиент күту уақытының ерекшелігін шығарады ма?

Мұны кезекпен шешуге рұқсат етіңіз. Мұны жасамас бұрын, мен TCP және UDP пайдаланылған порттарын тізімдейтін осы Википедия мақаласын іздедім. Жылдам қарап шыққаннан кейін мен бұл жобаның Операциялық жүйе мен жергілікті қызметтерде қолданылмайтындықтан 12298 портында байланысатынына шешім қабылдадым.

13 -қадам: Tcp хабарламаларын қолданып көріңіз

Үзілістерді қолдана алатынымызды білу үшін Python пәрмен жолының көмегімен қарапайым клиент пен сервер құруға рұқсат етіңіз. Мен мұны келесі қадамдарда жасаймын:

  1. Мәтінді Tcp арқылы перде порты арқылы циклмен жіберетін бағдарламаны іске қосыңыз
  2. Барлық мәтінді циклде оқитын және экранға басып шығаратын басқа бағдарламаны (параллель) бастаңыз.

Бағдарламаның тек сегменттері көрсетіледі. Барлық бағдарламалар Python 3. жүйесінде жұмыс істейді, бұл бағдарламалардың барлығы - компьютер арқылы пайдаланушы пернетақтасынан Arduino -ға Pi арқылы сериялық команданы жіберу.

  • SBcontrolPC.py - ДК -де іске қосылады. Жергілікті адресте және көрсетілген портта TCP қосылымын бастайды (мен 12298 портын қолданамын, неге алдыңғы қадамды қараңыз)
  • SBcontrolPi.py - Pi -де іске қосылады. Әр жарты секунд сайын (0,5 секунд) оның буферін оқиды. Бейне ағыны сияқты заттарды басқаратын қабық сценарийін бастайды.

Ұсынылған: