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

CleanBot by Guillaume Meurillon: 8 алхам
CleanBot by Guillaume Meurillon: 8 алхам

Видео: CleanBot by Guillaume Meurillon: 8 алхам

Видео: CleanBot by Guillaume Meurillon: 8 алхам
Видео: Omgaan met verschil in beeld en muziek 2024, Арваннэгдүгээр
Anonim
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon

Энэ бол миний сургуульд зориулж хийсэн төслийн гарын авлага юм. Зорилго нь мэдрэгчээс мэдээлэл цуглуулахын зэрэгцээ интернетэд холбогдсон Raspberry Pi төхөөрөмж бүтээх явдал байв. Энэ өгөгдлийг (MySQL) мэдээллийн санд хадгалах ёстой байв. Өгөгдлийг вэбсайт ашиглан дүрслэн харуулах ёстой бөгөөд үүнийг Python дээр Flask webapp багц болон Jinja2 загварчлалаар кодлох ёстой байв.

Миний санаа бол Raspberry Pi, Arduino, аль хэдийн эвдэрсэн робот вакуум, олон тооны мэдрэгч ашиглан 'хакердсан' робот вакуум бүтээх явдал байв.

Алхам 1: эд ангиудыг цуглуулах

Эд ангиудыг цуглуулах
Эд ангиудыг цуглуулах
Эд ангиудыг цуглуулах
Эд ангиудыг цуглуулах
Эд ангиудыг цуглуулах
Эд ангиудыг цуглуулах
Эд ангиудыг цуглуулах
Эд ангиудыг цуглуулах

Юу ч бүтээхээсээ өмнө би ямар эд ангиудыг ашиглах, тэдгээрийг хэрхэн холбох, Python дээр програм хангамжийн анги бичих гэх мэт олон судалгаа хийсэн.

Сэлбэгийн жагсаалтыг файл болгон оруулах бөгөөд ингэснээр танд хэрэгтэй хэсгүүдийг хялбархан хайх боломжтой болно.

Би Raspberry Pi -ийн хажууд Arduino Uno ашиглахаар шийдсэн бөгөөд ингэснээр Raspberry Pi -гээ дарамтлахгүйгээр мэдрэгчээ үр дүнтэй уншиж чадна. Би бас Uno -г сонгосон, учир нь энэ нь маш сайн цагийн хурдтай, мөн аналог тээглүүртэй байдаг. Би Raspberry Pi -д ADC (жишээ нь MCP3008) ашиглаж болох байсан ч надад илүү олон утас хэрэгтэй байсан, энэ нь илүү үнэтэй, миний Пи илүү шаргуу ажиллах шаардлагатай байсан.

Дараа нь би эвдэрсэн роботын вакуумаас ашиглах боломжтой хэсгүүдийг шалгаж эхлэв. Дотоод цахилгаан хэрэгсэл эвдэрсэн боловч энэ нь ямар ч асуудалгүй байсан, учир нь би тэдгээрийг ямар ч байсан солих болно. Луккилли тогтмол гүйдлийн хөдөлгүүрүүд ажиллаж байсан тул тэдгээрийн аль нэгийг нь солих шаардлагагүй байв.

Эд ангиудын жагсаалт:

  • Raspberry Pi 3 нь дор хаяж 8GB MicroSD ангилал 10 ба хайрцагтай;
  • Raspberry Pi T-гуталчин, талхны хавтан (ууд);
  • Arduino Uno эсвэл үүнтэй төстэй (зохистой ADC бүхий хятад бус хувилбарыг илүүд үздэг, зарим хятадууд AREF-ийн асуудалтай байдаг) зарим тохиолдолд;
  • Ethernet кабель;
  • A (эвдэрсэн) роботын вакуум;
  • 3x HC-SR04 хэт авианы модуль;
  • 1х танхимын мэдрэгч модуль;
  • Янз бүрийн утгатай хэд хэдэн резистор;
  • LDR;
  • 6х 18650 лити-ион батерей + 12 вольтын 3 эсийн эзэмшигч (хэрэв та шинэ батерей ашиглах эсвэл LiPo батерейг илүү сайн ашиглах нь зүйтэй бол эдгээр нь удаан үргэлжлэх болно);
  • 18650 (эсвэл ямар ч төрлийн батерей ашиглах) 12v 3 эсийн цэнэглэгч pcb;
  • Таны бүрэлдэхүүн хэсгүүдийг гагнах зарим ПХБ -ийн DIY хавтан;
  • Полиуретан хуванцар хуудас;
  • Зөөврийн компьютер / ширээний компьютер.

Хэрэгслийн жагсаалт:

  • Өрмийн хэд хэдэн өрөм бүхий өрөм;
  • Өнцөг нунтаглагч (туршлагагүй бол бүү ашиглаарай) эсвэл Дремел гэх мэт зүйл;
  • Зүлгүүрийн цаас;
  • Хэд хэдэн халив;
  • Супер цавуу, холбох цавуу,…;
  • Гагнуурын төмөр (утсыг хялбархан гагнахын тулд тос ашиглана уу);
  • Хос утас таслагч болон хөрс хуулалтын хэрэгсэл.

Програм хангамжийн жагсаалт (заавал биш):

  • Adobe XD: утаснуудыг рамжуулах, прототип үүсгэх;
  • Fritzing: цахилгаан схемийг бий болгох;
  • PyCharm Professional: Python IDE нь байршуулах, алсын орчуулагч ашиглах чадвартай;
  • Шаваас: Pi -тэй хурдан бөгөөд хялбар ssh холболт;
  • Etcher.io: Raspbian зургийг SD карт руу шилжүүлэх хялбар хэрэгсэл;
  • Win32DiskImager: одоо байгаа Raspbian тохиргооноос зураг үүсгэх хялбар хэрэгсэл;
  • Программист Notepad: /boot/cmdline.txt файлыг аюулгүй засварлахын тулд ашиглаж болох энгийн хэрэгсэл.

Алхам 2: Интерфэйсийг шүрших, будах

Шүршигч будах ба интерфэйсийг зохион бүтээх
Шүршигч будах ба интерфэйсийг зохион бүтээх
Шүршигч будах ба интерфэйсийг зохион бүтээх
Шүршигч будах ба интерфэйсийг зохион бүтээх
Шүршигч будах ба интерфэйсийг зохион бүтээх
Шүршигч будах ба интерфэйсийг зохион бүтээх
Шүршигч будах ба интерфэйсийг зохион бүтээх
Шүршигч будах ба интерфэйсийг зохион бүтээх

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

Шүршигч будгийг хуурай байлгасны дараа би ашиглаж байсан будагныхаа зургаан өнцөгт өнгөний кодыг хайсан бөгөөд ингэснээр би вэб интерфэйсээ төхөөрөмжтэйгээ төгс нийцүүлж чадсан юм. Би Монтана 94 граффити ашигласан тул зургаан өнцөгт кодыг олох нь маш хялбар байсан бөгөөд hex & RGB кодууд вэбсайт дээрээ байсан.

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

Алхам 3: Мэдээллийн сан үүсгэх

Мэдээллийн сан үүсгэх
Мэдээллийн сан үүсгэх

Дараагийн логик алхам бол MySQL мэдээллийн санд ямар өгөгдөл хадгалахыг хүсч байгаагаа бодож эхлэх явдал байв. Хүмүүс вакуумынхаа талаар мэдэх тийм ч их дуртай байдаггүй тул би хэрэглэгчдэд зориулсан хүснэгт, нэвтрэх өгөгдөл, мэдрэгчийн хүснэгт (зай, зай, тоосны сав) -тай хамт явсан.

Зураг дээр MySQL Workbench дээр зурсан хүснэгтүүдийн зохион байгуулалтыг хүснэгтүүдийн хоорондох бүх хамаарлыг харуулав.

Хэрэглэгчдийн хувьд интерфэйс, имэйлийг хувийн болгохын тулд тэдний нэр, овог нэрийг хянаж байхыг хүсч байсан. Мэдээжийн хэрэг имэйл илгээхийн тулд надад тэдний имэйл хаяг хэрэгтэй байсан. Би мөн хэрэглэгчдийнхээ имэйлийн давуу талыг (имэйл хүлээн авах эсэхээс үл хамааран) хянах хүснэгтийг нэмж оруулсан. Хэрэглэгчдийн талаар миний хадгалахыг хүссэн хамгийн сүүлийн зүйл бол тэдний төхөөрөмжийн үүрэг юм. Би хэрэглэгчдийг администратор ба энгийн хэрэглэгч гэж хуваадаг. Администраторууд системд байгаа хэрэглэгчдийг нэмэх, хасах, удирдах эрхтэй байдаг бол энгийн хэрэглэгчид эдгээр хэрэгслүүдэд хандах боломжгүй байдаг.

Дараагийн хүснэгтэд "deviceruns" байгаа бөгөөд энэ нь төхөөрөмжийн хийсэн бодит ажил гүйлгээ юм. Deviceruns нь тодорхой хэрэглэгч (гүйлтийг эхлүүлсэн хүн) эзэмшдэг бөгөөд ажиллуулах хугацааг тооцоолохын тулд эхлэх болон дуусах хугацаатай байдаг.

Өөр нэг хүснэгтийг мэдрэгч өгөгдлийг төхөөрөмж бүртэй холбоход ашигладаг. Мэдрэгчид өөрсдөө id, нэр, тайлбарыг агуулсан өөр хүснэгтэд хадгалагддаг.

Алхам 4: эд ангиудыг хооронд нь холбох

Эд ангиудыг хооронд нь холбох
Эд ангиудыг хооронд нь холбох
Эд ангиудыг хооронд нь холбох
Эд ангиудыг хооронд нь холбох

Өгөгдлийн сангийн схемийг бий болгосны дараа би талбар, утас ашиглан бүх эд ангиудыг нэг ажлын прототипт холбож эхлэв.

Алхам 5: Raspberry Pi -ийг тохируулах

Raspberry Pi -ийг тохируулах
Raspberry Pi -ийг тохируулах

Raspbian -ийн хамгийн сүүлийн үеийн зургийг татаж авахын тулд Raspbian вэбсайт руу орно уу. Эндээс та ямар дистрио татаж авахаа сонгох боломжтой. Илүү хурдан ажиллахын тулд та график хэрэглэгчийн интерфэйсийг илүүд үздэг бол RAM -ийг бага ашиглахын тулд толгойгүй түгээлтийг татаж авах эсвэл GUI ашиглан ширээний компьютерийг татаж авах боломжтой.

OS -ийг суулгахын тулд Etcher -ийг татаж аваарай, энэ нь зургийг өөрийн микро SD карт руу хурдан, хялбар бичих GUI хэрэгсэл юм.

Толгойгүй горимыг идэвхжүүлэхийн тулд pi -д нэвтрэхийн тулд та компьютер дээрээ Putty програмыг суулгах хэрэгтэй болно. Дараагийн алхам бол Etcher -ийн үүсгэсэн Boot фолдер руу очиж cmdline.txt файлыг Программистуудын Notepad програмын дуртай текст засварлагчаар нээх явдал юм. Энэ текстийг файлын төгсгөлд нэмнэ үү.

ip = 169.254.10.1

Та шинэ мөр үүсгэхгүй байгаа эсэхээ шалгаарай, үүнийг шугамын төгсгөлд нэмнэ үү!

Дараа нь Boot фолдерын үндэс рүү буцаж очоод ssh нэртэй файл үүсгэнэ үү. Нэмэлт өргөтгөл бүү оруулаарай, энэ нь таны Pi -ийг эхлүүлэх бүрт SSH серверийг ажиллуулах болно. Одоо SD картаа Pi -д хийж, хангалттай тэжээлийн эх үүсвэрийг Pi -д холбож, Pi болон компьютерийн хооронд ethernet кабель нэмээрэй.

Шаваасыг нээгээд IP хаягаа бичнэ үү: 169.254.10.1. Одоо YES дээр дараад нэвтэрнэ үү, хэрэглэгчийн анхдагч нэр нь pi, нууц үг нь бөөрөлзгөнө юм.

Дараа нь шинэчлэгдэхийн тулд дараах тушаалыг ажиллуулна уу.

sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

Эцсийн алхам бол Raspberry Pi дээр виртуал Python орчуулагч үүсгэх явдал юм, энэ нь таны кодыг гүйцэтгэх болно. Үүнийг хийхийн тулд шаваасыг нээгээд дараахь зүйлийг бичнэ үү.

sudo mkdir төсөл1

cd project1 python3 -m pip install -pip setuptools wheel virtualenv python3 -m venv -system -site -packages venv шинэчлэх

Алхам 6: Вэб програм бичих

Вэб програм бичих
Вэб програм бичих

Хэсэг бүрийг холбож, Raspberry Pi-ийг тохируулсны дараа би Flask, Jinja2 ашиглан үндсэн вэб програмаа бичиж эхлэв. Flask бол Python-ийн ашиглахад хялбар арын хүрээ бөгөөд Jinja2 бол миний ашиглаж байсан загварчлалын хэл юм. Jinja -ийн тусламжтайгаар та ердийн HTML файлуудыг гогцоо, бүтэц гэх мэтээр үүсгэж болно.

Арын хэсгийг кодлох явцад би зарим элементүүдийн HTML, CSS, JavaScript зэрэг програмын урд хэсгийг бичсэн. Би загварын хуудсандаа ITCSS арга, BEM тэмдэглэгээг ашигласан.

Үндсэн вэб програмаас гадна би өөр 2 үндсэн програмыг бүтээсэн. Төхөөрөмжийн IP хаягийг жагсаалтад байгаа хэрэглэгчдэд илгээх зорилгоор нэгийг бичсэн болно. Имэйл хүлээн авахыг зөвшөөрсөн бүртгэлтэй хэрэглэгч бүр вэб интерфэйсийг эхлүүлэх линк бүхий захидал хүлээн авах болно. Энэ програм нь системийн үйлчилгээгээр ажилладаг.

Нөгөө гол файл нь жинхэнэ төхөөрөмжид зориулагдсан болно. Энэ гол төхөөрөмжийг төхөөрөмжийг эхлүүлэх, зогсоох, өгөгдөл цуглуулахын тулд миний Flask програмаар дамжуулан дуудах боломжтой. Цуглуулсан өгөгдлийг мөн энэ үндсэн төхөөрөмжөөр дамжуулан төхөөрөмжийн мэдээллийн санд байршуулдаг. Дараа нь энэ өгөгдлийг вэб програм дээр дүрслэх боломжтой.

Вэб апп нь Python Threading ашиглан үндсэн төхөөрөмжид холбогдсон байна. Хэрэглэгч эхлэх товчийг дарахад төхөөрөмжийг цаана нь ажиллуулах утас үүснэ. Үүний зэрэгцээ, хэрэглэгч програмыг төгс үзэх боломжтой. Зогсоох дээр дарахад энэ утас тасарч, төхөөрөмж зогсох болно.

Алхам 7: Бүрээсийг дуусгахын тулд хэсэг хэсгүүд бий болгох

Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох
Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох
Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох
Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох
Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох
Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох
Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох
Бүрхүүлийг дуусгахын тулд хэсэг хэсгүүд бий болгох

Аппликешны хамгийн том хэсгийг бичсэний дараа би төхөөрөмжийн бүрхүүлийг өөрчилж эхэлсэн бөгөөд ингэснээр миний мэдрэгч болон бусад эд ангиуд тохирох болно. Үүнийг хийхийн тулд би орон нутгийн DIY дэлгүүрээс полиуретан хуудас худалдаж аваад 2 хаалт хайчилж эхлэв. Би энэ полиуретан хуудсыг ашигласан, учир нь энэ нь огтлох боломжгүй, нэлээд уян хатан тул миний робот дугуй хэлбэртэй тул төгс төгөлдөр юм.

Эхний хаалт нь дээд талын нүхийг бөглөхөд зориулагдсан бөгөөд дэлгэц нь өмнө нь сууж байсан. Би дэлгэцийг асаах/унтраах товчлуураар сольсон тул батерейг үнэхээр унтрааж болно.

Нөгөө хаалт нь төхөөрөмжийн урд талд байрладаг HC-SR04 хэт авианы мэдрэгчийг дэмждэг.

Хамгийн сүүлд хийх зүйл бол нэг дугуйны арматурын нүхийг хайчилж, соронз оруулах, ингэснээр би дугуйны эргэлтийг хянах боломжтой болсон.

Эдгээр хаалтуудыг дуусгасны дараа би мөн үлдээсэн будгаараа шүршиж будсан бөгөөд энэ нь загварт нийцсэн болно.

Алхам 8: Код

Програмыг суулгахын тулд code.zip файлыг татаж аваад project1 директороос задлаарай.

Дараа нь энэ тушаалыг Raspbian эсвэл Putty дээрх терминал дээр гүйцэтгэнэ.

sudo cp project1/conf/project-1*/etc/systemd/system/

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl демон-дахин ачаалах sudo systemctl project-1* sudo systemctl идэвхжүүлэх project1* sudo systemctl дахин эхлүүлэх nginx

Дараа нь үүсгэсэн мэдээллийн санг нээж, Argon2 хэш нууц үгээр шинэ хэрэглэгч үүсгэнэ үү. Одоо та програмыг ашиглаж болно.

Зугаацаарай!

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