Kereta RC Bluetooth Arduino + HC-05: Kawal Chassis 2WD dari Telefon Android

Cartoon of a dark navy smartphone showing a ring of teal arrow buttons, sending teal radio arcs to a two-wheel robot car with yellow wheels, a blue-and-green Bluetooth module and a red motor driver board on its clear acrylic deck

Kereta RC Bluetooth ialah satu chassis 2WD, sebuah pemandu L298N dan satu modul HC-05 yang menyerahkan tekanan butang telefon anda kepada Arduino. Setiap butang dalam app RC controller percuma menghantar satu aksara ASCII β€” β€œF” untuk ke hadapan, β€œS” untuk berhenti β€” dan sketch itu cuma satu switch-case yang menukar setiap aksara menjadi satu keadaan H-bridge. Fahamkan satu idea itu dan mana-mana app Bluetooth boleh memandu kereta anda β€” dari telefon Android, kerana HC-05 bercakap Bluetooth Classic dan iOS mengunci protokol itu daripada app biasa.

Apa komponen yang diperlukan untuk kereta RC Bluetooth?

Kit chassis 2WD membekalkan bahagian mekanikalnya β€” plat akrilik, dua motor gear TT, roda, satu caster, skru dan satu suis rocker. HC-05 pula satu-satunya bahagian yang memisahkan projek ini daripada kereta elak halangan kami: chassis sama, pemandu sama, bateri sama, cuma benda yang memberitahunya ke mana hendak pergi itu yang berbeza.

Parts list

ItemPriceQty
2WD 4WD Smart Car Chassis Single Layer Acrylic Arduino Smart Car Chassis Kit With Motor - 4WD CAR KIT2WD 4WD Smart Car Chassis Single Layer Acrylic Arduino Smart Car Chassis Kit With Motor - 4WD CAR KIT4WDSCARRM29.95
TP4056 18650 Battery Charger Module Lithium Ion Battery Li-ion Battery Charger Type C Micro USB - TP4056 CHARGER (TYPEC)TP4056 18650 Battery Charger Module Lithium Ion Battery Li-ion Battery Charger Type C Micro USB - TP4056 CHARGER (TYPEC)TP4056CRM2.50
Soldering Service for Circuit Boards & Electronics - 5 Pins Soldering ServiceSoldering Service for Circuit Boards & Electronics - 5 Pins Soldering ServiceSOLSE05RM0.80
400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400 pcs 1/4W Resistor Pack Resistor Kit 20 Common Value with 20 each400RPACRM7.95Kehabisan stok

Chassis 4WD ialah laluan alternatif dan menjalankan sketch yang sama persis, dengan dua motor setiap sebelah diwayar selari ke dalam satu saluran L298N. TP4056 ialah pengecas sel tunggal, jadi ia mengecas semula dua sel 18650 itu satu demi satu dan di luar pemegangnya, dan ia tidak boleh sekali-kali disambungkan merentasi pek 7.4 V secara keseluruhan. Servis solder 5 pin meliputi empat sambungan tab motor kalau anda lebih suka tidak solder sendiri, dan pek perintang itu pula meliputi pasangan pembahagi kalau anda menambah wayar pulang yang diterangkan di bawah, di mana mana-mana nisbah 1:2 boleh pakai: 1k dengan 2k, atau 10k dengan 20k.

Jantina hujung wayar menentukan sama ada pesanan pertama anda boleh terus digunakan. Enam pin HC-05 ialah header male bersudut tepat dan pin IN1–IN4 pada L298N pun pin male, manakala tepi Uno pula soket female β€” jadi setiap wayar isyarat mestilah male-to-female. Laluan kuasa ialah pengecualiannya: satu hujungnya pin male telanjang yang diapit dalam terminal skru L298N, dan hujung satu lagi masuk ke dalam soket female pada Uno, jadi itulah pek male-to-male. Wayar bertimah pada pemegang bateri masuk terus ke dalam terminal skru, jadi tiada apa-apa di sini yang perlukan breadboard β€” simpan wayar breadboard yang tegar itu untuk kerja atas meja. Uno diprogram melalui USB-B bersaiz penuh, jadi ia perlukan kabel A-to-B. Satu tabiat yang patut dibentuk sebelum sambungan pertama: HC-05 mencetak nama pinnya di bahagian bawah board dan bukan di atas, jadi terbalikkan modul itu dan baca dahulu. VCC dan GND duduk bersebelahan dalam baris itu, dan menterbalikkan dua itu ialah kesilapan yang menamatkan riwayat sesebuah modul.

Motor TT ialah satu-satunya kerja solder di sini β€” tab telanjang pada penutup hujung belakang, pasangan wayar yang longgar, empat sambungan. Panduan solder kami ada tekniknya, atau servis solder 5 pin meliputi tepat empat sambungan itu.

Pasang chassis dahulu sebelum sebarang wiring. Plat akrilik dan tab motor yang kecil itu sampai di bawah filem pelindung kertas kraft yang menjadikannya nampak macam kadbod β€” kelupas kedua-dua permukaannya dahulu, kalau tidak kereta yang sudah siap pun masih nampak tak siap. Skru satu motor pada setiap sebelah plat dengan tab dan skru panjang itu, tekan satu roda masuk ke setiap aci, pasang caster di bawah hujung bertentangan, dan biarkan permukaan dek lapang untuk Uno, pemandu dan pemegang bateri.

Bagaimana app telefon sebenarnya mengawal kereta ini?

App RC controller Bluetooth sebenarnya tidak buat apa-apa yang canggih. Sebaik sahaja dipasangkan, HC-05 memperkenalkan dirinya sebagai satu port serial biasa, dan app itu pula cuma papan kekunci yang ada gambar atas kekuncinya: tekan anak panah atas dan ia menghantar satu bait F; lepaskan dan ia menghantar S. Tiada apa-apa lagi yang melintasi talian itu β€” tiada handshake, tiada format paket, tiada library protokol untuk dipasang.

Itulah juga sebabnya kami tunjukkan anda satu carian dan bukannya satu app tertentu. Di Play Store, Arduino Bluetooth RC car dan Bluetooth RC controller masing-masing memulangkan satu rak controller percuma, dan yang anda mahu itu ialah yang menyatakan ia berfungsi dengan HC-05 atau HC-06 β€” app yang ditulis untuk Bluetooth Low Energy langsung tidak nampak modul Classic, dan itulah sebab paling biasa kenapa kereta yang berwayar betul pun tidak pernah bertindak balas. Namanya pun bukan spesifikasi: beberapa app yang tiada kaitan langsung dihantar dengan tajuk yang hampir serupa dan menghantar aksara berbeza untuk anak panah yang sama. Jadi pilih satu, kemudian cari tahu apa yang ia hantar sebenarnya. Tiada apa-apa di sini yang perlukan fail APK dari laman muat turun, dan controller yang meminta kebenaran melebihi Bluetooth sedang meminta lebih daripada apa yang kerja ini perlukan.

Jadi jangan sekali-kali percaya jadual arahan yang anda baca di mana-mana, termasuk yang ini β€” versi app berbeza-beza, dan telefon anda sendiri boleh beritahu dalam masa seminit. Untuk ujian ini, wayarkan VCC, GND dan TXD HC-05 sahaja ke 5 V, GND dan D2 pada Uno, dan biarkan suis bateri dimatikan. Pin 5V Uno itu ialah rel teratur itu sendiri dan bukan input di hadapan regulator, jadi apa sahaja yang anda suap ke dalamnya duduk terus merentasi apa yang sedang dibekalkan oleh port USB β€” USB dan output 5 V L298N tidak boleh sekali-kali bersambung serentak. Upload yang ini, buka Serial Monitor pada 9600 baud, sambungkan app, dan tekan setiap butang satu per satu:

// Langkah 1: cari tahu apa yang app ANDA hantar sebenarnya.
// Upload ini, buka Serial Monitor pada 9600, sambung app, tekan butang.
#include <SoftwareSerial.h>
SoftwareSerial bt(2, 3);   // 2 = RX Uno, disambung ke TXD HC-05. 3 dibiarkan tanpa wayar.

void setup() {
  Serial.begin(9600);
  bt.begin(9600);
  Serial.println(F("Press a button in the app..."));
}

void loop() {
  if (bt.available()) {
    char c = bt.read();
    Serial.print(c);
    Serial.print(F("  (byte "));
    Serial.print((int)c);   // cetak nombornya sekali, untuk aksara yang tak nampak
    Serial.println(F(")"));
  }
}

Kebanyakan app RC controller percuma menggunakan set yang sama, dan itulah yang dijangka oleh sketch utama di bawah:

Butang app Aksara yang dihantar Apa yang sketch suruh kereta buat
Ke hadapan / Undur F / B Dua-dua motor ke arah yang sama
Kiri / Kanan L / R Motor berlawanan arah β€” berpusing di tempat
Empat pepenjuru G I H J Satu roda dipandu, satu bebas β€” lengkungan yang luas
Butang dilepaskan S Kedua-dua enable jatuh ke sifar
Slider kelajuan 0–9, q Menetapkan nilai PWM yang dipakai oleh gerakan seterusnya
Lampu, hon, apa-apa lagi huruf lain Tidak dikenali, jadi sketch memberhentikan kereta β€” beri butang hon atau lampu satu case kosongnya sendiri kalau itu mengganggu anda

Perhatikan apa yang tersirat di situ: kereta memegang arahan terakhirnya sehingga arahan baharu tiba, jadi telefon yang terkeluar dari jarak capaian di tengah pecutan akan meninggalkannya terus memandu. Talian HC-05 mencapai lebih kurang sepuluh meter di ruang lapang dan jauh lebih pendek melalui dinding atau badan manusia, iaitu lebih dekat daripada apa yang kebanyakan orang sangka sebelum mencuba. Suis rocker dalam kit itu duduk pada wayar bateri β€” itulah suis mati anda, dan tempatnya mestilah dalam capaian tangan.

Rantaian kartun menunjukkan telefon navy dengan butang anak panah teal yang ditekan menghantar satu token kosong melalui lengkungan radio teal ke dalam modul Bluetooth biru dan hijau, kemudian terus ke board pemandu motor merah yang memutarkan dua motor kuning
Satu tekanan, satu bait, satu keadaan motor. Keseluruhan sistem ini cuma rantaian itu yang berulang berkali-kali sesaat.

Bagaimana cara pair HC-05 dengan telefon Android?

HC-05 ialah peranti Bluetooth Classic yang menggunakan Serial Port Profile, jadi ia muncul dalam tetapan Bluetooth biasa Android dan bukan di dalam app β€” dan kerana iOS tidak membuka port serial Classic kepada app biasa, ini laluan Android sahaja. Hidupkan kereta, buka Settings, pair dengan peranti bernama HC-05, dan masukkan PIN 1234 β€” ada beberapa batch yang dihantar dengan 0000. Selepas itu barulah buka app RC dan pilih modul itu daripada senarai perantinya.

Pairing dan connecting ialah dua keadaan yang berbeza, dan mengelirukan kedua-duanya ialah sebab paling biasa kenapa kereta yang sudah siap tetap tidak bergerak. Android mengingati pairing itu selamanya; app pula membuka sambungan datanya semula setiap kali. Modul itu menunjukkan keadaan mana yang ia berada β€” LED-nya berkelip lebih kurang dua kali sesaat semasa menunggu, dan bertukar kepada kelipan dua yang perlahan sebaik sahaja ada app memegang port itu. Panduan kawalan telefon HC-05 kami menerangkan cara menukar nama dan mod AT dengan lengkap.

HC-06 boleh menggantikannya di sini tanpa mengubah apa-apa: sifat slave-sahaja tidak merugikan langsung dalam kereta yang memang tidak pernah memulakan sambungan. Menonton proses pairing dan pemanduan pertama dari mula ke akhir memang membantu:

Adakah projek ini perlukan pembahagi voltan pada HC-05?

Tidak β€” HC-05 dalam kereta yang hanya memandu langsung tidak perlukan perintang. Sebabnya lebih penting daripada jawapannya, kerana separuh daripada rajah wiring di internet menambah dua perintang yang projek ini tidak pernah guna.

Teras radio HC-05 berjalan pada 3.3 V, jadi output TXD-nya berayun antara 0 dan 3.3 V dan input RXD-nya pula tidak tahan 5 V. Itu dua wayar berasingan dengan dua masalah berasingan. Dalam arah yang penting di sini, 3.3 V perlu dibaca dengan yakin sebagai logik HIGH oleh ATmega328P pada Uno, dan datasheet-nya menjamin HIGH di atas 0.6 Γ— VCC. Pada board 5 V, ambang itu ialah 3.0 V, dan 3.3 V melepasinya β€” cukup selesa sehingga ini satu spesifikasi, bukan margin yang bernasib baik.

Kereta yang hanya memandu tidak pernah menghantar apa-apa balik ke telefon, jadi pin transmit Uno tiada kerja. Biarkan ia tanpa wayar dan masalah 5 V-masuk-ke-3.3 V itu memang tidak wujud: kuasa, ground, dan satu wayar isyarat. Pembahagi itu betul-betul menjadi wajib hanya apabila anda mahu kereta bercakap balik β€” voltan bateri pada skrin terminal app, bacaan sensor, atau sesi AT untuk menukar nama modul. Barulah jalankan D3 Uno melalui perintang 1 kΞ© ke RXD dengan 2 kΞ© dari RXD turun ke GND: pasangan itu membahagi 5 V pada nisbah 2/(1+2), iaitu 3.3 V, dan BT_TX_PIN yang dikhaskan dalam sketch itu pun mula berguna.

Jangan pula pindahkan modul itu ke pin 0 dan 1. Itu pin serial perkakasan Uno, yang dikongsi dengan cip USB, jadi HC-05 yang tersambung akan melawan setiap kali anda upload β€” itulah kegagalan klasik stk500_recv(): programmer is not responding yang menyebabkan board yang elok dipulangkan. SoftwareSerial pada D2 mengasingkan dua perbualan itu.

Kartun modul Bluetooth HC-05 biru dan hijau disambungkan kepada board Arduino navy gelap oleh satu wayar jumper teal dengan anak panah menghala ke board, sementara wayar kelabu kedua terbiar tidak bersambung di sebelah dua perintang biru yang tidak digunakan
Satu wayar membawa keseluruhan perbualan itu. Wayar pulang dan dua perintangnya kekal dalam beg sampailah anda mahu kereta menjawab balik.

Bagaimana cara wayar pemandu, modul dan bateri?

Dua sel 18650 memulakan satu gelung dengan dua tapak. Sel itu duduk kepala ke ekor dalam pemegang 2 slot, dan itu bermakna siri: 7.4 V nominal, 8.4 V bila penuh dicas. Pek itu menyuap terminal +12V L298N, di mana jambatannya menyimpan lebih kurang 1.8 V untuk dirinya sendiri lalu menghantar kira-kira 5.6 V kepada motor yang dinilai 3–6 V, manakala regulator atas board itu pula menukar input yang sama menjadi 5 V yang bersih untuk Uno dan HC-05. Pemegang 4Γ—AA dalam kit tidak mampu buat ini β€” 6 V tolak jambatan tadi tinggal 4.2 V dan kereta yang merangkak β€” dan pemegang 18650 4 slot lagi teruk, kerana pemegang berbilang slot juga menyirikan selnya dan empat sel akan menghulurkan 14.8 V kepada jambatan, dengan kira-kira 13 V daripadanya sampai ke motor 6 V. Kereta elak halangan kami mengupas kiraan itu sepenuhnya.

Biarkan jumper kecil 5V-EN itu terpasang, kerana itulah yang menyambungkan regulator tadi kepada input, dan tanggalkan dua cap hitam pada ENA dan ENB β€” sebagaimana ia dihantar, dua cap itu mengikat kedua-dua enable HIGH, jadi kereta anda ada satu kelajuan sahaja tidak kira apa yang slider dalam app itu buat.

Dari Ke Kenapa
Wayar merah pemegang, melalui suis rocker kit Terminal skru +12V L298N Pek 7.4 V itu menyuap jambatan dan regulator 5 V atas board
Wayar hitam pemegang GND L298N (skru tengah) Laluan pulang bagi arus motor
Terminal skru +5V L298N Pin 5V Uno Menjalankan Uno dan modul itu β€” tiada bateri kedua
GND L298N GND Uno Tanpa ground yang dikongsi, pin IN tiada rujukan
OUT1 / OUT2 L298N Dua wayar motor kiri Tukar tempatnya kalau roda itu berpusing songsang β€” tak perlu ubah kod
OUT3 / OUT4 L298N Dua wayar motor kanan Peraturan yang sama untuk sebelah lagi
IN1 / IN2 L298N D9 / D8 Uno Satu HIGH dan satu LOW menentukan arah motor kiri
IN3 / IN4 L298N D7 / D6 Uno Pasangan yang sama untuk motor kanan
ENA / ENB L298N (cap ditanggalkan) D10 / D11 Uno Kelajuan PWM bagi setiap sebelah
VCC / GND HC-05 5V / GND Uno Regulator modul itu menerima 3.6–6 V; 5 V ialah bekalan biasanya
TXD HC-05 D2 Uno Satu-satunya wayar isyarat: modul bercakap, Uno mendengar
RXD, EN, STATE HC-05 Tiada apa-apa Tidak digunakan dalam kereta yang hanya memandu

Kod Arduino: satu aksara masuk, satu keadaan H-bridge keluar

Cuma SoftwareSerial yang diperlukan, dan ia memang datang bersama Arduino IDE. Pilih Arduino Uno, upload melalui kabel A-to-B, kemudian cabut USB sebelum menghidupkan suis pek bateri β€” dan matikan pek itu semula sebelum USB masuk balik, atas sebab yang sama. Ia dikompil menjadi 3,884 bait, lebih kurang 12% daripada flash Uno. Ia terus mencetak setiap aksara yang diterimanya ke Serial Monitor, jadi kereta yang degil boleh didiagnosis atas meja dengan rodanya tergantung di udara.

// Kereta RC Bluetooth: Arduino Uno + HC-05 + L298N + chassis 2WD.
// App telefon itu cuma papan kekunci. Setiap butang menghantar SATU aksara
// ASCII, dan sketch ini ialah switch-case yang menukar setiap aksara menjadi
// satu keadaan H-bridge. Tukar hurufnya supaya padan dengan app yang anda guna.

#include <SoftwareSerial.h>

// ---- Pin ----
const uint8_t BT_RX_PIN = 2;   // Uno MENERIMA di sini <- TXD HC-05
const uint8_t BT_TX_PIN = 3;   // dikhaskan oleh library, sengaja TIDAK diwayar

const uint8_t ENA_PIN = 10;    // laju sebelah kiri  (PWM)
const uint8_t IN1_PIN = 9;     // arah sebelah kiri
const uint8_t IN2_PIN = 8;
const uint8_t IN3_PIN = 7;     // arah sebelah kanan
const uint8_t IN4_PIN = 6;
const uint8_t ENB_PIN = 11;    // laju sebelah kanan (PWM)

SoftwareSerial bt(BT_RX_PIN, BT_TX_PIN);

// ---- Nombor yang anda tune ----
// 140 daripada 255 lebih kurang duty yang diperlukan motor TT untuk mula
// bergerak atas pek 7.4 V selepas L298N mengambil bahagiannya. Di bawah itu
// gearbox cuma berdengung dan tidak berpusing.
const uint8_t SPEED_FLOOR = 140;
const uint8_t SPEED_TOP   = 250;

// Tiada dua motor TT yang serupa. Naikkan trim pada sebelah yang lambat,
// 5 count setiap kali, sampai kereta jalan lurus.
const uint8_t TRIM_LEFT  = 0;
const uint8_t TRIM_RIGHT = 0;

uint8_t speedNow = 200;        // diubah oleh butang kelajuan dalam app

// Satu panggilan menetapkan kedua-dua sebelah. Kelajuan 0 membiarkan roda itu
// bebas berputar, dan itulah yang membezakan lengkungan lembut daripada
// pusingan di tempat.
void motors(bool leftFwd, uint8_t leftPwm, bool rightFwd, uint8_t rightPwm) {
  digitalWrite(IN1_PIN, leftFwd  ? HIGH : LOW);
  digitalWrite(IN2_PIN, leftFwd  ? LOW  : HIGH);
  digitalWrite(IN3_PIN, rightFwd ? HIGH : LOW);
  digitalWrite(IN4_PIN, rightFwd ? LOW  : HIGH);

  uint8_t l = (leftPwm  == 0) ? 0 : min(255, leftPwm  + TRIM_LEFT);
  uint8_t r = (rightPwm == 0) ? 0 : min(255, rightPwm + TRIM_RIGHT);
  analogWrite(ENA_PIN, l);
  analogWrite(ENB_PIN, r);
}

void halt() {
  analogWrite(ENA_PIN, 0);
  analogWrite(ENB_PIN, 0);
}

void setup() {
  pinMode(ENA_PIN, OUTPUT);
  pinMode(IN1_PIN, OUTPUT);
  pinMode(IN2_PIN, OUTPUT);
  pinMode(IN3_PIN, OUTPUT);
  pinMode(IN4_PIN, OUTPUT);
  pinMode(ENB_PIN, OUTPUT);
  halt();

  Serial.begin(9600);          // tingkap USB, untuk menonton apa yang tiba
  bt.begin(9600);              // kadar kilang HC-05 itu sendiri
  Serial.println(F("Bluetooth RC car ready."));
}

void loop() {
  if (!bt.available()) {
    return;                    // tiada apa-apa baharu: arahan terakhir masih berkuat kuasa
  }

  char c = bt.read();
  Serial.println(c);           // supaya anda nampak tepat apa yang app anda hantar

  // Ada app yang menamatkan setiap butang dengan newline. Abaikan ia, kalau
  // tidak kereta akan berhenti semilisaat selepas setiap arahan.
  if (c == '\n' || c == '\r') {
    return;
  }

  // Butang kelajuan: '0' tetapan paling perlahan yang berguna, '9' paling laju,
  // dan 'q' ialah butang laju penuh dalam app.
  if (c >= '0' && c <= '9') {
    speedNow = map(c - '0', 0, 9, SPEED_FLOOR, SPEED_TOP);
    return;                    // tukar kelajuan tidak memulakan semula motor
  }
  if (c == 'q') {
    speedNow = 255;
    return;
  }

  switch (c) {
    case 'F': motors(true,  speedNow, true,  speedNow); break;  // ke hadapan
    case 'B': motors(false, speedNow, false, speedNow); break;  // undur

    // Arah bertentangan memusingkan kereta di tempat.
    case 'L': motors(false, speedNow, true,  speedNow); break;  // pusing kiri
    case 'R': motors(true,  speedNow, false, speedNow); break;  // pusing kanan

    // Satu roda dipandu, satu bebas: lengkungan luas dan bukan pusingan pivot.
    case 'G': motors(true,  0,        true,  speedNow); break;  // depan-kiri
    case 'I': motors(true,  speedNow, true,  0);        break;  // depan-kanan
    case 'H': motors(false, 0,        false, speedNow); break;  // belakang-kiri
    case 'J': motors(false, speedNow, false, 0);        break;  // belakang-kanan

    case 'S': halt(); break;                                    // berhenti

    // Apa-apa yang kita tidak kenal - butang lampu, hingar pada talian, satu
    // aksara dari app lain - bermakna "niat tidak diketahui", jadi berhenti.
    default:  halt(); break;
  }
}

Kenapa slider kelajuan rasa mati di bahagian bawahnya?

Sebab nilai PWM yang rendah bukanlah motor TT yang perlahan, itu motor TT yang terkandas. PWM memotong bekalan hidup dan mati, dan motor bertindak balas kepada puratanya: pada 7.4 V tolak bahagian 1.8 V yang diambil jambatan, duty penuh meletakkan kira-kira 5.6 V merentasi belitan, jadi separuh duty lebih kurang 2.8 V sahaja. Gearbox TT perlukan hampir 3 V untuk memecahkan geseran statiknya sendiri dari keadaan diam, iaitu lebih kurang 54% duty β€” dari situlah datangnya SPEED_FLOOR = 140. Sebaik kereta sudah bergerak, nilai yang lebih rendah cukup untuk mengekalkannya; yang gagal ialah permulaannya, dan itulah sebabnya slider itu nampak berfungsi sehinggalah anda berhenti.

Membelok dan bukannya bergerak lurus itu masalah mekanikal, bukan bug: dua gear train yang diacu tidak pernah sama gesekannya, jadi PWM yang sama memberi kelajuan roda yang sedikit berbeza. Untuk itulah TRIM_LEFT dan TRIM_RIGHT wujud β€” naikkan sebelah yang lambat lima count setiap kali sampai ia jalan lurus. Panduan kawalan kelajuan L298N kami mengupas PWM pada pemandu ini dengan lebih mendalam.

Empat panel kartun pandangan atas bagi kereta robot dua roda yang sama menunjukkan kedua-dua roda berpusing ke hadapan, kedua-duanya ke belakang, satu setiap arah untuk berpusing di tempat, dan hanya satu roda dipandu untuk membuat lengkungan luas
Empat tekanan butang, empat corak roda. Arah sama untuk memandu, arah bertentangan untuk berpusing, satu roda bebas untuk melengkung.

Kesilapan biasa yang kami lihat daripada pelanggan sebenar

Sudah pair dalam tetapan Android, tapi tiada apa-apa berlaku. Pairing cuma bertukar PIN; app itu masih perlu membuka sambungannya. Pilih HC-05 dalam senarai peranti app RC itu sendiri dan perhatikan LED modul bertukar dari kelipan laju kepada kelipan dua yang perlahan.

Serial Monitor tunjuk huruf yang betul tapi roda tak bergerak. Isyarat dan kuasa ialah dua kerosakan berasingan. Periksa yang GND L298N benar-benar sampai ke GND Uno, dan yang ENA serta ENB sama ada dipandu oleh D10 dan D11 atau masih memakai cap jumpernya β€” dengan cap sudah ditanggalkan tetapi tiada wayar tersambung, enable itu jadi input logik yang terapung, dan itu bukan hidup yang boleh dipercayai mahupun mati yang boleh dipercayai.

Aksaranya sampai jadi sampah. Modul dan sketch tidak sependapat tentang kadar baud. Modul yang pernah melalui sesi AT boleh tertinggal pada 38400 sedangkan bt.begin(9600) terus membaca pada 9600, jadi setiap bait disampel pada detik yang salah. Sama ada tetapkan sketch supaya padan, atau hantar AT+UART=9600,0,0 dalam mod AT untuk memulangkan modul itu ke asalnya.

Ia memandu elok selama dua puluh minit, kemudian asyik putus sambungan. Bekalan 5 V L298N ialah regulator linear, dan regulator linear perlukan inputnya kekal kira-kira dua volt lebih tinggi daripada outputnya. Pek yang penuh dicas menghulurkan 8.4 V dan ruang yang cukup luas; apabila sel makin kosong menghampiri 6 V, ruang itu hilang, rel 5 V melendut bersamanya, dan Uno serta HC-05 pun reset di tengah pemanduan sedangkan motor masih berpusing. Cas sel itu dahulu sebelum menyalahkan app, dan berhenti menggunakannya di bawah lebih kurang 3.2 V setiap satu β€” panduan mengecas 18650 kami menerangkan cara melakukannya dengan selamat.

FAQ

Apa PIN lalai untuk modul Bluetooth HC-05?

1234, dengan 0000 pada beberapa batch. Android memintanya sekali sahaja, semasa pairing, di dalam tetapan Bluetooth telefon dan bukan di dalam app RC.

Perlukah pembahagi voltan untuk HC-05 pada kereta RC?

Tidak perlu untuk kereta yang hanya memandu. Cuma TXD HC-05 ke D2 Uno yang diwayar, dan 3.3 V itu melepasi ambang input HIGH 3.0 V pada ATmega328P. Tambah pembahagi 1 kΞ©/2 kΞ© apabila anda mewayarkan D3 Uno ke RXD untuk telemetri atau arahan AT.

Boleh saya kawal kereta HC-05 dari iPhone?

Tidak boleh. HC-05 menggunakan serial Bluetooth Classic, yang tidak dibuka oleh iOS kepada app biasa. Projek untuk iPhone perlukan modul BLE dan app yang sepadan.

Kenapa kereta saya berjalan pada laju penuh sahaja?

Cap jumper pada ENA dan ENB masih terpasang, jadi kedua-dua enable terikat kekal HIGH. Tanggalkan kedua-duanya dan wayarkan pin itu ke D10 dan D11 supaya PWM daripada sketch boleh sampai kepadanya.

App Android apa yang saya perlukan untuk kereta RC Bluetooth?

Mana-mana controller Bluetooth Classic yang percuma. Cari Arduino Bluetooth RC car di Play Store dan pilih satu yang keterangannya menyebut sokongan HC-05 atau HC-06, kerana app yang dibina untuk Bluetooth Low Energy langsung tidak nampak modul ini. Tajuknya berulang-ulang antara app yang tiada kaitan dan peta aksaranya pula berbeza, jadi jalankan sketch pendengar di atas dan biarkan app itu sendiri memberitahu apa yang ia hantar.

Kemas kini terakhir Ogos 2026. Tersangkut? Chat dengan kami di WhatsApp.

Leave a Reply

Your email address will not be published. Required fields are marked *