Thứ Hai, 30 tháng 10, 2023

HƯỚNG DẪN CƠ BẢN ARDUINO UNO R3 KẾT NỐI I2C HIỂN THỊ THÔNG BÁO TRÊN LCD

 

HƯỚNG DẪN CƠ BẢN ARDUINO UNO R3 KẾT NỐI I2C HIỂN THỊ THÔNG BÁO TRÊN LCD

1. Giới thiệu

Bài viết hướng dẫn các bạn cách kết nối board mạch Arduino Uno R3 kết nối với I2C và LCD và thực hiện lập trình trên Arduino để hiển thị thông báo trên màn hình LCD

 

2. Thiết bị phần cứng

  • Arduino Uno R3

Arduino Uno Rev3 made in ITALY

 

 

  • Mạch điểu khiển LCD

 

Hoạt động ổn định : 2.7-5.5V




 

 

  • Module giao tiếp I2C

LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển.

Module I2C LCD ra đời và giải quyết vấn để này cho bạn.

Thay vì phải sử dụng 6 chân vi điều khiển để kết nối với LCD 16x2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối.

Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16x2, LCD 20x4, ...) và tương thích với hầu hết các vi điều khiển hiện nay.

3. Kết nối các thiết bị

4. Kết nối Arduino Uno R3 với máy tính

Kết nối cổng USB từ Arduino đến máy tính

Xác định Port Kết nối : Chuột phải vào My computer trên máy tính => manager =>  Device manager check Port ( COM & LPT )

Cấu hình trên phần mềm Arduino =>  mở phần mềm Arduino =>  chọn tool =>  chọn Board

Ở đây mình sử Dụng Board Arduino Uno R3 =>  chọn Arduino /Genuino Uno

 

 

Cài đặt thư viện

Trước khi có thể tiếp tục, bạn phải cài đặt thư viện LiquidCrystal_I2C . Thư viện này cho phép bạn điều khiển màn hình I2C bằng các chức năng rất giống với thư viện LiquidCrystal.

Để cài đặt thư viện, hãy điều hướng đến Phác thảo > Bao gồm Thư viện > Quản lý Thư viện… Đợi Trình quản lý Thư viện tải xuống chỉ mục thư viện và cập nhật danh sách các thư viện đã cài đặt.

Lọc tìm kiếm của bạn bằng cách nhập ' liquidcrystal '. Hãy tìm thư viện LiquidCrystal I2C của Marco Schwartz . Bấm vào mục đó và sau đó chọn Cài đặt.

 

 

Xác định địa chỉ I2C

Như đã nêu trước đây, địa chỉ I2C của màn hình LCD của bạn phụ thuộc vào nhà sản xuất. Nếu bạn không chắc chắn địa chỉ I2C của LCD là gì, bạn có thể chạy bản phác thảo máy quét I2C đơn giản để quét địa chỉ I2C và trả về địa chỉ của từng thiết bị I2C mà nó tìm thấy. Bạn có thể tìm thấy bản phác thảo này trong File> Examples > Wire > i2c_scanner.

Tải bản phác thảo i2c_scanner vào Arduino IDE của bạn.

Sau khi bạn tải bản phác thảo lên, hãy khởi chạy màn hình nối tiếp ở tốc độ 9600 baud. Bạn sẽ thấy địa chỉ I2C của màn hình LCD I2C.

 

Nhập code 

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);

void setup()

{

lcd.init();

lcd.backlight();

lcd.setCursor(4,0);

lcd.print("Admin");

lcd.setCursor(0,1);

lcd.print("Xin chao cac ban");

}

void loop()

{

}

 

Thực hiện upload code trên thiết bị Arduino

 

 

Kết quả hiển thị thông báo trên màn hình LCD

 

 

https://wokwi.com/projects/379994016785285121

Giải thích mã:

Khởi tạo them thư viện LiquidCrystal_I2C.

#include <LiquidCrystal_I2C.h>

Hàm tạo LiquidCrystal_I2C chấp nhận ba đầu vào: địa chỉ I2C, số cột và số hàng của màn hình.

LiquidCrystal_I2C lcd(0x27,16,2);

Trong quá trình thiết lập, ba chức năng được gọi. 

Chức năng đầu tiên là init(). Nó khởi tạo giao diện với màn hình LCD. 

Chức năng thứ hai là clear(). Chức năng này xóa màn hình LCD và đặt con trỏ ở góc trên bên trái. 

Chức năng thứ ba, backlight(), bật đèn nền LCD.

lcd.init();
lcd.clear();         
lcd.backlight();

Sau đó, hàm này setCursor(2, 0)được gọi để di chuyển con trỏ đến cột thứ ba của hàng đầu tiên. Vị trí con trỏ xác định nơi bạn muốn văn bản mới xuất hiện trên màn hình LCD. Giả sử rằng góc trên bên trái là col=0và row=0.

LCD 16x2 Pinout, Commands, and Displaying Custom Character

lcd.setCursor(2,0);

Tiếp theo, print()hàm này được sử dụng để in “Xin chào” tới màn hình LCD.

lcd.print("Xin chào");

Tương tự, hai dòng mã tiếp theo sẽ di chuyển con trỏ đến cột thứ ba của hàng thứ hai và in 'Hướng dẫn LCD' ra màn hình LCD.

lcd.setCursor(2,1);
lcd.print("123");

Các chức năng hữu ích khác của Thư viện LiquidCrystal_I2C

Có nhiều chức năng hữu ích mà bạn có thể sử dụng với LiquidCrystal_I2C Object. Một số trong số họ được liệt kê dưới đây:

  • lcd.home()chức năng định vị con trỏ ở phía trên bên trái của màn hình LCD mà không xóa màn hình.
  • lcd.blink()hiển thị khối nhấp nháy 5×8 pixel tại vị trí mà ký tự tiếp theo sẽ được ghi.
  • lcd.noBlink()Chức năng tắt con trỏ LCD nhấp nháy.
  • lcd.cursor()hàm hiển thị dấu gạch dưới (dòng) tại vị trí mà ký tự tiếp theo sẽ được viết.
  • lcd.noCursor()chức năng ẩn con trỏ LCD.
  • lcd.scrollDisplayRight()chức năng cuộn nội dung của màn hình sang phải một khoảng trắng. Nếu bạn muốn văn bản cuộn liên tục, bạn phải sử dụng chức năng này trong một forvòng lặp.
  • lcd.scrollDisplayLeft()chức năng cuộn nội dung của màn hình sang trái một khoảng trắng. Tương tự như hàm trên, hãy sử dụng hàm này trong forvòng lặp để cuộn liên tục.
  • lcd.noDisplay()Chức năng tắt màn hình LCD mà không làm mất văn bản hiện được hiển thị trên màn hình.
  • lcd.display()chức năng bật màn hình LCD sau khi nó được tắt bằng noDisplay(). Thao tác này sẽ khôi phục văn bản (và con trỏ) trên màn hình.

 

Thứ Sáu, 6 tháng 10, 2023

Phần mềm thiết kế mạch điện Fritzing

 

GIỚI THIỆU

Fritzing là phần mềm mã nguồn mở, giúp ta dễ dàng thiết kế mạch điện tử. Đặc biệt hỗ trợ tốt cho các dự án Arduino. 
Là phầm mềm mã nguồn mở nên cộng đồng sử dụng khá lớn, nên có thể thấy nhiều diễn đàn, tranh web, hoặc ở 1 bài giảng nào đó đều dùng nó.
Vì thể hệ thống thư viện linh kiện của nó có thể tạo mới, tìm kiếm bổ sung từ các nguồn chia sẻ trên mạng rất dễ dàng, thuận tiện cho việc thiết kế mạch của bạn.

DOWNLOAD

Google Drive

- Đây là bản 0.9.6


Download trên website chính thức

Để download được thì bạn bắt buộc phải tạo tài khoản và đăng nhập.
Sau khi bạn tạo tài khoản và đăng nhập thì truy cập vào link sau: DownloadOfficial
Chọn "I already paid" - và Download thôi.

GIAO DIỆN CHÍNH

Có 5 Tab
  • Welcome
  • Beadboard
  • Schematic
  • PCB
  • Code
Góc bên phải là danh sách và thông số các linh kiện
Bạn có thể Download thêm các linh kiện mà mình đã tìm hoặc thiết kế thêm tại đây: Fritzing Part

Cảm biến siêu âm HC-SR04

 

Cảm biến siêu âm HC-SR04 là gì?

Cảm biến siêu âm HC-SR04 là một dạng cảm biến module. Cảm biến này thường chỉ là một bản mạch, hoạt động theo nguyên lý thu phát sóng siêu âm bởi 2 chiếc loa cao tần.

Cảm biến siêu âm HC-SR04 thường được kết hợp với các bộ arduino, PIC, AVR,… để chạy một số ứng dụng như : phát hiện vật cản trên xe robot, đo khoảng cách vật,…

Module cảm biến siêu âm HC-SR04
Module cảm biến siêu âm HC-SR04

Chính vì là một cảm biến siêu âm dạng module, cho nên hầu như ứng dụng hay độ chính xác của cảm biến đều phụ thuộc vào phần code mà người sử dụng lập trình và nạp vào bản mạch điều khiển.

Có thể bạn chưa biết : các loại cảm biến siêu âm

Cấu tạo cảm biến siêu âm HC-SR04

Cấu tạo của cảm biến siêu âm HC-SR04 gồm 3 phần:

Bộ phận phát sóng siêu âm
Cấu tạo của các đầu phát và đầu thu siêu âm là các loa gốm đặc biệt, phát siêu âm có cường độ cao ở tần số thường là 40kHz cho nhu cầu đo khoảng cách.

Phát sóng trên cảm biến siêu âm HC-SR04
Phát sóng trên cảm biến siêu âm HC-SR04

Về nguyên lý, các loa này cần có nguồn điện áp cao mới phát tốt được ( nhà sản xuất công bố = 30V). Trên mạch công suất sử dụng IC MAX232 làm nhiệm vụ đệm. IC này sẽ lấy tín hiệu từ bộ điều khiển, khuếch đại biên độ lên mức +/-30V cấp nguồn cho bộ loa trên. IC này sẽ được đóng ngắt qua một transistor để hạn chế việc tiêu thụ dòng.

Bộ phận thu sóng siêu âm phản xạ
Thiết bị thu là dạng loa gốm có cấu tạo chỉ nhạy với một tần số chẳng hạn như 40KHz. Qua một loạt các linh kiện như OPAM TL072, transistor NPN…Tín hiệu này liên tục được khuếch đại biên độ và cuối cùng là đưa qua một bộ so sánh, kết hợp với tín hiệu từ bộ điều khiển để đưa về bộ điều khiển.

Bộ phận xử lý, điều khiển tín hiệu
Vi điều khiển (PIC16F688, STC11,…) được sử dụng làm nhiệm vụ phát xung, xử lý tính toán thời gian từ khi phát đến khi thu được sóng siêu âm nếu nhận được tín hiệu TRIG.

Nguyên lý hoạt động cảm biến siêu âm HC-SR04

Để đo khoảng cách bằng cảm biến siêu âm HC-SR04, ta sẽ phát 1 xung rất ngắn (5 microSeconds) từ chân Trig. Tiếp theo, 1 xung HIGH ở chân Echo sẽ được cảm biến tạo ra và phát đi cho đến khi nhận lại được sóng phản xạ ở chân này. Lúc này, độ rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biến và phản xạ lại.

Trong không khí, tốc độ âm thanh đạt mức 340 m/s (hằng số), tương đương với 29,412 microSeconds/cm (10^6 / (340*100)).

** 1 microsecond =1.0 × 10-6 seconds

Khi đã tính được thời gian, ta sẽ chia cho 29,412 để ra giá trị khoảng cách.

Kích thước và sóng cảm biến siêu âm HC-SR04
Kích thước và sóng cảm biến siêu âm HC-SR04

Ví dụ đo mức chất lỏng có trong bồn chứa bằng cảm biến siêu âm HC-SR04:

Ta sẽ có các bước như sau:

  • Đặt chân TRIG lên mức Cao (5V) trong 10 μs (microseconds)
  • Sau đó module siêu âm ghi lại thời gian và gửi ra sóng âm tần số 40Khz
  • Sóng siêu âm truyền xuống bề mặt chất lỏng trong bồn chứa và phản xạ lại
  • Sóng phản xạ truyền ngược về đầu dò
  • Module siêu âm nhận được sóng phản xạ và đánh dấu thời gian nhận được tín hiệu này

Cuối cùng, module siêu âm đưa chân ECHO lên mức cao trong khoảng thời gian (microseconds ) phản hồi sóng âm (Gửi đi – nhận về) và tính toán ra khoảng cách.

Kết quả trên chân ECHO: 58 μs/cm

Vì vậy, nếu chân ECHO lên mức cao trong thời gian 5800 μs (5.8 ms) , thì chúng ta tính được khoảng cách giữa cảm biến và mức chất lỏng trong bể là:

5800μs / 58μs/cm = 100cm = 1m

Thông số kỹ thuật cảm biến siêu âm HC-SR04

Trước khi đi vào tìm hiểu các phần tiếp theo của dòng cảm biến này, chúng ta cùng điểm qua một vài thông số kỹ thuật nổi bật của cảm biến siêu âm HC-SR04 như sau:

  • Model: HC-SR04
  • Điện áp làm việc: 5VDC
  • Dòng điện: 15mA
  • Tần số: 40 KHZ
  • Khoảng cách phát hiện: 2cm – 4m
  • Tín hiệu đầu ra: Xung mức cao 5V, mức thấp 0V
  • Góc cảm biến: Không quá 15 độ.
  • Độ chính xác cao: Lên đến 3mm
  • Chế độ kết nối: VCC / Trig (T-Trigger) / Echo (R-Receive) / GND

Sơ đồ kết nối cảm biến siêu âm HC-SR04 với arduino

Chúng ta tham khảo qua một số sơ đồ kết nối cơ bản khi kết hợp module cảm biến siêu âm HC-SR04 với các bộ kit arduino như hình thể hiện bên dưới.

Sơ đồ mạch cảm biến siêu âm HC-SR04
Sơ đồ mạch cảm biến siêu âm HC-SR04

Module cảm biến có 4 chân:

  • Chân VCC: Dùng để cấp nguồn 5v
  • Chân Trig: Chân digital output
  • Chân Echo: Chân digital input
  • Chân GND: Chân 0v

Phần code nạp chương trình tham khảo

const int trig = 8;     // chân trig của HC-SR04
const int echo = 7;     // chân echo của HC-SR04

void setup()
{
    Serial.begin(9600);     // giao tiếp Serial với baudrate 9600
    pinMode(trig,OUTPUT);   // chân trig sẽ phát tín hiệu
    pinMode(echo,INPUT);    // chân echo sẽ nhận tín hiệu
}

void loop()
{
    unsigned long duration; // biến đo thời gian
    int distance;           // biến lưu khoảng cách

    /* Phát xung từ chân trig */
    digitalWrite(trig,0);   // tắt chân trig
    delayMicroseconds(2);
    digitalWrite(trig,1);   // phát xung từ chân trig
    delayMicroseconds(5);   // xung có độ dài 5 microSeconds
    digitalWrite(trig,0);   // tắt chân trig

    /* Tính toán thời gian */
    // Đo độ rộng xung HIGH ở chân echo.
    duration = pulseIn(echo,HIGH);
    // Tính khoảng cách đến vật.
    distance = int(duration/2/29.412);

    /* In kết quả ra Serial Monitor */
    Serial.print(distance);
    Serial.println("cm");
    delay(200);
}

Ưu nhược điểm của module cảm biến siêu âm HC-SR04

Ưu điểm

  • Nhỏ gọn
  • Giá thành rẻ
  • Dễ tìm mua
  • Dễ dàng lắp đặt, kết hợp với các bộ kit arduino
  • Phát sóng siêu âm, có độ chính xác cao
  • Phạm vi đo rộng 2-400cm
  • Được hỗ trợ phần code nhiều từ cộng đồng arduino

Nhược điểm

  • Hiệu suất làm việc liên tục không cao
  • Không thích hợp sử dụng trong môi trường công nghiệp
  • Dễ bị nhiễu tác động
  • Độ nhạy và dải đo phụ thuộc vào code nạp
  • https://wokwi.com/projects/377910366347889665