Агуулгын хүснэгт:

Arduino болон Raspberry Pi ашиглан интернетийн хяналттай видео дамжуулах роботыг бүтээгээрэй: 15 алхам (зурагтай)
Arduino болон Raspberry Pi ашиглан интернетийн хяналттай видео дамжуулах роботыг бүтээгээрэй: 15 алхам (зурагтай)

Видео: Arduino болон Raspberry Pi ашиглан интернетийн хяналттай видео дамжуулах роботыг бүтээгээрэй: 15 алхам (зурагтай)

Видео: Arduino болон Raspberry Pi ашиглан интернетийн хяналттай видео дамжуулах роботыг бүтээгээрэй: 15 алхам (зурагтай)
Видео: Big Tree Tech — SKR 3EZ — Основы 2024, Оны зургадугаар сарын
Anonim
Arduino болон Raspberry Pi ашиглан интернетээр хянагддаг видео дамжуулах роботыг бүтээгээрэй
Arduino болон Raspberry Pi ашиглан интернетээр хянагддаг видео дамжуулах роботыг бүтээгээрэй
Arduino болон Raspberry Pi ашиглан интернетээр хянагддаг видео дамжуулах роботыг бүтээгээрэй
Arduino болон Raspberry Pi ашиглан интернетээр хянагддаг видео дамжуулах роботыг бүтээгээрэй
Arduino болон Raspberry Pi ашиглан интернетээр хянагддаг видео дамжуулах роботыг бүтээгээрэй
Arduino болон Raspberry Pi ашиглан интернетээр хянагддаг видео дамжуулах роботыг бүтээгээрэй

Би бол @RedPhantom (LiquidCrystalDisplay / Itay гэх), Израилийн 14 настай оюутан бөгөөд Макс Шейн ахлах сургууль, шинжлэх ухаан, математикийн дунд сургуульд сурч байна. Би хүн бүрээс суралцах, хуваалцах зорилгоор энэхүү төслийг хийж байна!

Та магадгүй дотроо бодож байсан байх: хмм … Би бол геик … Тэгээд хүүхдүүд маань намайг тэдэнтэй хамт төсөл хийхийг хүсдэг … Тэр робот бүтээхийг хүссэн. Тэр бяцхан гөлөг шиг хувцаслахыг хүсчээ. Амралтын өдрийн сайхан төсөл байна!

Raspberry Pi нь хэрэглээ болгонд төгс төгөлдөр юм: өнөөдөр бид энэхүү микро компьютерийн робот хийх чадварыг илчлэх болно. Энэхүү робот нь:

  • Raspberry Pi -тай ижил WiFi сүлжээнд холбогдсон дурын компьютерийг ашиглан LAN (WiFi) сүлжээгээр жолоодож, жолоодож байгаарай.
  • Raspberry Pi камерын модулийг ашиглан видеог шууд дамжуулаарай
  • Arduino ашиглан мэдрэгчийн өгөгдлийг илгээх

Энэхүү сайхан гэрлийн төсөлд юу хэрэгтэй байгааг олж мэдэхийн тулд дараагийн алхамыг (анхааруулга) уншсаны дараа хүссэн хэсэг: бүрэлдэхүүн хэсгүүдийн алхамыг уншина уу.

Энд GitHub репо байна: GITHUB REPO BY BY

Төслийн сайтыг энд оруулав: ТӨСЛИЙН САЙТЫН НАЙДВАР

Алхам 1: Анхааруулга: Үүнийг гэртээ болгоомжтой хийх хэрэгтэй

АНХААРУУЛГА:

ЭНЭ ХЭРЭГЛЭГЧИЙН ЗАХИАЛАГЧ ЦАХИЛГААН ХӨДӨЛГӨӨНИЙ ЦАХИЛГААН ТОНОГ ТӨХӨӨРӨМЖИЙН ҮНДСЭН ҮЙЛ АЖИЛЛАГААНЫ ТАНД хангалттай мэдлэгтэй. Хэрэв та анхаарал халамж тавьдаггүй бөгөөд энэхүү зааварчилгааг дагаагүй бол та цахилгаан тоног төхөөрөмжийг гэмтээж, өөрийгөө шатааж, гал түймэр үүсгэж болно. Хэрэв танд энэ гарын авлагад шаардагдах мэдлэг байхгүй бол (гагнах, электроникийн үндэс), үүнийг мэддэг хүнтэй хамт хийж гүйцэтгээрэй. Баярлалаа.

ЭНЭ ЗААВАР ТӨЛӨВЛӨГӨӨЧИЙН ЗОХИОЛЧ ӨӨРИЙГӨӨ ХАРИУЦЛАГА ХАРИУЦЛАГА, ХӨДӨЛМӨР, ГИШҮҮДИЙГ ХӨДӨЛГӨӨНИЙГ ӨӨРӨӨС ХААНА. Нийтлэг мэдрэмжийг ашиглах

Алхам 2: бүрэлдэхүүн хэсгүүд

Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд
Холболтууд

Гагнуурын төмрийг дулаацуулахаасаа өмнө бид юуг холбох ёстой талаар нарийвчлан судлах хэрэгтэй. Би робот дотор зарим хэсэг нь хаана байрлаж байгааг дүрсэлсэн энэхүү энгийн хүснэгтийг (MS Paint намайг хэзээ ч орхидоггүй) хийсэн.

Зургийг бүтээсэн тул та томруулж, нарийвчлалтай харж, текстийг унших боломжтой.

Алхам 6: Pi -ийн хаяг

Ардуино төлөвлөгөөний дагуу Пи -тэй ярьдаг. Пи компьютертай ярьдаг, энэ бүхэн хэрхэн ажилладаг вэ?

Холболтыг эхлүүлэх дарааллыг авч үзье.

  1. Raspberry Pi эхэлж байна
  2. Arduino эхэлнэ
  3. Raspberry Pi нь TCP клиентийг эхлүүлдэг. Энэ нь LED хаягаар IP хаягаа хаядаг.
  4. Raspberry Pi нь Serial Communications үйлчилгээг эхлүүлж, Arduino руу холбогддог

Тиймээс бид зарим төрлийн харилцаа холбоог бий болгосон.

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

Би Arduino/Raspberry Pi протоколыг бичихийн тулд Raspberry Pi болон Python -той ярьдаг програм бичихдээ Visual Basic. NET (Microsoft Visual Studio 2013 Community) -ийг ашигласан.

Pi IP хаягаа мэдэхийн тулд та үүнийг HDMI дэлгэцтэй холбож, Shell руу нэвтэрч командыг бичихэд л хангалттай.

хостын нэр

Алхам 7: Төлөвлөгөө

Пи -ийн IP хаягтай болсны дараа бид SSH -ийг оруулах болно (SSH бол Secure Shell - бид алсын зайнаас Линукс бүрхүүлд холбогддог) бөгөөд Серверийн IP хаягийг харуулсан файл бичих болно. Пи, эхлүүлэхдээ үүнийг хийх бөгөөд сонсож буй портоо бичих болно. Энд би кодоос хэдхэн жишээ өгөх болно, гэхдээ үүнийг энэ алхам болон миний үүсгэсэн GitHub салбараас татаж авах боломжтой. Энэ тухай дараа дэлгэрэнгүй.

Энэ нь иймэрхүү байдлаар ажилладаг:

  1. RPi эхэлнэ.
  2. RPi нь Tcp програмыг өөрийн дотоод IP болон зориулалтын порт дээр эхлүүлдэг.
  3. RPI нь видеог цацаж эхэлдэг
  4. RPI унтардаг.

Алхам 8: Биеийн тамираар хичээллэх

Одоо бид бүх зүйлийг бие бялдрын хувьд эхлүүлэхэд бэлэн байна. Хэрэв та 1 -р алхамыг уншиж амжаагүй бол (анхааруулах текст ба лиценз) үргэлжлүүлэхээсээ өмнө уншина уу. Би учирсан хохирлыг хариуцахгүй. Хэрэв эргэлзээтэй байгаа бол энэ роботыг зомбины апокалипсис биш л бол цэргийн зориулалтаар ашиглах ёсгүй. Тэгээд ч гэсэн эрүүл ухаанаа ашигла.

Унших жагсаалтаас зааварчилгааг уншихыг зөвлөж байна.

Холболтын схемийг "Холболтууд" алхамаас татаж авна уу.

Мотор

Таны худалдаж авсан мотор иймэрхүү харагдаж магадгүй, хэрэв байхгүй бол зүгээр юм: хэрэв тэд зөвхөн хоёр утастай бол (ихэнх тохиолдолд хар ба улаан) энэ нь ажиллах ёстой. Үйлдлийн хүчдэл ба гүйдлийг харахын тулд мэдээллийн хуудсыг онлайнаар хайна уу. Коммент хэсэгт асуулт асууж болно. Би тэднийг үргэлж уншдаг.

H-BRIDGE

Би өмнө нь H-Bridge-тэй ажиллаж байгаагүй. Би жаахан googled хийж, HB -ийн зарчмуудыг тайлбарлах сайн заавар оллоо. Та мөн тэндээс харж болно (Унших жагсаалтын алхамыг үзнэ үү) мөн өөрийнхөөрөө холбогдож болно. Би нэг их тайлбарлахгүй. Та тэндээс уншиж, энэ хэлхээний талаар хэрэгтэй бүх зүйлийг мэдэж болно.

LED

Энэхүү бяцхан гэрлийн чийдэн нь бараг ямар ч гүйдэл, 3V-5V 4mA-18mA хүчдэл шаарддаггүй тул логик хүчдэлээс ажиллах боломжтой. Нэмэлт.

ARDUINO

Arduino нь Raspberry Pi -ээс цуваа холболтоор дохио, команд авах болно. Raspberry Pi нь GPIO -ээр аналог утгыг гаргах боломжгүй тул бид Arduino -ийг мотороо хянахад ашигладаг.

Алхам 9: Raspberry Pi -г автоматаар эхлүүлэх

Raspberry Pi -ийг асаах бүртээ хэрэглэгчийн нэр, нууц үгээ оруулах шаардлагатай болдог. Бид үүнийг хийхийг хүсэхгүй байна, учир нь заримдаа бид гарыг Pi-тэй холбож чаддаггүй тул бид энэ зааврын дагуу эдгээр алхмуудыг дагаж 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

Пи -ийн хажуугийн бүх ажлыг хийдэг кодыг дуудна_startup.sh.

Энэ бол бүх зүйлийг ажиллуулдаг энгийн бүрхүүлийн скрипт юм.

Алхам 10: Houeston, бидэнд асуудал гарлаа … DC Motors нь ижил загвар биш юм

Би H-Bridge-ийг аль хэдийн туршиж үзсэн бөгөөд энэ нь сайн ажилладаг, гэхдээ би онлайнаар захиалсан робот платформоос авсан мотороо залгахад эдгээр хоёр мотор өөр өөр хурдтайгаар эргэж, өөр өөр чимээ гаргадаг. Би тохируулагчийг мотор дээр 100% өөрчилсөн. Тэд хоёулаа хамгийн дээд хэмжээндээ ажиллаж чадаагүй.

Эдгээр нь хоёр өөр хөдөлгүүр юм шиг санагдаж байна. Нэг нь илүү том эргүүлэх чадвартай бөгөөд энэ нь ийм төрлийн роботод тохиромжтой боловч нөгөө нь роботыг хөдөлгөж чадахгүй байв. Тиймээс энэ нь тойрог болж хувирдаг.

Энэ үед надад байгаа зүйл бол Arduino дээрх цуврал програм маш сайн ажилладаг боловч компьютер дээрх Tcp сервер, Pi дээрх Tcp клиент хараахан кодлогдоогүй байна. Би тэмцээнд оролцохын тулд энэ бичлэгийг бөглөх ёстой. Би юу хийх вэ?

  1. Нэгдүгээрт, би моторын хүчдэлийг гурав дахин нэмэгдүүлдэг. Мэдээллийн хүснэгтэд 3V, 6V нь тэднийг хөдөлгөөгүй гэж бичжээ. Тэгвэл 9В байна. Би цайны батерейг гүйдлийг хоёр дахин нэмэгдүүлэхийн тулд зэрэгцээ холбосон бөгөөд хүчдэл хэвээр байна.
  2. Надад тавцан дээрх бэхэлгээнд тохирсон өөр мотор байна уу? Магадгүй тэд ижил төстэй загвартай бол би харж магадгүй юм.
  3. Хэрэв шоколад фенийг үнэхээр цохисон бол би Сервосыг сольж болно.

Сургууль эхэллээ. Би юу хийхээ харах хэрэгтэй болно.

Тэмдэглэл: Яагаад дэлхий дээр би тулгарч буй асуудлаа энд бичдэг вэ? Тиймээс хэрэв та туршлага багатай, ижил асуудалтай бол юу хийхээ мэдэх болно.

Шийдэл:

Тиймээс би дахин нэг шалгалт өгсөн. Би хурдны ялгааг Arduino код дээр тохируулсан.

ТАЙЛБАР: Моторууд өөр өөр хурдтайгаар эргэлдэж магадгүй юм. Arduino ноорог дээрх утгыг өөрчлөх.

Алхам 11: [TCP]: Яагаад Tcp болон Shell -ийг хамгаалдаггүй вэ? TCP гэж юу вэ?

Надад PC -ийн хувьд SSH биш харин Tcp -ийг ашигладаг хоёр тайлбар бий. - Pi харилцаа холбоо.

  1. Нэгдүгээрт, SSH (Secure Shell, тайлбарыг үзнэ үү) нь алсын компьютерээс командыг ажиллуулах зорилготой юм. Пи -д бидний хүссэн мэдээллээр хариулах нь илүү хэцүү байдаг, учир нь өгөгдөлд дүн шинжилгээ хийх цорын ганц сонголт бол хатуу, уйтгартай утас боловсруулах явдал юм.
  2. Хоёрдугаарт, бид SSH -ийг хэрхэн ашиглахаа аль хэдийн мэддэг болсон бөгөөд энэ гарын авлагад төхөөрөмжүүдийн хооронд харилцах илүү олон аргыг сурахыг хүсч байна.

TCP буюу дамжуулалтыг хянах протокол нь Интернет протокол цуглуулгын үндсэн протокол юм. Энэ нь Интернет протокол (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 нийтлэл нь угсарсан сокет модулийг ашиглан хэдэн мөр код ашиглан ийм харилцаа холбоо тогтоох нь маш энгийн болохыг харуулж байна. Бид PC дээр програмтай байх бөгөөд Pi дээр өөр програмтай болно.

Бид тасалдалтай ажиллах болно. Тэдгээрийн талаархи тайлбар хэсгээс илүү ихийг олж мэдэх. Буферийн талаар эндээс уншаарай. Одоо бид байгаа өгөгдлийг data = s.recv (BUFFER_SIZE) ашиглан уншиж болно, гэхдээ хоосон хазуулснаар бидний тодорхойлсон хэдэн тэмдэгт байх болно. Бид тасалдал ашиглаж болох уу? Өөр нэг асуулт: буфер хоосон байх уу эсвэл сервер илүү их мэдээлэл илгээхийг хүлээх үү, энэ тохиолдолд сервер/үйлчлүүлэгч завсарлага авах онцгой тохиолдол гаргах уу?

Үүнийг нэг нэгээр нь шийдье. Үүнийг хийхээс өмнө би ашигласан TCP болон UDP портуудыг жагсаасан Википедиагийн энэ нийтлэлийг хайж үзсэн. Түргэн харсны дараа би энэ төслийг Үйлдлийн систем болон дотоод үйлчилгээнд ашигладаггүй тул 12298 порт дээр холбогдох болно гэж шийдсэн.

Алхам 13: Манай Tcp коммуудыг туршиж үзээрэй

Бид тасалдал ашиглаж болох эсэхийг мэдэхийн тулд Python командын мөрийг ашиглан энгийн үйлчлүүлэгч болон сервер үүсгэе. Би үүнийг дараах алхмуудаар хийх болно.

  1. Хөшигний портоор дамжуулан Tcp -ээр дамжуулан текст илгээдэг програмыг эхлүүлнэ үү
  2. Бүх текстийг циклээр уншиж, дэлгэц дээр хэвлэдэг өөр програмыг (зэрэгцээ) эхлүүлээрэй.

Зөвхөн програмын хэсгүүдийг харуулах болно. Бүх програмууд Python 3. дээр ажилладаг бөгөөд эдгээр бүх програмууд нь компьютерын хэрэглэгчийн гарнаас цуваа тушаалыг Pi ашиглан Arduino руу илгээх явдал юм.

  • SBcontrolPC.py - PC дээр ажиллуулах. Дотоод хаяг болон заасан порт дээр TCP холболтыг эхлүүлдэг (би 12298 портыг ашигладаг, яагаад өмнөх алхамыг үзнэ үү)
  • SBcontrolPi.py - Pi дээр ажиллуулах. Буферээ хагас секунд тутамд (0.5 секунд) уншдаг. Видео дамжуулалт гэх мэт зүйлсийг удирдах бүрхүүлийн скриптийг эхлүүлнэ.

Зөвлөмж болгож буй: