Obsah:

CleanBot od Guillaume Meurillona: 8 krokov
CleanBot od Guillaume Meurillona: 8 krokov

Video: CleanBot od Guillaume Meurillona: 8 krokov

Video: CleanBot od Guillaume Meurillona: 8 krokov
Video: Presentation of NXTSpaceApps 2024, Júl
Anonim
CleanBot od Guillaume Meurillona
CleanBot od Guillaume Meurillona
CleanBot od Guillaume Meurillona
CleanBot od Guillaume Meurillona

Toto je sprievodca k projektu, ktorý som urobil pre školu. Cieľom bolo vytvoriť zariadenie s Raspberry Pi, ktoré by bolo pripojené k internetu, a zároveň zbierať údaje zo senzorov. Tieto údaje museli byť uložené v databáze (MySQL). Údaje bolo potrebné vizualizovať pomocou webovej stránky, kódovanej v Pythone s balíkom webapp balíka Flask a šablóny Jinja2.

Mojou myšlienkou bolo vytvoriť „hacknutý“robotický vysávač pomocou Raspberry Pi, Arduina, už pokazeného robotického vákua a niekoľkých senzorov.

Krok 1: Zhromažďovanie dielov

Zber dielov
Zber dielov
Zber dielov
Zber dielov
Zber dielov
Zber dielov
Zber dielov
Zber dielov

Predtým, ako som čokoľvek vlastne vytvoril, urobil som veľa prieskumov o tom, aké časti použiť, ako ich prepojiť, písať kurzy softvéru v Pythone a podobne.

Zoznam dielov bude zahrnutý ako súbor, aby ste mohli ľahko vyhľadať diely, ktoré budete potrebovať.

Vedľa Raspberry Pi som sa rozhodol použiť Arduino Uno, aby som mohol efektívne čítať svoje senzory bez namáhania svojho Raspberry Pi. Vybral som si tiež Uno, pretože má pekný takt a kvôli analógovým kolíkom. Mohol som použiť ADC (napr. MCP3008) pre svoj Raspberry Pi, ale potreboval by som oveľa viac káblov, bolo by to drahšie a moje Pi by muselo pracovať oveľa tvrdšie.

Potom som začal kontrolovať diely, ktoré boli použiteľné z pokazeného robotického vákua. Vnútorná elektronika bola poškodená, ale to nebol problém, pretože by som ich aj tak úplne vymenil. Našťastie jednosmerné motory stále fungovali, takže žiadny z nich nebolo potrebné vymeniť.

Zoznam položiek:

  • Raspberry Pi 3 s najmenej 8 GB microSD triedy 10 a puzdrom;
  • Malina Pi T-švec a nepájivá doska;
  • Arduino Uno alebo podobné (najlepšie nečínska verzia so slušným ADC, niektorí Číňania majú problémy s AREF) s nejakým prípadom;
  • Ethernetový kábel;
  • (Zlomený) robotický vysávač;
  • 3x ultrazvukové moduly HC-SR04;
  • 1x modul Hallovho senzora;
  • Niekoľko odporov v rôznych hodnotách;
  • LDR;
  • 6x lítium-iónové batérie 18650 + 3-článkové držiaky na 12 V (radšej by ste mali používať nové batérie alebo ešte lepšie používať LiPo batérie, tie vydržia oveľa dlhšie);
  • 18650 (alebo akýkoľvek iný typ batérie, ktorú budete používať) 12v 3-článková nabíjacia doska;
  • Niektoré PCB dosky pre domácich majstrov na spájkovanie vašich komponentov;
  • List polyuretánového plastu;
  • Prenosný / stolný počítač.

Zoznam nástrojov:

  • Vŕtačka s niekoľkými vrtákmi;
  • Uhlová brúska (nepoužívajte ju, ak nemáte skúsenosti) alebo niečo ako Dremel;
  • Kus brúsneho papiera;
  • Niekoľko skrutkovačov;
  • Superglue, montážne lepidlo, …;
  • Spájkovačka (na ľahšie spájkovanie vodičov použite mazivo);
  • Dvojica nožov na drôt a nástroj na odizolovanie.

Zoznam softvéru (voliteľné):

  • Adobe XD: drôtový model a vytvorenie prototypu;
  • Fritzing: vytvorenie elektrickej schémy;
  • PyCharm Professional: IDE Pythonu s možnosťami použitia nasadenia a vzdialeného tlmočníka;
  • Tmel: rýchle a jednoduché ssh spojenie s Pi;
  • Etcher.io: ľahký nástroj na flashovanie obrazu Raspbian na kartu SD;
  • Win32DiskImager: ľahký nástroj na vytvorenie obrazu z existujúceho nastavenia Raspbian;
  • Programátorský poznámkový blok: jednoduchý nástroj, ktorý môžete použiť na bezpečnú úpravu súboru /boot/cmdline.txt.

Krok 2: Sprejovanie a návrh rozhrania

Sprejovanie a návrh rozhrania
Sprejovanie a návrh rozhrania
Sprejovanie a návrh rozhrania
Sprejovanie a návrh rozhrania
Sprejovanie a návrh rozhrania
Sprejovanie a návrh rozhrania
Sprejovanie a návrh rozhrania
Sprejovanie a návrh rozhrania

Predtým, ako som začal vytvárať dizajn, som nastriekal exteriér, pretože farby sa mi vôbec nepáčili. Šiel som do obchodu a zobral som plastový základný náter, plechovku bieleho a tyrkysovú plechovku na opätovné nastriekanie vrchného kufra.

Potom, čo som sprejovú farbu nechal uschnúť, som vyhľadal presný hexadecimálny kód farby pre farbu, ktorú som použil, aby som mohol dokonale prispôsobiť svoje webové rozhranie svojmu zariadeniu. Nájdenie tohto hexadecimálneho kódu bolo veľmi jednoduché, pretože som použil grafity Montana 94 a hex a RGB kódy boli na ich webových stránkach.

Pre každú stránku svojho webu som vytvoril vysoko kvalitné drôtové modely, aby som veľmi dobre vedel, ako vytvorím toto rozhranie. Potom, čo som ukázal svoje rozhranie svojim učiteľom, som dostal radu, aby bolo pozadie trochu sivšie a tlačidlá biele, a výsledok bol podľa mňa dobrý.

Krok 3: Vytvorenie databázy

Vytvorenie databázy
Vytvorenie databázy

Ďalším logickým krokom bolo začať premýšľať o tom, aké údaje chcem uložiť do databázy MySQL. Nie je tak veľa ľudí, ktorí by chceli vedieť o ich vákuu, a tak som išiel s tabuľkami pre používateľov a ich prihlasovacími údajmi, ako aj s tabuľkami pre senzory (batéria, vzdialenosť a nádoba na prach).

Obrázok ukazuje rozloženie mojich tabuliek nakreslené v MySQL Workbench so všetkými vzťahmi medzi tabuľkami.

Pre svojich používateľov som chcel sledovať ich meno a priezvisko, aby som si prispôsobil rozhranie a e -maily. Na odosielanie e-mailov som samozrejme potreboval aj ich e-mailovú adresu. Tiež som pridal tabuľku, aby som mal prehľad o preferenciách e-mailov svojich používateľov (bez ohľadu na to, či chcú alebo nechcú dostávať e-maily). Posledná vec, ktorú som chcel uložiť o používateľoch, je ich úloha pre zariadenie. Používateľov rozdeľujem na správcov a bežných používateľov. Správcovia majú právo pridávať, odstraňovať a spravovať používateľov v systéme, zatiaľ čo bežní používatelia k týmto nástrojom nemajú prístup.

Nasledujúca tabuľka obsahuje „deviceruns“, čo sú skutočné spustenia, ktoré zariadenie vykonalo. Tieto zariadenia sú vo vlastníctve určitého používateľa (osoba, ktorá spustila beh) a majú na výpočet runtime čas začiatku a konca.

Ďalšia tabuľka sa používa na prepojenie senzordát s každým zariadením. Samotné senzory sú uložené v ďalšej tabuľke, ktorá obsahuje ich ID, názov a popis.

Krok 4: Spojenie dielov dohromady

Spojenie dielov dohromady
Spojenie dielov dohromady
Spojenie dielov dohromady
Spojenie dielov dohromady

Po vytvorení schémy databázy som začal používať dosky a káble na prepojenie všetkých častí dohromady v jednom funkčnom prototype.

Krok 5: Nastavenie Raspberry Pi

Nastavenie Raspberry Pi
Nastavenie Raspberry Pi

Ak si chcete stiahnuť najnovší obrázok Raspbian, navštívte webovú stránku Raspbian. Tu si môžete vybrať, ktoré distro chcete stiahnuť. Pre rýchlejšiu prevádzku si môžete stiahnuť bezhlavú distribúciu, kvôli menšiemu využívaniu pamäte RAM, alebo si stiahnuť pracovnú plochu pomocou grafického rozhrania, ak dávate prednosť grafickému používateľskému rozhraniu.

Ak chcete nainštalovať operačný systém, jednoducho si stiahnite Etcher, je to nástroj GUI na rýchle a ľahké zapísanie obrázku na vašu kartu micro SD.

Ak chcete povoliť režim bez hlavy, aby ste mali prístup k pi, musíte si do počítača nainštalovať Putty. Ďalším krokom je prejsť do priečinka Boot vytvoreného spoločnosťou Etcher a otvoriť súbor cmdline.txt pomocou obľúbeného textového editora, bývalého programátora Poznámkový blok. Pridajte tento text na koniec súboru:

ip = 169,254.10.1

Len sa uistite, že nevytvoríte nový riadok, pridajte ho na koniec riadku!

Ďalej sa vráťte do koreňového adresára zavádzacieho priečinka a vytvorte súbor s názvom ssh. Nepridávajte žiadne rozšírenie, zabezpečí sa tým spustenie servera SSH pri každom štarte vášho Pi. Teraz jednoducho vložte kartu SD do počítača Pi, pripojte k nemu Pi dostatočný zdroj energie a medzi kábel Pi a počítač zapojte ethernetový kábel.

Otvorte tmel a zadajte IP adresu: 169.254.10.1. Teraz kliknite na ÁNO a prihláste sa, predvolené užívateľské meno je pi a heslo je malinové.

Potom vykonajte nasledujúci príkaz, aby ste získali aktuálne informácie:

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

Posledným krokom je vytvorenie virtuálneho tlmočníka Pythonu na vašom Raspberry Pi, čím sa spustí váš kód. Ak to chcete urobiť, jednoducho otvorte tmel a zadajte nasledujúci príkaz:

sudo mkdir project1

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

Krok 6: Písanie webovej aplikácie

Písanie webovej aplikácie
Písanie webovej aplikácie

Po prepojení každej časti a nastavení Raspberry Pi som začal písať svoju hlavnú webovú aplikáciu pomocou Flask a Jinja2. Flask je ľahko použiteľný backend framework pre Python a Jinja2 je šablónovací jazyk, ktorý som použil. S Jinja môžete vytvárať normálne súbory HTML s pomocou pre slučky, ak štruktúry a podobne.

Pri kódovaní backendu som napísal aj frontend pre aplikáciu, vrátane HTML, CSS a JavaScript pre niektoré prvky. Pre svoje štýly som použil metódu ITCSS a notáciu BEM.

Okrem hlavnej webovej aplikácie som vytvoril aj ďalšie 2 hlavné programy. Jeden je napísaný tak, aby odoslal IP adresu zariadenia užívateľom v zozname. Každý registrovaný používateľ, ktorý prijal prijímanie e -mailov, dostane e -mail s odkazom na spustenie webového rozhrania. Tento program beží ako služba systemd.

Druhý hlavný súbor je pre skutočné zariadenie. Túto hlavnú položku je možné zavolať prostredníctvom mojej aplikácie Flask na spustenie a zastavenie zariadenia a zhromažďovanie údajov. Prostredníctvom tohto systému sa zozbierané údaje tiež nahrajú do databázy zariadenia. Tieto údaje je potom možné vizualizovať vo webovej aplikácii.

Webová aplikácia je pripojená k hlavnej prevádzke zariadenia pomocou Python Threading. Keď používateľ klikne na tlačidlo Štart, vygeneruje sa vlákno na spustenie zariadenia na pozadí. Medzitým si používateľ môže aplikáciu dokonale prezerať. Po kliknutí na tlačidlo Zastaviť sa toto vlákno zastaví a zariadenie sa zastaví.

Krok 7: Vytváranie kusov na dokončenie obalu

Vytváranie dielov na dokončenie obalu
Vytváranie dielov na dokončenie obalu
Vytváranie dielov na dokončenie obalu
Vytváranie dielov na dokončenie obalu
Vytváranie dielov na dokončenie obalu
Vytváranie dielov na dokončenie obalu
Vytváranie dielov na dokončenie obalu
Vytváranie dielov na dokončenie obalu

Po napísaní najväčšej časti aplikácie som začal upravovať kryt zariadenia, aby sa moje senzory a ďalšie časti skutočne zmestili. Za týmto účelom som si kúpil list polyuretánu v miestnom obchode pre domácich majstrov a začal som rezať 2 konzoly. Použil som tento polyuretánový list, pretože nie je pravdepodobné, že sa pri rezaní rozpadne na kusy, a pretože je dosť flexibilný, čo je perfektné, pretože môj robot má kruhový tvar.

Prvá konzola je vyrobená tak, aby vyplnila otvor v hornej časti, kde predtým sedel displej. Displej som nahradil vypínačom, aby bolo možné batérie skutočne vypnúť.

Druhá konzola je oporou pre moje ultrazvukové senzory HC-SR04, ktoré sú umiestnené v prednej časti zariadenia.

Posledná vec, ktorú bolo treba urobiť, bolo vyrezať otvor vo výstužiach jedného z kolies a vložiť magnet, aby som mohol sledovať otáčky kolesa.

Po dokončení týchto konzol som ich ešte nastriekol farbou, ktorá mi zostala, aby to zodpovedalo dizajnu.

Krok 8: Kód

Ak chcete nainštalovať program, stiahnite si súbor code.zip a rozbaľte ho v adresári project1.

Ďalej vykonajte tento príkaz v termináli na Raspbian alebo Putty:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl enable project-1* sudo systemctl enable project1* sudo systemctl restart nginx

Potom otvorte generovanú databázu a vytvorte nového používateľa s hašovaným heslom Argon2. Teraz môžete program použiť.

Užite si to!

Odporúča: