Sadržaj:

CleanBot by Guillaume Meurillon: 8 koraka
CleanBot by Guillaume Meurillon: 8 koraka

Video: CleanBot by Guillaume Meurillon: 8 koraka

Video: CleanBot by Guillaume Meurillon: 8 koraka
Video: Omgaan met verschil in beeld en muziek 2024, Juli
Anonim
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon

Ovo je vodič za projekat koji sam napravio za školu. Cilj je bio stvoriti uređaj s Raspberry Pi -om koji je bio spojen na internet, dok je prikupljao podatke sa senzora. Ti su podaci morali biti pohranjeni u (MySQL) bazi podataka. Podaci su morali biti vizualizirani na web stranici, kodiranoj u Pythonu s web paketom Flask i predloškom Jinja2.

Moja ideja je bila stvoriti 'hakirani' vakuum robota, koristeći Raspberry Pi, Arduino, već slomljeni robotski vakuum i gomilu senzora.

Korak 1: Prikupljanje dijelova

Prikupljanje dijelova
Prikupljanje dijelova
Prikupljanje dijelova
Prikupljanje dijelova
Prikupljanje dijelova
Prikupljanje dijelova
Prikupljanje dijelova
Prikupljanje dijelova

Prije nego što sam zapravo nešto stvorio, dosta sam istraživao o tome koje dijelove koristiti, kako ih povezati, pisati klase softvera u Pythonu itd.

Lista dijelova bit će uključena kao datoteka, tako da možete jednostavno tražiti dijelove koji će vam biti potrebni.

Odlučio sam upotrijebiti Arduino Uno pored Raspberry Pi, kako bih mogao efikasno čitati svoje senzore bez naprezanja na Raspberry Pi. Takođe sam izabrao Uno jer ima lijepu brzinu takta i zbog analognih pinova. Mogao sam koristiti ADC (npr. MCP3008) za svoj Raspberry Pi, ali bilo bi mi potrebno mnogo više žica, bilo bi skuplje i moj Pi bi morao puno više raditi.

Zatim sam počeo pregledavati dijelove koji su bili upotrebljivi iz slomljenog vakuuma. Unutrašnja elektronika je bila oštećena, ali to nije bio problem, jer bih ih ionako potpuno zamijenio. Na sreću, DC motori su i dalje radili, pa nijedan od njih nije morao biti zamijenjen.

Lista dijelova:

  • Raspberry Pi 3 sa najmanje 8 GB MicroSD klase 10 i kućištem;
  • Raspberry Pi T-obućar i ploče za osnove;
  • Arduino Uno ili slično (po mogućnosti ne-kineska verzija s pristojnim ADC-om, neki Kinezi imaju problema s AREF-om) s nekom vrstom kućišta;
  • Ethernet kabel;
  • (Slomljen) vakuumski vakuum;
  • 3x ultrazvučni moduli HC-SR04;
  • 1x modul hal senzora;
  • Nekoliko otpornika različitih vrijednosti;
  • LDR;
  • 6x 18650 Li-ion baterija + 3-ćelijski držač za 12V (po mogućnosti trebate koristiti nove baterije ili još bolje koristiti LiPo baterije, one će trajati duže);
  • 18650 (ili bilo koju vrstu baterije koju ćete koristiti) 12-voltna troćelijska PCB za punjenje;
  • Neke PCB DIY ploče za lemljenje vaših komponenti;
  • List poliuretanske plastike;
  • Laptop / desktop računar.

Lista alata:

  • Bušilica sa nekoliko burgija;
  • Kutna brusilica (nemojte je koristiti ako nemate iskustva) ili nešto poput Dremela;
  • Komad brusnog papira;
  • Nekoliko odvijača;
  • Superljepilo, montažno ljepilo,…;
  • Lemilica (koristite mast za lakše lemljenje žica);
  • Par rezača žice i alat za skidanje.

Lista softvera (opcionalno):

  • Adobe XD: žičano uokvirivanje i stvaranje prototipa;
  • Fritzing: stvaranje električne sheme;
  • PyCharm Professional: Python IDE sa mogućnostima upotrebe implementacije i udaljenog tumača;
  • Putty: brza i laka ssh veza s Pi;
  • Etcher.io: jednostavan alat za prebacivanje Raspbian slike na SD karticu;
  • Win32DiskImager: jednostavan alat za stvaranje slike iz postojećih Raspbian postavki;
  • Beležnica programera: jednostavan alat koji možete koristiti za sigurno uređivanje datoteke /boot/cmdline.txt.

Korak 2: Bojenje sprejom i dizajniranje sučelja

Bojenje sprejom i dizajniranje sučelja
Bojenje sprejom i dizajniranje sučelja
Bojenje sprejom i dizajniranje sučelja
Bojenje sprejom i dizajniranje sučelja
Bojenje sprejom i dizajniranje sučelja
Bojenje sprejom i dizajniranje sučelja
Bojenje sprejom i dizajniranje sučelja
Bojenje sprejom i dizajniranje sučelja

Prije nego što sam počeo stvarati dizajn, spolja sam naslikao sprej, jer mi se boje uopće nisu svidjele. Otišao sam u trgovinu i uzeo plastični prajmer, limenku bijele boje i limenku tirkizne da poprskam gornju futrolu.

Nakon što sam ostavio da se boja u spreju osuši, potražio sam tačan šesterokutni kôd boje za boju koju sam koristio, tako da mogu savršeno uskladiti svoje web sučelje sa svojim uređajem. Pronalaženje ovog heksadecimalnog koda bilo je prilično jednostavno, budući da sam koristio grafite Montana 94, a heksadecimalni i RGB kodovi bili su na njihovoj web stranici.

Napravio sam žičane okvire visoke vjernosti za svaku stranicu svoje web stranice, tako da sam savršeno dobro znao kako ću stvoriti ovo sučelje. Nakon što sam svojim nastavnicima pokazao svoj interfejs, dobio sam savjet da pozadinu učinim malo sivijom, a dugmad bijelim, a rezultat je bio dobar po mom mišljenju.

Korak 3: Kreiranje baze podataka

Kreiranje baze podataka
Kreiranje baze podataka

Sljedeći logičan korak bio je početak razmišljanja o tome koje podatke želim pohraniti u MySQL bazu podataka. Ljudi ne vole toliko znati o njihovom vakuumu, pa sam otišao s tablicama za korisnike i njihovim podacima za prijavu, kao i tablicama za senzore (baterija, udaljenost i spremnik za prašinu).

Slika prikazuje raspored mojih tablica, nacrtanih u MySQL Workbench -u, sa svim odnosima između tablica.

Za svoje korisnike želio sam pratiti njihovo ime i prezime kako bih personalizirao sučelje i e -poštu. Naravno za slanje e-pošte, bila mi je potrebna i njihova adresa e-pošte. Dodao sam i tablicu za praćenje e-pošte koju preferiraju moji korisnici (bez obzira na to žele li primati e-poštu ili ne). Zadnje što sam htio pohraniti o korisnicima je njihova uloga za uređaj. Korisnike dijelim na administratore i normalne korisnike. Administratori imaju pravo dodavati, uklanjati i upravljati korisnicima u sistemu, dok normalni korisnici ne mogu pristupiti ovim alatima.

Sljedeća tablica sadrži "deviceruns", koji su stvarni pokreti koje je uređaj obavio. Devicerunovi su u vlasništvu određenog korisnika (osobe koja je započela izvođenje) i imaju vrijeme početka i završetka za izračunavanje vremena izvođenja.

Druga se tablica koristi za povezivanje podataka senzora sa svakim devicerunom. Sami senzori pohranjeni su u još jednoj tablici koja sadrži njihov ID, ime i opis.

Korak 4: Povežite dijelove zajedno

Povezivanje delova zajedno
Povezivanje delova zajedno
Povezivanje delova zajedno
Povezivanje delova zajedno

Nakon što sam stvorio shemu baze podataka, počeo sam koristiti matične ploče i ožičenje za povezivanje svih dijelova zajedno u jedan radni prototip.

Korak 5: Postavljanje Raspberry Pi

Postavljanje Raspberry Pi
Postavljanje Raspberry Pi

Da biste preuzeli najnoviju sliku Raspbiana, idite na web stranicu Raspbian. Ovdje možete odabrati distro koji želite preuzeti. Za brži rad, možete preuzeti bezglavni distro, za manje upotrebe RAM -a ili preuzeti radnu površinu sa grafičkim interfejsom ako više volite grafičko korisničko sučelje.

Da biste instalirali OS, jednostavno preuzmite Etcher, to je GUI alat za brzo i jednostavno snimanje slike na vašu mikro SD karticu.

Da biste omogućili način rada bez glave, kako biste mogli pristupiti pi, morate instalirati Putty na svoj računar. Sljedeći korak je otići u mapu Boot koju je stvorio Etcher i otvoriti datoteku cmdline.txt s vašim omiljenim uređivačem teksta, bivšom bilježnicom za programere. Dodajte ovaj tekst na kraj datoteke:

ip = 169.254.10.1

Samo pazite da ne kreirate novu liniju, dodajte je na kraj retka!

Zatim se vratite na korijen mape Boot i stvorite datoteku ssh. Nemojte dodavati nikakva proširenja, to će osigurati da se SSH poslužitelj pokrene svaki put kada se pokrene vaš Pi. Sada jednostavno stavite SD karticu u svoj Pi, spojite dovoljan izvor napajanja na svoj Pi i dodajte ethernet kabel između vašeg Pi i vašeg računala.

Otvorite kit i upišite IP adresu: 169.254.10.1. Sada kliknite na DA i prijavite se, zadano korisničko ime je pi, a lozinka malina.

Zatim izvršite sljedeću naredbu da biste bili ažurirani:

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

Posljednji korak je stvaranje virtualnog Python tumača na vašem Raspberry Pi -u, čime će se izvršiti vaš kôd. Da biste to učinili, jednostavno otvorite kit i upišite sljedeće:

sudo mkdir project1

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

Korak 6: Pisanje web-aplikacije

Pisanje web-aplikacije
Pisanje web-aplikacije

Nakon povezivanja svakog dijela i postavljanja Raspberry Pi-a, počeo sam pisati svoju glavnu web-aplikaciju koristeći Flask i Jinja2. Flask je pozadinski okvir jednostavan za korištenje, a Jinja2 je jezik predložaka koji sam koristio. S Jinjom možete stvoriti normalne HTML datoteke s for petljama, ako strukture itd.

Dok sam kodirao pozadinu, napisao sam i prednji kraj aplikacije, uključujući HTML, CSS i JavaScript za neke elemente. Koristio sam ITCSS metodu i BEM notaciju za svoje stilove.

Osim glavne web-aplikacije, stvorio sam i dva glavna programa. Jedan je napisan da pošalje IP adresu uređaja korisnicima sa liste. Svaki registrirani korisnik koji je prihvatio primanje e -pošte primit će poruku s vezom za pokretanje web sučelja. Ovaj program radi kao systemd usluga.

Druga glavna datoteka je za stvarni uređaj. Ovaj glavni se može pozvati putem moje aplikacije Flask za pokretanje i zaustavljanje uređaja i prikupljanje podataka. Prikupljeni podaci se također učitavaju u bazu uređaja putem ovog glavnog. Ti se podaci tada mogu vizualizirati u web-aplikaciji.

Web-aplikacija je povezana s glavnim uređajem pomoću programa Python Threading. Kada korisnik klikne gumb za pokretanje, generira se nit za pokretanje uređaja u pozadini. U međuvremenu, korisnik može savršeno pregledavati aplikaciju. Kada pritisnete stop, ova nit se zaustavlja i uređaj se zaustavlja.

Korak 7: Kreiranje komada za doradu kućišta

Stvaranje komada za završnu obradu kućišta
Stvaranje komada za završnu obradu kućišta
Stvaranje komada za doradu kućišta
Stvaranje komada za doradu kućišta
Stvaranje komada za završnu obradu kućišta
Stvaranje komada za završnu obradu kućišta
Stvaranje komada za završnu obradu kućišta
Stvaranje komada za završnu obradu kućišta

Nakon što sam napisao najveći dio aplikacije, počeo sam mijenjati kućište uređaja kako bi mi senzori i drugi dijelovi zapravo odgovarali. Da bih to učinio, kupio sam list poliuretana u lokalnoj trgovini "uradi sam" i počeo rezati 2 nosača. Koristio sam ovaj list poliuretana jer se vjerojatno neće raspasti na komade tijekom rezanja i jer je prilično fleksibilan, što je savršeno jer moj robot ima kružni oblik.

Prvi nosač je napravljen da popuni rupu na vrhu, gde je nekada sedeo ekran. Zamenio sam ekran prekidačem za uključivanje/isključivanje, tako da se baterije mogu zaista isključiti.

Drugi nosač je podrška za moje ultrazvučne senzore HC-SR04 koji su postavljeni na prednjoj strani uređaja.

Posljednja stvar koja je preostala bila je izrezati rupu u ojačanju jednog od kotača i umetnuti magnet, tako da mogu pratiti rotacije kotača.

Nakon što sam završio ove zagrade, takođe sam ih naslikao sprejom sa preostalom bojom, kako bi se uklopio u dizajn.

Korak 8: Kôd

Da biste instalirali program, preuzmite datoteku code.zip i raspakirajte je u direktoriju project1.

Zatim izvedite ovu naredbu u terminalu na Raspbian -u ili Putty -u:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl demon-reload sudo systemctl enable project-1* sudo systemctl enable project1* sudo systemctl restart nginx

Zatim otvorite bazu podataka koju ste generirali i stvorite novog korisnika s Argon2 heširanom lozinkom. Sada možete koristiti program.

Uživajte!

Preporučuje se: