Turinys:
- 1 žingsnis: Surinkite dalis
- 2 žingsnis: dažymas purškimu ir sąsajos projektavimas
- 3 žingsnis: sukurkite duomenų bazę
- 4 žingsnis: dalių sujungimas
- 5 veiksmas: nustatykite „Raspberry Pi“
- 6 veiksmas: žiniatinklio programos rašymas
- 7 žingsnis: kūrinių kūrimas korpusui užbaigti
- 8 žingsnis: Kodas
Video: „Guillaume Meurillon“„CleanBot“: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Tai yra vadovas, skirtas projektui, kurį sukūriau mokyklai. Tikslas buvo sukurti įrenginį su „Raspberry Pi“, kuris būtų prijungtas prie interneto, tuo pačiu renkant duomenis iš jutiklių. Šie duomenys turėjo būti saugomi (MySQL) duomenų bazėje. Duomenys turėjo būti vizualizuoti naudojant svetainę, užkoduotą „Python“naudojant „Flask“žiniatinklio programos paketą ir „Jinja2“šabloną.
Mano idėja buvo sukurti „nulaužtą“roboto vakuumą, naudojant „Raspberry Pi“, „Arduino“, jau sugedusį roboto vakuumą ir daugybę jutiklių.
1 žingsnis: Surinkite dalis
Prieš kurdama ką nors, aš daug ištyriau, kokias dalis naudoti, kaip jas prijungti, rašyti programinės įrangos klases „Python“ir pan.
Dalių sąrašas bus įtrauktas kaip failas, kad galėtumėte lengvai ieškoti reikalingų dalių.
Aš nusprendžiau naudoti „Arduino Uno“šalia „Raspberry Pi“, kad galėčiau efektyviai skaityti savo jutiklius, nekeldamas streso „Raspberry Pi“. Aš taip pat pasirinkau „Uno“, nes jis turi gražų laikrodžio greitį, ir dėl analoginių kaiščių. „Raspberry Pi“būčiau galėjęs naudoti ADC (pvz., MCP3008), tačiau man būtų reikėję daug daugiau laidų, tai būtų buvę brangiau ir mano „Pi“turėtų dirbti daug sunkiau.
Tada aš pradėjau tikrinti dalis, kurios buvo tinkamos naudoti iš sugedusio roboto vakuumo. Vidinė elektronika buvo sugadinta, tačiau tai nebuvo problema, nes vis tiek jas visiškai pakeisčiau. Laimei, nuolatinės srovės varikliai vis dar veikė, todėl nė vieno iš jų nereikėjo keisti.
Dalių sąrašas:
- „Raspberry Pi 3“su mažiausiai 8 GB „MicroSD 10“klase ir dėklu;
- Raspberry Pi T-cobbler ir duonos lenta (-os);
- „Arduino Uno“ar panašiai (pageidautina ne kiniška versija su tinkamu ADC, kai kurie kinai turi AREF problemų) su tam tikru atveju;
- Eterneto kabelis;
- (Sugedęs) roboto vakuumas;
- 3x HC-SR04 ultragarso moduliai;
- 1x salės jutiklio modulis;
- Keletas skirtingų reikšmių rezistorių;
- LDR;
- 6x 18650 ličio jonų baterijos + 3 elementų laikikliai 12V (pageidautina naudoti naujas baterijas arba dar geriau naudoti LiPo baterijas, jos tarnaus ilgiau);
- 18650 (ar bet kokio tipo akumuliatorių, kurį naudosite) 12v 3 elementų įkrovimo plokštė;
- Kai kurios PCB „pasidaryk pats“plokštės, skirtos lituoti jūsų komponentus;
- Poliuretano plastiko lakštas;
- Nešiojamasis / stalinis kompiuteris.
Įrankių sąrašas:
- Sėjamoji su keliais grąžtais;
- Kampinis šlifuoklis (nenaudokite, jei neturite patirties) ar kažkas panašaus į „Dremel“;
- Šlifavimo popieriaus gabalas;
- Keletas atsuktuvų;
- Klijai, tvirtinimo klijai,…;
- Lituoklis (naudokite tepalą, kad lengviau lituotumėte laidus);
- Pora vielos pjaustytuvų ir nuėmimo įrankis.
Programinės įrangos sąrašas (neprivaloma):
- „Adobe XD“: vielos kadrų kūrimas ir prototipo kūrimas;
- Fritzing: elektros schemos sukūrimas;
- „PyCharm Professional“: „Python IDE“su diegimo ir nuotolinio vertėjo naudojimo galimybėmis;
- Glaistas: greitas ir lengvas ssh ryšys su Pi;
- „Etcher.io“: paprastas įrankis „Raspbian“vaizdui į SD kortelę perkelti;
- „Win32DiskImager“: paprastas įrankis sukurti vaizdą iš esamos „Raspbian“sąrankos;
- Programuotojų užrašų knygelė: paprastas įrankis, kurį galite naudoti norėdami saugiai redaguoti failą /boot/cmdline.txt.
2 žingsnis: dažymas purškimu ir sąsajos projektavimas
Prieš pradėdamas kurti dizainą, aš dažiau išorę purkštuvu, nes spalvos man visiškai nepatiko. Nuėjau į parduotuvę ir pasiėmiau plastikinį gruntą, baltos spalvos skardinę ir turkio skardinę, kad galėčiau atsukti viršutinį dėklą.
Leisdamas purškiamiems dažams išdžiūti, aš suradau tikslų naudojamų dažų šešiakampį spalvų kodą, kad galėčiau puikiai suderinti savo žiniatinklio sąsają su savo prietaisu. Rasti šį šešioliktainį kodą buvo gana paprasta, nes naudojau „Montana 94“grafiti, o šešioliktainiai ir RGB kodai buvo jų svetainėje.
Kiekvienam savo svetainės puslapiui sukūriau aukštos kokybės laidinius rėmus, kad puikiai žinotų, kaip ketinu sukurti šią sąsają. Parodžiusi savo sąsają mokytojams, gavau patarimą, kad fonas būtų šiek tiek pilkesnis, o mygtukai - balti, o rezultatas, mano nuomone, buvo geras.
3 žingsnis: sukurkite duomenų bazę
Kitas logiškas žingsnis buvo pradėti galvoti apie tai, kokius duomenis norėčiau išsaugoti „MySQL“duomenų bazėje. Nėra tiek daug žmonių, kurie nori žinoti apie savo vakuumą, todėl ėjau su lentelėmis vartotojams ir jų prisijungimo duomenimis, taip pat su jutiklių lentelėmis (baterija, atstumas ir dulkių talpykla).
Paveikslėlyje parodytas mano lentelių išdėstymas, nubraižytas „MySQL Workbench“, ir visi santykiai tarp lentelių.
Savo vartotojams norėjau sekti jų vardą ir pavardę, kad suasmenintų sąsają ir el. Žinoma, norėdamas siųsti el. Laiškus, man reikėjo ir jų el. Pašto adresų. Taip pat pridėjau lentelę, kad galėčiau stebėti savo vartotojų el. Pašto nuostatas (ar jie norėtų gauti el. Laiškus). Paskutinis dalykas, kurį norėjau išsaugoti apie vartotojus, yra jų vaidmuo įrenginyje. Aš suskirstau vartotojus kaip administratorius ir paprastus vartotojus. Administratoriai turi teisę pridėti, pašalinti ir valdyti sistemos naudotojus, o paprasti vartotojai negali pasiekti šių įrankių.
Kitoje lentelėje yra „deviceruns“, tai yra faktiniai įrenginio vykdymai. „Deviceruns“priklauso tam tikram vartotojui (asmeniui, kuris pradėjo vykdyti) ir turi pradžios ir pabaigos laiką, kad galėtų apskaičiuoti vykdymo laiką.
Kita lentelė naudojama norint susieti sensorinius duomenis su kiekvienu įrenginiu. Patys jutikliai saugomi kitoje lentelėje, kurioje yra jų ID, pavadinimas ir aprašymas.
4 žingsnis: dalių sujungimas
Sukūręs duomenų bazės schemą, pradėjau naudoti duonos lentas ir laidus, kad sujungčiau visas dalis į vieną veikiantį prototipą.
5 veiksmas: nustatykite „Raspberry Pi“
Norėdami atsisiųsti naujausią „Raspbian“vaizdą, eikite į „Raspbian“svetainę. Čia galite pasirinkti, kurį distribuciją norite atsisiųsti. Jei norite greitesnio veikimo, galite atsisiųsti distrofą be galvos, kad būtų mažiau RAM, arba atsisiųsti darbalaukį su GUI, jei pageidaujate grafinės vartotojo sąsajos.
Norėdami įdiegti OS, tiesiog atsisiųskite „Etcher“, tai yra GUI įrankis, skirtas greitai ir lengvai įrašyti vaizdą į „micro SD“kortelę.
Norėdami įjungti režimą be galvos, kad galėtumėte pasiekti „pi“, turėsite kompiuteryje įdiegti „Putty“. Kitas žingsnis - eiti į „Etcher“sukurtą „Boot“aplanką ir atidaryti failą cmdline.txt su mėgstamu teksto redaktoriumi, pvz., „Programmers Notepad“. Pridėkite šį tekstą prie failo pabaigos:
ip = 169.254.10.1
Tiesiog įsitikinkite, kad nesukursite naujos eilutės, pridėkite tai eilutės pabaigoje!
Tada grįžkite į „Boot“aplanko šaknį ir sukurkite failą pavadinimu ssh. Nepridėkite jokių pratęsimų, tai užtikrins, kad SSH serveris paleidžiamas kiekvieną kartą, kai paleidžiamas „Pi“. Dabar tiesiog įdėkite SD kortelę į „Pi“, prijunkite pakankamai maitinimo šaltinio prie „Pi“ir pridėkite eterneto kabelį tarp „Pi“ir kompiuterio.
Atidarykite glaistą ir įveskite IP adresą: 169.254.10.1. Dabar spustelėkite TAIP ir prisijunkite, numatytasis vartotojo vardas yra pi, o slaptažodis - avietė.
Tada vykdykite šią komandą, kad gautumėte naujausią informaciją:
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
Paskutinis žingsnis yra sukurti virtualų „Python“vertėją „Raspberry Pi“, kuris vykdys jūsų kodą. Norėdami tai padaryti, tiesiog atidarykite glaistą ir įveskite:
Sudo mkdir projektas1
cd project1 python3 -m pip install -atnaujinti pip setuptools ratą virtualenv python3 -m venv -system -site -paketai venv
6 veiksmas: žiniatinklio programos rašymas
Prijungęs kiekvieną dalį ir nustatęs „Raspberry Pi“, pradėjau rašyti savo pagrindinę žiniatinklio programą naudodamas „Flask“ir „Jinja2“. Kolba yra lengvai naudojama „Python“užpakalinė sistema, o „Jinja2“yra šablonų kalba, kurią naudojau. Naudodami „Jinja“galite sukurti įprastus HTML failus su kilpomis, jei jos yra struktūros ir pan.
Koduodamas užpakalinę dalį, aš taip pat parašiau programos priekinę dalį, įskaitant HTML, CSS ir „JavaScript“kai kuriems elementams. Savo stiliaus lapams naudojau ITCSS metodą ir BEM žymėjimą.
Be pagrindinės žiniatinklio programos, sukūriau dar 2 pagrindines programas. Vienas parašytas, kad prietaiso IP adresas būtų išsiųstas sąraše esantiems vartotojams. Kiekvienas registruotas vartotojas, sutikęs gauti el. Laiškus, gaus laišką su nuoroda į interneto sąsajos paleidimą. Ši programa veikia kaip sisteminė paslauga.
Kitas pagrindinis failas skirtas konkrečiam įrenginiui. Šį pagrindinį galima skambinti naudojant „Flask“programą, kad būtų galima paleisti ir sustabdyti įrenginį bei rinkti duomenis. Surinkti duomenys per šį pagrindą taip pat įkeliami į įrenginio duomenų bazę. Tuomet šiuos duomenis galima vizualizuoti žiniatinklio programoje.
Žiniatinklio programa yra prijungta prie pagrindinio įrenginio, naudojant „Python Threading“. Kai vartotojas spustelėja pradžios mygtuką, sukuriama gija įrenginiui paleisti fone. Tuo tarpu vartotojas gali puikiai naršyti programėlėje. Spustelėjus „Stop“, šis siūlas sustabdomas, todėl įrenginys sustoja.
7 žingsnis: kūrinių kūrimas korpusui užbaigti
Parašęs didžiąją programos dalį, pradėjau keisti prietaiso korpusą, kad mano jutikliai ir kitos dalys iš tikrųjų tilptų. Norėdami tai padaryti, nusipirkau poliuretano lakštą vietinėje „pasidaryk pats“parduotuvėje ir pradėjau pjaustyti 2 skliaustus. Aš naudoju šį poliuretano lakštą, nes jis greičiausiai nesulūš į gabalus pjaustant, ir todėl, kad jis yra gana lankstus, o tai puikiai tinka, nes mano robotas yra apskrito formos.
Pirmasis laikiklis yra skirtas užpildyti skylę viršuje, kur anksčiau sėdėjo ekranas. Aš pakeičiau ekraną įjungimo/išjungimo jungikliu, kad būtų galima iš tikrųjų išjungti baterijas.
Kitas laikiklis yra mano HC-SR04 ultragarso jutiklių, esančių prietaiso priekyje, palaikymas.
Paskutinis dalykas, kurį reikėjo padaryti, buvo iškirpti skylę vieno iš ratų sutvirtinimuose ir įkišti magnetą, kad galėčiau stebėti rato sukimąsi.
Baigęs šiuos skliaustus, aš taip pat purškiau juos dažais, kuriuos palikau, kad jie atitiktų dizainą.
8 žingsnis: Kodas
Norėdami įdiegti programą, atsisiųskite failą code.zip ir išpakuokite jį kataloge project1.
Tada atlikite šią komandą „Raspbian“arba „Putty“terminale:
sudo cp project1/conf/project-1*/etc/systemd/system/
sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl įgalinti projektą-1* sudo systemctl įgalinti projektą1* sudo systemctl iš naujo paleisti nginx
Tada atidarykite sukurtą duomenų bazę ir sukurkite naują vartotoją naudodami „Argon2“maišos slaptažodį. Dabar galite naudoti programą.
Mėgautis!
Rekomenduojamas:
„Arduino“automobilių atbulinės eigos įspėjimo sistema - Žingsniai po žingsnio: 4 žingsniai
„Arduino“automobilių atbulinės eigos įspėjimo sistema | Žingsniai po žingsnio: Šiame projekte aš suprojektuosiu paprastą „Arduino“automobilio atbulinės eigos stovėjimo jutiklio grandinę, naudodamas „Arduino UNO“ir ultragarsinį jutiklį „HC-SR04“. Ši „Arduino“pagrįsta automobilio atbulinės eigos įspėjimo sistema gali būti naudojama autonominei navigacijai, robotų diapazonui ir kitiems diapazonams
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su nuotraukomis): 6 žingsniai
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su paveikslėliais): norite Helovino metu išgąsdinti savo draugus ir sukelti riksmą? O gal tiesiog norite padaryti gerą išdaigą? Šis iššokantis „Zombies“ekranas gali tai padaryti! Šioje instrukcijoje aš išmokysiu jus, kaip lengvai padaryti iššokančius zombius naudojant „Arduino“. HC-SR0
Akustinė levitacija naudojant „Arduino Uno“žingsnis po žingsnio (8 žingsniai): 8 žingsniai
Akustinė levitacija naudojant „Arduino Uno“žingsnis po žingsnio (8 žingsniai): ultragarsiniai garso keitikliai L298N nuolatinės srovės adapterio maitinimo šaltinis su vyrišku nuolatinės srovės kaiščiu „Arduino UNOBreadboard“Kaip tai veikia: pirmiausia įkelkite kodą į „Arduino Uno“(tai yra mikrovaldiklis su skaitmeniniu ir analoginiai prievadai kodui konvertuoti (C ++)
„Pixel Kit“, kuriame veikia „MicroPython“: pirmieji žingsniai: 7 žingsniai
„Pixel Kit“, kuriame veikia „MicroPython“: pirmieji žingsniai: Kelionė, skirta visam „Kano Pixel“potencialui išnaudoti, prasideda gamyklos programinės įrangos pakeitimu „MicroPython“, tačiau tai tik pradžia. Norėdami koduoti „Pixel Kit“, turime prie jo prijungti savo kompiuterius. Ši pamoka paaiškins, kas
Tiesioginė 4G/5G HD vaizdo transliacija iš DJI drono esant mažai delsai [3 žingsniai]: 3 žingsniai
Tiesioginis 4G/5G HD vaizdo įrašų srautinis perdavimas iš DJI drono esant mažai delsai [3 žingsniai]: Šis vadovas padės jums gauti tiesioginius HD kokybės vaizdo srautus iš beveik visų DJI dronų. Naudodami „FlytOS Mobile App“ir „FlytNow Web Application“galite pradėti transliuoti vaizdo įrašus iš drono