Kazalo:
- 1. korak: Zbiranje delov
- 2. korak: barvanje s pršenjem in oblikovanje vmesnika
- 3. korak: Ustvarjanje baze podatkov
- 4. korak: Povežite dele skupaj
- 5. korak: Nastavitev Raspberry Pi
- 6. korak: Pisanje spletne aplikacije
- 7. korak: Ustvarjanje kosov za zaključek ohišja
- 8. korak: Koda
Video: CleanBot Guillaume Meurillon: 8 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
To je vodnik za projekt, ki sem ga naredil za šolo. Cilj je bil ustvariti napravo z Raspberry Pi, ki je bila povezana z internetom, hkrati pa zbirala podatke iz senzorjev. Te podatke je bilo treba shraniti v bazo (MySQL). Podatke je bilo treba vizualizirati s spletnim mestom, kodiranim v Pythonu s paketom Flask webapp in predlogo Jinja2.
Moja ideja je bila ustvariti "vlomljen" robotski vakuum z uporabo Raspberry Pi, Arduina, že pokvarjenega robotskega vakuuma in kopice senzorjev.
1. korak: Zbiranje delov
Preden sem dejansko kaj ustvaril, sem veliko raziskal o tem, katere dele uporabiti, kako jih povezati, napisati razrede programske opreme v Pythonu itd.
Seznam delov bo vključen kot datoteka, tako da lahko preprosto poiščete dele, ki jih potrebujete.
Odločil sem se, da bom poleg Raspberry Pi uporabil Arduino Uno, da bom lahko učinkovito prebral svoje senzorje, ne da bi obremenil Raspberry Pi. Za Uno sem se odločil tudi zato, ker ima lepo uro in zaradi analognih zatičev. Za svoj Raspberry Pi bi lahko uporabil ADC (npr. MCP3008), vendar bi potreboval veliko več žic, bil bi dražji in moj Pi bi moral delati veliko težje.
Nato sem začel pregledovati dele, ki so bili uporabni iz pokvarjenega robotskega vakuuma. Notranja elektronika je bila poškodovana, vendar to ni bil problem, ker bi jo vseeno popolnoma zamenjal. Na srečo so enosmerni motorji še vedno delovali, zato nobenega od teh ni bilo treba zamenjati.
Seznam delov:
- Raspberry Pi 3 z najmanj 8 GB MicroSD razreda 10 in ohišjem;
- T-čevljar in plošče iz maline Pi;
- Arduino Uno ali podobno (raje nekitajska različica z dostojnim ADC-jem, nekateri kitajci imajo težave z AREF) z nekakšno ohišjem;
- Ethernetni kabel;
- (Pokvarjen) robotski vakuum;
- 3x ultrazvočni moduli HC-SR04;
- 1x hodniški senzorski modul;
- Več uporov različnih vrednosti;
- LDR;
- 6x 18650 litij-ionskih baterij + 3-celična držala za 12v (raje uporabite nove baterije ali še bolje uporabite baterije LiPo, te bodo trajale dlje);
- 18650 (ali katero koli vrsto baterije, ki jo boste uporabljali) 12v 3-celični polnilni tiskalnik
- Nekatere PCB DIY plošče za spajkanje vaših komponent;
- List iz poliuretanske plastike;
- Prenosni / namizni računalnik.
Seznam orodij:
- Vrtalnik z več svedri;
- Kotni brusilnik (ne uporabljajte ga, če nimate izkušenj) ali kaj podobnega Dremelu;
- Kos brusnega papirja;
- Več izvijačev;
- Superlepilo, montažno lepilo,…;
- Spajkalnik (za lažje spajkanje žic uporabite mast);
- Par rezalnikov in orodje za odstranjevanje žice.
Seznam programske opreme (neobvezno):
- Adobe XD: žično ogrodje in ustvarjanje prototipa;
- Fritzing: ustvarjanje električne sheme;
- PyCharm Professional: Python IDE z možnostjo uporabe uvajanja in oddaljenega tolmača;
- Kiti: hitra in enostavna ssh povezava s Pi;
- Etcher.io: preprosto orodje za utripanje Raspbian slike na kartico SD;
- Win32DiskImager: preprosto orodje za ustvarjanje slike iz obstoječe nastavitve Raspbian;
- Beležnica programerjev: preprosto orodje, ki ga lahko uporabite za varno urejanje datoteke /boot/cmdline.txt.
2. korak: barvanje s pršenjem in oblikovanje vmesnika
Preden sem začel ustvarjati dizajn, sem zunanjost pobarval z brizganjem, ker mi barve sploh niso bile všeč. Odšel sem v trgovino in pobral plastični premaz, pločevinko bele barve in pločevinko turkizne barve, da bi razpršil zgornji del ohišja.
Ko sem barvo posušila, sem poiskala natančno šestnajstiško barvno barvo za barvo, ki sem jo uporabila, da sem lahko popolnoma uskladila svoj spletni vmesnik s svojo napravo. Iskanje te šestnajstiške kode je bilo precej enostavno, saj sem uporabil grafite Montana 94, kode hex in RGB pa so bile na njihovi spletni strani.
Za vsako stran svojega spletnega mesta sem ustvaril žične okvire visoke zvestobe, tako da sem popolnoma dobro vedel, kako bom ustvaril ta vmesnik. Ko sem učiteljem pokazal svoj vmesnik, sem dobil nasvet, naj ozadje postane nekoliko bolj sivo, gumbi pa beli, rezultat pa je bil po mojem mnenju dober.
3. korak: Ustvarjanje baze podatkov
Naslednji logični korak je bil začetek razmišljanja o tem, katere podatke želim shraniti v bazo podatkov MySQL. Ljudje ne vedo toliko o njihovem vakuumu, zato sem se odločil za tabele za uporabnike in njihove podatke za prijavo ter tabele za senzorje (baterija, razdalja in posoda za prah).
Na sliki je prikazana postavitev mojih tabel, narisana v MySQL Workbench, z vsemi odnosi med tabelami.
Za svoje uporabnike sem želel spremljati njihovo ime in priimek, da prilagodim vmesnik in e -pošto. Seveda sem za pošiljanje e-pošte potreboval tudi njihov e-poštni naslov. Dodal sem tudi tabelo za spremljanje e-poštnih nastavitev mojih uporabnikov (ne glede na to, ali bi radi prejemali e-pošto ali ne). Zadnja stvar, ki sem jo želel shraniti pri uporabnikih, je njihova vloga za napravo. Uporabnike delim kot skrbnike in običajne uporabnike. Skrbniki imajo pravico dodajati, odstranjevati in upravljati uporabnike v sistemu, medtem ko običajni uporabniki nimajo dostopa do teh orodij.
Naslednja tabela vsebuje "deviceruns", ki so dejanski zagoni naprave. Odstranjevalci so v lasti določenega uporabnika (osebe, ki je začela izvajanje) in imajo začetni in končni čas za izračun časa izvajanja.
Druga tabela se uporablja za povezavo podatkov senzorjev z vsakim devicerunom. Tipala so shranjena v drugi tabeli, ki vsebuje njihov ID, ime in opis.
4. korak: Povežite dele skupaj
Po ustvarjanju sheme zbirke podatkov sem začel uporabljati plošče in ožičenje za povezovanje vseh delov v enem delujočem prototipu.
5. korak: Nastavitev Raspberry Pi
Če želite prenesti najnovejšo sliko Raspbiana, pojdite na spletno mesto Raspbian. Tu lahko izberete distribucijo, ki jo želite prenesti. Za hitrejše delovanje lahko prenesete brezglavni distro, za manj porabe RAM -a ali prenesete namizje z grafičnim vmesnikom, če vam je ljubši grafični uporabniški vmesnik.
Če želite namestiti OS, preprosto prenesite Etcher, to je orodje z grafičnim vmesnikom za hitro in preprosto zapisovanje slike na kartico micro SD.
Če želite omogočiti način brez glave in dostop do pi, boste morali v svoj računalnik namestiti Putty. Naslednji korak je odhod v zagonsko mapo, ki jo je ustvaril Etcher, in odpiranje datoteke cmdline.txt z vašim najljubšim urejevalnikom besedil, npr. Beležnico za programerje. Dodajte to besedilo na konec datoteke:
ip = 169.254.10.1
Pazite le, da ne ustvarite nove vrstice, to dodajte na konec vrstice!
Nato se vrnite v koren zagonske mape in ustvarite datoteko z imenom ssh. Ne dodajajte nobenih podaljškov, to bo zagotovilo zagon strežnika SSH vsakič, ko se zažene vaš Pi. Zdaj preprosto vstavite kartico SD v svoj Pi, na Pi priključite zadosten vir napajanja in dodajte ethernetni kabel med Pi in računalnikom.
Odprite kit in vnesite naslov IP: 169.254.10.1. Zdaj kliknite DA in se prijavite, privzeto uporabniško ime je pi, geslo pa malina.
Nato za posodobitev izvedite naslednji ukaz:
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
Zadnji korak je ustvariti navideznega tolmača Python na vašem Raspberry Pi, to bo izvedlo vašo kodo. Če želite to narediti, preprosto odprite kit in vnesite naslednje:
sudo mkdir projekt1
cd project1 python3 -m pip install --upgrade pip setuptools wheel virtualenv python3 -m venv --system -site -packages venv
6. korak: Pisanje spletne aplikacije
Ko sem povezal vsak del in nastavil Raspberry Pi, sem začel pisati svojo glavno spletno aplikacijo z uporabo Flask in Jinja2. Flask je ozadje za Python, ki je enostaven za uporabo, in Jinja2 je jezik predloge, ki sem ga uporabil. Z Jinjo lahko ustvarite običajne datoteke HTML z zankami for, če strukture itd.
Med kodiranjem zaledja sem napisal tudi sprednji del aplikacije, vključno s HTML, CSS in JavaScript za nekatere elemente. Za svoje slogovne liste sem uporabil metodo ITCSS in zapis BEM.
Poleg glavne spletne aplikacije sem ustvaril še 2 glavna programa. Eden je napisan za pošiljanje naslova IP naprave uporabnikom na seznamu. Vsak registrirani uporabnik, ki je sprejel prejemanje e -poštnih sporočil, bo prejel pošto s povezavo za zagon spletnega vmesnika. Ta program deluje kot storitev systemd.
Druga glavna datoteka je za dejansko napravo. Ta glavni klic je mogoče poklicati prek aplikacije Flask za zagon in zaustavitev naprave ter zbiranje podatkov. Zbrani podatki se prav tako naložijo v bazo podatkov naprave po tem glavnem. Te podatke je nato mogoče prikazati v spletni aplikaciji.
Spletna aplikacija je povezana z glavno napravo, ki deluje z Python Threading. Ko uporabnik klikne gumb za zagon, se ustvari nit za zagon naprave v ozadju. Medtem lahko uporabnik odlično brska po aplikaciji. Ko kliknete stop, se ta nit ustavi, zato se naprava ustavi.
7. korak: Ustvarjanje kosov za zaključek ohišja
Ko sem napisal največji del aplikacije, sem začel spreminjati ohišje naprave, tako da bi se moji senzorji in drugi deli dejansko prilegali. V ta namen sem v lokalni trgovini z lastnimi rokami kupil list poliuretana in začel rezati 2 nosilca. Uporabil sem ta poliuretanski list, ker se med rezanjem verjetno ne razbije na koščke in ker je precej prilagodljiv, kar je popolno, saj ima moj robot krožno obliko.
Prvi nosilec je narejen tako, da zapolni luknjo na vrhu, kjer je včasih sedel zaslon. Zamenjal sem zaslon s stikalom za vklop/izklop, tako da je mogoče baterije dejansko izklopiti.
Drugi nosilec je podpora za moje ultrazvočne senzorje HC-SR04, ki so nameščeni na sprednji strani naprave.
Zadnja stvar, ki mi je preostalo, je bila izrezati luknjo v ojačitvi enega od koles in vstaviti magnet, da bom lahko spremljal vrtenje kolesa.
Ko sem končal te nosilce, sem jih tudi razpršil z barvo, ki mi je ostala, da se prilega oblikovanju.
8. korak: Koda
Če želite namestiti program, prenesite datoteko code.zip in jo razpakirajte v imeniku project1.
Nato izvedite ta ukaz v terminalu na Raspbian ali Putty:
sudo cp project1/conf/project-1*/etc/systemd/system/
sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl omogoči projekt-1* sudo systemctl omogoči projekt1* sudo systemctl znova zažene nginx
Nato odprite bazo podatkov, ki ste jo ustvarili, in ustvarite novega uporabnika z razpršenim geslom Argon2. Zdaj lahko uporabite program.
Uživajte!
Priporočena:
Števec korakov - mikro: Bit: 12 korakov (s slikami)
Števec korakov - Micro: Bit: Ta projekt bo števec korakov. Za merjenje korakov bomo uporabili senzor pospeška, ki je vgrajen v Micro: Bit. Vsakič, ko se Micro: Bit trese, bomo štetju dodali 2 in ga prikazali na zaslonu
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): 8 korakov
Akustična levitacija z Arduino Uno Korak po korak (8 korakov): ultrazvočni pretvorniki zvoka L298N Dc ženski adapter z napajalnim vtičem za enosmerni tok Arduino UNOBreadboard Kako to deluje: Najprej naložite kodo v Arduino Uno (to je mikrokrmilnik, opremljen z digitalnim in analogna vrata za pretvorbo kode (C ++)
Vijak - Nočna ura za brezžično polnjenje DIY (6 korakov): 6 korakov (s slikami)
Bolt - Nočna ura za brezžično polnjenje DIY (6 korakov): Induktivno polnjenje (znano tudi kot brezžično polnjenje ali brezžično polnjenje) je vrsta brezžičnega prenosa energije. Za zagotavljanje električne energije prenosnim napravam uporablja elektromagnetno indukcijo. Najpogostejša aplikacija je brezžično polnjenje Qi
Merilnik korakov 1. del: Enobarvni zaslon 128x32 in Arduino: 5 korakov
Pedometer 1. del: Enobarvni zaslon 128x32 in Arduino: To je osnovna vadnica, ki uči, kako uporabljati zaslon OLED s svojim Arduinom. Uporabljam zaslon velikosti 128x32, lahko pa uporabite tudi drugačen zaslon z ločljivostjo in po potrebi spremenite ločljivost/koordinate. V tem delu vam bom pokazal, kako
Preklopna obremenitvena banka z manjšo velikostjo korakov: 5 korakov
Preklopna banka odpornikov obremenitve z manjšo velikostjo korakov: Banke uporovnih obremenitev so potrebne za preskušanje energetskih proizvodov, za karakterizacijo sončnih kolektorjev, v preskusnih laboratorijih in v industriji. Reostati zagotavljajo stalno spreminjanje odpornosti na obremenitev. Ker pa se vrednost upora zmanjša, moč