This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions..

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions..

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions..

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions..

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions..

Thứ Tư, 7 tháng 10, 2015

MODULE BLUETOOTH HC-05 (PHẦN 1)

                          MODULE BLUETOOTH HC-05 

                                  (PHẦN 1)


Loạt bài viết này sẽ hướng dẫn các bạn sử dụng module HC-05. Một module rẻ và khá thông dụng hiện này.
Nội dung loạt bài này của mình gồm 2 bài:
-        Phần 1: Giới thiệu về module Bluetooth HC-05, các chế độ hoạt động, và các lệnh AT hay dùng
-        Phần 2: Điều khiển bật tắt đèn từ máy tính thông qua module bluetooth HC-05

1.Giới thiệu

Bluetooth là chuẩn truyền thông không dây để trao đổi dữ liệu ở khoảng cách ngắn.Chuẩn truyền thông này sử dụng sóng radio ngắn(UHF radio) trong dải tần số ISM (2.4 tới 2.485 GHz). Khoảng cách truyền của module này vào khoảng 10m.
Hôm nay tôi muốn giới thiệu đến các bạn một module sử dụng chuẩn truyền thông này là module HC-05. Module này được thiết kế dựa trên chip BC417. Con chip này khá phức tạp và sử dụng bộ nhớ flash ngoài 8Mbit. Nhưng việc sử dụng module này hoàn toàn đơn giản bởi nhà sản xuất đã tích hợp mọi thứ cho bạn trên module HC-05.



       Sơ đồ chân HC-05 gồm có:

   KEY: Chân này để chọn chế độ hoạt động AT Mode hoặc Data Mode.      VCC chân này có thể cấp nguồn từ 3.6V đến 6V bên trong module đã có một ic nguồn chuyển về điện áp 3.3V và cấp cho IC BC417.
   GND nối với chân nguồn GND
 TXD,RND đây là hai chân UART để giao tiếp module hoạt động ở mức logic 3.3V
  STATE các bạn chỉ cần thả nổi và không cần quan tâm đến chân này.


2. Các chế độ hoạt động
 HC-05 có hai chế độ hoạt động là Command Mode và Data Mode. Ở chế độ Command Mode ta có thể giao tiếp với module thông qua cổng serial trên module bằng tập lệnh AT quen thuộc. Ở chế độ Data Mode module có thể truyền nhận dữ liệu tới module bluetooth khác. Chân KEY dùng để chuyển đổi qua lại giữa hai chế độ này. Có hai cách để bạn có thể chuyển module hoạt động trong chế độ Data Mode (đọc tài liệu Tiếng Việt trên một số Web thấy chỗ này thường bị viết sai)

-        Nếu đưa chân này lên mức logic cao trước khi cấp nguồn module sẽ đưa vào chế độ Command Mode với baudrate mặc định 38400. Chế độ này khá hữu ích khi bạn không biết baudrate trong module được thiết lập ở tốc độ bao nhiêu. Khi chuyển sang chế độ này đèn led trên module sẽ nháy chậm (khoảng 2s) và ngược lại khi chân KEY nối với mức logic thấp trước khi cấp nguồn module sẽ hoạt động chế độ Data Mode.
-        Nếu module đang hoạt động ở chế Data Mode để có thể đưa module vào hoạt động ở chế độ Command Mode bạn đưa chân KEY lên mức cao. Lúc này module sẽ vào chế độ Command Mode nhưng với tốc độ Baud Rate được bạn thiết lập lần cuối cùng. Vì thế bạn phải biết baudrate hiện tại của thiết bị để có thể tương tác được với nó. Chú ý nếu module của bạn chưa thiết lập lại lần nào thì mặc định của nó như sau:
·       Baudrate 9600, data 8 bits, stop bits 1, parity : none, handshake: none
·       Passkey: 1234
·       Device Name: HC-05

           Ở chế độ Data Mode HC-05 có thể hoạt động như một master hoặc slave tùy vào việc bạn cấu hình (riêng HC-06 bạn chỉ có thể cấu hình ở chế độ SLAVE)

1.     Ở chế độ SLAVE: bạn cần thiết lập kết nối từ smartphone, laptop, usb bluetooth để dò tìm module sau đó pair với mã PIN là 1234. Sau khi pair thành công, bạn đã có 1 cổng serial từ xa hoạt động ở baud rate 9600.
2.     Ở chế độ MASTER: module sẽ tự động dò tìm thiết bị bluetooth khác (1 module bluetooth HC-06, usb bluetooth, bluetooth của laptop...) và tiến hành pair chủ động mà không cần thiết lập gì từ máy tính hoặc smartphone.

3. Tập lệnh AT
AT: Lệnh test, nó sẽ trả về OK nếu module đã hoạt động ở Command Mode
AT+VERSION? :trả về firmware hiện tại của module
AT+UART=9600,0,0 ( thiết lập baudrate 9600,1 bit stop, no parity)
Các lệnh ở chế độ Master:
AT+RMAAD : ngắt kết nối với các thiết bị đã ghép
AT+ROLE=1 : đặt là module ở master
AT+RESET: reset lại thiết bị
AT+CMODE=0: Cho phép kết nối với bất kì địa chỉ nào
AT+INQM=0,5,5: Dừng tìm kiếm thiết bị khi đã tìm được 5 thiết bị hoặc sau 5s
AT+PSWD=1234 Set Pin cho thiết bị
AT+INQ: Bắt đầu tìm kiếm thiết bị để ghép nối
Sau lệnh này một loạt các thiết bị tìm thấy được hiện thị. Định ra kết quả sau lệnh này như sau        INQ:address,type,signal
Phần địa chỉ (address) sẽ có định dạng như sau: 0123:4:567890. Để sử dụng địa chỉ này trong các lệnh tiếp theo ta phải thay dấu “:” thành “,”
            0123:4:567890 -> 0123,4,5678
AT+PAIR=<address>,<timeout> : Đặt timeout(s) khi kết nối với 1 địa chỉ slave
AT+LINK=<address> Kết nối với slave
Các lệnh ở chế độ Slave:
AT+ORGL: Reset lại cài đặt mặc định
AT+RMAAD: Xóa mọi thiết bị đã ghép nối
AT+ROLE=0: Đặt là chế độ SLAVE
AT+ADDR: Hiển thị địa chỉ của SLAVE







Hướng dẫn sử dụng cảm biến siêu âm HC-SR05 (PHẦN 2)

HƯỚNG DẪN SỬ DỤNG CẢM BIẾN SIÊU ÂM HC-SR05 (PHẦN 2)

 a.     Sơ đồ nguyên lý

Để đơn giản cho việc mô tả thuật toán ở đây mình sử dụng board mạch Arduino Uno. Hẳn các bạn yêu DIY đã khá quen thuộc với board mạch này.
Sơ đồ kết nối
 
Sơ đồ ghép nối cảm biến siêu âm với arduino
Ở sơ đồ này tôi chọn Mode 1 (sử dụng riêng sẽ hai chân Trigger và Echo) chân Digital 7 của board sẽ sử dụng để phát tín hiệu trigger còn chân Digital 6 sẽ sử dụng để đọc tín hiệu Echo.

      b.  Code

int pingPin = 7;
int inPin = 6;
long duration, inches, cm;
int indec, cmdec;
int inchconv = 147;
// Đây là hằng số chuyển đổi từ us sang inc có thể dễ dàng suy ra từ công thức trên
int cmconv = 59;// hằng số chuyển đổi từ us sang cm
String s1, s2;

void setup()
{
  Serial.begin(9600);
  while(!Serial);
  pinMode(pingPin, OUTPUT);
  pinMode(inPin, INPUT);
}

void loop()
{
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);// Phat xung kich hoat cam bien
  delayMicroseconds(10);
  digitalWrite(pingPin, LOW);
 
  duration = pulseIn(inPin, HIGH);// Do do rong xung
  // Lay phan nguyen cua khoang cach (inch)
  inches = microsecondsToInches(duration);
  // Lay phan thap phan cua khoang cach (inch)
  indec = (duration - inches * inchconv) * 10 / inchconv;
  // Lay phan nguyen cua khoang cach (cm)
  cm = microsecondsToCentimeters(duration);
  // Lay phan thap phan cua khoang cach (cm)
  cmdec = (duration - cm * cmconv) * 10 / cmconv;
  //Chuyển đổi kết quả sang xâu
  s1 = String(inches) + "." + String(indec) + "in";
  s2 = String(cm) + "." + String(cmdec) + "cm";
  Serial.println(s1);
  Serial.println(s2);
  delay(1000);
}

long microsecondsToInches(long microseconds)
{
  return microseconds / inchconv;
}

long microsecondsToCentimeters(long microseconds)
{
  return microseconds / cmconv;
}

     c.     Phương pháp xử lý sai số

Đây là việc làm khá phổ biến khi làm việc với các thiết bị đo lường nhưng nhiều bạn khi lập trình thường bỏ qua bước này. Nếu các bạn đã từng sử dụng cảm biến siêu âm HC-SR05 sẽ thấy quá trình đo lường xảy ra nhiễu khi cảm biến bị rung hoặc nguồn không ổn định, đôi khi cũng là lỗi phát sinh từ vi điều khiển khi đo độ rộng xung không chính xác.
Ở đây tôi khử sai số bằng phương pháp như sau:

-        Đầu tiên thực hiện kết quả đo N lần ( trong đó N=2n) thực nghiệm chỉ ra rằng việc lấy N là số mũ của 2 sẽ cho phương pháp này đạt kết quả tốt nhất.( tùy vào tốc độ của vi xử lý mà có thể chọn n từ 6-12)
-        Sắp xếp lại N kết quả đo theo thứ tự tăng dần bằng một trong các thuật toán sắp xếp
-        Loại bỏ đi x% các giá trị lớn nhất và nhỏ nhất (x có thể từ 10->30) khi đó ta có thể loại đi những giá trị sai số ngẫu nhiên
-        Lấy trung bình các giá trị còn lại cho ta kết quả phép đo
Sau khi tiến hành thực hiện như trên kết quả đã ổn định nhưng vẫn còn sai số offset dạng như kết quả thực tế là 2cm trong khi kết quả đo được là 3cm. Ta tiến hành hiệu chỉnh bằng phép nội suy tuyến tính.

Ví dụ bạn có khoảng cách đo được là x1,x2 tương ứng khoảng cách thực tế y1,y2 (nên chọn x1,x2 cách xa nhau)
            Giả sử hàm sai số tuyến tính như sau y=ax+b
            Trong đó x là khoảng cách đo được và y là khoảng cách thật. Để xác định hệ số a,b ta giải hệ phương trình
           y1=ax1+b
           y2=ax2+b

Từ đó ta xác định được hàm nội suy từ kết quả đo được ra kết quả thực tế.

HƯỚNG DẪN SỬ DỤNG CẢM BIẾN SIÊU ÂM HC-SR05 (PHẦN 1)



HƯỚNG DẪN SỬ DỤNG CẢM BIẾN SIÊU ÂM HC-SR05 (PHẦN 1)


Sau đây mình sẽ viết loạt bài hướng dẫn các bạn đo lường khoảng cách với dạng cảm biến siêu âm khá sẵn có hiện nay trên thị trường là cảm biến HC-SR05. Loạt bài viết sẽ gồm có 3 bài:
  •    Bài 1:  Giới thiệu, nguyên lý hoạt động, các chế độ của cảm biến HC-SR05
  •   Bài 2:  Kết nối HC-SR05 với vi điều khiển, cách lọc nhiễu và calib khi sử dụng HC-SR05
  •  Bài 3:  Đo khoảng cách xa với cảm biến HC-SR05

   a.     Giới thiệu

Cảm biến siêu âm HC-SR05 là loại cảm biến siêu âm tương đối rẻ và chính xác có thể sử dụng để đo khoảng cách từ 2-400 cm. Cảm biến HC-SR05 được sử dụng phổ biến trong các ứng dụng đo lường ở môi trường dễ cháy nổ như: xăng dầu, hoặc sử dụng để đo mức nước, phát hiện vật cản, hay đếm sản phẩm.Cảm biến gồm có 5 chân: VCC, Trig, Echo, OUT,GND

  •  VCC : Đây là chân cấp nguồn cho cảm biến (nguồn 5V, nguồn càng sạch cảm biến càng chính xác)
  •   Trig : Chân này là chân phát xung để kích hoạt cảm biến hoạt động
  • Echo: Chân này sẽ trả về tín hiệu xung khi sóng siêu âm phản xạ lại. Đo độ rộng xung này ta sẽ tính ra khoảng cách từ cảm biến đến vật cản
  •  OUT: Chân này sử dụng để lựa chọn mode hoạt động của cảm biến.
  •  GND: Chân này cấp GND cho cảm biến.


 b.     Nguyên lý hoạt động

 Nguyên lý hoạt động của cảm biến siêu âm khá đơn giản. Ta phát đi một sóng siêu âm và đo thời gian từ khi sóng phát đến khi sóng phản xạ.
Do vận tốc sóng âm truyền trong một môi trường đồng nhất là không thay đổi nên từ đó ta tính được khoảng cách từ cảm biến đến đối tượng cần đo.c.      Các chế độ hoạt động
HC-SR05 là bản nâng cấp của cảm biến siêu âm HC-SR04. So với phiên bản trước ta có thể chọn một trong hai chế độ hoạt động thay vì một như trước.

Mode 1: Chế độ hoạt động riêng rẽ hai chân Trigger và Echo

Nhà sản xuất thêm vào chế độ này để mọi thiết bị hoạt động trên module HC-SR04 từ trước đều có thể tương thích với phiên bản HC-SR05 này.Để cảm biến hoạt động ở MODE này ta chỉ việc thả nổi chân OUT. Bên trong cảm biến đã có sẵn một điện trở pull-up để đưa chân này lên mức cao.

Sơ đồ tín hiệu HC-SR05 ở mode 1









 Ở chế độ này cảm biến hoạt động như sau:
  •         Đầu tiên ta tạo một xung có độ khoảng 10 uS trên chân Trigger. Cảm biến sẽ tự động sinh một xung cao tần với tần số 40KHz nhằm tạo sóng siêu âm.
  •         Theo dõi chân Echo, khi nào chân Echo ở mức logic cao ta bắt đầu bật một timer
  •         Đợi chân Echo xuống mức logic thấp ta ghi lại thời điểm đó để tính độ rộng xung và quy đổi ra khoảng cách theo công thức:


                                 D=(v*t)/100/2
Trong đó: D là khoảng cách từ cảm biến đến vật cản (m)
                t là độ rộng xung (ms)
              v là vận tốc của sóng âm trong không khí 340m/s, do khoảng cách được tính hai lần nên ta chia cho 2.
Chú ý: Các dòng vi điều khiển hiện nay như: Pic, Avr,MSP430,STM… đều hỗ trợ mode Input Capture nên ta có thể trực tiếp dùng mode này để đo động rộng xung nằm nâng cao độ chính xác cũng như đơn giản cho việc lập trình.


Mode 2: Chế độ hoạt động chung hai chân Trigger và Echo

Chế độ này đưa ra nhằm tiết kiệm ngoại vi cho vi điều khiển. Thay vì phải sử dụng 2 chân như mode 1, mode này sử dụng một chân chung cho cả hai tín hiệu Echo và Trigger. Để cảm biến hoạt động ở mode này ta chỉ việc nối chân OUTPUT với tín hiệu GND.Để thực hiện đo lường ở mode này ta cũng làm tương tự như mode 1 chỉ khác 1 chút đầu tiên cấu hình ngoại vi là chân ra (output) để phát tín hiệu trigger sau đó ta cấu hình ngoại vi là chân vào (input) để bắt tín hiệu echo. 

Sơ đồ tín hiệu HC-SR05 ở mode 2