HC-05 Arduino - stabilne połączenie Bluetooth krok po kroku

Artur Wójcik .

10 kwietnia 2026

Arduino z modułem **arduino bluetooth hc-05** i zieloną diodą LED na płytce stykowej.

Połączenie Arduino z modułem HC-05 przez Bluetooth to jeden z najprostszych sposobów na bezprzewodową komunikację szeregową w małym projekcie. W praktyce liczą się trzy rzeczy: poprawne okablowanie, zgodna prędkość transmisji i sensowny wybór portu, bo wtedy moduł działa jak kabel bez kabla, a nie jak źródło losowych błędów. Poniżej pokazuję, jak spiąć to stabilnie, jak skonfigurować szkic i jak od razu wyłapać najczęstsze pułapki.

Najważniejsze rzeczy do ogarnięcia przed pierwszym testem

  • HC-05 działa jak klasyczny interfejs szeregowy Bluetooth, więc najlepiej myśleć o nim jak o bezprzewodowym UART.
  • Na linii RX modułu warto zejść z 5 V do 3,3 V, najlepiej przez dzielnik napięcia albo konwerter poziomów.
  • W Arduino Uno najwygodniej użyć SoftwareSerial, a na Mega 2560 lepiej sięgnąć po Serial1.
  • Wiele modułów startuje z 9600 b/s w trybie danych i 38400 b/s w trybie AT, ale firmware bywa różne.
  • Jeśli chcesz zmienić nazwę, PIN albo baud rate, zwykle potrzebujesz trybu AT uruchamianego przed startem modułu.
  • Najwięcej problemów robią pomylone TX/RX, brak wspólnej masy i zbyt wysokie napięcie na wejściu RX.

Jak działa komunikacja przez HC-05

HC-05 nie jest „uniwersalnym Bluetooth do wszystkiego”. To klasyczny moduł Bluetooth, który najczęściej pracuje jako interfejs szeregowy SPP, czyli zachowuje się podobnie do kabla UART, tylko bez przewodu. Jeśli potrzebujesz prostego sterowania, wysyłania komend, logów albo krótkich ramek tekstowych, to bardzo wygodne rozwiązanie. Jeśli planujesz bardziej nowoczesną komunikację mobilną, niskie zużycie energii albo współpracę z aplikacjami opartymi na BLE, to jest już inna kategoria sprzętu.

Rozwiązanie Co daje Najlepsze do Ograniczenie
HC-05 Klasyczny Bluetooth SPP i prosty port szeregowy Sterowanie, proste dane tekstowe, prototypy To nie BLE i nie nadaje się do wszystkiego
USB Serial Najszybszy debug i stabilne połączenie Testy na biurku, wgrywanie szkiców, diagnostyka Wymaga kabla
BLE Niższe zużycie energii i inne profile komunikacji Nowe projekty mobilne i aplikacje BLE Inna konfiguracja i inne aplikacje

Tak właśnie patrzę na ten moduł w praktyce: nie jako na zamiennik każdej odmiany Bluetooth, tylko jako na prosty most między Arduino a terminalem, telefonem albo drugim mikrokontrolerem. Kiedy ten model myślenia się zgadza, łatwiej przejść do przewodów bez zgadywania.

Połączenie modułu **arduino bluetooth hc-05** z Arduino Uno przez płytkę stykową. Widoczne rezystory i przewody.

Jak podłączyć przewody do Arduino bezpiecznie

Najczęściej zaczynam od prostego układu: zasilanie z 5 V na płytce breakout, wspólna masa i komunikacja szeregowa na dwóch pinach cyfrowych. Na Arduino Uno wygodnie jest użyć SoftwareSerial, bo sprzętowy UART zostaje wolny dla USB i monitora portu szeregowego. Najważniejsza zasada brzmi: nie podawaj 5 V bezpośrednio na wejście RX modułu, jeśli masz goły HC-05 albo płytkę bez ochrony poziomów logicznych.

Pin HC-05 Połączenie Uwagi
VCC 5 V lub 3,3 V zależnie od płytki Gotowe płytki często mają stabilizator, ale warto sprawdzić opis modułu
GND GND Arduino Wspólna masa jest obowiązkowa
TXD RX Arduino, na przykład D10 Można podłączyć bezpośrednio do wejścia Arduino
RXD TX Arduino przez dzielnik napięcia W praktyce dobrze działa np. 1 kΩ i 2 kΩ albo gotowy konwerter poziomów
KEY / EN 3,3 V przed startem, gdy wchodzisz w AT mode To nie jest pin do codziennej pracy, tylko do konfiguracji
STATE Opcjonalnie do pinu cyfrowego Pomaga sprawdzić, czy moduł jest sparowany i połączony

Jeśli masz popularny breakout z wbudowanym stabilizatorem, zasilanie 5 V zwykle działa poprawnie, ale linia RX nadal wymaga ostrożności. W tańszych klonach różni się też wyprowadzenie przycisku, KEY albo napisu na płytce, więc przed podłączeniem dobrze jest spojrzeć na konkretny model. Gdy przewody są już pewne, można dopiero przejść do szkicu i obsługi portu.

Jak napisać pierwszy szkic do testu komunikacji

W kodzie trzy rzeczy muszą się zgadzać: piny, prędkość i kierunek danych. W konstruktorze SoftwareSerial najpierw podajesz pin odbioru Arduino, a dopiero potem nadawania, i to właśnie tam początkujący najczęściej się mylą. Ja zaczynam od prostego mostka: wszystko, co przychodzi z telefonu, ląduje w Serial, a wszystko z monitora portu wraca do modułu.

#include 

SoftwareSerial bt(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  bt.begin(9600);
  Serial.println("Start");
}

void loop() {
  if (bt.available()) {
    Serial.write(bt.read());
  }

  if (Serial.available()) {
    bt.write(Serial.read());
  }
}

To wystarcza do pierwszego testu i od razu pokazuje, czy komunikacja działa w obie strony. Na Uno i Nano taki układ jest zwykle najpraktyczniejszy, a na Mega 2560 lepiej użyć Serial1, bo wtedy nie musisz dokładać programowego UART-u i mniej obciążasz procesor. Przy projektach, które mają jeszcze obsługiwać czujniki, przekaźniki albo silniki, to naprawdę robi różnicę.

Płytka Najlepszy wybór Dlaczego
Uno / Nano SoftwareSerial Sprzętowy UART jest zajęty przez USB i monitor portu
Mega 2560 Serial1 Masz osobny port na pinach 18 i 19
Leonardo / Micro Zależnie od projektu USB i UART działają inaczej niż na Uno, więc trzeba to sprawdzić wcześniej

Gdy ten test przechodzi, masz już potwierdzenie, że problem nie leży w samym module ani w kodzie do odczytu znaków. Następny krok to uporządkowanie ustawień w trybie AT, bo właśnie tam zmienia się parametry, które później decydują o wygodzie pracy.

Kiedy użyć trybu AT i jakie parametry ustawić

Tryb AT przydaje się wtedy, gdy chcesz zmienić nazwę modułu, PIN, rolę master/slave albo prędkość połączenia. Na wielu płytkach KEY albo EN trzeba ustawić przed zasileniem modułu, a dopiero potem uruchomić komunikację z prędkością właściwą dla komend. Z mojego doświadczenia najwięcej nieporozumień bierze się z tego, że ktoś wysyła komendy do modułu, który nadal pracuje w trybie danych.

  • AT - sprawdza, czy moduł odpowiada w trybie komend.
  • AT+NAME=Robot - zmienia nazwę widoczną podczas parowania.
  • AT+PSWD=1234 - ustawia PIN.
  • AT+UART=9600,0,0 - ustawia prędkość trybu danych.
  • AT+ROLE=0 / AT+ROLE=1 - przełącza rolę slave/master.

Nie traktuję tych komend jako absolutnego standardu dla każdego egzemplarza, bo klony HC-05 potrafią mieć różne firmware. Jeśli odpowiedź nie przychodzi, pierwsze podejrzenia kieruję na tryb pracy, zakończenie linii i baud rate 38400 b/s używany przez komendy na wielu modułach. Dopiero potem szukam problemu w samym szkicu. Jeżeli nadal coś nie działa, najwięcej mówią już same objawy, więc warto je rozdzielić zamiast zgadywać.

Najczęstsze objawy błędów i co one zwykle znaczą

W praktyce większość problemów da się zawęzić do trzech warstw: zasilania, poziomów logicznych i ustawień portu. Gdy to rozdzielisz, diagnostyka robi się zaskakująco krótka. Ja zwykle zaczynam od objawów, bo one szybciej prowadzą do przyczyny niż przypadkowe przekładanie przewodów.

Moduł paruje się, ale nic nie dochodzi

  • Sprawdź, czy TX i RX nie są zamienione.
  • Upewnij się, że bt.begin() ma tę samą wartość co moduł.
  • Na Arduino Uno nie podłączaj HC-05 do pinów 0 i 1, jeśli używasz USB do testów.
  • Sprawdź, czy masa Arduino i modułu jest wspólna.

W terminalu widzisz losowe znaki

  • Zwykle winna jest różnica w baud rate.
  • Kolejny podejrzany to zbyt wysokie napięcie na RX modułu.
  • Na słabym zasilaniu potrafią pojawić się pojedyncze błędy ramek.
  • Jeśli używasz dłuższych przewodów, skróć je i sprawdź połączenia jeszcze raz.

Przeczytaj również: Demodulator FM - Jak działa i dlaczego jest kluczowy?

Nie możesz wejść w tryb AT

  • KEY lub EN musi być ustawione przed startem zasilania na wielu wersjach modułu.
  • Sprawdź, czy monitor portu wysyła zakończenie linii \r\n.
  • Upewnij się, że moduł nie jest już aktywnie połączony z innym urządzeniem.
  • Na niektórych płytkach przydaje się prosty reset z pełnym odłączeniem zasilania.

Jeśli projekt zasila silniki, serwa albo przekaźniki, problemem bywa nie sam HC-05, tylko spadki napięcia na całej płytce. Wtedy moduł gubi łączność, a na pierwszy rzut oka wygląda to jak błąd kodu. Gdy te symptomy są już opanowane, warto ustawić projekt tak, aby dało się go później rozbudować bez przepisywania wszystkiego od zera.

Co ustawić od razu, żeby nie przepisywać projektu po pierwszych testach

Jeśli układ ma wyjść poza eksperyment na stole, zaplanuj od razu prosty format danych. Do sterowania pojedynczymi poleceniami wystarczy krótki znak albo słowo zakończone enterem; do odczytu czujników lepiej działa linia tekstowa z separatorem, na przykład CSV. Taki format jest banalny do debugowania i dobrze znosi rozwój projektu.

  • Ustal jeden prosty protokół, zanim dołożysz kolejne funkcje.
  • Testuj najpierw w terminalu szeregowym, dopiero potem w aplikacji własnej.
  • Jeśli potrzebujesz tylko sterowania, trzymaj się krótkich komend, na przykład ON, OFF, LEFT, RIGHT.
  • Jeśli chcesz przesyłać dane z czujników, dodaj separator i końcówkę linii, żeby łatwo je parsować.
  • Przy większym projekcie od razu zaplanuj zasilanie osobno dla silników i dla logiki.

Najrozsądniejsza kolejność pracy jest zwykle taka: najpierw terminal szeregowy, potem własna aplikacja albo panel sterowania, a dopiero na końcu dopracowanie obudowy i okablowania. W praktyce oszczędza to najwięcej czasu, bo od początku wiesz, czy problem leży w radiu, protokole, czy w samym projekcie.

FAQ - Najczęstsze pytania

HC-05 to moduł Bluetooth działający jako bezprzewodowy interfejs szeregowy (SPP). Umożliwia prostą komunikację między Arduino (lub innym mikrokontrolerem) a urządzeniami takimi jak smartfony czy komputery. Jest idealny do sterowania, wysyłania komend czy przesyłania krótkich danych tekstowych.
Większość modułów HC-05 (szczególnie "gołych" bez płytki breakout) pracuje na poziomach logicznych 3.3V. Podanie bezpośrednio 5V z Arduino na pin RX może uszkodzić moduł. Zaleca się stosowanie dzielnika napięcia (np. z rezystorów 1kΩ i 2kΩ) lub konwertera poziomów logicznych.
Najczęstsze problemy to zamienione piny TX/RX, brak wspólnej masy między modułem a Arduino, niezgodna prędkość transmisji (baud rate) oraz podanie zbyt wysokiego napięcia (5V) na pin RX modułu HC-05. Ważne jest też, by pamiętać o użyciu SoftwareSerial na Uno/Nano lub Serial1 na Mega.
Tryb AT służy do konfiguracji modułu, np. zmiany nazwy, kodu PIN, roli (master/slave) lub domyślnej prędkości transmisji danych. Aby wejść w tryb AT, często trzeba podać zasilanie na moduł przy wciśniętym przycisku KEY/EN, a następnie komunikować się z nim z inną prędkością (zazwyczaj 38400 b/s).
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

arduino bluetooth hc-05 hc-05 arduino podłączenie bluetooth arduino hc-05 konfiguracja
Autor Artur Wójcik
Artur Wójcik
Nazywam się Artur Wójcik i od 14 lat zajmuję się elektroniką, robotyką oraz programowaniem. Moje zainteresowanie tymi dziedzinami zaczęło się w dzieciństwie, kiedy to samodzielnie budowałem różne urządzenia i eksperymentowałem z programowaniem. Od tego czasu nieustannie poszerzam swoją wiedzę i umiejętności, co pozwala mi na bieżąco śledzić najnowsze trendy oraz technologie. Piszę o różnych aspektach elektroniki i robotyki, starając się w przystępny sposób wyjaśniać skomplikowane zagadnienia. Zależy mi na tym, aby moje teksty były nie tylko informacyjne, ale także zrozumiałe dla każdego, niezależnie od poziomu zaawansowania. W swojej pracy zawsze dokładam starań, aby weryfikować źródła i porównywać informacje, co pozwala mi dostarczać rzetelne oraz aktualne treści. Wierzę, że dobrze zorganizowana wiedza i klarowne przedstawienie tematów są kluczowe dla zrozumienia elektroniki i robotyki.
Komentarze (0)
Dodaj komentarz