Tartalomjegyzék:

CleanBot, Guillaume Meurillon: 8 lépés
CleanBot, Guillaume Meurillon: 8 lépés

Videó: CleanBot, Guillaume Meurillon: 8 lépés

Videó: CleanBot, Guillaume Meurillon: 8 lépés
Videó: Omgaan met verschil in beeld en muziek 2024, November
Anonim
CleanBot, Guillaume Meurillon
CleanBot, Guillaume Meurillon
CleanBot, Guillaume Meurillon
CleanBot, Guillaume Meurillon

Ez egy útmutató egy projekthez, amelyet iskolába készítettem. A cél egy olyan eszköz létrehozása volt a Raspberry Pi -vel, amely csatlakozott az internethez, miközben adatokat gyűjtött az érzékelőkről. Ezeket az adatokat (MySQL) adatbázisban kellett tárolni. Az adatokat egy webhellyel kellett vizualizálni, Python -ban kódolni a Flask webapp csomaggal és a Jinja2 sablonnal.

Az ötletem egy „feltört” robotporszívó létrehozása volt, egy Raspberry Pi, egy Arduino, egy már törött robotporszívó és egy csomó érzékelő segítségével.

1. lépés: Az alkatrészek összegyűjtése

Az alkatrészek gyűjtése
Az alkatrészek gyűjtése
Az alkatrészek gyűjtése
Az alkatrészek gyűjtése
Az alkatrészek gyűjtése
Az alkatrészek gyűjtése
Az alkatrészek gyűjtése
Az alkatrészek gyűjtése

Mielőtt bármit is létrehoznék, sok kutatást végeztem arról, hogy milyen alkatrészeket kell használni, hogyan kell csatlakoztatni őket, szoftverosztályokat írtam Pythonban és így tovább.

Az alkatrészlista fájlként fog szerepelni, így könnyedén megkeresheti a szükséges alkatrészeket.

Úgy döntöttem, hogy egy Arduino Uno -t használok a Raspberry Pi mellett, hogy hatékonyan leolvashassam az érzékelőimet anélkül, hogy megterhelném a Raspberry Pi -t. Az Uno mellett is döntöttem, mert szép órajele van, és az analóg érintkezők miatt. Használhattam volna egy ADC -t (pl. MCP3008) a Raspberry Pi -hez, de sokkal több vezetékre lett volna szükségem, drágább lett volna, és a Pi -nek sokkal keményebben kell dolgoznia.

Ezután elkezdtem ellenőrizni azokat az alkatrészeket, amelyek használhatóak a törött robotporszívóból. A belső elektronika megsérült, de ez nem jelentett problémát, mert ezeket teljesen lecserélném. Szerencsére az egyenáramú motorok még mindig működtek, így egyiket sem kellett cserélni.

Alkatrész lista:

  • Raspberry Pi 3, legalább 8 GB -os MicroSD 10. osztályú és tokkal;
  • Raspberry Pi T-cobbler és kenyérlap (ok);
  • Arduino Uno vagy hasonló (lehetőleg nem kínai verzió, tisztességes ADC-vel, néhány kínainak AREF-problémái vannak) valamilyen esettel;
  • Ethernet kábel;
  • (Törött) robot vákuum;
  • 3x HC-SR04 ultrahangos modul;
  • 1x hall érzékelő modul;
  • Több ellenállás különböző értékekben;
  • Egy LDR;
  • 6x 18650 Li-ion akkumulátor + 3 cella tartó 12V-ra (lehetőleg új elemeket vagy még jobb LiPo akkumulátorokat használjon, ezek tovább tartanak);
  • 18650 (vagy bármilyen típusú akkumulátort használ) 12v 3 cellás töltő PCB;
  • Néhány NYÁK barkácslap az alkatrészek forrasztásához;
  • Egy poliuretán műanyag lap;
  • Laptop / asztali számítógép.

Szerszámlista:

  • Fúró több fúrószárral;
  • Egy sarokcsiszoló (ne használja, ha nincs tapasztalata) vagy valami hasonló Dremel;
  • Egy darab csiszolópapír;
  • Több csavarhúzó;
  • Szuperragasztó, szerelőragasztó,…;
  • Forrasztópáka (használjon zsírt a vezetékek könnyebb forrasztásához);
  • Egy pár drótvágó és egy lehúzó szerszám.

Szoftverlista (opcionális):

  • Adobe XD: drótvázolás és prototípus létrehozása;
  • Fritzing: elektromos séma létrehozása;
  • PyCharm Professional: Python IDE a telepítés és a távoli tolmács használatának lehetőségeivel;
  • Putty: gyors és egyszerű ssh kapcsolat Pi -vel;
  • Etcher.io: egyszerű eszköz a Raspbian kép SD -kártyára való villanásához;
  • Win32DiskImager: egyszerű eszköz kép létrehozásához egy meglévő Raspbian beállításból;
  • Programozók Jegyzettömb: egyszerű eszköz, amellyel biztonságosan szerkesztheti a /boot/cmdline.txt fájlt.

2. lépés: Spray-festés és az interfész tervezése

Spray-festés és az interfész tervezése
Spray-festés és az interfész tervezése
Spray-festés és az interfész tervezése
Spray-festés és az interfész tervezése
Spray-festés és az interfész tervezése
Spray-festés és az interfész tervezése
Spray-festés és az interfész tervezése
Spray-festés és az interfész tervezése

Mielőtt hozzáfogtam a dizájn létrehozásához, festettem a külső felületet, mert a színek egyáltalán nem tetszettek. Bementem a boltba, és elővettem egy műanyag alapozót, egy doboz fehér és egy türkizkék dobozt, hogy újra feltöltsem a felső tokot.

Miután hagytam megszáradni a festékszóró festéket, megkerestem a használt hexa pontos hexadecimális színkódját, hogy tökéletesen illeszkedhessek a webes felülethez a készülékemhez. Ezt a hexa kódot meglehetősen könnyű volt megtalálni, mivel a Montana 94 graffitit használtam, és a hexa és RGB kódok a honlapjukon voltak.

Nagy pontosságú drótvázakat készítettem a webhelyem minden oldalához, így tökéletesen tudtam, hogyan fogom létrehozni ezt a felületet. Miután megmutattam a kezelőfelületet a tanáraimnak, azt a tanácsot kaptam, hogy a háttér kissé szürkébb legyen, a gombok pedig fehérek, és az eredmény szerintem jó volt.

3. lépés: Az adatbázis létrehozása

Az adatbázis létrehozása
Az adatbázis létrehozása

A következő logikus lépés az volt, hogy elkezdtem gondolkodni azon, hogy milyen adatokat szeretnék tárolni a MySQL adatbázisban. Nincs olyan sok ember, aki szívesen tudna a vákuumról, ezért a felhasználók és a bejelentkezési adataik tábláival, valamint az érzékelőkhöz (akkumulátor, távolság és portartály) tartozó táblázatokkal mentem.

A képen a MySQL Workbench -ben rajzolt tábláim elrendezése látható, a táblák közötti összes kapcsolattal.

Felhasználóim számára nyomon akartam követni nevüket és vezetéknevüket, hogy személyre szabhassam a felületet és az e -maileket. Természetesen e-mailek küldéséhez szükségem volt az e-mail címükre is. Hozzáadtam egy táblázatot is, hogy nyomon kövessem a felhasználók e-mail beállításait (függetlenül attól, hogy e-maileket akarnak-e kapni). Az utolsó dolog, amit el akartam tárolni a felhasználókról, az a szerepük az eszközben. A felhasználókat rendszergazdaként és normál felhasználókként osztom fel. A rendszergazdáknak joguk van hozzáadni, eltávolítani és kezelni a rendszer felhasználóit, míg a normál felhasználók nem férhetnek hozzá ezekhez az eszközökhöz.

A következő táblázat a "deviceruns" -t tartalmazza, amelyek az eszköz tényleges futtatásai. A devicerunok egy bizonyos felhasználó (a futtatást indító személy) tulajdonában vannak, és rendelkeznek a kezdési és befejezési idővel, hogy kiszámítsák a futási időt.

Egy másik táblázatot használnak az érzékelési adatok összekapcsolására az egyes eszközökhöz. Magukat az érzékelőket egy másik táblázat tárolja, amely tartalmazza az azonosítójukat, nevét és leírását.

4. lépés: Az alkatrészek összekapcsolása

Az alkatrészek összekapcsolása
Az alkatrészek összekapcsolása
Az alkatrészek összekapcsolása
Az alkatrészek összekapcsolása

Az adatbázis -séma létrehozása után elkezdtem használni a deszkákat és vezetékeket az összes alkatrész összekapcsolásához egy működő prototípusban.

5. lépés: A Raspberry Pi beállítása

A Raspberry Pi beállítása
A Raspberry Pi beállítása

A Raspbian legfrissebb képének letöltéséhez menjen a Raspbian webhelyre. Itt kiválaszthatja, hogy melyik disztribúciót szeretné letölteni. A gyorsabb működés érdekében letöltheti a fej nélküli disztribúciót, kevesebb RAM -ot használhat, vagy letöltheti az asztalt GUI -val, ha a grafikus felhasználói felületet részesíti előnyben.

Az operációs rendszer telepítéséhez egyszerűen töltse le az Etcher programot. Ez egy grafikus felhasználói felület, amely gyorsan és egyszerűen írja be a képet a micro SD kártyára.

A fej nélküli mód engedélyezéséhez és a pi eléréséhez telepítenie kell a Putty -t a számítógépére. A következő lépés az Etcher által létrehozott Boot mappa, és a cmdline.txt fájl megnyitása a kedvenc szövegszerkesztőjével, az Ex Programmers Notepad segítségével. Adja hozzá ezt a szöveget a fájl végéhez:

ip = 169.254.10.1

Csak ügyeljen arra, hogy ne hozzon létre új sort, ezt adja hozzá a sor végéhez!

Ezután térjen vissza a Boot mappa gyökeréhez, és hozzon létre egy ssh nevű fájlt. Ne adjon hozzá bővítményt, ez biztosítja, hogy az SSH szerver minden alkalommal elindul, amikor a Pi elindul. Most egyszerűen helyezze az SD -kártyát a Pi -be, csatlakoztasson elegendő áramforrást a Pi -hez, és adjon hozzá egy Ethernet -kábelt a Pi és a számítógép közé.

Nyissa meg a gittet, és írja be az IP -címet: 169.254.10.1. Most kattintson az IGEN gombra, és jelentkezzen be, az alapértelmezett felhasználónév a pi, a jelszó pedig málna.

Ezután hajtsa végre a következő parancsot a frissítéshez:

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

Az utolsó lépés egy virtuális Python -tolmács létrehozása a Raspberry Pi -n, ez végrehajtja a kódot. Ehhez egyszerűen nyissa meg a gittet, és írja be a következőt:

sudo mkdir project1

cd project1 python3 -m pip install -upgrade pip setuptools wheel virtualenv python3 -m venv -rendszer -site -csomagok venv

6. lépés: A webalkalmazás írása

A webalkalmazás írása
A webalkalmazás írása

Minden alkatrész csatlakoztatása és a Raspberry Pi beállítása után elkezdtem írni a fő webalkalmazásomat a Flask és a Jinja2 segítségével. A Flask egy könnyen használható háttérrendszer a Python számára, és a Jinja2 az általam használt sablonnyelv. A Jinja segítségével normál HTML fájlokat hozhat létre hurkokhoz, struktúrákhoz stb.

A háttérprogram kódolása közben írtam az alkalmazás kezelőfelületét is, beleértve egyes elemek HTML -jét, CSS -jét és JavaScript -jét. Stíluslapjaimhoz az ITCSS módszert és a BEM jelölést használtam.

A fő webalkalmazáson kívül 2 másik fő programot is készítettem. Az egyik az, hogy elküldje az eszköz IP -címét a listában szereplő felhasználóknak. Minden regisztrált felhasználó, aki elfogadta az e -mailek fogadását, kap egy e -mailt a webes felület elindításához szükséges linkkel. Ez a program rendszerezett szolgáltatásként fut.

A másik fő fájl a tényleges eszközre vonatkozik. Ez a main a Flask alkalmazásomon keresztül hívható, az eszköz indításához és leállításához, valamint adatok gyűjtéséhez. Az összegyűjtött adatokat ezen a falon keresztül is feltöltik az eszköz adatbázisába. Ezeket az adatokat ezután a webes alkalmazásban lehet megjeleníteni.

A webalkalmazás a Python Threading segítségével csatlakozik az eszköz futtatásához. Amikor a felhasználó rákattint a Start gombra, egy szál generálódik az eszköz futtatásához a háttérben. Eközben a felhasználó tökéletesen böngészhet az alkalmazásban. Ha a stop gombra kattint, ez a szál leáll, és így az eszköz leáll.

7. lépés: Darabok létrehozása a burkolat befejezéséhez

Darabok készítése a burkolat befejezéséhez
Darabok készítése a burkolat befejezéséhez
Darabok készítése a burkolat befejezéséhez
Darabok készítése a burkolat befejezéséhez
Darabok készítése a burkolat befejezéséhez
Darabok készítése a burkolat befejezéséhez
Darabok készítése a burkolat befejezéséhez
Darabok készítése a burkolat befejezéséhez

Miután megírtam az alkalmazás legnagyobb részét, elkezdtem módosítani az eszköz burkolatát, hogy az érzékelőim és más részeim valóban illeszkedjenek. Ehhez vettem egy poliuretán lapot a helyi barkácsüzletben, és elkezdtem vágni 2 konzolot. Ezt a poliuretánlapot használtam, mivel nem valószínű, hogy darabokra törik darabolás közben, és mivel meglehetősen rugalmas, ami tökéletes, mivel a robotom kör alakú.

Az első konzol egy lyuk kitöltésére készült a tetején, ahol egy kijelző szokott ülni. A kijelzőt egy ki/be kapcsolóra cseréltem, hogy az akkumulátorokat ténylegesen le lehessen kapcsolni.

A másik tartó a HC-SR04 ultrahangos érzékelőim támogatója, amelyek a készülék elején találhatók.

Az utolsó dolog, amit meg kellett tennie, az volt, hogy kivágott egy lyukat az egyik kerék megerősítésében, és behelyezett egy mágnest, hogy figyelemmel kísérhessem a kerék forgását.

Miután befejezte ezeket a zárójeleket, a maradék festékkel is befestettem, hogy illeszkedjenek a dizájnhoz.

8. lépés: A kód

A program telepítéséhez töltse le a code.zip fájlt, és bontsa ki a project1 könyvtárban.

Ezután hajtsa végre ezt a parancsot egy Raspbian vagy Putty terminálon:

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

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl engedélyezze a projektet-1* sudo systemctl engedélyezze a projektet1* sudo systemctl indítsa újra nginx

Ezután nyissa meg a létrehozott adatbázist, és hozzon létre egy új felhasználót Argon2 kivonatolt jelszóval. Most már használhatja a programot.

Élvezd!

Ajánlott: