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, Srpanj
Anonim
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon
CleanBot by Guillaume Meurillon

Ovo je vodič za projekt 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. Podatke je trebalo vizualizirati pomoću web stranice, kodirane u Pythonu s web paketom Flask i predloškom Jinja2.

Moja je ideja bila stvoriti 'hakirani' vakuum robota, koristeći Raspberry Pi, Arduino, već slomljeni robotski vakuum i hrpu 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 stvorio bilo što, dosta sam istraživao o tome koje dijelove koristiti, kako ih povezati, pisati klase softvera u Pythonu itd.

Popis dijelova bit će uključen kao datoteka, tako da možete jednostavno tražiti potrebne dijelove.

Odlučio sam upotrijebiti Arduino Uno pored Raspberry Pi, kako bih mogao učinkovito očitavati svoje senzore bez stresa na Raspberry Pi. Također sam odabrao Uno jer ima lijepu brzinu takta i zbog analognih pinova. Mogao sam koristiti ADC (npr. MCP3008) za svoj Raspberry Pi, ali trebalo bi mi puno više žica, bilo bi skuplje i moj bi Pi morao puno više raditi.

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

Popis dijelova:

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

Popis alata:

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

Popis softvera (izborno):

  • Adobe XD: uokvirivanje i stvaranje prototipa;
  • Fritzing: stvaranje električne sheme;
  • PyCharm Professional: Python IDE s mogućnostima korištenja 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;
  • Bilježnica za programere: jednostavan alat koji možete koristiti za sigurno uređivanje datoteke /boot/cmdline.txt.

Korak 2: Bojanje sprejom i projektiranje sučelja

Bojanje sprejom i projektiranje sučelja
Bojanje sprejom i projektiranje sučelja
Bojanje sprejom i projektiranje sučelja
Bojanje sprejom i projektiranje sučelja
Bojanje sprejom i projektiranje sučelja
Bojanje sprejom i projektiranje sučelja
Bojanje sprejom i projektiranje sučelja
Bojanje sprejom i projektiranje sučelja

Prije nego što sam počeo stvarati dizajn, vanjski sam dio obojao sprejom, jer mi se boje uopće nisu svidjele. Otišao sam u trgovinu i uzeo temeljni premaz za plastiku, limenku bijele boje i limenku tirkizne boje da ponovno pošpricam gornje kućište.

Nakon što sam ostavio da se boja u spreju osuši, potražio sam točan heksadecimalni kod boje za boju koju sam koristio, kako bih savršeno uskladio svoje web sučelje sa svojim uređajem. Pronalaženje ovog heksadecimalnog koda bilo je prilično jednostavno jer sam koristio grafite Montana 94, a heksadecimalni i RGB kodovi bili su na njihovoj web stranici.

Stvorio 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 učiteljima pokazao svoje sučelje, dobio sam savjet da pozadinu učinim malo sivijom, a gumbe bijelim, a rezultat je po meni bio dobar.

Korak 3: Stvaranje baze podataka

Stvaranje baze podataka
Stvaranje baze podataka

Sljedeći logičan korak bio je početak razmišljanja o tome koje podatke želim pohraniti u bazu podataka MySQL. 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 vam prikazuje izgled mojih tablica, nacrtanih u MySQL Workbench -u, sa svim odnosima između tablica.

Za svoje sam korisnike želio pratiti njihovo ime i prezime kako bih prilagodio sučelje i e -poštu. Naravno za slanje e-pošte, trebala mi je 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 sustavu, dok normalni korisnici ne mogu pristupiti tim alatima.

Sljedeća tablica sadrži "deviceruns", koji su stvarni pokreti koje je uređaj obavio. Uređaji za upravljanje 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, naziv i opis.

Korak 4: Povežite dijelove zajedno

Povezivanje dijelova zajedno
Povezivanje dijelova zajedno
Povezivanje dijelova zajedno
Povezivanje dijelova zajedno

Nakon što sam stvorio shemu baze podataka, počeo sam koristiti 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 Raspbian web stranicu. Ovdje možete odabrati distribuciju koju želite preuzeti. Za brži rad možete preuzeti distro bez glave, za manje upotrebe RAM -a ili preuzeti radnu površinu s grafičkim sučeljem 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 upisivanje slike na vašu mikro SD karticu.

Da biste omogućili način rada bez glave, kako biste mogli pristupiti pi, morat ćete instalirati Putty na svoje računalo. 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šim Notepad programerima. Dodajte ovaj tekst na kraj datoteke:

ip = 169.254.10.1

Samo pazite da ne stvorite novi redak, dodajte ovo na kraj retka!

Zatim se vratite na korijen mape Boot i stvorite datoteku ssh. Nemojte dodavati nikakva proširenja, to će osigurati pokretanje SSH poslužitelja 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 DA i prijavite se, zadano korisničko ime je pi, a lozinka malina.

Zatim izvedite 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 projekt1

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 što sam spojio svaki dio i postavio Raspberry Pi, počeo sam pisati svoju glavnu web-aplikaciju koristeći Flask i Jinja2. Flask je pozadinski okvir jednostavan za korištenje, a Jinja2 je predložak koji sam koristio. S Jinjom možete stvoriti normalne HTML datoteke s for petljama, ako strukture itd.

Tijekom kodiranja pozadine napisao sam i prednji kraj aplikacije, uključujući HTML, CSS i JavaScript za neke elemente. Koristio sam ITCSS metodu i BEM zapis za svoje stilove.

Osim glavne web-aplikacije, stvorio sam i dva glavna programa. Jedan je napisan za slanje IP adrese uređaja korisnicima na popisu. 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 poziv može se pozvati putem moje aplikacije Flask za pokretanje i zaustavljanje uređaja i prikupljanje podataka. Prikupljeni podaci također se učitavaju u bazu uređaja putem ove glavne stranice. Ti se podaci tada mogu vizualizirati u web-aplikaciji.

Web-aplikacija je povezana s glavnim uređajem pomoću programa Python Threading. Kada korisnik pritisne 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: Izrada komada za doradu kućišta

Stvaranje komada za doradu kućišta
Stvaranje komada za doradu kućišta
Izrada komada za doradu kućišta
Izrada komada za doradu kućišta
Stvaranje komada za doradu kućišta
Stvaranje komada za doradu kućišta
Stvaranje komada za doradu kućišta
Stvaranje komada za doradu kućišta

Nakon što sam napisao najveći dio aplikacije, počeo sam mijenjati kućište uređaja kako bi moji 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 poliuretanski list 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č napravljen je tako da ispuni rupu na vrhu, gdje je nekad sjedio zaslon. Zamijenio sam zaslon prekidačem za uključivanje/isključivanje tako da se baterije mogu stvarno isključiti.

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

Zadnje što je preostalo bilo je izrezati rupu u pojačanju jednog od kotača i umetnuti magnet, tako da mogu pratiti rotacije kotača.

Nakon što sam završila ove zagrade, također sam ih naslikala sprejom s bojom koja mi je ostala, kako bi odgovarala dizajnu.

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 Puttyju:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl omogućiti projekt-1* sudo systemctl omogućiti projekt1* sudo systemctl ponovno pokretanje nginx

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

Uživati!

Preporučeni: