Mưa giao tiếp STM32: Đọc cảm biến mưa + LCD1602 + STM

Mưa giao tiếp STM32 là một dự án đơn giản được thiết kế nhằm nhận biết sự có mưa hoặc có nước xuất hiện trên bề mặt một lá chắn, và sử dụng một module chuyển đổi tín hiệu để giao tiếp với các board mạch vi điều khiển. Đồng thời, mạch này cũng có một đèn LED để báo hiệu trạng thái trên lá chắn. Cảm biến này hỗ trợ hai loại ngõ ra tín hiệu, là tín hiệu tương tự (analog) và tín hiệu số (digital), tùy thuộc vào mục đích sử dụng.

Vi điều khiển STM trong mạch đọc cảm biến mưa giao tiếp STM32 là một dòng chip phổ biến của ST, với nhiều loại họ thông dụng như F0, F1, F2, F3, F4… Trong đó, STM32F103 thuộc họ F1 và sử dụng lõi là ARM Cortex M3. Vi điều khiển này có tốc độ tối đa là 72Mhz và giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Ngoài ra, vi điều khiển cũng có nhiều ứng dụng khác nhau trong các lĩnh vực như điều khiển ứng dụng, thiết bị cầm tay, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, công nghiệp, hệ thống cảnh báo, và nhiều thiết bị liên lạc nội bộ khác.

Cảm biến mưa giao tiếp STM32 được thiết kế đơn giản gồm một lá chắn để nhận biết sự có mưa hoặc có nước xuất hiện trên bề mặt lá chắn, và có một module chuyển đổi tín hiệu để giao tiếp với các board mạch vi điều khiển. Ngoài ra, mạch cảm biến còn có một đèn LED để báo hiệu trạng thái trên lá chắn. Cảm biến này hỗ trợ hai loại ngõ ra tín hiệu, là tín hiệu tương tự (analog) và tín hiệu số (digital), để có thể áp dụng linh hoạt tùy thuộc vào mục đích sử dụng. Cảm biến mưa được sử dụng để phát hiện mực nước, trời mưa, hay các môi trường có nước. Mạch cảm biến mưa được đặt ngoài trời để kiểm tra trời có mưa không, và từ đó truyền tín hiệu để điều khiển đóng/ngắt rơ le.

LCD1602 là một loại màn hình LCD hiển thị 16×2 kí tự. Màn hình này có điện áp hoạt động là 5V và được kết nối thông qua các chân RS, E, DB4, DB5, DB6, và DB7. Đặc điểm của màn hình này bao gồm chữ đen và nền xanh lá, kích thước 80 x 36 x 12.5 mm, khoảng cách giữa các chân kết nối là 0.1 inch, và có đèn LED nền có thể điều chỉnh độ sáng.

Để triển khai dự án cảm biến mưa giao tiếp STM32 hiển thị trên LCD1602, chúng ta cần có phần cứng và phần mềm tương ứng.

1. Linh kiện cần thiết làm mạch đọc cảm biến Mưa giao tiếp STM32

1.1 Vi điều khiển STM trong mạch đọc cảm biến Mưa giao tiếp STM32

a. Giới thiệu

Vi điều khiển STM là một dòng chip phổ biến của ST với nhiều họ thông dụng như F0, F1, F2, F3, F4… Trong đó, STM32F103 thuộc họ F1 và sử dụng lõi là ARM Cortex M3. Vi điều khiển này có tốc độ tối đa là 72Mhz và giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Vi điều khiển này có nhiều ứng dụng trong các lĩnh vực như điều khiển ứng dụng thông thường, thiết bị cầm tay, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, và thiết bị liên lạc nội bộ. Phần mềm lập trình cho vi điều khiển STM32 có khá nhiều trình biên dịch như IAR Embedded Workbench, Keil C, và ở đây chúng ta sử dụng Keil C.

Mạch đọc cảm biến Mưa giao tiếp STM32

Thông tin khác

Vi xử lý hiện nay có rất nhiều loại, từ 4 bit cho đến 32 bit. Mặc dù vi xử lý 4 bit không còn được sử dụng, nhưng vi xử lý 8 bit vẫn được ứng dụng trong một số yêu cầu điều khiển trong công nghiệp. Các vi xử lý 32 bit và 64 bit thường được sử dụng cho các máy tính, vì khối lượng dữ liệu của máy tính rất lớn và cần sự mạnh mẽ của các vi xử lý này. Trong công nghiệp, các hệ thống điều khiển thường sử dụng vi xử lý 8 bit hoặc 16 bit, ví dụ như hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây chuyền sản xuất, và nhiều ứng dụng khác.

1.2 Cảm biến Mưa giao tiếp STM32

a. Giới thiệu cảm biến mưa giao tiếp STM32

Cảm biến mưa giao tiếp STM32 được thiết kế đơn giản gồm một lá chắn để nhận biết sự có mưa hoặc có nước xuất hiện trên bề mặt lá chắn, và có một module chuyển đổi tín hiệu để giao tiếp với các board mạch vi điều khiển. Ngoài ra, cảm biến còn có một đèn LED để báo hiệu trạng thái trên lá chắn. Cảm biến này hỗ trợ hai loại ngõ ra tín hiệu, là tín hiệu tương tự (analog) và tín hiệu số (digital), để có thể áp dụng linh hoạt tùy thuộc vào mục đích sử dụng. Cảm biến mưa được sử dụng để phát hiện mực nước, trời mưa, hoặc các môi trường có nước. Mạch cảm biến mưa được đặt ngoài trời để kiểm tra trời có mưa không, và từ đó truyền tín hiệu để điều khiển đóng/ngắt rơ le.

Module cảm biến mưa

b. Thông số kỹ thuật

  • Điện áp: 3V – 5V
  • Ngõ ra:
    • DO: dạng digital – TTL có khả năng điều khiển trực tiếp Relay, Buzzer,…
    • AO: dạng analog
  • Có LED báo hiệu khi có mưa hoặc nước trên bề mặt lá chắn
  • Độ nhạy có thể được điều chỉnh thông qua chiết áp
  • Kích thước module chuyển đổi: 3.2cm x 1.4cm
  • Kích thước lá chắn: 5.0cm x 4.0cm

1.3 LCD1602 cảm biến mưa giao tiếp STM32

a. Giới thiệu

LCD1602 cảm biến mưa giao tiếp STM32

b. Thông số kỹ thuật

  • Điện áp hoạt động là 5 V
  • Kích thước: 80 x 36 x 12.5 mm
  • Chữ đen, nền xanh lá
  • Khoảng cách giữa hai chân kết nối là 0.1 inch
  • Tên các chân được ghi ở mặt sau của màn hình LCD để dễ dàng kết nối và đi dây
  • Có đèn LED nền, có thể điều chình độ sáng để tiết kiệm điện năng
  • Có thể được điều khiển với 6 dây tín hiệu
  • Có bộ ký tự được xây dựng hổ trợ tiếng Anh và tiếng Nhật

c. Sơ đồ chân LCD 16×2

Số chân Ký hiệu chân Mô tả chân
1 GND Chân nối mass (0V)
2 Vcc Nguồn +5V
3 V0 Điều chỉnh contrast
4 RS Điều khiển lựa chọn thanh ghi
5 R/W Điều khiển quá trình đọc/ghi
6 E Chân cho phép dạng xung chốt
7-14 DB7-DB0 8 chân dùng để trao đổi dữ liệu

d. Địa chỉ ba vùng nhớ

  • Bộ nhớ DDRAM: Chứa dữ liệu để hiển thị (Display Data RAM: DDRAM), lưu trữ các mã ký tự để hiển thị lên màn hình. Mã ký tự lưu trữ trong vùng DDRAM sẽ tham chiếu đến các bitmap ký tự được lưu trữ trong CGROM hoặc được định nghĩa bởi người dùng.
  • Bộ phát ký tự ROM – CGROM: Chứa các kiểu bitmap cho mỗi ký tự đã được định nghĩa trước, như bảng mã ASCII. Mã ký tự trong DDRAM sẽ tham chiếu đến vị trí tương ứng trong CGROM.
  • Bộ phát ký tự RAM – CGRAM: Cung cấp vùng nhớ để tạo ra tối đa 8 ký tự tùy ý, mỗi ký tự gồm 5 cột và 8 hàng.

e. Các lệnh điều khiển của LCD

Bảng giá trị của các lệnh điều khiển LCD

  • Lệnh thiết lập chức năng giao tiếp “Function set”:
    • Bit DL (data length): 1 cho phép giao tiếp 8 đường data D7-D0, 0 cho phép giao tiếp 4 đường D7-D4.
    • Bit N (number of line): 1 cho phép hiển thị 2 hàng, 0 cho phép hiển thị 1 hàng.
    • Bit F (font): 1 cho phép hiển thị với ma trận 5×8, 0 cho phép hiển thị với ma trận 5×11.
  • Lệnh xoá màn hình “Clear Display”: Xoá màn hình và đặt bộ đếm địa chỉ về 0.
  • Lệnh di chuyển con trỏ về đầu màn hình “Cursor Home”: Đặt bộ đếm địa chỉ về 0 và di chuyển con trỏ hiển thị về vị trí gốc.
  • Lệnh thiết lập lối vào “Entry mode set”: Thiết lập lối vào cho các ký tự hiển thị, bao gồm các tùy chọn:
    • Bit I/D: 1 cho phép tăng con trỏ mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị, 0 cho phép giảm con trỏ mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị.
    • Bit S: 1 cho phép dịch chuyển dữ liệu mỗi khi nhận 1 byte hiển thị.
  • Lệnh điều khiển con trỏ hiển thị “Display Control”:
    • Bit D: 1 cho phép hiển thị, 0 không hiển thị.
    • Bit C: 1 cho phép con trỏ hiển thị, 0 không hiển thị con trỏ.
    • Bit B: 1 cho phép con trỏ nhấp nháy, 0 không nhấp nháy.
  • Lệnh di chuyển con trỏ “Cursor / Display Shift”: Điều khiển di chuyển con trỏ hiển thị dịch chuyển.
    • Bit SC: 1 cho phép dịch chuyển, 0 không cho phép.
    • Bit RL: 1 dịch phải, 0 dịch trái.
  • Lệnh thiết lập địa chỉ cho bộ nhớ RAM phát kí tự “Set CGRAM Addr”: Thiết lập địa chỉ cho bộ nhớ RAM phát kí tự.
  • Lệnh thiết lập địa chỉ cho bộ nhớ RAM hiển thị “Set DDRAM Addr”: Thiết lập địa chỉ cho bộ nhớ RAM hiển thị dữ liệu.
  • Lệnh đọc dữ liệu LCD và lệnh ghi dữ liệu LCD.

f. Bảng mã ASCII sử dụng cho LCD

Bảng mã ASCII hiển thị ký tự cho LCD1602

g. Bảng địa chỉ cho LCD

Bảng địa chỉ cho LCD1602

2. Hướng dẫn đồ án cảm biến mưa giao tiếp STM32 hiển thị LCD1602

Ở đây, chúng ta sẽ không tiết lộ phần này. Để biết thêm thông tin, vui lòng liên hệ thông tin ở đây để được hỗ trợ tốt hơn.

Phần cứng:

Phần cứng

Phần mềm:

#include "LiquidCrystal.h"
#define LCD_PIN_RS 8
#define LCD_PIN_E 7
#define LCD_PIN_DB4 3
#define LCD_PIN_DB5 4
#define LCD_PIN_DB6 5
#define LCD_PIN_DB7 6

LiquidCrystal lcd(LCD_PIN_RS, LCD_PIN_E, LCD_PIN_DB4, LCD_PIN_DB5, LCD_PIN_DB6, LCD_PIN_DB7);

const int sensorMin = 0;
const int sensorMax = 1024;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("C#corner");
  lcd.setCursor(0, 1);
  lcd.print("Rain Detection");
  delay(2000);
}

void loop() {
  int sensorReading = analogRead(A0);
  int range = map(sensorReading, sensorMin, sensorMax, 0, 3);

  switch (range) {
    case 0:
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Rainy");
      break;
    case 1:
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Rain Started");
      break;
    case 2:
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("No Rain");
      break;
  }

  delay(1000);
}

2. Hoạt động của mạch đọc cảm biến Mưa giao tiếp STM32

Khi cấp điện cho hệ thống, vi điều khiển sẽ đưa tín hiệu ban đầu cho LCD1602 hiển thị thông tin người dùng. Lúc này, vi điều khiển sẽ chờ tín hiệu từ cảm biến mưa về giá trị Analog và Digital. Khi nhận được tín hiệu, vi điều khiển sẽ xử lý và gửi giá trị độ rung của cảm biến, dựa trên mức độ to nhỏ của các bề mặt tiếp xúc lá chắn. Giá trị này sẽ được hiển thị trên màn hình LCD, cùng với chỉ số cảnh báo khi quá ngưỡng.

3. Cụ thể hoạt động của mạch đọc cảm biến Mưa giao tiếp STM32

Ngoài ra, còn có nhiều phần khác trong dự án này. Đồ án còn bao gồm các môn học khác như điện tử cơ bản, viễn thông, PLC, và cung cấp điện.

Chúc các bạn thành công!

FEATURED TOPIC

hihi