Spisu treści:

CleanBot autorstwa Guillaume Meurillon: 8 kroków
CleanBot autorstwa Guillaume Meurillon: 8 kroków

Wideo: CleanBot autorstwa Guillaume Meurillon: 8 kroków

Wideo: CleanBot autorstwa Guillaume Meurillon: 8 kroków
Wideo: Новинка робот-мойщик окон Cleanbot Ultrasprey 2024, Listopad
Anonim
CleanBot autorstwa Guillaume Meurillon
CleanBot autorstwa Guillaume Meurillon
CleanBot autorstwa Guillaume Meurillon
CleanBot autorstwa Guillaume Meurillon

To jest przewodnik po projekcie, który zrobiłem dla szkoły. Celem było stworzenie urządzenia z Raspberry Pi, które było połączone z Internetem, jednocześnie zbierając dane z czujników. Te dane musiały być przechowywane w bazie danych (MySQL). Dane musiały zostać zwizualizowane za pomocą strony internetowej, zakodowanej w Pythonie z pakietem aplikacji internetowej Flask i szablonem Jinja2.

Mój pomysł polegał na stworzeniu „zhakowanego” robota próżniowego przy użyciu Raspberry Pi, Arduino, już zepsutego robota próżniowego i kilku czujników.

Krok 1: Zbieranie części

Zbieranie części
Zbieranie części
Zbieranie części
Zbieranie części
Zbieranie części
Zbieranie części
Zbieranie części
Zbieranie części

Zanim cokolwiek stworzyłem, przeprowadziłem wiele badań na temat tego, jakich części użyć, jak je połączyć, pisania klas oprogramowania w Pythonie i tak dalej.

Lista części zostanie dołączona jako plik, dzięki czemu można łatwo wyszukać potrzebne części.

Zdecydowałem się użyć Arduino Uno obok Raspberry Pi, aby móc sprawnie odczytywać czujniki bez obciążania Raspberry Pi. Wybrałem również Uno, ponieważ ma niezłą częstotliwość taktowania i ze względu na piny analogowe. Mógłbym użyć ADC (np. MCP3008) do mojego Raspberry Pi, ale potrzebowałbym dużo więcej przewodów, byłoby to droższe, a moje Pi musiałoby pracować dużo ciężej.

Następnie zacząłem sprawdzać części, które nadawały się do użytku z uszkodzonego robota próżniowego. Elektronika wewnętrzna była uszkodzona, ale to nie był problem, bo i tak bym je całkowicie wymienił. Na szczęście silniki prądu stałego nadal działały, więc żadnego z nich nie trzeba było wymieniać.

Lista części:

  • Raspberry Pi 3 z co najmniej 8 GB MicroSD klasy 10 i obudową;
  • Szewc Raspberry Pi T i płytka(-i) stykowa(-e);
  • Arduino Uno lub podobny (najlepiej nie-chińska wersja z przyzwoitym ADC, niektórzy chińczycy mają problemy z AREFem) z jakąś obudową;
  • kabel ethernetowy;
  • (zepsuty) robot próżniowy;
  • 3x moduły ultradźwiękowe HC-SR04;
  • 1x moduł czujnika Halla;
  • Kilka rezystorów o różnych wartościach;
  • LDR;
  • 6x 18650 Li-ion + 3-ogniwowe uchwyty na 12v (najlepiej nowe baterie lub jeszcze lepiej LiPo, wystarczą one o wiele dłużej);
  • 18650 (lub inny rodzaj baterii, której użyjesz) 12 V 3-ogniwowa płytka ładująca;
  • Niektóre płytki PCB DIY do lutowania komponentów;
  • Arkusz z tworzywa poliuretanowego;
  • Laptop/komputer stacjonarny.

Lista narzędzi:

  • Wiertło z kilkoma wiertłami;
  • Szlifierka kątowa (nie używaj jej, jeśli nie masz doświadczenia) lub coś takiego jak Dremel;
  • Kawałek papieru ściernego;
  • Kilka śrubokrętów;
  • Superglue, klej montażowy, …;
  • Lutownica (użyj smaru, aby łatwiej przylutować przewody);
  • Para przecinaków do drutu i narzędzie do zdejmowania izolacji.

Lista oprogramowania (opcjonalnie):

  • Adobe XD: wireframing i tworzenie prototypu;
  • Fritzing: tworzenie schematu elektrycznego;
  • PyCharm Professional: Python IDE z możliwością korzystania z wdrażania i zdalnego interpretera;
  • Putty: szybkie i łatwe połączenie ssh z Pi;
  • Etcher.io: łatwe narzędzie do flashowania obrazu Raspbian na kartę SD;
  • Win32DiskImager: łatwe narzędzie do tworzenia obrazu z istniejącej konfiguracji Raspbian;
  • Notatnik programistów: proste narzędzie, za pomocą którego można bezpiecznie edytować plik /boot/cmdline.txt.

Krok 2: Malowanie natryskowe i projektowanie interfejsu

Malowanie natryskowe i projektowanie interfejsu
Malowanie natryskowe i projektowanie interfejsu
Malowanie natryskowe i projektowanie interfejsu
Malowanie natryskowe i projektowanie interfejsu
Malowanie natryskowe i projektowanie interfejsu
Malowanie natryskowe i projektowanie interfejsu
Malowanie natryskowe i projektowanie interfejsu
Malowanie natryskowe i projektowanie interfejsu

Zanim zacząłem tworzyć projekt, pomalowałem w sprayu zewnętrzną stronę, ponieważ w ogóle nie podobały mi się kolory. Poszedłem do sklepu i wziąłem plastikowy podkład, puszkę bieli i puszkę turkusu, aby pomalować górną część obudowy.

Po pozostawieniu farby w sprayu do wyschnięcia sprawdziłem dokładny kod koloru szesnastkowego farby, której użyłem, aby móc idealnie dopasować mój interfejs internetowy do mojego urządzenia. Znalezienie tego kodu szesnastkowego było dość łatwe, ponieważ użyłem graffiti Montana 94, a kody szesnastkowe i RGB były na ich stronie internetowej.

Stworzyłem makiety high-fidelity dla każdej strony mojej witryny, dzięki czemu doskonale wiedziałem, jak mam zamiar stworzyć ten interfejs. Po tym, jak pokazałem mój interfejs nauczycielom, otrzymałem radę, aby tło było trochę bardziej szare, a przyciski białe, i moim zdaniem wynik był dobry.

Krok 3: Tworzenie bazy danych

Tworzenie bazy danych
Tworzenie bazy danych

Kolejnym logicznym krokiem było rozpoczęcie myślenia o tym, jakie dane chcę przechowywać w bazie danych MySQL. Niewiele jest osób, które lubią wiedzieć o swoim odkurzaczu, więc wybrałem tabele dla użytkowników i ich danych logowania, a także tabele czujników (akumulator, odległość i pojemnik na kurz).

Obraz przedstawia układ moich tabel, narysowanych w MySQL Workbench, ze wszystkimi relacjami między tabelami.

Dla moich użytkowników chciałem śledzić ich imię i nazwisko, aby spersonalizować interfejs i e-maile. Oczywiście do wysyłania e-maili potrzebowałem również ich adresu e-mail. Dodałem również tabelę, aby śledzić preferencje moich użytkowników dotyczące poczty e-mail (czy chcą otrzymywać e-maile). Ostatnią rzeczą, którą chciałem zapisać o użytkownikach, jest ich rola dla urządzenia. Dzielę użytkowników na administratorów i zwykłych użytkowników. Administratorzy mają prawo do dodawania, usuwania i zarządzania użytkownikami w systemie, podczas gdy zwykli użytkownicy nie mają dostępu do tych narzędzi.

Następna tabela zawiera „urządzenia”, czyli rzeczywiste uruchomienia urządzenia. Uruchomienia urządzeń są własnością określonego użytkownika (osoby, która uruchomiła bieg) i mają czas rozpoczęcia i czas zakończenia, aby obliczyć czas działania.

Kolejna tabela służy do łączenia danych z czujników z każdym uruchomieniem urządzenia. Same czujniki są przechowywane w kolejnej tabeli, zawierającej ich identyfikator, nazwę i opis.

Krok 4: Łączenie części razem

Łączenie części razem
Łączenie części razem
Łączenie części razem
Łączenie części razem

Po stworzeniu schematu bazy danych zacząłem używać płytek stykowych i okablowania, aby połączyć wszystkie części w jeden działający prototyp.

Krok 5: Konfiguracja Raspberry Pi

Konfiguracja Raspberry Pi
Konfiguracja Raspberry Pi

Aby pobrać najnowszy obraz Raspbian, przejdź do witryny Raspbian. Tutaj możesz wybrać dystrybucję, którą chcesz pobrać. Aby przyspieszyć działanie, możesz pobrać dystrybucję bezgłową, aby zmniejszyć zużycie pamięci RAM lub pobrać pulpit z graficznym interfejsem użytkownika, jeśli wolisz graficzny interfejs użytkownika.

Aby zainstalować system operacyjny, po prostu pobierz Etcher, jest to narzędzie GUI do szybkiego i łatwego zapisywania obrazu na karcie micro SD.

Aby włączyć tryb bezgłowy, abyś mógł uzyskać dostęp do pi, musisz zainstalować Putty na swoim komputerze. Następnym krokiem jest przejście do folderu Boot stworzonego przez Etchera i otwarcie pliku cmdline.txt za pomocą ulubionego edytora tekstu, np. Notatnika Programistów. Dodaj ten tekst na końcu pliku:

ip=169.254.10.1

Tylko upewnij się, że nie tworzysz nowej linii, dodaj ją na końcu linii!

Następnie wróć do katalogu głównego folderu Boot i utwórz plik o nazwie ssh. Nie dodawaj żadnych rozszerzeń, zapewni to, że serwer SSH będzie uruchamiał się za każdym razem, gdy uruchomi się Twoje Pi. Teraz po prostu włóż kartę SD do swojego Pi, podłącz wystarczające źródło zasilania do swojego Pi i dodaj kabel Ethernet między Twoim Pi a komputerem.

Otwórz kit i wpisz adres IP: 169.254.10.1. Teraz kliknij TAK i zaloguj się, domyślna nazwa użytkownika to pi, a hasło to malina.

Następnie wykonaj następujące polecenie, aby być na bieżąco:

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

Ostatnim krokiem jest utworzenie wirtualnego interpretera Pythona na Twoim Raspberry Pi, który wykona Twój kod. Aby to zrobić, po prostu otwórz kit i wpisz:

projekt sudo mkdir1

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

Krok 6: Pisanie aplikacji internetowej

Pisanie aplikacji internetowej
Pisanie aplikacji internetowej

Po podłączeniu wszystkich części i skonfigurowaniu Raspberry Pi, zacząłem pisać moją główną aplikację internetową przy użyciu Flask i Jinja2. Flask to łatwy w użyciu framework backendowy dla Pythona, a Jinja2 to język szablonów, którego używałem. Dzięki Jinja możesz tworzyć normalne pliki HTML z pętlami for, strukturami if i tak dalej.

Podczas kodowania backendu napisałem również frontend dla aplikacji, w tym HTML, CSS i JavaScript dla niektórych elementów. Użyłem metody ITCSS i notacji BEM dla moich arkuszy stylów.

Oprócz głównej aplikacji internetowej stworzyłem również 2 inne główne programy. Jeden jest napisany, aby wysłać adres IP urządzenia do użytkowników z listy. Każdy zarejestrowany użytkownik, który zaakceptował otrzymywanie wiadomości e-mail, otrzyma wiadomość z linkiem do uruchomienia interfejsu internetowego. Ten program działa jako usługa systemowa.

Drugi główny plik dotyczy rzeczywistego urządzenia. Ta główna jest wywoływana przez moją aplikację Flask, aby uruchamiać i zatrzymywać urządzenie oraz zbierać dane. Zgromadzone dane są również przesyłane do bazy danych urządzenia poprzez tę magistralę. Dane te można następnie wizualizować w aplikacji internetowej.

Aplikacja internetowa jest połączona z urządzeniem, które uruchamia main z Python Threading. Gdy użytkownik kliknie przycisk Start, generowany jest wątek, aby uruchomić urządzenie w tle. Tymczasem użytkownik może doskonale przeglądać aplikację. Po kliknięciu przycisku stop ten wątek jest zatrzymywany, a więc urządzenie zatrzymuje się.

Krok 7: Tworzenie elementów do wykończenia obudowy

Tworzenie elementów do wykończenia obudowy
Tworzenie elementów do wykończenia obudowy
Tworzenie elementów do wykończenia obudowy
Tworzenie elementów do wykończenia obudowy
Tworzenie elementów do wykończenia obudowy
Tworzenie elementów do wykończenia obudowy
Tworzenie elementów do wykończenia obudowy
Tworzenie elementów do wykończenia obudowy

Po napisaniu największej części aplikacji zacząłem modyfikować obudowę urządzenia, tak aby moje czujniki i inne części faktycznie pasowały. Aby to zrobić, kupiłem arkusz poliuretanu w lokalnym sklepie dla majsterkowiczów i zacząłem wycinać 2 wsporniki. Użyłem tego arkusza poliuretanu, ponieważ jest mało prawdopodobne, aby rozpadał się na kawałki podczas cięcia i ponieważ jest dość elastyczny, co jest idealne, ponieważ mój robot ma okrągły kształt.

Pierwszy wspornik ma za zadanie wypełnić otwór na górze, w którym siedział wyświetlacz. Zamieniłem wyświetlacz na włącznik/wyłącznik, aby można było faktycznie wyłączyć baterie.

Drugi wspornik to wspornik dla moich czujników ultradźwiękowych HC-SR04, które są umieszczone z przodu urządzenia.

Ostatnią rzeczą do zrobienia było wycięcie dziury we wzmocnieniu jednego z kół i włożenie magnesu, abym mógł monitorować obroty koła.

Po skończeniu tych wsporników pomalowałem je również farbą, która mi została, aby pasowała do projektu.

Krok 8: Kodeks

Aby zainstalować program, pobierz plik code.zip i rozpakuj go w katalogu project1.

Następnie wykonaj to polecenie w terminalu na Raspbian lub 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

Następnie otwórz wygenerowaną bazę danych i utwórz nowego użytkownika z haszowanym hasłem Argon2. Teraz możesz korzystać z programu.

Cieszyć się!

Zalecana: