Bạn đang làm việc với board Arduino, chắc hẳn bạn đã phải nạp code cho Arduino để thực hiện một “project Blink Led” thần thánh rồi ? . Thế bạn có cảm thấy phiền khi phải liên tục cắm dây nạp vào Module để tiến hành nạp code cho Arduino, nhất là các dự án thực hiện cần kết nối với phần cứng cồng kềnh, dự án xe điều khiển, chế tạo drone, hay các dự án cần kiểm tra liên tục. Nạp code từ xa cho Arduino có được không ta? ?
Bài viết bạn nên đọc:
- Điều khiển động cơ bước dùng Module A4988 trên Arduino IDE
- Arduino giao tiếp DHT11 gửi đến điện thoại dùng NRF24L01
- Internet of things và các nền tảng điện toán đám mây phổ biến
Hôm nay ESPITEK sẽ đem đến cho bạn một giải pháp nạp code từ xa cho arduino, thật đấy, bạn hoàn toàn có thể ngồi một chỗ và chỉ việc lả lướt đôi tay trên bàn phím mà thôi và cuối cùng chỉ với cú nhấp chuột bạn đã có thể nạp code cho arduino mà không cần dây lằng nhằng nữa.
XEM THÀNH QUẢ CỦA DỰ ÁN NHÉ
Cần chuẩn bị
- Arduino UNO/NANO
- Bluetooth Module HC05
- Board lỗ
- Rào đực, rào cái
- Điện trở 1k, 2.2k
- Tụ 0.1uF (1uF vẫn chạy phà phà nhé)
- Pin 9V (Nguồn cấp cho Arduino Uno)
Module Bluetooth HC-05
Một module không quá xa lạ với các bạn rồi đúng không, với chuẩn giao tiếp SPP. Khoảng cách truyền nhận 20-30 mét, có thể cấu hình ở chế độ Master/Slave. Module khá phù hợp cho các dự án IOT cần điều khiển, giám sát không dây.
Chức năng các chân:
- VCC: Chân cấp nguồn cho module (+5V).
- GND: Chân Mass.
- TX: Chân truyền tín hiệu UART.
- RX: Chân nhận tín hiệu UART.
- EN/KEY: Chân Enable của HC05. Nó có thể được thả nổi hoặc nối với chân nguồn 3.3v để cho phép Module hoạt động, nếu bạn nối với GND thì module sẽ không hoạt động.
- STATE: Chân trạng thái (LOW-Không kết nối, HIGH-Có kết nối).
Tiến hành kết nối phần cứng
Kiểm tra giao tiếp giữa HC05 và Arduino Uno bằng tập lệnh AT
HC-05 | Arduino Uno |
Vcc | 5V |
GND | GND |
Tx | 2 |
Rx | 3 |
Để vào chế độ AT của HC05, chúng ta cần sử dụng nút KEY. Đầu tiên nhấn nút cho đến khi đèn LED trên module bắt đầu nhấp nháy trong khoảng 2 giây. Nếu đèn LED bắt đầu nhấp nháy cứ sau 2 giây nghĩa là module đã vào chế độ AT. Bây giờ chúng ta có thể đưa các lệnh AT đến HC05 thông qua màn hình Serial của Arduino UNO. Hay đơn giản là chúng ta đang giao tiếp UART giữa Arduino và HC05.
Nếu HC05 không có nút nào, thì có thể kết nối chân KEY/EN của module với chân 3,3 volt để đưa HC05 vào chế độ AT.
Code kiểm tra giao tiếp Arduino và HC05
#include <SoftwareSerial.h> SoftwareSerial HC05(2,3); void setup() { Serial.begin(9600); Serial.println("Enter AT commands:"); HC05.begin(38400); } void loop() { if (HC05.available()) Serial.write(HC05.read()); if (Serial.available()) HC05.write(Serial.read()); }
Cấu hình SoftwareSerial ảo ở chân 2 và 3 của Arduino Uno. Sau đó trong vòng Loop() ta sẽ kiểm tra ký tự đọc được từ HC05 và ghi ra màn hình Serial của Arduino và nếu có bất kỳ ký tự nào được nhập vào Serial Arduino thì sẽ gửi đến module HC05 ở đây chúng ta sẽ gửi các lệnh AT cần thiết.
Ý nghĩa các lệnh AT của HC05
Các lệnh AT phía dưới được dùng để gửi đến HC05 thông qua kết nối UART.
AT
Kiểm tra module HC05 được kích hoạt hay chưa – HC05 sẽ trả về “OK”
AT+ORGL
Đưa module HC05 về chế độ mặc định: Ở chế độ Slave, mật khẩu: 1234 và tốc độ Baud rate : 38400 bits/sec.
AT+NAME= NAME
Đặt tên cho HC05 khi nó phát bluetooth, “NAME” chính là tên bạn muốn đặt.
AT+ROLE=0
Cấu hình HC05 ở chế độ SLAVE.
AT+POLAR=1,0
Cấu hình chân led
AT+UART=115200,0,0
Cấu hình tốc độ giao tiếp
AT+PSWD
Đặt mật khẩu cho HC05
AT+INIT
Khởi tạo giao tiếp SPP
AT+RESET
Reset và thoát chế độ AT
Kết nối phần cứng để có thể nạp code từ xa cho Arduino
Sau khi kiểm tra giao tiếp giữa Arduino và HC05 ta tiến hành nối lại mạch theo sơ đồ sau để có thể nạp code từ xa cho arduino nhé.
Để tiện hơn và chuyên nghiệp mình đã tạo các chân cắm và kết nối mạch theo nguyên lý ở hình trên
Và đây là thành quả ??
Tiếp theo ta sẽ cắm nguồn vào cho hệ thống vừa chế xong (pin 9v hoặc sạc dự phòng). Và sau đó dùng máy tính để kết nối với Bluetooth của HC05 phát ra.
Tiến hành ghép nối
Nhập mật khẩu để có thể kết nối đến module HC05
Sau khi ghép nối thiết bị thành công, nhiệm vụ tiếp theo là tìm cổng COM cho module Bluetooth HC05. Hiển thị hai cổng COM, một là cổng nhận vào và một cổng gửi đi. Ở đây ta cần quan tâm đến COM gửi đi vì cần phải nạp code từ xa cho Arduino thông qua cổng này.
Bước cuối cùng là tiến hành nạp code từ xa cho Arduino mà không cần dùng dây. Có thể dùng các chương trình bất kỳ, ở đây mình sử dụng Example Blink led có sẵn trên Arduino IDE. Chọn cổng COM gửi đi đã tìm thấy ở bước trên và Upload chương trình đến Arduino UNO qua kết nối Bluetooth.
Bài viết đã giới thiệu các bạn một ứng dụng rất hay và hữu ích của Arduino và module Bluetooth đó là nạp code từ xa cho arduino, phù hợp cho mọi ứng dụng sử dụng Arduino. Ngoài ra thông qua cách giao tiếp với module HC05 bạn cũng có thể phát triển thêm nhận dữ liệu từ xa thông qua HC05 được gửi từ Arduino.
Chúc các bạn thành công!
Ad cho mình xin trợ giúp:
1) khi mình kiểm tra kết nối giua arduino với hc05 thì mở serial moniter lên gõ các dòng lệnh AT thì không có phản hồi “OK”… trong khi đèn báo hc05 đã vào chế độ AT khi mình cấp 3,3V cho chân EA.
2) mình nạp code không dây cho arduino thì báo no upload code to board, mặc dù mình đã làm đúng theo tất cả các chỉ dẫn của ad như trên vẫn k nạp code được?
Trong chế độ AT bạn thử với tốc độ baud khác xem được không nhé.
Mình cần viết code, bạn có làm hay có ai làm giới thiệu giúp với.
Zalo : 0932198644
tuyệt vời! bạn cho mình hỏi Tụ 0.1uF có tác dụng gì vậy? Cảm ơn bạn nhiều!