Cuprins:
- Pasul 1: Colectarea pieselor
- Pasul 2: Spray-pictare și proiectarea interfeței
- Pasul 3: Crearea bazei de date
- Pasul 4: Conectarea pieselor împreună
- Pasul 5: Configurarea Raspberry Pi
- Pasul 6: Scrierea aplicației Web
- Pasul 7: Crearea de piese pentru a termina carcasa
- Pasul 8: Codul
Video: CleanBot de Guillaume Meurillon: 8 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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
Î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
Î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
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ă
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
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
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
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:
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Design de joc în Flick în 5 pași: 5 pași
Designul jocului în Flick în 5 pași: Flick este un mod foarte simplu de a crea un joc, în special ceva de genul puzzle, roman vizual sau joc de aventură
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Detectarea feței pe Raspberry Pi 4B în 3 pași: 3 pași
Detectarea feței pe Raspberry Pi 4B în 3 pași: În acest instructabil vom efectua detectarea feței pe Raspberry Pi 4 cu Shunya O / S folosind Biblioteca Shunyaface. Shunyaface este o bibliotecă de recunoaștere / detectare a feței. Proiectul își propune să obțină cea mai rapidă viteză de detectare și recunoaștere cu
Cum să faci un contor de pași ?: 3 pași (cu imagini)
Cum să fac un contor de pași ?: obișnuiam să performez bine la multe sporturi: mersul pe jos, alergatul, mersul pe bicicletă, jocul de badminton etc. Îmi place să călăresc să călătoresc în preajmă. Ei bine, uită-te la burtica mea ostilă …… Ei bine, oricum, decid să reîncep să fac mișcare. Ce echipament ar trebui să pregătesc?