Sisällysluettelo:

Guillaume Meurillonin CleanBot: 8 vaihetta
Guillaume Meurillonin CleanBot: 8 vaihetta

Video: Guillaume Meurillonin CleanBot: 8 vaihetta

Video: Guillaume Meurillonin CleanBot: 8 vaihetta
Video: Presentation of NXTSpaceApps 2024, Marraskuu
Anonim
CleanBot kirjoittanut Guillaume Meurillon
CleanBot kirjoittanut Guillaume Meurillon
CleanBot kirjoittanut Guillaume Meurillon
CleanBot kirjoittanut Guillaume Meurillon

Tämä on opas projektille, jonka tein kouluun. Tavoitteena oli luoda Raspberry Pi -laite, joka oli yhdistetty Internetiin ja keräsi dataa antureista. Nämä tiedot oli tallennettava (MySQL) tietokantaan. Tiedot oli visualisoitava verkkosivustolla, koodattuna Pythonissa Flask -verkkosovelluspaketin ja Jinja2 -mallin avulla.

Ajatukseni oli luoda "hakkeroitu" robotti -tyhjiö käyttämällä Raspberry Pi: tä, Arduinoa, jo rikkoutunutta robotti -imuria ja joukko antureita.

Vaihe 1: Osien kerääminen

Osien kerääminen
Osien kerääminen
Osien kerääminen
Osien kerääminen
Osien kerääminen
Osien kerääminen
Osien kerääminen
Osien kerääminen

Ennen kuin itse luon mitään, tein paljon tutkimusta siitä, mitä osia tulisi käyttää, miten ne liitetään, kirjoitin ohjelmistotunteja Pythonissa ja niin edelleen.

Osaluettelo lisätään tiedostoon, jotta voit helposti etsiä tarvitsemiasi osia.

Päätin käyttää Arduino Unoa Raspberry Pi: n vieressä, jotta voisin lukea antureitani tehokkaasti rasittamatta Raspberry Pi: tä. Valitsin myös Unon, koska sillä on mukava kellonopeus ja analogisten nastojen vuoksi. Olisin voinut käyttää ADC: tä (esim. MCP3008) Raspberry Pi -laitteelleni, mutta olisin tarvinnut paljon enemmän johtoja, se olisi ollut kalliimpaa ja Pi: n olisi työskenneltävä paljon enemmän.

Sitten aloin tarkastaa käyttökelpoisia osia rikkoutuneesta robotti -imurista. Sisäinen elektroniikka oli vaurioitunut, mutta se ei ollut ongelma, koska korvaisin ne kokonaan. Onneksi tasavirtamoottorit toimivat edelleen, joten mitään niistä ei tarvinnut vaihtaa.

Osaluettelo:

  • Raspberry Pi 3, jossa on vähintään 8 Gt: n MicroSD -luokka 10 ja kotelo;
  • Raspberry Pi T-cobbler ja leipälauta (t);
  • Arduino Uno tai vastaava (mieluiten ei-kiinalainen versio, jossa on kunnollinen ADC, joillakin kiinalaisilla on AREF-ongelmia) jonkinlaisella tapauksella;
  • Ethernet -kaapeli;
  • (Rikki) robotti -tyhjiö;
  • 3 x HC-SR04-ultraäänimoduulia;
  • 1x hall -anturimoduuli;
  • Useita vastuksia eri arvoilla;
  • LDR;
  • 6 x 18650 litiumioniakkua + 3-kennoiset pidikkeet 12 voltille (mieluiten sinun kannattaa käyttää uusia paristoja tai vielä paremmin LiPo-akkuja, ne kestävät pidempään);
  • 18650 (tai minkä tahansa tyyppistä akkua käytät) 12v 3-kennoinen latauspiirilevy;
  • Jotkut PCB -DIY -levyt komponenttien juottamiseen;
  • Arkki polyuretaanimuovia;
  • Kannettava / pöytätietokone.

Työkaluluettelo:

  • Pora, jossa on useita poranteriä;
  • Kulmahiomakone (älä käytä sitä, jos sinulla ei ole kokemusta) tai jotain Dremelin kaltaista;
  • Pala hiomapaperia;
  • Useita ruuvimeisseliä;
  • Superliima, asennusliima,…;
  • Juotin (käytä rasvaa juotosten helpottamiseksi);
  • Pari lankaleikkureita ja irrotustyökalu.

Ohjelmistoluettelo (valinnainen):

  • Adobe XD: lankakehykset ja prototyypin luominen;
  • Fritzing: sähkökaavion luominen;
  • PyCharm Professional: Python IDE, joka mahdollistaa käyttöönoton ja etätulkin;
  • Kitti: nopea ja helppo ssh -yhteys Pi: llä;
  • Etcher.io: helppo työkalu Raspbian -kuvan flash -muistiin SD -kortille;
  • Win32DiskImager: helppo työkalu luoda kuva olemassa olevasta Raspbian -asennuksesta;
  • Ohjelmoijat Muistio: yksinkertainen työkalu, jolla voit muokata turvallisesti /boot/cmdline.txt -tiedostoa.

Vaihe 2: Ruiskumaalaus ja käyttöliittymän suunnittelu

Ruiskumaalaus ja käyttöliittymän suunnittelu
Ruiskumaalaus ja käyttöliittymän suunnittelu
Ruiskumaalaus ja käyttöliittymän suunnittelu
Ruiskumaalaus ja käyttöliittymän suunnittelu
Ruiskumaalaus ja käyttöliittymän suunnittelu
Ruiskumaalaus ja käyttöliittymän suunnittelu
Ruiskumaalaus ja käyttöliittymän suunnittelu
Ruiskumaalaus ja käyttöliittymän suunnittelu

Ennen kuin aloitin mallin luomisen, ruiskutin maalauksen ulkopuolelta, koska en pitänyt väreistä ollenkaan. Menin kauppaan ja otin muovipohjamaalin, valkoisen tölkin ja turkoosin tölkin hengittämään yläkotelon.

Kun olin antanut ruiskumaalin kuivua, etsin käyttämäni maalin tarkan heksadesimaalikoodin, jotta voisin sovittaa verkkoliittymäni laitteeseeni täydellisesti. Tämän hex -koodin löytäminen oli melko helppoa, koska käytin Montana 94 -graffitia ja hex- ja RGB -koodit olivat heidän verkkosivuillaan.

Luotin korkealaatuisia lankakehyksiä verkkosivustoni jokaiselle sivulle, jotta tiesin täydellisesti, miten aion luoda tämän käyttöliittymän. Näytettyäni käyttöliittymän opettajilleni, sain neuvon tehdä taustasta hieman harmaamman ja painikkeet valkoiset, ja tulos oli mielestäni hyvä.

Vaihe 3: Tietokannan luominen

Tietokannan luominen
Tietokannan luominen

Seuraava looginen askel oli alkaa miettiä, mitä tietoja halusin tallentaa MySQL -tietokantaan. Ei ole niin paljon ihmisiä, jotka haluavat tietää tyhjiöstä, joten menin käyttäjien taulukoiden ja heidän kirjautumistietojensa sekä taulukoiden (akku, etäisyys ja pölysäiliö) kanssa.

Kuvassa näkyy MySQL Workbenchiin piirrettyjen taulukoiden ulkoasu ja kaikki taulukkojen väliset suhteet.

Käyttäjilleni halusin seurata heidän nimeään ja sukunimeään personoidakseen käyttöliittymän ja sähköpostit. Tietysti tarvitsin sähköpostiviestien lähettämistä varten myös heidän sähköpostiosoitteensa. Lisäsin myös taulukon seuratakseni käyttäjieni sähköpostiasetuksia (haluavatko he vastaanottaa sähköpostiviestejä vai eivät). Viimeinen asia, jonka halusin tallentaa käyttäjistä, on heidän roolinsa laitteessa. Jaan käyttäjät järjestelmänvalvojiksi ja tavallisiksi käyttäjiksi. Järjestelmänvalvojilla on oikeus lisätä, poistaa ja hallita käyttäjiä järjestelmässä, kun taas tavalliset käyttäjät eivät voi käyttää näitä työkaluja.

Seuraava taulukko sisältää "deviceruns", jotka ovat laitteen suorittamia todellisia suorituksia. Deviceruns on tietyn käyttäjän (ajon aloittaneen henkilön) omistuksessa, ja heillä on aloitus- ja päättymisaika ajon keston laskemiseksi.

Toista taulukkoa käytetään linkittämään sensordata jokaiseen laiteohjelmaan. Anturit itse tallennetaan toiseen taulukkoon, joka sisältää niiden tunnuksen, nimen ja kuvauksen.

Vaihe 4: Osien liittäminen yhteen

Osien yhdistäminen yhteen
Osien yhdistäminen yhteen
Osien liittäminen yhteen
Osien liittäminen yhteen

Tietokantamallin luomisen jälkeen aloin käyttää leipälevyjä ja johtoja kaikkien osien yhdistämiseen yhteen toimivaan prototyyppiin.

Vaihe 5: Asenna Raspberry Pi

Raspberry Pi: n asentaminen
Raspberry Pi: n asentaminen

Voit ladata uusimman Raspbian -kuvan siirtymällä Raspbian -verkkosivustolle. Täältä voit valita minkä distron haluat ladata. Jos haluat nopeamman toiminnan, voit ladata päätön distron, vähentää RAM -muistin käyttöä tai ladata työpöydän graafisella käyttöliittymällä, jos haluat graafisen käyttöliittymän.

Asenna käyttöjärjestelmä lataamalla Etcher, se on graafinen käyttöliittymä, jolla voit kirjoittaa kuvan micro SD -kortillesi nopeasti ja helposti.

Päättymättömän tilan ottamiseksi käyttöön, jotta pääset käsiksi pi: hen, sinun on asennettava Putty tietokoneellesi. Seuraava vaihe on siirtyä Etcherin luomaan Boot -kansioon ja avata tiedosto cmdline.txt suosikkitekstieditorillasi, ex Programmers Notepad. Lisää tämä teksti tiedoston loppuun:

ip = 169.254.10.1

Varmista vain, ettet luo uutta riviä, lisää tämä rivin loppuun!

Palaa sitten Boot -kansion juuriin ja luo tiedosto nimeltä ssh. Älä lisää laajennuksia, tämä varmistaa, että SSH -palvelin käynnistyy joka kerta, kun Pi käynnistyy. Aseta SD -kortti nyt Pi -laitteeseesi, liitä Pi -laitteeseen riittävä virtalähde ja lisää ethernet -kaapeli Pi: n ja tietokoneen välille.

Avaa kitti ja kirjoita IP -osoite: 169.254.10.1. Napsauta nyt KYLLÄ ja kirjaudu sisään, oletuskäyttäjätunnus on pi ja salasana on vadelma.

Suorita sitten seuraava komento saadaksesi ajan tasalle:

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

Viimeinen vaihe on luoda virtuaalinen Python -tulkki Raspberry Pi -laitteeseen, joka suorittaa koodisi. Voit tehdä tämän avaamalla kitin ja kirjoittamalla seuraavan:

sudo mkdir -projekti 1

cd project1 python3 -m pip install -päivitä pip setuptools -pyörä virtualenv python3 -m venv -system -site -package venv

Vaihe 6: Verkkosovelluksen kirjoittaminen

Web-sovelluksen kirjoittaminen
Web-sovelluksen kirjoittaminen

Kun olin liittänyt kaikki osat ja asentanut Raspberry Pi: n, aloin kirjoittaa pääverkkosovellustani Flaskin ja Jinja2: n avulla. Flask on helppokäyttöinen taustakehys Pythonille, ja Jinja2 on käyttämäni mallikieli. Jinjan avulla voit luoda normaaleja HTML -tiedostoja silmukoille, esimerkiksi rakenteille ja niin edelleen.

Taustajärjestelmää koodatessani kirjoitin myös sovelluksen käyttöliittymän, mukaan lukien joidenkin elementtien HTML, CSS ja JavaScript. Käytin tyylitaulukoissani ITCSS -menetelmää ja BEM -merkintätapaa.

Pääverkkosovelluksen lisäksi olen luonut myös kaksi muuta pääohjelmaa. Yksi on kirjoitettu lähettämään laitteen IP -osoite luettelossa oleville käyttäjille. Jokainen rekisteröitynyt käyttäjä, joka on hyväksynyt sähköpostien vastaanottamisen, saa sähköpostin, jossa on linkki verkkokäyttöliittymän käynnistämiseen. Tämä ohjelma toimii järjestelmäpalveluna.

Toinen päätiedosto on varsinaiselle laitteelle. Tämä päälaite voidaan kutsua Flask -sovelluksen kautta laitteen käynnistämiseksi ja pysäyttämiseksi sekä tietojen keräämiseksi. Kerätyt tiedot ladataan myös laitteen tietokantaan tämän päälaitteen kautta. Nämä tiedot voidaan sitten visualisoida verkkosovelluksessa.

Verkkosovellus on yhdistetty laitteen pääkäyttöön Python Threadingin avulla. Kun käyttäjä napsauttaa käynnistyspainiketta, luodaan säie, joka käyttää laitetta taustalla. Samaan aikaan käyttäjä voi selata sovellusta täydellisesti. Kun napsautat pysäytä, tämä säie pysähtyy ja laite pysähtyy.

Vaihe 7: Kappaleiden luominen kotelon viimeistelemiseksi

Kappaleiden luominen kotelon viimeistelyyn
Kappaleiden luominen kotelon viimeistelyyn
Kappaleiden luominen kotelon viimeistelyyn
Kappaleiden luominen kotelon viimeistelyyn
Kappaleiden luominen kotelon viimeistelyyn
Kappaleiden luominen kotelon viimeistelyyn
Kappaleiden luominen kotelon viimeistelyyn
Kappaleiden luominen kotelon viimeistelyyn

Kun olin kirjoittanut suurimman osan sovelluksesta, aloin muuttaa laitteen koteloa niin, että anturit ja muut osat todella sopivat. Tätä varten ostin polyuretaanilevyn paikallisesta DIY -kaupasta ja aloin leikata 2 kiinnikettä. Käytin tätä polyuretaanilevyä, koska se ei todennäköisesti hajoa palasiksi leikkaamisen aikana ja koska se on melko joustava, mikä on täydellistä, koska robotti on pyöreä.

Ensimmäinen kiinnike on tehty täyttämään yläreunassa oleva reikä, johon näyttö istui aiemmin. Korvasin näytön virtakytkimellä, jotta paristot voidaan sammuttaa.

Toinen kiinnike on tuki HC-SR04-ultraääni-antureilleni, jotka on sijoitettu laitteen eteen.

Viimeisenä tehtävänä oli leikata reikä yhden pyörän vahvikkeisiin ja asettaa magneetti, jotta voin seurata pyörän pyörimistä.

Näiden kiinnikkeiden valmistamisen jälkeen ruiskutin ne myös jäljellä olevalla maalilla, jotta se sopisi muotoiluun.

Vaihe 8: Koodi

Voit asentaa ohjelman lataamalla tiedoston code.zip ja purkamalla sen project1 -hakemistoon.

Suorita seuraavaksi tämä komento Raspbian- tai Putty -päätelaitteessa:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl ota käyttöön projekti-1* sudo systemctl ota käyttöön projekti1* sudo systemctl käynnistä nginx

Avaa seuraavaksi luomasi tietokanta ja luo uusi käyttäjä Argon2 -tiivisteellä. Nyt voit käyttää ohjelmaa.

Nauttia!

Suositeltava: