Czujnik zbliżeniowy Arduino - Jak wybrać i podłączyć?

Marcel Zieliński .

19 maja 2026

Ręce montują płytkę z czujnikiem zbliżeniowym Arduino na płytce stykowej. Obok leży moduł przekaźnika.

W praktyce czujnik zbliżeniowy Arduino to nie jeden element, ale cała grupa modułów, które wykrywają obecność dłoni, przeszkody albo odległość w zupełnie różny sposób. W tym artykule pokazuję, czym te rozwiązania się różnią, jak dobrać właściwy typ do projektu i jak podłączyć go tak, żeby odczyty były stabilne. Dorzucam też prosty szkic i najczęstsze błędy, przez które początkujący tracą najwięcej czasu.

Najważniejsze różnice sprowadzają się do zasięgu, dokładności i rodzaju wyjścia

  • Do prostego wykrywania przeszkód najtaniej i najszybciej sprawdza się ultradźwiękowy HC-SR04.
  • Do kompaktowych projektów z dokładniejszym pomiarem lepszy jest czujnik ToF, na przykład VL53L0X lub VL53L1X.
  • Do wykrywania dłoni i prostych gestów przydatny jest APDS9960, ale nie jest to klasyczny dalmierz w centymetrach.
  • Analogowy Sharp GP2Y0A21YK0F daje prosty odczyt napięciowy i dobrze nadaje się do średnich odległości.
  • Najwięcej problemów powodują napięcie zasilania, złe poziomy logiczne i brak kalibracji progu.

Co dokładnie ma robić czujnik w twoim projekcie

Ja zwykle zaczynam od prostego pytania: czy potrzebuję tylko sygnału, że coś się zbliżyło, czy faktycznego pomiaru odległości. To nie jest drobna różnica, bo od niej zależy cały wybór modułu, biblioteki i sposobu podłączenia.

Jeżeli chcesz tylko włączyć diodę, gdy ręka znajdzie się blisko panelu, wystarczy moduł z wyjściem cyfrowym albo sensor typu APDS9960. Jeśli jednak chcesz znać odległość w centymetrach, lepiej od razu sięgnąć po ultradźwięki, ToF albo analogowy dalmierz IR. Dla początkujących to ważne także dlatego, że część ofert pod hasłem „czujnik zbliżeniowy” dotyczy czujników indukcyjnych albo Halla, czyli rozwiązań wykrywających głównie metal lub magnes, a nie dowolny obiekt przed płytką.

W praktyce najwięcej różnic widać przy materiale obiektu. Ciemne, matowe, pochylone albo bardzo małe elementy potrafią oszukać czujnik IR, a ultradźwięki mają swoje ograniczenia w wąskich przestrzeniach i przy miękkich powierzchniach. Od tego zależy, czy lepiej sprawdzi się tani moduł ultradźwiękowy, czy precyzyjny ToF, więc w kolejnym kroku porównuję je bez marketingowych skrótów.

Arduino Uno z podłączonym czujnikiem zbliżeniowym na podczerwień.

Który moduł wybrać do konkretnego zastosowania

Jeżeli mam wybierać moduł pod Arduino bez zbędnego komplikowania projektu, patrzę na cztery rzeczy: zasięg, sposób komunikacji, odporność na warunki otoczenia i łatwość kalibracji. W polskich sklepach ceny są dziś dość rozstrzelone, ale da się sensownie ustawić budżet już na etapie wyboru.

Typ modułu Najlepiej do Zalety Ograniczenia Orientacyjny koszt
HC-SR04 ultradźwiękowy Proste wykrywanie przeszkód, robot mobilny, pomiar od kilku cm do kilku metrów Tani, łatwy do uruchomienia, wybacza proste błędy montażowe Gorszy przy miękkich powierzchniach, w wąskich tunelach i przy hałasie akustycznym około 9-27 zł
Sharp GP2Y0A21YK0F IR Średnie odległości, szybki odczyt analogowy, projekty edukacyjne Prosty sygnał analogowy, sensowny zakres pracy w okolicy 10-80 cm Odczyt jest nieliniowy i zależy od geometrii obiektu oraz światła w otoczeniu około 58-68 zł
VL53L0X ToF Precyzyjny pomiar odległości, małe obudowy, projekty, gdzie liczy się stabilność Mierzy do 2 m, działa niezależnie od refleksyjności obiektu, komunikuje się przez I2C Wymaga poprawnej obsługi I2C i zwykle biblioteki; trzeba pilnować zasilania modułu około 67-82 zł
APDS9960 Wykrywanie dłoni, gestów i bliskości w interfejsach użytkownika Mały, wygodny, dobry do reakcji bezdotykowej, działa po I2C To bardziej sensor obecności niż klasyczny dalmierz; nie daje pomiaru w cm około 38-90 zł

Jeżeli projekt ma być po prostu tani i działać od razu, najczęściej wygrywa HC-SR04. Jeśli zależy mi na kompaktowej konstrukcji i mniejszej podatności na kształt obiektu, dopłacam do ToF. APDS9960 wybieram wtedy, gdy celem jest interfejs zbliżeniowy, a nie klasyczny pomiar odległości. Kiedy wybór jest już zawężony, kluczowe staje się poprawne podłączenie, bo tu najłatwiej zrobić błąd.

Jak podłączyć moduł bez wpadki z zasilaniem

Najczęstszy błąd widzę zawsze ten sam: ktoś zakłada, że każdy moduł „do Arduino” działa identycznie z płytką 5 V. To nieprawda. Sam układ pomiarowy może pracować przy 3,3 V, a breakout na płytce może mieć stabilizator albo konwerter poziomów, ale nie musi.

Zasilanie i poziomy logiczne

  • HC-SR04 zwykle zasila się z 5 V i zwraca sygnał ECHO na poziomie 5 V, więc przy płytkach 3,3 V potrzebny bywa dzielnik napięcia albo konwerter poziomów.
  • Sharp GP2Y0A21YK0F ma wyjście analogowe, które podłączam do wejścia analogowego, na przykład A0, a zasilanie sprawdzam zgodnie z modułem, nie tylko z nazwą czujnika.
  • VL53L0X i APDS9960 komunikują się po I2C, więc liczy się linia SDA, SCL i poprawna biblioteka. W Arduino I2C obsługuje biblioteka Wire.
  • Jeżeli moduł wymaga 3,3 V, nie podaję mu ślepo 5 V tylko dlatego, że pasuje wtyczka. To właśnie ten skrót myślowy najczęściej kończy się niestabilnością albo uszkodzeniem.
  • Na Arduino Uno odczyt analogowy ma typowo 10 bitów, więc zwraca wartości 0-1023; na innych płytkach rozdzielczość może być inna.

Interfejsy, które spotkasz najczęściej

  • Digital - gdy moduł daje po prostu stan HIGH/LOW i interesuje mnie tylko wykrycie obecności.
  • Analog - gdy sensor zwraca napięcie, a ja sam ustawiam próg reakcji w kodzie.
  • I2C - gdy zależy mi na większej ilości danych, na przykład na pomiarze odległości, kalibracji albo dodatkowych funkcjach.

Przy ToF i APDS9960 ważny jest jeszcze jeden detal: jeśli czujnik ma kilka wyprowadzeń do konfiguracji, na przykład XSHUT albo programowalny adres I2C, to można go później rozbudować o drugi egzemplarz. W praktyce daje to dużo większą elastyczność niż w prostych modułach cyfrowych. Dopiero po poprawnym montażu ma sens kod, który wycina szum i ustawia sensowny próg.

Jak napisać prosty szkic i ustawić sensowny próg

Jeżeli ktoś pyta mnie, od czego zacząć, odpowiadam krótko: od odczytu surowych danych do Serial Monitora. Najpierw trzeba zobaczyć, jak zachowuje się czujnik przy pustym polu, przy dłoni, przy różnych materiałach i w różnych odległościach. Dopiero wtedy próg ma sens.

Wersja dla analogowego czujnika

const int sensorPin = A0;
const int ledPin = 13;
const int threshold = 450;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int raw = analogRead(sensorPin);

  digitalWrite(ledPin, raw > threshold ? HIGH : LOW);

  Serial.println(raw);
  delay(50);
}

Ten szkic jest prosty celowo. W czujnikach analogowych próg prawie nigdy nie jest „uniwersalny”, bo zależy od odległości, koloru obiektu, kąta ustawienia i samego egzemplarza modułu. Najpierw obserwuję wartości w Serial Monitorze, a dopiero potem ustawiam granicę zadziałania.

Przeczytaj również: Czujnik ruchu - Jak wybrać IMU, by nie przepłacić?

Wersja dla APDS9960

#include 

const int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);

  if (!APDS.begin()) {
    Serial.println("Błąd inicjalizacji APDS9960");
    while (true) {}
  }
}

void loop() {
  if (APDS.proximityAvailable()) {
    int prox = APDS.readProximity();

    digitalWrite(ledPin, prox < 100 ? HIGH : LOW);
    Serial.println(prox);
  }

  delay(50);
}

W przypadku APDS9960 odczyt jest prosty do interpretacji: 0 oznacza najbliżej, 255 najdalej, a -1 oznacza błąd. To bardzo wygodne w projektach interfejsowych, bo nie muszę sam przeliczać napięcia na odległość. Jeśli później przejdziesz na VL53L0X, logika pozostaje podobna, tylko zamiast skali umownej dostajesz od razu milimetry.

W kodzie pomocna jest też jedna rzecz, o której początkujący często zapominają: próbkowanie. Zamiast reagować na pojedynczy odczyt, lepiej zebrać kilka pomiarów, uśrednić je i dopiero wtedy podjąć decyzję. To zwykle wystarcza, żeby odfiltrować przypadkowe skoki. Nawet dobrze napisany szkic nie uratuje jednak złego montażu, więc warto znać najczęstsze pułapki.

Najczęstsze błędy, które psują odczyty

  • Zakładanie, że każdy moduł działa z tym samym napięciem zasilania. To najkrótsza droga do niestabilnych wyników.
  • Mieszanie wyjść analogowych i cyfrowych, czyli podłączanie modułu „na oko”, bez sprawdzenia dokumentacji.
  • Brak wspólnej masy między modułem a Arduino. Bez tego sygnał może wyglądać losowo, nawet jeśli przewody są wpięte poprawnie.
  • Odczytywanie jednego pomiaru zamiast serii. Pojedyncza próbka często jest przypadkowa.
  • Ignorowanie wpływu powierzchni obiektu. Ciemny, miękki albo mocno pochylony materiał potrafi mocno zmienić wynik.
  • Stosowanie sensorów IR w pełnym słońcu bez testu warunków rzeczywistych. Podczerwień bywa wtedy dużo mniej przewidywalna.
  • Używanie czujnika zbyt blisko przeszkody, mimo że jego charakterystyka przewiduje wyraźnie większy dystans pracy.

Ja do tego dorzucam jeszcze jedną zasadę praktyczną: jeśli projekt ma działać „od ręki”, to najpierw wybieram czujnik, który daje najłatwiejszy odczyt w kodzie, a dopiero potem ten, który wygląda najbardziej efektownie w opisie produktu. To zwykle oszczędza więcej czasu niż każda kolejna poprawka w pętli loop(). Po tej filtracji zostaje już tylko decyzja, który moduł da najlepszy stosunek prostoty do jakości pomiaru.

Kiedy dopłacić do lepszego czujnika, a kiedy nie ma to sensu

Jeżeli budujesz pierwszy projekt, nie widzę sensu w dopłacaniu do rozwiązania, którego nie będziesz w stanie dobrze wykorzystać. HC-SR04 albo prosty analogowy Sharp potrafią dać szybki sukces i bardzo czytelny efekt na biurku. To ma znaczenie, bo w edukacji liczy się nie tylko dokładność, ale też tempo zrozumienia działania całego układu.

Jeżeli jednak projekt ma być bardziej „produktowy”, ma zmieścić się w małej obudowie i ma reagować stabilniej na różne obiekty, wtedy dopłata do VL53L0X albo VL53L1X jest rozsądna. W podobny sposób patrzę na APDS9960: jeśli celem jest gest, panel dotykowo-bezdotykowy albo prosta obecność dłoni, to ten sensor ma sens. Jeśli potrzebujesz po prostu odległości w centymetrach, lepiej sięgnąć po ToF albo ultradźwięki.

Najlepszy wybór to nie ten „najmocniejszy”, tylko ten, który daje przewidywalny wynik przy twoim sposobie montażu, zasilania i obróbki danych. W projekcie z Arduino właśnie to robi największą różnicę: nie sama nazwa modułu, tylko to, czy da się go szybko uruchomić, poprawnie skalibrować i bez nerwów utrzymać w działającym układzie.

FAQ - Najczęstsze pytania

Do prostego wykrywania przeszkód i pomiaru odległości od kilku cm do kilku metrów najczęściej polecany jest tani i łatwy w uruchomieniu ultradźwiękowy HC-SR04. Jest odporny na błędy montażowe, choć ma ograniczenia przy miękkich powierzchniach i w wąskich przestrzeniach.
Czujniki ToF (np. VL53L0X) oferują precyzyjniejszy pomiar odległości do 2 metrów, niezależnie od refleksyjności obiektu, i są idealne do kompaktowych projektów. Ultradźwiękowe (HC-SR04) są tańsze, ale mniej dokładne i wrażliwe na rodzaj powierzchni oraz warunki akustyczne.
Najczęstsze błędy to niewłaściwe napięcie zasilania (np. podawanie 5V modułom 3.3V), brak wspólnej masy, ignorowanie dokumentacji modułu oraz brak kalibracji progu odczytu. Ważne jest też, by nie zakładać, że każdy moduł działa identycznie.
Nie, APDS9960 to bardziej sensor obecności i gestów niż klasyczny dalmierz. Służy do wykrywania dłoni i prostych gestów, a jego odczyt (0-255) wskazuje bliskość, nie precyzyjną odległość w centymetrach. Do pomiaru odległości lepiej wybrać ToF lub ultradźwięki.
Warto dopłacić do droższego czujnika (np. ToF) gdy projekt wymaga wysokiej precyzji, stabilności odczytów niezależnie od obiektu, małej obudowy lub gdy budujesz produkt. Do pierwszych projektów edukacyjnych, gdzie liczy się szybki sukces, tańsze sensory są wystarczające.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

czujnik zbliżeniowy arduino czujnik zbliżeniowy arduino jak podłączyć jaki czujnik zbliżeniowy do arduino
Autor Marcel Zieliński
Marcel Zieliński
Jestem Marcel Zieliński, doświadczonym twórcą treści w dziedzinie elektroniki, robotyki i programowania. Od ponad dziesięciu lat analizuję rynek oraz piszę o najnowszych trendach i innowacjach w tych obszarach. Moja specjalizacja obejmuje zarówno podstawowe zasady elektroniki, jak i zaawansowane techniki programowania, co pozwala mi na tworzenie treści, które są zrozumiałe i przystępne dla szerokiego grona odbiorców. W mojej pracy koncentruję się na uproszczeniu skomplikowanych danych oraz dostarczaniu obiektywnej analizy, co umożliwia czytelnikom lepsze zrozumienie omawianych zagadnień. Zawsze dążę do tego, aby dostarczać rzetelne i aktualne informacje, które mogą być pomocne zarówno dla amatorów, jak i dla profesjonalistów w dziedzinie elektroniki i robotyki. Moim celem jest wspieranie pasjonatów technologii w ich dążeniach oraz inspirowanie ich do dalszego rozwoju w tych ekscytujących dziedzinach.
Komentarze (0)
Dodaj komentarz