Përmbajtje:

CleanBot nga Guillaume Meurillon: 8 hapa
CleanBot nga Guillaume Meurillon: 8 hapa

Video: CleanBot nga Guillaume Meurillon: 8 hapa

Video: CleanBot nga Guillaume Meurillon: 8 hapa
Video: 새벽 5시에 시작하는 강아지 고양이 집사의 여름 준비 2024, Nëntor
Anonim
CleanBot nga Guillaume Meurillon
CleanBot nga Guillaume Meurillon
CleanBot nga Guillaume Meurillon
CleanBot nga Guillaume Meurillon

Ky është një udhëzues për një projekt që kam bërë për shkollën. Qëllimi ishte të krijonte një pajisje me Raspberry Pi që ishte e lidhur me internetin, ndërsa grumbullonte të dhëna nga sensorët. Këto të dhëna duhej të ruheshin në një bazë të dhënash (MySQL). Të dhënat duheshin vizualizuar me një faqe në internet, të koduar në Python me paketën webapp Flask dhe modelimin Jinja2.

Ideja ime ishte të krijoja një vakum roboti të ‘hackuar’, duke përdorur një Raspberry Pi, një Arduino, një vakum robot tashmë të thyer dhe një mori sensorë.

Hapi 1: Mbledhja e Pjesëve

Mbledhja e Pjesëve
Mbledhja e Pjesëve
Mbledhja e Pjesëve
Mbledhja e Pjesëve
Mbledhja e Pjesëve
Mbledhja e Pjesëve
Mbledhja e Pjesëve
Mbledhja e Pjesëve

Para se të krijoja ndonjë gjë, unë bëra shumë kërkime se cilat pjesë të përdor, si t'i lidh ato, duke shkruar klasa softuerësh në Python etj.

Lista e pjesëve do të përfshihet si një skedar, në mënyrë që të mund të kërkoni me lehtësi pjesët që ju nevojiten.

Vendosa të përdor një Arduino Uno pranë Raspberry Pi, në mënyrë që të mund të lexoja me efikasitet sensorët e mi pa stresuar Raspberry Pi tim. Unë gjithashtu zgjodha për Uno sepse ka një shpejtësi të mirë të orës dhe për shkak të kunjave analoge. Unë mund të kisha përdorur një ADC (p.sh. MCP3008) për Raspberry Pi tim, por do të kisha nevojë për shumë tela, do të ishte më e shtrenjtë dhe Pi im do të duhej të punonte shumë më shumë.

Pastaj fillova të inspektoj pjesët që ishin të përdorshme nga vakumi i robotit të prishur. Elektronika e brendshme ishte e dëmtuar, por ky nuk ishte problem, sepse gjithsesi do t'i zëvendësoja plotësisht. Për fat të mirë motorët DC ishin ende duke punuar, kështu që asnjë prej tyre nuk duhej të zëvendësohej.

Lista e pjesëve:

  • Raspberry Pi 3 me të paktën 8 GB klasë MicroSD 10 dhe një kuti;
  • Mobilje Pi T-kalldrëm dhe dërrasë e ngushtë;
  • Arduino Uno ose të ngjashme (mundësisht një version jo kinez me një ADC të mirë, disa kinezë kanë çështje AREF) me një lloj rasti;
  • Një kabllo ethernet;
  • Një vakum robotik (i prishur);
  • 3x module tejzanor HC-SR04;
  • 1x modul i sensorit të sallës;
  • Disa rezistenca në vlera të ndryshme;
  • Një LDR;
  • Bateri 6x 18650 Li-jon + mbajtëse me 3 qeliza për 12v (preferohet të përdorni bateri të reja ose edhe më mirë të përdorni bateri LiPo, këto do të zgjasin më gjatë);
  • 18650 (ose çfarëdo lloji të baterisë që do të përdorni) 12v pcb karikimi me 3 qeliza;
  • Disa tabela PCB DIY për të bashkuar përbërësit tuaj;
  • Një fletë plastike poliuretani;
  • Një laptop / kompjuter desktop.

Lista e mjeteve:

  • Një stërvitje me disa stërvitje;
  • Një mulli me kënd (mos e përdorni nëse nuk keni përvojë) ose diçka si një Dremel;
  • Një copë letër lëmuese;
  • Disa kaçavida;
  • Ngjitës super ngjitës, ngjitës,…;
  • Një hekur bashkues (përdorni yndyrat për të lidhur më lehtë telat);
  • Një palë prerës teli dhe një mjet zhveshjeje.

Lista e programeve kompjuterike (opsionale):

  • Adobe XD: kornizë me tela dhe krijimi i një prototipi;
  • Fritzing: krijimi i një skeme elektrike;
  • PyCharm Professional: Python IDE me aftësitë e përdorimit të vendosjes dhe përkthyesit në distancë;
  • Stuko: lidhje e shpejtë dhe e lehtë ssh me Pi;
  • Etcher.io: mjet i lehtë për të ndezur një imazh Raspbian në një kartë SD;
  • Win32DiskImager: mjet i lehtë për të krijuar një imazh nga një konfigurim ekzistues Raspbian;
  • Programuesit Notepad: mjet i thjeshtë që mund të përdorni për të redaktuar në mënyrë të sigurt skedarin /boot/cmdline.txt.

Hapi 2: Pikturimi me llak & Projektimi i ndërfaqes

Llak-lyerje & Dizajnimi i Ndërfaqes
Llak-lyerje & Dizajnimi i Ndërfaqes
Llak-lyerje & Dizajnimi i Ndërfaqes
Llak-lyerje & Dizajnimi i Ndërfaqes
Llak-lyerje & Dizajnimi i Ndërfaqes
Llak-lyerje & Dizajnimi i Ndërfaqes
Llak-lyerje & Dizajnimi i Ndërfaqes
Llak-lyerje & Dizajnimi i Ndërfaqes

Para se të filloja të krijoja modelin, pikturova me spërkatje pjesën e jashtme, sepse ngjyrat nuk më pëlqyen aspak. Shkova në dyqan dhe mora një abetare plastike, një kanaçe me ngjyrë të bardhë dhe një bruz për të mbuluar pjesën kryesore.

Pasi e lashë bojën me llak të thahej, shikova kodin e saktë gjashtëkëndësh për bojën që përdorja, në mënyrë që të mund të përputhesha në mënyrë të përsosur me ndërfaqen time në internet me pajisjen time. Gjetja e këtij kodi gjashtëkëndësh ishte mjaft e lehtë, pasi kam përdorur grafitet Montana 94, dhe kodet gjashtëkëndësh dhe RGB ishin në faqen e tyre të internetit.

Kam krijuar korniza me besnikëri të lartë për çdo faqe të faqes sime të internetit, kështu që e dija mirë se si do ta krijoja këtë ndërfaqe. Pasi u tregova ndërfaqen time mësuesve të mi, mora këshillën për ta bërë sfondin pak më gri dhe butonat të bardhë, dhe rezultati ishte i mirë sipas mendimit tim.

Hapi 3: Krijimi i bazës së të dhënave

Krijimi i bazës së të dhënave
Krijimi i bazës së të dhënave

Hapi tjetër logjik ishte të filloja të mendoja se cilat të dhëna doja të ruaja në bazën e të dhënave MySQL. Nuk ka aq shumë njerëz që duan të dinë për vakumin e tyre, kështu që unë shkova me tabela për përdoruesit dhe të dhënat e tyre të hyrjes, si dhe tabela për sensorë (bateri, distancë dhe enë pluhuri).

Imazhi ju tregon paraqitjen e tabelave të mia, të vizatuara në MySQL Workbench, me të gjitha marrëdhëniet midis tabelave.

Për përdoruesit e mi, doja të mbaja shënime mbi emrin dhe mbiemrin e tyre për të personalizuar ndërfaqen dhe emailet. Sigurisht për të dërguar e-mail, më duhej edhe adresa e tyre e-mail. Unë gjithashtu shtova një tabelë për të mbajtur gjurmët në lidhje me preferencën e e-mail të përdoruesve të mi (nëse ata duan apo jo të marrin email). Gjëja e fundit që doja të ruaja tek përdoruesit, është roli i tyre për pajisjen. Unë i ndaj përdoruesit si administratorë dhe përdorues normalë. Administratorët kanë të drejtë të shtojnë, heqin dhe menaxhojnë përdoruesit në sistem, ndërsa përdoruesit normalë nuk mund të kenë qasje në këto mjete.

Tabela tjetër përmban "deviceruns", të cilat janë drejtimet aktuale që ka bërë pajisja. Deviceruns janë në pronësi të një përdoruesi të caktuar (personi që filloi vrapimin) dhe kanë një kohë fillimi dhe mbarimi, për të llogaritur kohën e ekzekutimit.

Një tabelë tjetër përdoret për të lidhur sensordata me secilin devicerun. Vetë sensorët ruhen në një tabelë tjetër, që përmban id -në, emrin dhe përshkrimin e tyre.

Hapi 4: Lidhja e pjesëve së bashku

Lidhja e pjesëve së bashku
Lidhja e pjesëve së bashku
Lidhja e pjesëve së bashku
Lidhja e pjesëve së bashku

Pas krijimit të skemës së bazës së të dhënave, fillova të përdor tabela dhe instalime elektrike për të lidhur të gjitha pjesët së bashku në një prototip pune.

Hapi 5: Vendosja e Raspberry Pi

Vendosja e Raspberry Pi
Vendosja e Raspberry Pi

Për të shkarkuar imazhin më të fundit të Raspbian, shkoni në faqen e internetit të Raspbian. Këtu mund të zgjidhni cilën shpërndarje dëshironi të shkarkoni. Për funksionim më të shpejtë, mund të shkarkoni shpërndarjen pa kokë, për më pak përdorim RAM, ose të shkarkoni desktopin me GUI nëse preferoni një ndërfaqe grafike të përdoruesit.

Për të instaluar sistemin operativ, thjesht shkarkoni Etcher, është një mjet GUI për të shkruar imazhin në kartën tuaj mikro SD shpejt dhe me lehtësi.

Për të aktivizuar modalitetin pa kokë, në mënyrë që të keni qasje në pi, do t'ju duhet të instaloni Putty në kompjuterin tuaj. Hapi tjetër është të shkoni te dosja Boot e krijuar nga Etcher dhe të hapni skedarin cmdline.txt me redaktuesin tuaj të preferuar të tekstit, ish Programmers Notepad. Shtoni këtë tekst në fund të skedarit:

ip = 169.254.10.1

Vetëm sigurohuni që të mos krijoni një linjë të re, shtojeni këtë në fund të rreshtit!

Tjetra, kthehuni në rrënjën e dosjes Boot dhe krijoni një skedar të quajtur ssh. Mos shtoni asnjë shtrirje, kjo do të sigurojë që serveri SSH të fillojë sa herë që Pi juaj fillon. Tani thjesht vendosni kartën SD në Pi tuaj, lidhni një burim të mjaftueshëm energjie me Pi tuaj dhe shtoni një kabllo ethernet midis Pi dhe kompjuterit tuaj.

Hapni stuko dhe shkruani adresën IP: 169.254.10.1. Tani klikoni YES dhe regjistrohuni, emri i parazgjedhur i përdoruesit është pi dhe fjalëkalimi është mjedër.

Tjetra, ekzekutoni komandën e mëposhtme për t'u azhurnuar:

sudo apt-merrni përditësim -y && sudo apt-merrni azhurnim -y && sudo apt-merrni dist-upgrade -y

Hapi i fundit është të krijoni një përkthyes virtual Python në Raspberry Pi tuaj, kjo do të ekzekutojë kodin tuaj. Për ta bërë këtë, thjesht hapni stuko dhe shkruani sa vijon:

projekt sudo mkdir1

cd project1 python3 -m pip install -upgrade pip setuptools wheel virtualenv python3 -m venv --system -site -packages venv

Hapi 6: Shkrimi i aplikacionit në internet

Shkrimi i aplikacionit në internet
Shkrimi i aplikacionit në internet

Pas lidhjes së çdo pjese dhe vendosjes së Raspberry Pi, fillova të shkruaj aplikacionin tim kryesor në internet duke përdorur Flask dhe Jinja2. Flask është një kornizë backend e lehtë për t’u përdorur për Python, dhe Jinja2 është gjuha e modelimit që kam përdorur. Me Jinja, ju mund të krijoni skedarë normalë HTML me sythe for, nëse struktura etj.

Ndërsa kodifikoja pjesën e pasme, unë gjithashtu shkrova pjesën e përparme të aplikacionit, duke përfshirë HTML, CSS dhe JavaScript për disa elementë. Kam përdorur metodën ITCSS dhe shënimin BEM për fletët e mia të stilit.

Përveç aplikacionit kryesor në internet, krijova edhe 2 programe të tjera kryesore. Njëra është shkruar për të dërguar adresën IP të pajisjes tek përdoruesit në listë. Çdo përdorues i regjistruar që ka pranuar të marrë email, do të marrë një postë me një lidhje për të filluar ndërfaqen në internet. Ky program funksionon si një shërbim sistematik.

Skedari tjetër kryesor është për pajisjen aktuale. Kjo kryesore mund të thirret përmes aplikacionit tim Flask, për të filluar dhe ndaluar pajisjen dhe për të mbledhur të dhëna. Të dhënat e grumbulluara gjithashtu ngarkohen në bazën e të dhënave të pajisjes përmes kësaj kryesore. Këto të dhëna pastaj mund të vizualizohen në ueb-aplikacion.

Ueb-aplikacioni është i lidhur me pajisjen e drejtuar kryesore me Python Threading. Kur një përdorues klikon butonin e fillimit, krijohet një fije për të drejtuar pajisjen në sfond. Ndërkohë, përdoruesi mund të shfletojë në mënyrë perfekte përmes aplikacionit. Kur klikoni stop, kjo fije ndalet dhe kështu pajisja ndalon.

Hapi 7: Krijimi i pjesëve për të përfunduar zorrën

Krijimi i pjesëve për të përfunduar zorrën
Krijimi i pjesëve për të përfunduar zorrën
Krijimi i pjesëve për të përfunduar zorrën
Krijimi i pjesëve për të përfunduar zorrën
Krijimi i pjesëve për të përfunduar zorrën
Krijimi i pjesëve për të përfunduar zorrën
Krijimi i pjesëve për të përfunduar zorrën
Krijimi i pjesëve për të përfunduar zorrën

Pasi shkrova pjesën më të madhe të aplikacionit, fillova të modifikoj shtresën e pajisjes, në mënyrë që sensorët e mi dhe pjesët e tjera të përshtaten në të vërtetë. Për ta bërë këtë, bleva një fletë poliuretani në një dyqan lokal DIY dhe fillova të pres 2 kllapa. Kam përdorur këtë fletë poliuretani pasi nuk ka të ngjarë të ndahet në copa gjatë prerjes, dhe sepse është mjaft fleksibël, gjë që është perfekte pasi roboti im ka një formë rrethore.

Kllapa e parë është bërë për të mbushur një vrimë në pjesën e sipërme, ku përdorej një ekran. Unë e zëvendësova ekranin me një çelës ndezës/fikës në mënyrë që bateritë të mund të fiken në të vërtetë.

Kllapa tjetër është një mbështetje për sensorët e mi tejzanor HC-SR04 që janë të pozicionuar në pjesën e përparme të pajisjes.

Gjëja e fundit që mbetet për të bërë, ishte prerja e një vrime në përforcimet e njërës prej rrotave dhe futja e një magneti, në mënyrë që të mund të monitoroja rrotullimet e rrotës.

Pasi mbarova këto kllapa, gjithashtu i lyeva me bojë me bojën që më kishte mbetur, për ta bërë atë të përshtatet me modelin.

Hapi 8: Kodi

Për të instaluar programin, shkarkoni skedarin code.zip dhe hapeni atë në drejtorinë project1.

Tjetra, kryeni këtë komandë në një terminal në Raspbian ose Putty:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-ringarkoni sudo systemctl aktivizoni projektin-1* sudo systemctl aktivizoni projektin 1* sudo systemctl rinisni nginx

Tjetra, hapni bazën e të dhënave që keni krijuar dhe krijoni një përdorues të ri me një fjalëkalim të grumbulluar Argon2. Tani mund ta përdorni programin.

Shijoni!

Recommended: