INHOUDSOPGAWE:

CleanBot deur Guillaume Meurillon: 8 stappe
CleanBot deur Guillaume Meurillon: 8 stappe

Video: CleanBot deur Guillaume Meurillon: 8 stappe

Video: CleanBot deur Guillaume Meurillon: 8 stappe
Video: People with Extraordinarily Rare Body Parts 2024, Julie
Anonim
CleanBot deur Guillaume Meurillon
CleanBot deur Guillaume Meurillon
CleanBot deur Guillaume Meurillon
CleanBot deur Guillaume Meurillon

Dit is 'n gids vir 'n projek wat ek vir die skool gemaak het. Die doel was om 'n toestel met die Raspberry Pi te skep wat aan die internet gekoppel is, terwyl data van sensors ingesamel word. Hierdie data moes in 'n (MySQL) databasis gestoor word. Die data moes gevisualiseer word met 'n webwerf, gekodeer in Python met die Flask webapp -pakket en Jinja2 -sjablone.

My idee was om 'n 'gekapte' robotvakuum te skep met 'n Raspberry Pi, 'n Arduino, 'n reeds gebroke robotvakuum en 'n klomp sensors.

Stap 1: Versamel die onderdele

Versamel die onderdele
Versamel die onderdele
Versamel die onderdele
Versamel die onderdele
Versamel die onderdele
Versamel die onderdele
Versamel die onderdele
Versamel die onderdele

Voordat ek eintlik iets geskep het, het ek baie navorsing gedoen oor watter dele om te gebruik, hoe om dit aan te sluit, sagtewareklasse in Python ensovoorts te skryf.

Die onderdele -lys sal as 'n lêer opgeneem word, sodat u maklik kan soek na die onderdele wat u benodig.

Ek het besluit om 'n Arduino Uno langs die Raspberry Pi te gebruik, sodat ek my sensors doeltreffend kan lees sonder om my Raspberry Pi te beklemtoon. Ek het ook vir die Uno gekies omdat dit 'n goeie kloksnelheid het, en as gevolg van die analoog penne. Ek kon 'n ADC (bv. MCP3008) vir my Raspberry Pi gebruik het, maar ek sou baie meer drade nodig gehad het, dit sou duurder gewees het en my Pi sou baie harder moes werk.

Ek het toe begin kyk na die onderdele wat bruikbaar was uit die gebroke robotvakuum. Die interne elektronika was beskadig, maar dit was geen probleem nie, want ek sou dit in elk geval heeltemal vervang. Gelukkig werk die DC -motors nog steeds, dus nie een van hulle moes vervang word nie.

Onderdele lys:

  • Framboos Pi 3 met ten minste 8 GB MicroSD klas 10 en 'n omhulsel;
  • Framboos Pi T-skoenmaker en broodbord (e);
  • Arduino Uno of soortgelyk (verkieslik 'n nie-Chinese weergawe met 'n ordentlike ADC, sommige Chinese het AREF-probleme) met 'n soort geval;
  • 'N Ethernet -kabel;
  • 'N (gebroke) robotvakuum;
  • 3x ultrasoniese modules HC-SR04;
  • 1x saal sensor module;
  • Verskeie weerstande in verskillende waardes;
  • 'N LDR;
  • 6x 18650 Li-ioonbatterye + 3-selhouers vir 12V (verkieslik moet u nuwe batterye gebruik of selfs beter LiPo-batterye gebruik; dit hou langer);
  • 18650 (of watter tipe battery u ook al gebruik) 12v 3-sel laai-kaart;
  • Sommige PCB -DIY -borde om u komponente te soldeer;
  • 'N vel poliuretaanplastiek;
  • 'N Skootrekenaar / tafelrekenaar.

Gereedskaplys:

  • 'N Boor met verskeie boorpunte;
  • 'N Hoekslyper (moet dit nie gebruik as u geen ervaring het nie) of iets soos 'n Dremel;
  • 'N stuk skuurpapier;
  • Verskeie skroewedraaiers;
  • Supergom, monteergom,…;
  • 'N soldeerbout (gebruik vet om u drade makliker te soldeer);
  • 'N Paar draadsnyers en 'n strooigereedskap.

Sagteware lys (opsioneel):

  • Adobe XD: draadraamwerk en die skep van 'n prototipe;
  • Fritzing: die skep van 'n elektriese skema;
  • PyCharm Professional: Python IDE met die gebruik van ontplooiing en afstandstolk;
  • Putty: vinnige en maklike ssh -verbinding met Pi;
  • Etcher.io: maklike hulpmiddel om 'n Raspbian -beeld na 'n SD -kaart te flits;
  • Win32DiskImager: maklike hulpmiddel om 'n beeld te skep uit 'n bestaande Raspbian -opstelling;
  • Programmeerders Notepad: eenvoudige hulpmiddel wat u kan gebruik om die /boot/cmdline.txt -lêer veilig te wysig.

Stap 2: Spuitverf en ontwerp die koppelvlak

Spuitverf en ontwerp van die koppelvlak
Spuitverf en ontwerp van die koppelvlak
Spuitverf en ontwerp van die koppelvlak
Spuitverf en ontwerp van die koppelvlak
Spuitverf en ontwerp van die koppelvlak
Spuitverf en ontwerp van die koppelvlak
Spuitverf en ontwerp van die koppelvlak
Spuitverf en ontwerp van die koppelvlak

Voordat ek begin ontwerp het, het ek die buitekant gespuitverf, omdat ek glad nie van die kleure gehou het nie. Ek het na die winkel gegaan en 'n plastiekonderlaag, 'n blikkie wit en 'n blikkie turkoois opgetel om die bokant weer te spuit.

Nadat ek die spuitverf laat droog het, het ek die presiese heks-kleurkode opgesoek vir die verf wat ek gebruik het, sodat ek my web-koppelvlak perfek by my toestel kon pas. Dit was redelik maklik om hierdie hex -kode te vind, aangesien ek Montana 94 -graffiti gebruik het, en die hex- en RGB -kodes was op hul webwerf.

Ek het draadlose raamwerke vir elke bladsy van my webwerf geskep, sodat ek heeltemal kon weet hoe ek hierdie koppelvlak gaan skep. Nadat ek my koppelvlak aan my onderwysers gewys het, het ek die advies gekry om die agtergrond effens grys en die knoppies wit te maak, en die resultaat was na my mening goed.

Stap 3: Skep die databasis

Die skep van die databasis
Die skep van die databasis

Die volgende logiese stap was om te begin dink oor watter data ek in die MySQL -databasis wil stoor. Daar is nie so baie wat mense van hul vakuum wil weet nie, so ek het tabelle vir gebruikers en hul aanmeldingsdata, sowel as tabelle vir sensors (battery, afstand- en stofhouer).

Die prent wys die uitleg van my tabelle, geteken in MySQL Workbench, met al die verwantskappe tussen die tabelle.

Vir my gebruikers wou ek hul naam en van byhou om die koppelvlak en die e -posse te personaliseer. Natuurlik het ek ook hul e-posadres nodig om e-posse te stuur. Ek het ook 'n tabel bygevoeg om tred te hou met die e-posvoorkeur van my gebruikers (of hulle e-posse wil ontvang of nie). Die laaste ding wat ek oor gebruikers wou stoor, is hul rol vir die toestel. Ek verdeel gebruikers as administrateurs en normale gebruikers. Administrateurs het die reg om gebruikers in die stelsel by te voeg, te verwyder en te bestuur, terwyl normale gebruikers nie toegang tot hierdie instrumente het nie.

Die volgende tabel bevat 'deviceruns', wat die werklike lopies is wat die toestel uitgevoer het. Die toestelle is in besit van 'n sekere gebruiker (die persoon wat die aanloop begin het) en het 'n begin- en eindtyd om die tydsduur te bereken.

'N Ander tabel word gebruik om sensordata aan elke toestel te koppel. Die sensors self word in nog 'n ander tabel gestoor, met hul ID, naam en beskrywing.

Stap 4: Koppel die onderdele aan mekaar

Koppel die onderdele aan mekaar
Koppel die onderdele aan mekaar
Koppel die onderdele aan mekaar
Koppel die onderdele aan mekaar

Nadat ek die databasiskema geskep het, het ek broodborde en bedrading begin gebruik om al die onderdele in een werkende prototipe aan te sluit.

Stap 5: Stel die Raspberry Pi op

Die opstel van die Raspberry Pi
Die opstel van die Raspberry Pi

Gaan na die Raspbian -webwerf om die nuutste beeld van Raspbian af te laai. Hier kan u kies watter distro u wil aflaai. Vir vinniger werking kan u die koplose distro aflaai, vir minder RAM -gebruik, of die lessenaar met GUI aflaai as u 'n grafiese gebruikerskoppelvlak verkies.

Om die bedryfstelsel te installeer, laai eenvoudig Etcher af, dit is 'n GUI -instrument om die prentjie vinnig en maklik op u mikro -SD -kaart te skryf.

Om die koplose modus moontlik te maak, sodat u toegang tot die pi kan kry, moet u Putty op u rekenaar installeer. Die volgende stap is om na die Boot -lêergids wat deur Etcher geskep is, te gaan en die lêer cmdline.txt oop te maak met u gunsteling teksredakteur, ex Programmers Notepad. Voeg hierdie teks by aan die einde van die lêer:

ip = 169.254.10.1

Maak seker dat u nie 'n nuwe reël skep nie; voeg dit by die einde van die reël!

Gaan dan terug na die wortel van die Boot -lêergids en skep 'n lêer met die naam ssh. Voeg geen uitbreiding by nie, dit sal verseker dat die SSH -bediener elke keer as u Pi begin, begin. Plaas eenvoudig die SD -kaart in u Pi, koppel 'n voldoende kragbron aan u Pi en voeg 'n ethernetkabel tussen u Pi en u rekenaar.

Maak stopverf oop en tik die IP -adres in: 169.254.10.1. Klik nou op JA en meld aan, die standaard gebruikersnaam is pi en die wagwoord is framboos.

Voer vervolgens die volgende opdrag uit om op datum te kom:

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

Die laaste stap is om 'n virtuele Python -tolk op u Raspberry Pi te skep, dit voer u kode uit. Om dit te doen, maak eenvoudig stopverf oop en tik die volgende:

sudo mkdir -projek1

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

Stap 6: Skryf van die webtoepassing

Skryf die webtoepassing
Skryf die webtoepassing

Nadat ek elke onderdeel verbind het en die Raspberry Pi opgestel het, het ek my hoofwebtoepassing begin skryf met behulp van Flask en Jinja2. Flask is 'n maklik om te gebruik backend raamwerk vir Python, en Jinja2 is die sjablontaal wat ek gebruik het. Met Jinja kan u normale HTML -lêers skep vir lusse, as strukture ensovoorts.

Terwyl ek die agterkant gekodeer het, het ek ook die voorkant van die toepassing geskryf, insluitend HTML, CSS en JavaScript vir sommige elemente. Ek het die ITCSS -metode en BEM -notasie vir my stylblaaie gebruik.

Behalwe die hoof web-app, het ek ook 2 ander hoofprogramme geskep. Die een is geskryf om die IP -adres van die toestel na die gebruikers in die lys te stuur. Elke geregistreerde gebruiker wat aanvaar het om e -posse te ontvang, ontvang 'n e -pos met 'n skakel om die webkoppelvlak te begin. Hierdie program werk as 'n stelsel diens.

Die ander hooflêer is vir die werklike toestel. Hierdie hoof kan via my Flask -toepassing oproep word om die toestel te begin en te stop en data te versamel. Die versamelde data word ook via hierdie hoof na die databasis van die toestel gelaai. Hierdie data kan dan in die web-app gevisualiseer word.

Die web-app is met Python Threading gekoppel aan die hoof van die toestel. As 'n gebruiker op die beginknoppie klik, word 'n draad gegenereer om die toestel op die agtergrond te laat loop. Intussen kan die gebruiker perfek deur die app blaai. As u op stop klik, word hierdie draad gestop en stop die toestel.

Stap 7: Maak stukke om die omhulsel af te handel

Stukke maak om die omhulsel af te handel
Stukke maak om die omhulsel af te handel
Stukke maak om die omhulsel af te handel
Stukke maak om die omhulsel af te handel
Stukke maak om die omhulsel af te handel
Stukke maak om die omhulsel af te handel
Stukke maak om die omhulsel af te handel
Stukke maak om die omhulsel af te handel

Nadat ek die grootste deel van die aansoek geskryf het, het ek die omhulsel van die toestel begin wysig sodat my sensors en ander onderdele eintlik pas. Om dit te doen, het ek 'n vel poliuretaan in 'n plaaslike DIY -winkel gekoop en 2 hakies begin sny. Ek het hierdie vel poliuretaan gebruik, aangesien dit waarskynlik nie in stukke kan breek tydens sny nie, en omdat dit redelik buigbaar is, wat perfek is, aangesien my robot 'n sirkelvorm het.

Die eerste hakie is gemaak om 'n gat aan die bokant te vul, waar 'n skerm voorheen gesit het. Ek het die skerm met 'n aan/uit -skakelaar vervang sodat die batterye eintlik afgeskakel kan word.

Die ander bracket is 'n ondersteuning vir my HC-SR04 ultrasoniese sensors wat aan die voorkant van die toestel geplaas is.

Die laaste ding wat ons moes doen, was om 'n gat in die versterkings van een van die wiele uit te sny en 'n magneet in te sit sodat ek die rotasie van die wiel kan monitor.

Nadat ek hierdie hakies klaargemaak het, het ek dit ook gespuit met die verf wat ek oorgehad het, sodat dit by die ontwerp pas.

Stap 8: Die kode

Om die program te installeer, laai die lêer code.zip af en pak dit uit in die project1 -gids.

Voer vervolgens hierdie opdrag uit in 'n terminale op Raspbian of Putty:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-herlaai sudo systemctl aktiveer projek-1* sudo systemctl aktiveer project1* sudo systemctl herlaai nginx

Maak vervolgens die databasis wat u gegenereer het oop en skep 'n nuwe gebruiker met 'n Argon2 -hash -wagwoord. Nou kan u die program gebruik.

Geniet dit!

Aanbeveel: