Sisukord:

CleanBot, autor Guillaume Meurillon: 8 sammu
CleanBot, autor Guillaume Meurillon: 8 sammu

Video: CleanBot, autor Guillaume Meurillon: 8 sammu

Video: CleanBot, autor Guillaume Meurillon: 8 sammu
Video: 19 Gaillarde Milanoise I Adrian Le Roy 2024, November
Anonim
CleanBot, autor Guillaume Meurillon
CleanBot, autor Guillaume Meurillon
CleanBot, autor Guillaume Meurillon
CleanBot, autor Guillaume Meurillon

See on juhend kooli jaoks koostatud projekti jaoks. Eesmärk oli luua Internetti ühendatud Raspberry Pi -ga seade, kogudes samal ajal anduritelt andmeid. Need andmed tuli salvestada (MySQL) andmebaasi. Andmeid tuli visualiseerida veebisaidiga, kodeerida Pythonis veebiprogrammi Flask paketi ja Jinja2 malli abil.

Minu idee oli luua häkitud robot -vaakum, kasutades selleks Raspberry Pi, Arduino, juba katkist robotvaakumit ja hunnikut andureid.

Samm: osade kogumine

Osade kogumine
Osade kogumine
Osade kogumine
Osade kogumine
Osade kogumine
Osade kogumine
Osade kogumine
Osade kogumine

Enne millegi tegelikku loomist uurisin palju, milliseid osi kasutada, kuidas neid ühendada, kirjutada tarkvaraklasse Pythonis ja nii edasi.

Osade loend lisatakse failina, et saaksite hõlpsalt vajalikke osi otsida.

Otsustasin Raspberry Pi kõrval kasutada Arduino Unot, et saaksin oma andureid tõhusalt lugeda ilma Raspberry Pi -d koormamata. Valisin Uno ka sellepärast, et sellel on kena taktsagedus, ja analoogpistikute tõttu. Oleksin võinud oma Raspberry Pi jaoks kasutada ADC -d (nt MCP3008), kuid mul oleks vaja olnud palju rohkem juhtmeid, see oleks olnud kallim ja minu Pi peaks palju rohkem pingutama.

Hakkasin siis purunenud robottolmuimejast kasutatavaid osi kontrollima. Siseelektroonika oli kahjustatud, kuid see ei olnud probleem, sest ma asendasin need niikuinii täielikult. Õnneks alalisvoolumootorid töötasid endiselt, nii et ühtegi neist ei tulnud välja vahetada.

Osade nimekiri:

  • Raspberry Pi 3 vähemalt 8 GB MicroSD klassi 10 ja ümbrisega;
  • Raspberry Pi T-cobbler ja leivaplaat (id);
  • Arduino Uno või sarnane (eelistatavalt mitte-hiina versioon, millel on korralik ADC, mõnel hiinlasel on AREF-i probleemid) mingisuguse juhtumiga;
  • Etherneti kaabel;
  • (Katkine) robottolmuimeja;
  • 3x HC-SR04 ultraheli moodulid;
  • 1x halli anduri moodul;
  • Mitu takistit erineva väärtusega;
  • LDR;
  • 6x 18650 Li-ion akud + 3-elemendilised hoidikud 12v (eelistatavalt peaksite kasutama uusi patareisid või veelgi parem kasutada LiPo akusid, need kestavad kauem);
  • 18650 (või mis iganes tüüpi akut te kasutate) 12v 3-elemendiline laadimisplaat;
  • Mõned PCB DIY plaadid komponentide jootmiseks;
  • Leht polüuretaanplastist;
  • Sülearvuti / lauaarvuti.

Tööriistade loend:

  • Mitme puuriga puur;
  • Nurklihvija (ärge kasutage seda, kui teil pole kogemusi) või midagi sellist nagu Dremel;
  • Tükk lihvpaberit;
  • Mitu kruvikeerajat;
  • Superliim, kinnitusliim,…;
  • Jootekolb (kasutage juhtmete lihtsamaks jootmiseks rasva);
  • Paar traadilõikurit ja eemaldustööriist.

Tarkvara loend (valikuline):

  • Adobe XD: traatraamimine ja prototüübi loomine;
  • Fritzing: elektriskeemi loomine;
  • PyCharm Professional: Python IDE koos juurutamise ja kaugtõlgi kasutamise võimalustega;
  • Kitt: kiire ja lihtne ssh ühendus Pi -ga;
  • Etcher.io: lihtne tööriist Raspbiani pildi SD -kaardile välkimiseks;
  • Win32DiskImager: lihtne tööriist pildi loomiseks olemasolevast Raspbiani seadistusest;
  • Programmeerijate märkmik: lihtne tööriist, mille abil saate faili /boot/cmdline.txt turvaliselt redigeerida.

2. samm: pihustusvärvimine ja liidese kujundamine

Pihustusvärvimine ja liidese kujundamine
Pihustusvärvimine ja liidese kujundamine
Pihustusvärvimine ja liidese kujundamine
Pihustusvärvimine ja liidese kujundamine
Pihustusvärvimine ja liidese kujundamine
Pihustusvärvimine ja liidese kujundamine
Pihustusvärvimine ja liidese kujundamine
Pihustusvärvimine ja liidese kujundamine

Enne disaini loomist alustasin välispritsiga värvimist, sest värvid ei meeldinud mulle üldse. Läksin poodi ja võtsin plastkorvi, valge purgi ja türkiissinise purgi, et pealmine ümbris uuesti õhku lasta.

Pärast seda, kui lasin pihustusvärvil kuivada, otsisin kasutatud värvi täpse kuuskantvärvi koodi, et saaksin oma veebiliidese oma seadmega ideaalselt sobitada. Selle kuusnurkse koodi leidmine oli üsna lihtne, kuna kasutasin Montana 94 graffitit ja kuueteistkümnes ja RGB -koodid olid nende veebisaidil.

Lõin oma veebisaidi igale lehele kõrgetasemelisi traatraame, nii et teadsin täiesti hästi, kuidas seda liidest luua kavatsen. Pärast seda, kui olin oma liidest õpetajatele näidanud, sain nõu teha taust veidi hallimaks ja nupud valgeks ning tulemus oli minu arvates hea.

3. samm: andmebaasi loomine

Andmebaasi loomine
Andmebaasi loomine

Järgmine loogiline samm oli hakata mõtlema, milliseid andmeid soovin MySQL -i andmebaasi salvestada. Inimestele ei meeldi oma vaakumist nii palju teada saada, seega läksin kasutajate tabelite ja nende sisselogimisandmetega, samuti andurite (aku, vahemaa ja tolmumahuti) tabelitega.

Pilt näitab MySQL Workbenchis joonistatud minu tabelite paigutust koos kõigi tabelite vaheliste suhetega.

Kasutajate jaoks soovisin liidese ja meilide isikupärastamiseks jälgida nende nime ja perekonnanime. Muidugi e-kirjade saatmiseks vajasin ka nende e-posti aadressi. Lisasin ka tabeli, et jälgida oma kasutajate e-posti eelistusi (olenemata sellest, kas nad soovivad e-kirju saada või mitte). Viimane asi, mida kasutajate kohta salvestada tahtsin, on nende roll seadme jaoks. Jagan kasutajad administraatoriteks ja tavakasutajateks. Administraatoritel on õigus süsteemis kasutajaid lisada, eemaldada ja hallata, samas kui tavakasutajad ei pääse neile tööriistadele juurde.

Järgmine tabel sisaldab "deviceruns", mis on seadme tegelikud käivitused. Devicerunid kuuluvad kindlale kasutajale (jooksu alustanud isikule) ning neil on käivitus- ja lõpp -aeg, et arvutada käitusaeg.

Teist tabelit kasutatakse sensordata linkimiseks iga seadmega. Andurid ise salvestatakse teise tabelisse, mis sisaldab nende ID -d, nime ja kirjeldust.

Samm: osade ühendamine

Osade ühendamine
Osade ühendamine
Osade ühendamine
Osade ühendamine

Pärast andmebaasiskeemi loomist hakkasin kasutama leivaplaate ja juhtmeid, et ühendada kõik osad üheks töötavaks prototüübiks.

Samm: Raspberry Pi seadistamine

Raspberry Pi seadistamine
Raspberry Pi seadistamine

Raspbiani uusima pildi allalaadimiseks minge Raspbiani veebisaidile. Siin saate valida, millist distrot soovite alla laadida. Kiiremaks toimimiseks saate alla laadida peata distro, vähem RAM -i kasutamist või alla laadida töölaua GUI -ga, kui eelistate graafilist kasutajaliidest.

OS -i installimiseks laadige lihtsalt Etcher alla, see on graafiline kasutajaliides, mis võimaldab pildi kiiresti ja hõlpsalt oma micro SD -kaardile kirjutada.

Peata režiimi lubamiseks ja juurdepääsuks pi -le peate oma arvutisse installima Putty. Järgmine samm on minna Etcheri loodud kausta Boot ja avada fail cmdline.txt oma lemmiktekstiredaktoriga, nt Programmeerijate märkmikuga. Lisage see tekst faili lõppu:

ip = 169.254.10.1

Lihtsalt veenduge, et te ei loo uut rida, lisage see rea lõppu!

Seejärel minge tagasi alglaadimiskausta juure ja looge fail nimega ssh. Ärge lisage laiendusi, see tagab, et SSH -server käivitub iga kord, kui teie Pi käivitatakse. Nüüd pange lihtsalt SD -kaart oma Pi -sse, ühendage Pi -ga piisav toiteallikas ja lisage oma Pi ja arvuti vahele Etherneti kaabel.

Avage kitt ja sisestage IP -aadress: 169.254.10.1. Nüüd klõpsake JAH ja logige sisse, vaikimisi kasutajanimi on pi ja parool on vaarikas.

Seejärel täitke ajakohastamiseks järgmine käsk:

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

Viimane samm on luua oma Raspberry Pi -le virtuaalne Pythoni tõlk, see käivitab teie koodi. Selleks avage lihtsalt kitt ja tippige järgmine tekst:

sudo mkdir projekt1

cd project1 python3 -m pip install -uuenda pip setuptools ratas virtualenv python3 -m venv -süsteem -saidipaketid venv

6. samm: veebirakenduse kirjutamine

Veebirakenduse kirjutamine
Veebirakenduse kirjutamine

Pärast iga osa ühendamist ja Raspberry Pi seadistamist hakkasin oma peamist veebirakendust Flaski ja Jinja2 abil kirjutama. Flask on Pythoni jaoks hõlpsasti kasutatav taustaprogramm ja Jinja2 on minu kasutatav mallikeel. Jinja abil saate luua tavalisi HTML -faile silmuste jaoks, kui need on struktuurid jne.

Taustaprogrammi kodeerides kirjutasin ka rakenduse kasutajaliidese, sealhulgas mõnede elementide HTML -i, CSS -i ja JavaScripti. Kasutasin oma stiililehtede jaoks ITCSS -meetodit ja BEM -märget.

Lisaks peamisele veebirakendusele lõin ka 2 muud põhiprogrammi. Üks on kirjutatud seadme IP -aadressi saatmiseks loendis olevatele kasutajatele. Iga registreeritud kasutaja, kes on nõustunud e -kirjade vastuvõtmisega, saab kirja, millel on link veebiliidese käivitamiseks. See programm töötab süsteemiteenusena.

Teine põhifail on tegeliku seadme jaoks. See peamine on helistatav minu rakenduse Flask kaudu seadme käivitamiseks ja peatamiseks ning andmete kogumiseks. Kogutud andmed laaditakse selle põhi kaudu üles ka seadme andmebaasi. Neid andmeid saab seejärel veebirakenduses visualiseerida.

Veebirakendus on ühendatud Python Threadingiga seadme põhitööga. Kui kasutaja klõpsab nuppu Start, luuakse niit seadme taustal töötamiseks. Vahepeal saab kasutaja rakendust suurepäraselt sirvida. Kui klõpsate nuppu Stop, peatatakse see lõng ja seade peatub.

7. samm: korpuse viimistlemiseks tükkide loomine

Tükkide loomine korpuse viimistlemiseks
Tükkide loomine korpuse viimistlemiseks
Tükkide loomine korpuse viimistlemiseks
Tükkide loomine korpuse viimistlemiseks
Tükkide loomine korpuse viimistlemiseks
Tükkide loomine korpuse viimistlemiseks
Tükkide loomine korpuse viimistlemiseks
Tükkide loomine korpuse viimistlemiseks

Pärast rakenduse suurema osa kirjutamist hakkasin seadme korpust muutma, nii et mu andurid ja muud osad tegelikult sobiksid. Selleks ostsin kohalikus DIY poes polüuretaanilehe ja hakkasin 2 sulgu lõikama. Ma kasutasin seda polüuretaanilehte, kuna see ei purune lõikamise ajal tõenäoliselt tükkideks ja kuna see on üsna paindlik, mis on ideaalne, kuna minu robotil on ümmargune kuju.

Esimene sulg on tehtud selleks, et täita auk ülaosas, kus varem istus kuvar. Asendasin ekraani sisse/välja lülitiga, nii et patareid saaks tegelikult välja lülitada.

Teine sulg toetab minu HC-SR04 ultraheli andureid, mis on paigutatud seadme esiküljele.

Viimane asi, mis teha jäi, oli ühe ratta tugevdustele auk välja lõigata ja magnet sisse panna, et saaksin ratta pöörlemist jälgida.

Pärast nende sulgude viimistlemist pihustasin need ka allesjäänud värviga, et see sobiks disainiga.

8. samm: kood

Programmi installimiseks laadige alla fail code.zip ja pakkige see kataloogis project1 lahti.

Seejärel täitke see käsk Raspbiani või Putty terminalis:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl deemon-reload sudo systemctl lubage projekt-1* sudo systemctl lubage projekt1* sudo systemctl taaskäivitage nginx

Seejärel avage loodud andmebaas ja looge Argon2 räsitud parooliga uus kasutaja. Nüüd saate programmi kasutada.

Nautige!

Soovitan: