Obsah:
- Krok 1: Sbírání dílů
- Krok 2: Malování sprejem a návrh rozhraní
- Krok 3: Vytvoření databáze
- Krok 4: Spojení dílů dohromady
- Krok 5: Nastavení Raspberry Pi
- Krok 6: Psaní webové aplikace
- Krok 7: Vytváření kusů k dokončení pouzdra
- Krok 8: Kód
Video: CleanBot od Guillaume Meurillona: 8 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
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ů
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í
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
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
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
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
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
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:
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Akustická levitace s Arduino Uno krok za krokem (8 kroků): 8 kroků
Akustická levitace s Arduino Uno krok za krokem (8 kroků): Ultrazvukové měniče zvuku L298N Dc samice napájecí zdroj s mužským DC pinem Arduino UNOBreadboard Jak to funguje: Nejprve nahrajete kód do Arduino Uno (je to mikrokontrolér vybavený digitálním a analogové porty pro převod kódu (C ++)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): 6 kroků (s obrázky)
Bolt - Noční hodiny bezdrátového nabíjení DIY (6 kroků): Indukční nabíjení (známé také jako bezdrátové nabíjení nebo bezdrátové nabíjení) je druh bezdrátového přenosu energie. Využívá elektromagnetickou indukci k poskytování elektřiny přenosným zařízením. Nejběžnější aplikací je bezdrátové nabíjení Qi
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: 13 kroků (s obrázky)
Jak rozebrat počítač pomocí jednoduchých kroků a obrázků: Toto je návod, jak rozebrat počítač. Většina základních komponent je modulární a lze je snadno odstranit. Je však důležité, abyste o tom byli organizovaní. To vám pomůže zabránit ztrátě součástí a také při opětovné montáži
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: 5 kroků
Banka přepínaného zatěžovacího odporu s menší velikostí kroku: Banky zatěžovacích odporů jsou vyžadovány pro testování energetických produktů, pro charakterizaci solárních panelů, v testovacích laboratořích a v průmyslových odvětvích. Reostaty zajišťují nepřetržité kolísání odporu zátěže. Jak se však hodnota odporu snižuje, výkon