Turinys:

„Guillaume Meurillon“„CleanBot“: 8 žingsniai
„Guillaume Meurillon“„CleanBot“: 8 žingsniai

Video: „Guillaume Meurillon“„CleanBot“: 8 žingsniai

Video: „Guillaume Meurillon“„CleanBot“: 8 žingsniai
Video: Classe1 2024, Lapkritis
Anonim
Guillaume'o Meurillono „CleanBot“
Guillaume'o Meurillono „CleanBot“
Guillaume'o Meurillono „CleanBot“
Guillaume'o Meurillono „CleanBot“

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

Dalių surinkimas
Dalių surinkimas
Dalių surinkimas
Dalių surinkimas
Dalių surinkimas
Dalių surinkimas
Dalių surinkimas
Dalių surinkimas

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

Dažymas purškimu ir sąsajos projektavimas
Dažymas purškimu ir sąsajos projektavimas
Dažymas purškimu ir sąsajos projektavimas
Dažymas purškimu ir sąsajos projektavimas
Dažymas purškimu ir sąsajos projektavimas
Dažymas purškimu ir sąsajos projektavimas
Dažymas purškimu ir sąsajos projektavimas
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ę

Duomenų bazės kūrimas
Duomenų bazės kūrimas

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

Dalių sujungimas
Dalių sujungimas
Dalių sujungimas
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“

„Raspberry Pi“nustatymas
„Raspberry Pi“nustatymas

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

Interneto programos rašymas
Interneto 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

Kūrinių kūrimas korpusui užbaigti
Kūrinių kūrimas korpusui užbaigti
Kūrinių kūrimas korpusui užbaigti
Kūrinių kūrimas korpusui užbaigti
Kūrinių kūrimas korpusui užbaigti
Kūrinių kūrimas korpusui užbaigti
Kūrinių kūrimas korpusui užbaigti
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: