Cuprins:

CleanBot de Guillaume Meurillon: 8 pași
CleanBot de Guillaume Meurillon: 8 pași

Video: CleanBot de Guillaume Meurillon: 8 pași

Video: CleanBot de Guillaume Meurillon: 8 pași
Video: Presentation of NXTSpaceApps 2024, Noiembrie
Anonim
CleanBot de Guillaume Meurillon
CleanBot de Guillaume Meurillon
CleanBot de Guillaume Meurillon
CleanBot de Guillaume Meurillon

Acesta este un ghid pentru un proiect pe care l-am făcut pentru școală. Scopul a fost să creeze un dispozitiv cu Raspberry Pi care să fie conectat la internet, colectând în același timp date de la senzori. Aceste date trebuiau stocate într-o bază de date (MySQL). Datele trebuiau vizualizate cu un site web, codat în Python cu pachetul de aplicații web Flask și cu șablonarea Jinja2.

Ideea mea a fost să creez un robot robot „piratat”, folosind un Raspberry Pi, un Arduino, un robot robot deja rupt și o grămadă de senzori.

Pasul 1: Colectarea pieselor

Colectarea pieselor
Colectarea pieselor
Colectarea pieselor
Colectarea pieselor
Colectarea pieselor
Colectarea pieselor
Colectarea pieselor
Colectarea pieselor

Înainte de a crea ceva, am făcut o mulțime de cercetări despre ce părți să folosesc, cum să le conectez, scriind clase de software în Python și așa mai departe.

Lista pieselor va fi inclusă ca fișier, astfel încât să puteți căuta ușor piesele de care aveți nevoie.

Am decis să folosesc un Arduino Uno lângă Raspberry Pi, pentru a-mi putea citi senzorii în mod eficient, fără a-mi stresa Raspberry Pi. Am ales și pentru Uno, deoarece are o viteză de ceas frumoasă și datorită pinilor analogici. Aș fi putut folosi un ADC (ex. MCP3008) pentru Raspberry Pi, dar aș fi avut nevoie de mult mai multe fire, ar fi fost mai scump și Pi-ul meu ar trebui să lucreze mult mai mult.

Am început apoi să inspectez piesele care puteau fi utilizate din vidul robotului spart. Electronica internă a fost deteriorată, dar nu a fost nicio problemă, pentru că aș înlocui-le în orice caz. Din fericire, motoarele de curent continuu funcționau, așa că niciunul dintre acestea nu a trebuit înlocuit.

Lista de componente:

  • Raspberry Pi 3 cu cel puțin 8 GB MicroSD clasa 10 și o carcasă;
  • Raspberry Pi T-cobbler și panou (e);
  • Arduino Uno sau similar (preferabil o versiune non-chineză cu un ADC decent, unii chinezi au probleme AREF) cu un fel de carcasă;
  • Un cablu Ethernet;
  • Un vid robot spart;
  • 3x module cu ultrasunete HC-SR04;
  • 1x modul senzor hol;
  • Mai multe rezistențe în valori diferite;
  • Un LDR;
  • 6x baterii Li-ion 18650 + suporturi cu 3 celule pentru 12v (preferabil ar trebui să utilizați baterii noi sau chiar mai bine să utilizați baterii LiPo, acestea vor dura mult mai mult);
  • 18650 (sau orice tip de baterie veți folosi) 12v 3-celule de încărcare PCB;
  • Unele plăci DIY PCB pentru lipirea componentelor;
  • O foaie de plastic poliuretanic;
  • Un laptop / computer desktop.

Lista de instrumente:

  • Un burghiu cu mai multe burghie;
  • Un polizor unghiular (nu-l utilizați dacă nu aveți experiență) sau ceva de genul unui Dremel;
  • O bucată de hârtie de șlefuit;
  • Mai multe șurubelnițe;
  • Superglue, lipici de montare,…;
  • Un fier de lipit (folosiți grăsime pentru a lipi mai ușor firele);
  • O pereche de freze de sârmă și un instrument de decupare.

Lista software-ului (opțional):

  • Adobe XD: wireframing și crearea unui prototip;
  • Fritzing: crearea unei scheme electrice;
  • PyCharm Professional: Python IDE cu capacități de utilizare a implementării și interpretor de la distanță;
  • Chit: conexiune ssh rapidă și ușoară cu Pi;
  • Etcher.io: instrument ușor pentru a bloca o imagine Raspbian pe un card SD;
  • Win32DiskImager: instrument ușor pentru a crea o imagine dintr-o configurare Raspbian existentă;
  • Notepad pentru programatori: instrument simplu pe care îl puteți utiliza pentru a edita în siguranță fișierul /boot/cmdline.txt.

Pasul 2: Spray-pictare și proiectarea interfeței

Vopsire prin pulverizare și proiectarea interfeței
Vopsire prin pulverizare și proiectarea interfeței
Vopsire prin pulverizare și proiectarea interfeței
Vopsire prin pulverizare și proiectarea interfeței
Vopsire prin pulverizare și proiectarea interfeței
Vopsire prin pulverizare și proiectarea interfeței
Vopsire prin pulverizare și proiectarea interfeței
Vopsire prin pulverizare și proiectarea interfeței

Înainte de a începe să creez designul, am vopsit cu spray exteriorul, pentru că nu-mi plăceau deloc culorile. M-am dus la magazin și am luat un grund de plastic, o cutie de alb și o cutie de turcoaz pentru a reversa carcasa de sus.

După ce am lăsat vopseaua spray să se usuce, am căutat codul exact de culoare hexagonală pentru vopseaua pe care am folosit-o, astfel încât să pot potrivi perfect interfața web cu dispozitivul meu. Găsirea acestui cod hex a fost destul de ușoară, deoarece am folosit graffiti Montana 94, iar codurile hex și RGB erau pe site-ul lor web.

Am creat wireframe de înaltă fidelitate pentru fiecare pagină a site-ului meu web, astfel încât să știu perfect cum voi crea această interfață. După ce mi-am arătat interfața profesorilor, am primit sfatul să fac fundalul puțin mai gri și butoanele albe, iar rezultatul a fost bun în opinia mea.

Pasul 3: Crearea bazei de date

Crearea bazei de date
Crearea bazei de date

Următorul pas logic a fost să încep să mă gândesc la ce date am vrut să stochez în baza de date MySQL. Nu sunt atât de mulți oameni care să știe despre vidul lor, așa că am mers cu tabele pentru utilizatori și datele lor de conectare, precum și tabele pentru senzori (baterie, distanță și container de praf).

Imaginea vă arată aspectul tabelelor mele, desenat în MySQL Workbench, cu toate relațiile dintre tabele.

Pentru utilizatorii mei, am vrut să le urmăresc numele și prenumele pentru a personaliza interfața și e-mailurile. Desigur, pentru a trimite e-mailuri, aveam nevoie și de adresa lor de e-mail. De asemenea, am adăugat un tabel pentru a ține evidența preferințelor de e-mail ale utilizatorilor mei (indiferent dacă ar dori sau nu să primească e-mailuri). Ultimul lucru pe care am vrut să-l stochez despre utilizatori este rolul lor pentru dispozitiv. Împart utilizatorii ca administratori și utilizatori normali. Administratorii au dreptul să adauge, să elimine și să gestioneze utilizatorii din sistem, în timp ce utilizatorii normali nu pot accesa aceste instrumente.

Următorul tabel conține „deviceruns”, care sunt rulările efective pe care le-a făcut dispozitivul. Dispozitivele sunt deținute de un anumit utilizator (persoana care a început rularea) și au o oră de început și de sfârșit, pentru a calcula timpul de rulare.

Un alt tabel este folosit pentru a lega sensordata la fiecare devicerun. Senzorii înșiși sunt stocați într-un alt tabel, care conține id-ul, numele și descrierea lor.

Pasul 4: Conectarea pieselor împreună

Conectarea pieselor împreună
Conectarea pieselor împreună
Conectarea pieselor împreună
Conectarea pieselor împreună

După crearea schemei de baze de date, am început să folosesc plăci și cabluri pentru a conecta toate părțile împreună într-un singur prototip de lucru.

Pasul 5: Configurarea Raspberry Pi

Configurarea Raspberry Pi
Configurarea Raspberry Pi

Pentru a descărca cea mai recentă imagine a Raspbian, accesați site-ul web Raspbian. Aici puteți alege ce distribuție doriți să descărcați. Pentru o funcționare mai rapidă, puteți descărca distro fără cap, pentru o utilizare mai mică a RAM-ului sau puteți descărca desktopul cu GUI dacă preferați o interfață grafică cu utilizatorul.

Pentru a instala sistemul de operare, pur și simplu descărcați Etcher, este un instrument GUI pentru a scrie imaginea pe cardul dvs. micro SD rapid și ușor.

Pentru a activa modul fără cap, astfel încât să puteți accesa pi, va trebui să instalați Putty pe computer. Următorul pas este să accesați folderul Boot creat de Etcher și să deschideți fișierul cmdline.txt cu editorul de text preferat, ex Programmers Notepad. Adăugați acest text la sfârșitul fișierului:

ip = 169.254.10.1

Doar asigurați-vă că nu creați o nouă linie, adăugați aceasta la sfârșitul liniei!

Apoi, reveniți la rădăcina folderului Boot și creați un fișier numit ssh. Nu adăugați nicio extensie, acest lucru vă va asigura că serverul SSH se lansează de fiecare dată când lansează Pi. Acum pur și simplu puneți cardul SD în Pi, conectați o sursă de alimentare suficientă la Pi și adăugați un cablu Ethernet între Pi și computer.

Deschideți chitul și introduceți adresa IP: 169.254.10.1. Acum faceți clic pe DA și conectați-vă, numele de utilizator implicit este pi și parola este zmeură.

Apoi, executați următoarea comandă pentru a vă actualiza:

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

Ultimul pas este să creați un interpret Python virtual pe Raspberry Pi, acesta va executa codul. Pentru a face acest lucru, pur și simplu deschideți chitul și tastați următoarele:

sudo mkdir project1

cd project1 python3 -m instalare pip - actualizare configurare pip instrumente roată virtualenv python3 -m venv --sistem-site-pachete venv

Pasul 6: Scrierea aplicației Web

Scrierea aplicației Web
Scrierea aplicației Web

După conectarea fiecărei părți și configurarea Raspberry Pi, am început să scriu aplicația mea web principală folosind Flask și Jinja2. Flask este un cadru de backend ușor de utilizat pentru Python, iar Jinja2 este limbajul de șablonare pe care l-am folosit. Cu Jinja, puteți crea fișiere HTML normale cu bucle, dacă structuri și așa mai departe.

În timp ce codificam backend-ul, am scris și frontend-ul aplicației, inclusiv HTML, CSS și JavaScript pentru unele elemente. Am folosit metoda ITCSS și notația BEM pentru foile mele de stil.

Pe lângă aplicația web principală, am creat și alte 2 programe principale. Unul este scris pentru a trimite adresa IP a dispozitivului către utilizatorii din listă. Fiecare utilizator înregistrat care a acceptat să primească e-mailuri va primi un e-mail cu un link pentru a porni interfața web. Acest program rulează ca un serviciu systemd.

Celălalt fișier principal este pentru dispozitivul real. Această linie principală poate fi apelată prin intermediul aplicației mele Flask, pentru a porni și opri dispozitivul și a colecta date. Datele colectate sunt, de asemenea, încărcate în baza de date a dispozitivului prin intermediul acestui principal. Aceste date pot fi apoi vizualizate în aplicația web.

Aplicația web este conectată la dispozitivul rulat principal cu Python Threading. Când un utilizator face clic pe butonul Start, se generează un fir pentru a rula dispozitivul în fundal. Între timp, utilizatorul poate naviga perfect prin aplicație. Când faceți clic pe oprire, acest fir este oprit și astfel dispozitivul se oprește.

Pasul 7: Crearea de piese pentru a termina carcasa

Crearea de piese pentru a termina carcasa
Crearea de piese pentru a termina carcasa
Crearea de piese pentru a termina carcasa
Crearea de piese pentru a termina carcasa
Crearea de piese pentru a termina carcasa
Crearea de piese pentru a termina carcasa
Crearea de piese pentru a termina carcasa
Crearea de piese pentru a termina carcasa

După ce am scris cea mai mare parte a aplicației, am început să modific carcasa dispozitivului, astfel încât senzorii și alte părți să se potrivească efectiv. Pentru a face acest lucru, am cumpărat o foaie de poliuretan într-un magazin local de bricolaj și am început să tai 2 paranteze. Am folosit această foaie de poliuretan, deoarece este puțin probabil să se rupă în bucăți în timpul tăierii și pentru că este destul de flexibilă, ceea ce este perfect, deoarece robotul meu are o formă circulară.

Prima paranteză este făcută pentru a umple o gaură din partea superioară, unde se afla un afișaj. Am înlocuit afișajul cu un întrerupător de pornire / oprire, astfel încât bateriile să poată fi oprite efectiv.

Cealaltă consolă este un suport pentru senzorii mei ultrasonici HC-SR04 care sunt poziționați în partea din față a dispozitivului.

Ultimul lucru care mai rămânea de făcut a fost să tai o gaură în armăturile uneia dintre roți și să introduci un magnet, astfel încât să pot monitoriza rotațiile roții.

După ce am terminat aceste paranteze, le-am vopsit și cu vopseaua care mi-a rămas, pentru a se potrivi cu designul.

Pasul 8: Codul

Pentru a instala programul, descărcați fișierul code.zip și dezarhivați-l în directorul project1.

Apoi, executați această comandă într-un terminal pe Raspbian sau Putty:

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

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

Apoi, deschideți baza de date pe care ați generat-o și creați un nou utilizator cu o parolă hash Argon2. Acum puteți utiliza programul.

Bucurați-vă!

Recomandat: