- Wymagane materiały:
- Drukowanie 3D wymaganych części (opcjonalnie):
- Schemat i sprzęt:
- Konfigurowanie aplikacji na Androida:
- Programowanie Arduino:
- Pracujący:
Czy kiedykolwiek chciałeś zbudować ramię robota lub robota śledzącego twarz, używając po prostu Arduino, a nie żadnego innego programowania, takiego jak OpenCV, podstawy wizualne C # itp.? Więc czytaj dalej, w tym projekcie zamierzamy wdrożyć wykrywanie twarzy, łącząc moc Arduino i Androida. W tym projekcie kamera mobilna będzie poruszać się wraz z twarzą za pomocą serw. Zaletą korzystania z telefonu komórkowego z Androidem jest to, że nie musisz inwestować w moduł aparatu, a całą pracę związaną z wykrywaniem obrazu można wykonać w samym telefonie, nie potrzebujesz do tego swojego Arduino podłączonego do komputera. Tutaj użyliśmy modułu Bluetooth z Arduino do bezprzewodowej komunikacji z Mobile.
Aplikacja na Androida użyta w tym projekcie została stworzona przy użyciu Processing Android, możesz bezpośrednio zainstalować aplikację, pobierając plik APK (czytaj dalej, aby uzyskać link) lub założyć limit programowania i stworzyć własną, bardziej atrakcyjną aplikację na Androida za pomocą podanego kodu przetwarzania dalej w samouczku. Dowiedz się więcej o przetwarzaniu, sprawdzając nasze poprzednie projekty przetwarzania.
Pod koniec tego samouczka będziesz mieć ramię robota z mini przechylaniem i rozpiętością, które może śledzić Twoją twarz i poruszać się wraz z nią. Możesz użyć tego (z dalszym zaawansowaniem) do nagrywania filmów vlog lub nawet robienia selfie tylnym aparatem telefonu komórkowego, ponieważ ustawia on Twoją twarz dokładnie na środku ekranu telefonu komórkowego. Więc!! Brzmi interesująco? Sprawdź wideo demonstracyjne na końcu tego samouczka, aby zobaczyć, jak działa. Zobaczmy, jak możemy je zbudować…
Starałem się, aby ten projekt działał tak prosto, jak to tylko możliwe, każdy, kto ma minimalną wiedzę na temat sprzętu lub kodowania, może skorzystać z tych wskazówek, aby ten projekt zadziałał w mgnieniu oka. Jednak kiedy już to zrobisz, sugeruję, abyś zapoznał się z kodami, aby naprawdę wiedzieć, co sprawia, że to działa i jak.
Wymagane materiały:
- Arduino Nano
- Silnik serwo SG90 - 2
- Telefon z Androidem i przyzwoitym aparatem
- Moduł Bluetooth HC-05 / HC-06
- Komputer do programowania
- Drukarka 3D (opcjonalnie)
- Bateria 9V
Drukowanie 3D wymaganych części (opcjonalnie):
Aby obrócić i pochylić nasz telefon komórkowy, potrzebujemy kilku mechanicznych konstrukcji, takich jak uchwyt mobilny i kilka wsporników serwo. Możesz użyć tektury, aby ją wykonać, ponieważ mam drukarkę 3D, zdecydowałem się wydrukować te części w 3D.
Druk 3D to niesamowite narzędzie, które może wiele wnieść podczas tworzenia projektów prototypowych lub eksperymentowania z nowymi projektami mechanicznymi. Jeśli nie odkryłeś jeszcze zalet drukarki 3D ani tego, jak działa, możesz przeczytać Przewodnik dla początkujących po drukowaniu 3D.
Jeśli posiadasz lub masz dostęp do drukarki 3D, możesz użyć plików STL, które można pobrać stąd, aby bezpośrednio je wydrukować i złożyć. Jednak kilka części, takich jak uchwyt telefonu komórkowego, może wymagać pewnych modyfikacji w oparciu o wymiary telefonu. Zaprojektowałem go dla mojego telefonu komórkowego MOTO G. Do wydrukowania wszystkich części użyłem mojej bardzo podstawowej drukarki. Drukarka to FABX v1 firmy 3ding, która jest dostępna w przystępnej cenie i ma objętość wydruku 10 cm sześciennych. Niska cena wiąże się z kompromisem w postaci niskiej rozdzielczości drukowania i braku karty SD lub funkcji wznawiania drukowania. Do drukowania plików STL używam oprogramowania o nazwie Cura. Ustawienia, których użyłem do drukowania materiałów są podane poniżej, możesz użyć tych samych lub zmienić je w zależności od drukarki.
Po wydrukowaniu wszystkich wymaganych materiałów można je zabezpieczyć za pomocą śrub i gorącego kleju. Po zakończeniu montażu powinno to wyglądać mniej więcej tak, jak poniżej.
Schemat i sprzęt:
Obwód tego projektu śledzenia twarzy na smartfonie pokazano na poniższym obrazku:
Obwód składa się z dwóch serwomotorów, z których jeden służy do przesuwania telefonu komórkowego w lewo / w prawo, a drugi do odchylania telefonu komórkowego w górę / w dół. Kierunek, w którym musi się poruszać serwo, wskaże Arduino Nano, które samo pobiera informacje z modułu Bluetooth (HC-05). Całość zasilana jest baterią 9V.
Ten obwód można łatwo podłączyć na płytce stykowej lub można je również przylutować na małej płytce Perf, tak jak to zrobiłem tutaj.
Konfigurowanie aplikacji na Androida:
Jak powiedziałem wcześniej, głównym mózgiem pracującym nad tym projektem jest ta aplikacja na Androida. Ta aplikacja na Androida została opracowana przy użyciu przetwarzania systemu Android. Możesz bezpośrednio zainstalować tę aplikację na swoim telefonie komórkowym i uruchomić ją, wykonując poniższe czynności.
- Pobierz plik APK stąd.
- Włącz obwód pokazany powyżej.
- W ustawieniach telefonu wyszukaj moduł Bluetooth o nazwie „HC-05”
- Jeśli nadałeś mu inną nazwę niż „HC-05”, zmień go z powrotem na HC-05, ponieważ tylko wtedy aplikacja będzie działać.
- Sparuj z modułem Bluetooth, używając hasła „1234” lub „0000”.
- Teraz uruchom aplikację w trybie portretowym. Powinieneś zobaczyć ekran aparatu, a także „Połączono z: HC-05” u góry ekranu.
- Spróbuj przesunąć aparat na twarz, a na jego szczycie powinno pojawić się zielone pole, a jego pozycja zostanie również wyświetlona w lewym górnym rogu ekranu, jak pokazano poniżej.
Możesz przenieść ten projekt Arduino Face Tracking na wyższy poziom, wprowadzając wiele ulepszeń, dla których nie będziesz musiał kodować własnej aplikacji na Androida. Tworzenie aplikacji na Androida może wydawać się trudne, ale zaufaj mi dzięki przetwarzaniu, którego nauczysz się w mgnieniu oka. Pełny kod przetwarzania, który jest używany do tworzenia tej aplikacji, można pobrać tutaj. Możesz robić postępy dzięki własnej kreatywności. Sprawdź poniższe projekty, aby dowiedzieć się więcej o przetwarzaniu:
- Wirtualna rzeczywistość z wykorzystaniem Arduino i przetwarzania
- Gra w ping ponga wykorzystująca Arduino
- Radio FM sterowane smartfonem za pomocą przetwarzania.
- System radarowy Arduino wykorzystujący przetwarzanie i czujnik ultradźwiękowy
Programowanie Arduino:
Aplikacja na Androida wykryje twarz i jej położenie na ekranie; Następnie zdecyduje, w którym kierunku powinien się poruszać, na podstawie pozycji twarzy, tak aby znalazła się na środku ekranu. Kierunek ten jest następnie przesyłany do Arduino przez moduł Bluetooth.
Program Arduino dla tego projektu jest dość prosty, wystarczy sterować kierunkiem działania dwóch serwomotorów na podstawie wartości otrzymanych z modułu Bluetooth. Cały kod można znaleźć na końcu tego samouczka, poniżej wyjaśniłem również kilka ważnych wierszy.
Poniższy wiersz kodu ustanawia połączenie szeregowe z pinami D12 jako RX i D11 jako TX. Stąd pin D12 musi być podłączony do TX modułu BT, a pin D11 do RX modułu BT.
OprogramowanieSerial cam_BT (12, 11); // RX, TX
Następnie zainicjowaliśmy moduł Bluetooth z szybkością transmisji 9600. Upewnij się, że moduł również działa z tą samą szybkością. W przeciwnym razie zmień to odpowiednio.
cam_BT.begin (9600); // rozpocznij komunikację Bluetooth z prędkością 9600 bodów cam_BT.println ("Gotowy do przyjmowania poleceń");
Poniższy wiersz informuje o tym, co przychodzi przez moduł Bluetooth. Dane są również zapisywane w zmiennej „BluetoothData”.
if (cam_BT.available ()) // Przeczytaj, co przychodzi przez Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Przychodzące z BT:"); Serial.println (BluetoothData); }
Na podstawie danych otrzymanych z Bluetooth kontrolowany jest kierunek silników. Aby obrócić silnik w lewo, zmniejsza się jego wartość o 2 w stosunku do poprzedniego położenia. Możesz zwiększyć tę wartość z 2 do 4 lub 6, jeśli potrzebujesz, aby ramię poruszało się szybciej. Może to jednak powodować szarpnięcia, powodując niestabilność aparatu.
if (BluetoothData == 49) // Skręć w lewo {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Skręć w prawo {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Podkręć {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Zmniejsz {pos2 + = 2; servo2.write (pos2);}
Pracujący:
Kiedy już będziemy gotowi z naszym sprzętem, kodem i aplikacją na Androida, czas na jakąś akcję. Po prostu zasil Arduino i otwórz aplikację na Androida. Aplikacja automatycznie połączy się z modułem Bluetooth HC-05 (musi mieć nazwę HC-05) i zaczeka na wykrycie twarzy. Po prostu umieść telefon w naszym uchwycie na telefon i usiądź przed nim. Powinieneś zauważyć, że serwomotory poruszają telefonem, tak aby Twoja twarz znajdowała się na środku ekranu. Teraz poruszaj się w zasięgu kamery, a telefon komórkowy będzie podążał za Twoimi ruchami. Możesz także spróbować, umieszczając i przesuwając dowolne zdjęcie.
Pełne działanie projektu pokazano na poniższym filmie. Możesz dużo zbudować