Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03
Wszystkie wersje radarów ultradźwiękowych, które znalazłem dla urządzeń arduino (Arduino - Radar/Ultrasonic Detector, Arduino Ultrasonic Radar Project) są bardzo ładnymi radarami, ale wszystkie są "ślepe". To znaczy radar coś wykrywa, ale co wykrywa?
Proponuję więc opracowanie systemu zdolnego do wykrywania obiektów i ich identyfikacji. Innymi słowy system pozycjonowania bez użycia urządzeń GPS, ale detektorów ultradźwiękowych.
To jest wynik, który mam nadzieję Ci się spodoba.
Krok 1: Jak to działa?
Systemy pozycjonowania składają się z trzech stacji czujników z detektorami ultradźwiękowymi i id_node 1, 2 i 3 tworzących prostokąt lub kwadrat o kącie 90º, a odległości między nimi są znane, jak pokazano na rysunku 1.
stała odległość zmiennoprzecinkowa między 1 i 2 = 60,0;
stała odległość zmiennoprzecinkowa między 2 i 3 = 75,0;
Czujniki te mierzą odległość i kąt innych obiektów z id_node większym niż 3, które mają również detektor ultradźwiękowy, który omiata kąt 170°.
Wszystkie z nich przesyłają odległości, zmierzone kąty i id_node do innej stacji głównej za pomocą komunikacji bezprzewodowej w celu analizy, obliczenia pozycji obiektów za pomocą obliczeń trygonometrycznych i ich identyfikacji.
Aby uniknąć zakłóceń, stacja główna synchronizuje wszystkie detektory ultradźwiękowe w taki sposób, że tylko jeden detektor ultradźwiękowy mierzy w danym momencie
Następnie, korzystając z komunikacji szeregowej, stacja główna wysyła informacje (kąt, odległość, id_object) do szkicu przetwarzania, aby wykreślić wyniki.
Krok 2: Jak skonfigurować trzy stacje czujników i obiekty?
Jedyną funkcją każdej stacji czujnikowej jest wykrywanie obiektów i wysyłanie listy zmierzonych odległości, kątów i identyfikatorów do stacji głównej.
Musisz więc zaktualizować maksymalną dozwoloną odległość wykrywania („valid_max_distance”) i minimalną („valid_min_distance”) (w centymetrach), aby poprawić wykrywanie i ograniczyć strefę wykrywania:
int valid_max_distance = 80;
int valid_min_distance = 1;
Węzeł id tych stacji czujników („this_node” w poniższym kodzie) to 1, 2 i 3, a węzeł id stacji głównej to 0.
const uint16_t this_node = 01; // Adres naszego węzła w formacie ósemkowym (Node01, Node02, Node03)
const uint16_t inny_węzeł = 00; //Adres węzła głównego (Node00) w formacie ósemkowym
Każda stacja czujnika omiata i kąt 100º ("max_angle" w kodzie poniżej)
#define min_angle 0
#define max_angle 100
Jak wyżej, jedyną funkcją obiektu jest wykrywanie obiektów i wysyłanie do stacji głównej listy odległości, kątów i id obiektu. Identyfikator jednego obiektu („this_node” w poniższym kodzie) musi być większy niż 3.
Każdy obiekt przesuwa się pod kątem 170º i jak wyżej, można zaktualizować maksymalną i minimalną odległość wykrywania.
const uint16_t this_node = 04; // Adres naszego węzła w formacie ósemkowym (Node04, Node05, …)
const uint16_t inny_węzeł = 00; // Adres węzła głównego (Node00) w formacie ósemkowym int valid_max_distance = 80; int valid_min_distance = 1; #define min_angle 0 #define max_angle 170
Krok 3: Jak skonfigurować stację główną?
Funkcją stacji głównej jest odbieranie transmisji ze stacji czujnikowych i obiektów oraz wysyłanie wyników za pomocą portu szeregowego do szkicu obróbki w celu ich wykreślenia. Ponadto synchronizuje wszystkie obiekty i trzy stacje czujników w taki sposób, że tylko jeden z nich mierzy za każdym razem, aby uniknąć zakłóceń.
Najpierw musisz zaktualizować odległość (w centymetrach) między czujnikiem 1 i 2 oraz odległość między 2 i 3.
stała odległość zmiennoprzecinkowa między 1 i 2 = 60,0;
stała odległość zmiennoprzecinkowa między 2 i 3 = 70,0;
Szkic oblicza położenie obiektów w następujący sposób:
- Dla wszystkich transmisji obiektów (id_node większe niż 3) szukaj tej samej odległości w każdej transmisji czujników ultradźwiękowych (id_node 1, 2 lub 3).
- Wszystkie te punkty tworzą listę „kandydatów” (odległość, kąt, id_node) na pozycję jednego obiektu („process_pointobject_with_pointssensor” w szkicu).
- Dla każdego „kandydata” z poprzedniej listy funkcja „candidate_selected_between_sensor2and3” oblicza z punktu widzenia czujnika ultradźwiękowego 2 i 3, który z nich spełnia następujące warunki trygonometrii (patrz rysunki 2 i 3)
float distancefroms2 = sin(radiany(kąt)) * odległość;
float distancefroms3 = cos(radiany(angle_candidate)) * distance_candidate; // Warunek trygonometrii 1 abs(odległośćod2 + odległośćod3 - odległośćmiędzy2a3) <= float(max_diference_distance)
Jak wyżej, dla każdego „kandydata” z poprzedniej listy funkcja „candidate_selected_between_sensor1and2” oblicza z punktu widzenia czujnika ultradźwiękowego 1 i 2, który z nich pasuje do poniższej zależności trygonometrii (patrz rysunek 2 i 3)
zmiennoprzecinkowa odległośćod1 = sin(radiany(kąt)) * odległość;zmienna odległośćods2 = cos(radiany(kąt_kandydat)) * odległość_kandydat; // Warunek trygonometrii 2 abs(odległośćod1 + odległośćod2 - odległośćmiędzy1a2) <= float(max_diference_distance)
Tylko kandydaci (odległość, kąt, id_node), które pasują do warunków trygonometrii 1 i 2, są zidentyfikowanymi obiektami wykrytymi przez stacje czujnikowe 1, 2 i 3
Następnie wyniki są wysyłane przez stację główną do szkicu obróbki w celu ich wykreślenia.
Krok 4: Lista materiałów
Lista materiałów potrzebnych na jedną stację czujnikową lub jeden obiekt jest następująca:
- Tablica nano
- Czujnik ultradźwiękowy
- Mikrosilnik serwo
- Moduł bezprzewodowy NRF24L01
- Adapter NRF24L01
a lista materiałów dla stacji głównej jest następująca:
- Tablica nano
- Moduł bezprzewodowy NRF24L01
- Adapter NRF24L01
Zalecana:
Ultradźwiękowy zabójca komarów: 3 kroki (ze zdjęciami)
Ultradźwiękowy zabójca komarów: Komary SUCZĄ! Oprócz denerwujących swędzących guzków, ci wysysający krew poganie przynoszą ludziom jedne z najbardziej śmiertelnych chorób; Denga, Malaria, wirus Chikungunya… lista jest długa! Każdego roku około miliona ludzi umrze z powodu t
Ultradźwiękowy pistolet dźwiękowy (głośnik parametryczny): 3 kroki (ze zdjęciami)
Ultrasonic Sound Gun (Głośnik parametryczny): Do tego projektu zbudowałem pistolet, który wystrzeliwuje wąską wiązkę ultradźwiękowego dźwięku. Dźwięk może być słyszalny tylko przez ludzi w wąskiej wiązce lub przez pobliskie źródło, gdy dźwięk jest demodulowany. Zainspirowałem się do zbudowania tego projektu po
Ultradźwiękowy system dostępu: 6 kroków (ze zdjęciami)
Ultradźwiękowy system dostępu: Tym razem przedstawiam wam ultradźwiękowy system dostępu, który moim zdaniem może być interesujący. Oparty jest na falach ultradźwiękowych, więc jest to bezdotykowy system dostępu, który nie wymaga żadnego innego urządzenia elektronicznego, ale dowolnego przedmiotu, nawet rąk spróbować
ULTRADŹWIĘKOWY SYSTEM RADAROWY Z WYKORZYSTANIEM ARDUINO: 3 kroki
ULTRADŹWIĘKOWY SYSTEM RADAROWY WYKORZYSTUJĄCY ARDUINO: Opisany tutaj obwód demonstruje działanie ultradźwiękowego systemu radarowego. Wykorzystuje czujnik ultradźwiękowy do wykrywania obiektu i pomiaru jego odległości oraz obraca się zgodnie z silnikiem serwo. Kąt obrotu jest wyświetlany na ekranie LCD 16x2 LCD
Używanie Arduino Uno do pozycjonowania XYZ ramienia robota 6 DOF: 4 kroki
Używanie Arduino Uno do pozycjonowania XYZ ramienia robota 6 DOF: Ten projekt polega na zaimplementowaniu krótkiego i stosunkowo łatwego szkicu Arduino, aby zapewnić odwrotne pozycjonowanie kinematyczne XYZ. Zbudowałem ramię robota z 6 serwomechanizmami, ale jeśli chodzi o znalezienie oprogramowania do jego uruchomienia, nie było tam wiele z wyjątkiem cust