Obsah:

CleanBot od Guillaume Meurillona: 8 kroků
CleanBot od Guillaume Meurillona: 8 kroků

Video: CleanBot od Guillaume Meurillona: 8 kroků

Video: CleanBot od Guillaume Meurillona: 8 kroků
Video: Presentation of NXTSpaceApps 2024, Listopad
Anonim
CleanBot od Guillaume Meurillona
CleanBot od Guillaume Meurillona
CleanBot od Guillaume Meurillona
CleanBot od Guillaume Meurillona

Toto je průvodce projektem, který jsem vytvořil pro školu. Cílem bylo vytvořit zařízení s Raspberry Pi, které by bylo připojeno k internetu, a přitom sbírat data ze senzorů. Tato data musela být uložena v databázi (MySQL). Data musela být vizualizována pomocí webové stránky, kódované v Pythonu s balíčkem Flaapp webapp a Jinja2 templating.

Moje myšlenka byla vytvořit 'hacknutý' robotický vysavač pomocí Raspberry Pi, Arduina, již rozbitého robotického vakua a spousty senzorů.

Krok 1: Sbírání dílů

Sbírání dílů
Sbírání dílů
Sbírání dílů
Sbírání dílů
Sbírání dílů
Sbírání dílů
Sbírání dílů
Sbírání dílů

Než jsem vlastně cokoli vytvořil, udělal jsem spoustu průzkumů, jaké části použít, jak je propojit, psát softwarové třídy v Pythonu a tak dále.

Seznam dílů bude zahrnut jako soubor, abyste mohli snadno hledat díly, které budete potřebovat.

Rozhodl jsem se použít Arduino Uno vedle Raspberry Pi, abych mohl efektivně číst své senzory, aniž bych stresoval svůj Raspberry Pi. Také jsem si vybral pro Uno, protože má pěkný takt a kvůli analogovým pinům. Mohl jsem pro svůj Raspberry Pi použít ADC (např. MCP3008), ale potřeboval bych mnohem více vodičů, bylo by to dražší a moje Pi by muselo pracovat mnohem tvrději.

Poté jsem začal kontrolovat části, které byly použitelné z rozbitého vakua robota. Vnitřní elektronika byla poškozená, ale to nebyl problém, protože bych je stejně úplně vyměnil. Naštěstí stejnosměrné motory stále fungovaly, takže žádný z nich nemusel být vyměněn.

Seznam dílů:

  • Raspberry Pi 3 s minimálně 8 GB MicroSD třídy 10 a pouzdrem;
  • Raspberry Pi T-cobbler a breadboard (s);
  • Arduino Uno nebo podobné (nejlépe nečínská verze se slušným ADC, někteří Číňané mají problémy s AREF) s nějakým případem;
  • Ethernetový kabel;
  • (Rozbitý) robotický vysavač;
  • 3x HC-SR04 ultrazvukové moduly;
  • 1x modul Hallova senzoru;
  • Několik rezistorů v různých hodnotách;
  • LDR;
  • 6x 18650 Li-ion baterie + 3článkové držáky na 12V (přednostně byste měli použít nové baterie nebo ještě lépe použít LiPo baterie, ty vydrží mnohem déle);
  • 18650 (nebo jakýkoli typ baterie, kterou použijete) 12v 3článková nabíjecí deska;
  • Některé desky pro PCB DIY k pájení vašich součástí;
  • Deska z polyuretanového plastu;
  • Notebook / stolní počítač.

Seznam nástrojů:

  • Vrták s několika vrtáky;
  • Úhlová bruska (nepoužívejte ji, pokud nemáte zkušenosti) nebo něco jako Dremel;
  • Kousek brusného papíru;
  • Několik šroubováků;
  • Superglue, montážní lepidlo,…;
  • Páječka (pro snadnější pájení vodičů použijte vazelínu);
  • Dvojice řezačů drátu a odizolovací nástroj.

Seznam softwaru (volitelný):

  • Adobe XD: drátový model a vytvoření prototypu;
  • Fritzing: vytvoření elektrického schématu;
  • PyCharm Professional: Python IDE s možnostmi použití nasazení a vzdáleného tlumočníka;
  • Tmel: rychlé a snadné ssh spojení s Pi;
  • Etcher.io: snadný nástroj pro flashování obrazu Raspbian na SD kartu;
  • Win32DiskImager: snadný nástroj pro vytvoření obrazu ze stávajícího nastavení Raspbian;
  • Programátorský poznámkový blok: jednoduchý nástroj, který můžete použít k bezpečné úpravě souboru /boot/cmdline.txt.

Krok 2: Malování sprejem a návrh rozhraní

Spray-painting & Designing the Interface
Spray-painting & Designing the Interface
Spray-painting & Designing the Interface
Spray-painting & Designing the Interface
Spray-painting & Designing the Interface
Spray-painting & Designing the Interface
Malování sprejem a návrh rozhraní
Malování sprejem a návrh rozhraní

Než jsem začal tvořit design, nastříkal jsem exteriér, protože barvy se mi vůbec nelíbily. Šel jsem do obchodu a vzal plastový základní nátěr, plechovku bílého a plechovku tyrkysu, abych znovu nastříkal vrchní kufr.

Poté, co jsem sprejovou barvu nechal zaschnout, jsem vyhledal přesný hexadecimální kód barvy pro barvu, kterou jsem použil, abych mohl dokonale sladit své webové rozhraní se svým zařízením. Nalezení tohoto hexadecimálního kódu bylo docela snadné, protože jsem použil grafiku Montana 94 a hex a RGB kódy byly na jejich webových stránkách.

Pro každou stránku svého webu jsem vytvořil vysoce kvalitní drátové modely, takže jsem naprosto přesně věděl, jak toto rozhraní vytvořím. Poté, co jsem ukázal své rozhraní svým učitelům, dostal jsem radu, aby bylo pozadí trochu šedější a tlačítka bílá, a výsledek byl podle mě dobrý.

Krok 3: Vytvoření databáze

Vytvoření databáze
Vytvoření databáze

Dalším logickým krokem bylo začít přemýšlet o tom, jaká data chci ukládat do databáze MySQL. Není tolik lidí, kteří by rádi věděli o jejich vakuu, a tak jsem šel s tabulkami pro uživatele a jejich přihlašovacími údaji, stejně jako s tabulkami pro senzory (baterie, vzdálenost a nádoba na prach).

Obrázek ukazuje rozložení mých tabulek, nakreslené v MySQL Workbench, se všemi vztahy mezi tabulkami.

Pro své uživatele jsem chtěl sledovat jejich jméno a příjmení pro přizpůsobení rozhraní a e -mailů. Samozřejmě pro zasílání e-mailů jsem potřeboval i jejich e-mailovou adresu. Také jsem přidal tabulku, abych měl přehled o preferencích e-mailů mých uživatelů (bez ohledu na to, zda chtějí nebo nechtějí dostávat e-maily). Poslední věc, kterou jsem chtěl uložit o uživatelích, je jejich role pro zařízení. Rozděluji uživatele na administrátory a běžné uživatele. Správci mají právo přidávat, odebírat a spravovat uživatele v systému, zatímco běžní uživatelé nemají k těmto nástrojům přístup.

Další tabulka obsahuje „deviceruns“, což jsou skutečné běhy, které zařízení provedlo. Deviceruns jsou ve vlastnictví určitého uživatele (osoba, která spustila běh) a mají čas začátku a konce pro výpočet doby běhu.

Další tabulka slouží k propojení senzorordat s každým zařízením. Samotná čidla jsou uložena v další tabulce, která obsahuje jejich id, jméno a popis.

Krok 4: Spojení dílů dohromady

Spojení dílů dohromady
Spojení dílů dohromady
Spojení dílů dohromady
Spojení dílů dohromady

Po vytvoření schématu databáze jsem začal pomocí prkének a kabeláže spojovat všechny části dohromady v jeden funkční prototyp.

Krok 5: Nastavení Raspberry Pi

Nastavení Raspberry Pi
Nastavení Raspberry Pi

Chcete -li stáhnout nejnovější obrázek Raspbian, přejděte na webovou stránku Raspbian. Zde si můžete vybrat, které distro chcete stáhnout. Pro rychlejší provoz si můžete stáhnout bezhlavé distro, kvůli menšímu využití RAM, nebo si stáhnout plochu pomocí GUI, pokud dáváte přednost grafickému uživatelskému rozhraní.

Chcete -li nainstalovat operační systém, jednoduše si stáhněte Etcher, je to nástroj GUI pro rychlé a snadné zapisování obrázku na vaši kartu micro SD.

Chcete -li povolit bezhlavý režim, abyste měli přístup k pi, musíte si do počítače nainstalovat Putty. Dalším krokem je přejít do spouštěcí složky vytvořené společností Etcher a otevřít soubor cmdline.txt pomocí vašeho oblíbeného textového editoru, například Programmers Notepad. Přidejte tento text na konec souboru:

ip = 169,254.10.1

Jen se ujistěte, že nevytvoříte nový řádek, přidejte jej na konec řádku!

Dále se vraťte zpět do kořenového adresáře spouštěcí složky a vytvořte soubor s názvem ssh. Nepřidávejte žádné rozšíření, tím zajistíte, že se server SSH spustí při každém spuštění vašeho Pi. Nyní jednoduše vložte kartu SD do Pi, připojte k Pi dostatečný zdroj energie a přidejte ethernetový kabel mezi Pi a počítač.

Otevřete tmel a zadejte IP adresu: 169.254.10.1. Nyní klikněte na ANO a přihlaste se, výchozí uživatelské jméno je pi a heslo je malina.

Poté spusťte následující příkaz, abyste získali aktuální informace:

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

Posledním krokem je vytvoření virtuálního tlumočníka Pythonu na vašem Raspberry Pi, čímž se spustí váš kód. Chcete -li to provést, jednoduše otevřete tmel a zadejte následující:

sudo mkdir project1

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

Krok 6: Psaní webové aplikace

Psaní webové aplikace
Psaní webové aplikace

Po připojení všech částí a nastavení Raspberry Pi jsem začal psát svou hlavní webovou aplikaci pomocí Flask a Jinja2. Flask je snadno použitelný backend framework pro Python a Jinja2 je šablonovací jazyk, který jsem použil. Pomocí Jinja můžete vytvářet normální soubory HTML pomocí smyček, struktur a podobně.

Při kódování backendu jsem také napsal frontend pro aplikaci, včetně HTML, CSS a JavaScript pro některé prvky. Pro své šablony stylů jsem použil metodu ITCSS a notaci BEM.

Kromě hlavní webové aplikace jsem vytvořil také 2 další hlavní programy. Jeden je napsán pro odeslání IP adresy zařízení uživatelům v seznamu. Každý registrovaný uživatel, který přijal přijímání e -mailů, obdrží e -mail s odkazem na spuštění webového rozhraní. Tento program běží jako služba systemd.

Druhý hlavní soubor je pro skutečné zařízení. Tuto hlavní část lze vyzvat prostřednictvím mé aplikace Flask ke spuštění a zastavení zařízení a shromažďování dat. Shromážděná data se také nahrávají do databáze zařízení prostřednictvím této hlavní složky. Tato data pak lze vizualizovat ve webové aplikaci.

Webová aplikace je připojena k hlavnímu běhu zařízení pomocí Python Threading. Když uživatel klikne na tlačítko Start, vygeneruje se vlákno pro spuštění zařízení na pozadí. Uživatel si přitom může aplikaci dokonale procházet. Když kliknete na stop, toto vlákno se zastaví a zařízení se zastaví.

Krok 7: Vytváření kusů k dokončení pouzdra

Vytváření kusů k dokončení pouzdra
Vytváření kusů k dokončení pouzdra
Vytváření kusů k dokončení pouzdra
Vytváření kusů k dokončení pouzdra
Vytváření kusů k dokončení pouzdra
Vytváření kusů k dokončení pouzdra
Vytváření kusů k dokončení pouzdra
Vytváření kusů k dokončení pouzdra

Po napsání největší části aplikace jsem začal upravovat plášť zařízení, aby se moje senzory a další části skutečně vešly. Za tímto účelem jsem v místním obchodě pro kutily koupil list polyuretanu a začal řezat 2 držáky. Použil jsem tento polyuretanový list, protože není pravděpodobné, že by se při řezání rozbil na kusy, a protože je poměrně pružný, což je perfektní, protože můj robot má kruhový tvar.

První držák je vyroben tak, aby vyplnil otvor v horní části, kde dříve seděl displej. Displej jsem nahradil vypínačem, aby bylo možné baterie skutečně vypnout.

Druhý držák je oporou pro mé ultrazvukové senzory HC-SR04, které jsou umístěny v přední části zařízení.

Poslední věcí, kterou bylo třeba udělat, bylo vyříznout otvor ve výztuhách jednoho z kol a vložit magnet, abych mohl sledovat otáčky kola.

Po dokončení těchto držáků jsem je také nastříkal barvou, která mi zbyla, aby to odpovídalo designu.

Krok 8: Kód

Chcete -li nainstalovat program, stáhněte si soubor code.zip a rozbalte jej v adresáři project1.

Dále proveďte tento příkaz v terminálu na Raspbian nebo 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

Dále otevřete generovanou databázi a vytvořte nového uživatele s hašovaným heslem Argon2. Nyní můžete program použít.

Užívat si!

Doporučuje: