Spisu treści:

Prosty system radarowy firmy Magicbit: 6 kroków
Prosty system radarowy firmy Magicbit: 6 kroków

Wideo: Prosty system radarowy firmy Magicbit: 6 kroków

Wideo: Prosty system radarowy firmy Magicbit: 6 kroków
Wideo: Apple M1 очень хорош, и вот почему! Разбираемся в архитектурах CISC vs. RISC 2024, Lipiec
Anonim

Ten samouczek pokazuje, jak stworzyć prosty system radarowy przy użyciu czujnika HC-SR04 i płytki deweloperskiej Microbit z przetwarzaniem i Arduino IDE.

Kieszonkowe dzieci:

  • Silnik mikro-serwo SG90
  • Przewody połączeniowe (ogólne)
  • Deska do krojenia chleba (ogólna)
  • Magicbit
  • Kabel USB-A do Micro-USB
  • Czujnik ultradźwiękowy - HC-SR04 (ogólny)

Krok 1: Historia

W tym samouczku dowiemy się, jak stworzyć prosty system radarowy za pomocą płytki deweloperskiej Magicbit. W tym celu wykorzystujemy czujnik ultradźwiękowy HC-SR04, a do wyświetlania danych wykorzystujemy środowisko przetwarzania. Zacznijmy.

Krok 2: Teoria i metodologia

Najpierw omówmy, jak to działa. Zasada jest bardzo prosta. Najpierw obracamy nasz czujnik wokół osi pionowej w zakresie 180 stopni w sposób ciągły. Podczas tego ruchu pobieramy dane o odległości do najbliższego obiektu z czujnika ultradźwiękowego pod każdym kątem. Do tego procesu używamy płyty głównej Magicbit. Następnie musimy nawiązać połączenie ze środowiskiem przetwarzania w celu wyświetlenia naszych danych. Dlatego używamy protokołu komunikacji szeregowej z odpowiednią szybkością transmisji. Następnie projektujemy interfejs naszego systemu radarowego za pomocą przetwarzania IDE. W tym IDE konfigurujemy naszą komunikację szeregową, aby uzyskać dane w czasie rzeczywistym przez port szeregowy. Tak więc wykonujemy komunikację w czasie rzeczywistym z Magicbit i pokazujemy dane, które wysyłają z Magicbit do przetwarzania IDE.

Krok 3: Konfiguracja sprzętu

Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu

W tym projekcie użyliśmy głównie trzech komponentów sprzętowych. Są to Magicbit, serwomotor i czujnik ultradźwiękowy. Połączenie między wszystkimi tymi częściami pokazano na powyższym rysunku.

Czujnik ultradźwiękowy używał 3,3 V do zasilania. Dlatego użyliśmy prawego dolnego portu płyty Magicbit do podłączenia czujnika ultradźwiękowego do Magicbit. Ale silnik serwo jest używany do poprawnej pracy 5 V, dlatego użyliśmy lewego dolnego portu do połączenia silnika serwo z Magicbit. W tym przypadku stosujemy moduł złącza Magic bit servo. Ale jeśli nie masz tego modułu, możesz użyć trzech zworek do podłączenia 5V do 5V, Gnd do Gnd i pin sygnałowy do pinu 26 na magicbit.

Po zbudowaniu obwodu mamy do zbudowania małą część mechaniczną. ustaw jednostronne złącze serwo do serwomotoru za pomocą małej nakrętki. Następnie przymocuj czujnik do tego złącza za pomocą wspornika w kształcie litery L lub we właściwy sposób. Po całym systemie zamontowaliśmy na płytce stykowej. Ale możesz użyć innej powierzchni do zamontowania serwomechanizmu i Magicbita.

Krok 4: Konfiguracja oprogramowania

Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania
Konfiguracja oprogramowania

Strona oprogramowania jest trochę skomplikowana. Dla właściwego zrozumienia możesz odwołać się do poniższych linków, zanim przejdziesz do następnej części.

magicbit-arduino.readthedocs.io/en/latest/

hello.processing.org/editor/

Spójrzmy na kod Arduino IDE i jak ten kod działa.

Do sterowania serwo używamy biblioteki serwo ESP32. Ta biblioteka prawie zawiera się w Magic Bit Board Manager w Arduino IDE. Do obsługi czujnika ultradźwiękowego korzystamy z nowej biblioteki Ping. Można to pobrać z poniższego linku.

bitbucket.org/teckel12/arduino-new-ping/do…

Pobierz plik zip i idź narzędzia> dołącz bibliotekę> dodaj bibliotekę Zip w Arduino. teraz wybierz pobrany plik zip nowej biblioteki pinów. Do komunikacji z przetwarzaniem wykorzystaliśmy komunikację szeregową z prędkością 115200 bodów. Jest to najbardziej właściwa częstotliwość dla ESP32. Pod każdym kątem przesyłamy nasze dane do komputera za pomocą tego protokołu. Dane te uwzględniają odległość do najbliższego przedniego obiektu od czujnika, kierunek obrotu oraz kąt obrotu. Używając dwóch pętli for, obracamy serwo w dwie strony. Podczas gdy obrót o jeden stopień wysyłaliśmy dane szeregowe 4 razy. Powód tego można zrozumieć w wyjaśnieniu części przetwarzania.

Teraz nadszedł czas na przyjrzenie się środowisku przetwarzania. Jest to oprogramowanie do programowania oparte na javie. Możemy napisać szkic naszego programu w tym szkicu w przetwarzającym IDE. Możemy również wygenerować wizualny efekt działania naszego programu. Możesz również wziąć dane wyjściowe jako obiekty 2D i 3D. Mało tego, można to wykorzystać do przetwarzania obrazu i wielu innych rzeczy.

W szkicu przetwarzania najpierw projektujemy nasz interfejs wyświetlania danych za pomocą prostych funkcji graficznych. Na początku kodu ustanawiamy naszą komunikację szeregową, włączając biblioteki szeregowe. W funkcji konfiguracji musisz dokonać pewnej zmiany w zależności od tego, który port USB został użyty do połączenia Magicbit z komputerem. możesz sprawdzić swój port za pomocą Arduino IDE podczas konfigurowania Arduino IDE do przesyłania kodu. Następnie zmień nazwę portu COM w części konfiguracji w szkicu przetwarzania. gdy dostępne są dane szeregowe, funkcja Serialevent jest uruchamiana automatycznie. Dlatego główną logiką kodu jest włączenie zdarzenia seryjnego, aby zapobiec brakowi kątów i danych. gdy dostępne są nowe dane, rysujemy linię na ekranie zgodnie z naszym kątem. W tym czasie, jeśli nie ma wykrytego obiektu, pełna linia ma kolor zielony. Jeśli nie, to część linii będzie czerwona w zależności od odległości czujnika od obiektu. Również zgodnie z kierunkiem obrotu rysujemy kolejne 200 linii w pobliżu tej linii ze zmniejszającym się poziomem koloru zielonego. między każdym Main mamy różnicę 0,25 stopnia. W związku z tym otrzymujemy 4 odczyty na raz z Magicbit w każdym obrocie o stopień. Dzięki temu możemy stworzyć piękną rękę wyszukiwania w ekranie.

Po pomyślnym załadowaniu kodu do magii i ustawieniu części sprzętowej pomyślnie otwórz przetwarzające IDE i uruchom kod, klikając przycisk Uruchom. Teraz masz bardzo prosty system radarowy.

Możesz dostosować kody, jak chcesz, co chcesz wyświetlić.

Krok 5: Rozwiązywanie problemów

Przetwarzanie szkicu nie jest uruchomione.

  • Poczekaj chwilę. Ponieważ czas uruchamiania zależy od wydajności komputera i karty graficznej.
  • Sprawdź, czy numer portu seryjnego jest prawidłowy podczas przetwarzania szkicu.
  • Sprawdź, czy połączenie USB jest prawidłowo nawiązane.
  • Sprawdź połączenie między czujnikiem ultradźwiękowym a Magicbit.
  • Otwórz monitor szeregowy i sprawdź, czy dane pochodzą z Arduino. Jeśli nie, problemem jest twój kod Arduino lub połączenie USB.

Serwo nie działa.

  • Sprawdź, czy połączenie USB jest prawidłowo nawiązane.
  • Sprawdź okablowanie.
  • Sprawdź, czy serwo jest w dobrym stanie.

Krok 6: Kod Arduino

#włączać

#define TRIGGER_PIN 21 #define ECHO_PIN 22 #define MAX_DISTANCE 200 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include //include biblioteka serwo int distance; Serwo Radar Serwo; void setup() { Serial.begin(115200); RadarServo.attach(26); // Określa, do którego pinu podłączony jest serwomotor delay(3000); } void loop() { // obraca serwomotor od 15 do 165 stopni for(int i=0;i<=180;i++){ RadarServo.write(i); opóźnienie(50); distance = sonar.ping_cm();// Wywołuje funkcję obliczania odległości zmierzonej przez czujnik ultradźwiękowy dla każdego stopnia for(int j=0;j0){ break; } Serial.print(i); // Wysyła aktualny stopień do portu szeregowego Serial.print(", "); // Wysyła znak dodawania zaraz obok poprzedniej wartości potrzebnej później w Processing IDE do indeksowania Serial.print(j); // Wysyła aktualny stopień do portu szeregowego Serial.print("*"); Serial.print(1); // Wysyła wartość odległości do portu szeregowego Serial.print("/"); // Wysyła znak dodawania zaraz obok poprzedniej wartości potrzebnej później w Processing IDE do indeksowania Serial.print(distance); // Wysyła wartość odległości do portu szeregowego Serial.print("."); // Wysyła znak dodawania zaraz obok poprzedniej wartości potrzebnej później w Processing IDE do indeksowania } } // Powtarza poprzednie wiersze od 165 do 15 stopni for(int i=180;i>=0;i--){ RadarServo.zapis(i); opóźnienie(50); odległość = sonar.ping_cm(); for(int j=75;j>=0;j-=25){ if(i==180 && (j==75 ||j==50 ||j==25)){kontynuuj; } Serial.print(i); // Wysyła aktualny stopień do portu szeregowego Serial.print(", "); // Wysyła znak dodawania zaraz obok poprzedniej wartości potrzebnej później w Processing IDE do indeksowania Serial.print(j); // Wysyła aktualny stopień do portu szeregowego Serial.print("*"); Serial.print(-1); // Wysyła wartość odległości do portu szeregowego Serial.print("/"); // Wysyła znak dodawania zaraz obok poprzedniej wartości potrzebnej później w Processing IDE do indeksowania Serial.print(distance); // Wysyła wartość odległości do portu szeregowego Serial.print("."); // Wysyła znak dodawania tuż obok poprzedniej wartości potrzebnej później w Processing IDE do indeksowania } }

}

Zalecana: