INHOUDSOPGAWE:
- Stap 1: Versamel die onderdele
- Stap 2: Spuitverf en ontwerp die koppelvlak
- Stap 3: Skep die databasis
- Stap 4: Koppel die onderdele aan mekaar
- Stap 5: Stel die Raspberry Pi op
- Stap 6: Skryf van die webtoepassing
- Stap 7: Maak stukke om die omhulsel af te handel
- Stap 8: Die kode
Video: CleanBot deur Guillaume Meurillon: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
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
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
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 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
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
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
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
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:
Retro Arcade - (volle grootte aangedryf deur Raspberry Pi): 8 stappe
Retro Arcade - (volgrootte, aangedryf deur Raspberry Pi): Eerstens wou ek u bedank dat u na die bougids vir hierdie Retro Arcade -stelsel gekyk het. Ek neem 'n ouer arcade box en plaas dit in 'n losstaande kas met 'n 24-inch widescreen monitor. Die metings in hierdie gids is moeilik om te gee
Smart Home deur Raspberry Pi: 5 stappe (met foto's)
Smart Home deur Raspberry Pi: Daar is reeds verskeie produkte wat u woonstel slimmer maak, maar die meeste daarvan is eie oplossings. Maar waarom het u 'n internetverbinding nodig om 'n lig met u slimfoon te verander? Dit was een van die redes waarom ek my eie Smar moes bou
Weerstasie deur satelliete: 5 stappe
Weerstasie deur satelliete: hierdie projek is bedoel vir mense wat hul eie weerdata wil versamel. Dit kan windspoed en rigting, temperatuur en lugvogtigheid meet. Dit is ook in staat om elke 100 minute na weersatelliete te luister wat om die aarde wentel. Ek wil
Mens-rekenaar-koppelvlak: funksioneer as 'n gripper (gemaak deur Kirigami) deur polsbeweging met behulp van EMG: 7 stappe
Mens-rekenaar-koppelvlak: Function a Gripper (gemaak deur Kirigami) deur polsbeweging met behulp van EMG: Dit was dus my eerste poging met 'n mens-rekenaar-koppelvlak. Ek het die spieraktiveringsseine van my polsbeweging vasgelê met 'n EMG-sensor, dit verwerk deur luislang en arduino en het 'n origami -gebaseerde grijper aangestuur
ROOMBA Aangedryf deur ARDUINO YUN Via Wifi App deur STEFANO DALL'OLIO: 4 stappe (met foto's)
ROOMBA Aangedryf deur ARDUINO YUN Via Wifi App deur STEFANO DALL'OLIO: Met hierdie gids deel ek die kode om ARDUINO YUN aan Roomba te koppel om Roomba via Wifi te bestuur. Die kode en die app is volledig deur myself gemaak en ontwikkel Stefano Dall ' Olio.My Roomba is Roomba 620, maar jy kan dieselfde kode vir ander Roomb gebruik