Màn hình LCD 16x2

Một phần của tài liệu Đồ án tốt nghiệp: “THIẾT KẾ KHÓA CỬA THÔNG MINH ĐA NĂNG DỰA TRÊN ARDUINO” (Trang 46)

2.6.1 Giới thiệu

Thứ tự Tên kí hiệu I/O Mô tả

1 Vss Power GND

2 Vcc Power +5V

3 Vo Analog Điều khiển ánh sáng nền

4 RS Input Register Select

5 R/W Input Read/Write

6 E Input Enable (Storage)

7 D0 I/O Data LSB 8 D1 I/O Data 9 D2 I/O Data 10 D3 I/O Data 11 D4 I/O Data 12 D5 I/O Data 13 D6 I/O Data 14 D7 I/O Data MSB 15 A I Nguồn dương 5V 16 K I GND

Bảng 2.4 Sơ đồ các chân của màn hình LCD 16x2

+ Chân Vcc, Vss và V0

Cấp dương nguồn +5V và đất tương ứng thì V0 được dùng để điều khiển độ tương phản của LCD.

+ Chân chọn thanh ghi RS (Register select)

Có hai thanh ghi rất quan trọng bên trong LCD, chân RS được dùng để chọn các thanh ghi này như sau: Nếu RS = 0 thì thanh ghi mã lệnh được chọn để cho phép người dùng gửi đến một lệnh như xóa màn hình, con trỏ về đầu dịng… Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD.

+ Chân đọc/ghi(R/W)

Đầu đọc/ghi cho phép người dùng ghi thông tin trên LCD. Khi R/W = 0 thì ghi, R/W = 1 thì đọc.

+ Chân cho phép E(Enable)

phải được áp đến chân này để LCD chốt dữ liệu trên các chân chốt dữ liệu. Xung này phải rộng tối thiểu 450ns.

+ Chân D0 - D7

Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin lên LCD hoặc đọc nội dung của các thanh ghi trên LCD.

Để hiện thị các chữ cái và các con số, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a đến z và các con số từ 0 đến 9 đến các chân này khi RS= 1.

Cũng có các mã lệnh mà có thể gửi đến LCD để xóa màn hình hoặc đưa con trỏ về đầu dòng hoặc nhấp nháy con trỏ.

Chúng ta cũng dùng RS = 0 để kiểm tra bit cờ bận để xem LCD có sẵn sàng nhận thơng tin hay khơng. Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS = 0 như sau:

+ Nếu R/W = 1, RS = 0 khi D7 = 1(cờ bận bằng 1) thì LCD bận bởi các công việc bên trong và sẽ không nhận bất kỳ thông tin mới nào. Khi D7 = 0 thì LCD sẵn sàng nhận thơng tin mới. Lưu ý nên kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu nào lên LCD.

2.6.2 Module giao tiếp I2C giữa LCD 16x2 với ARDIUNO

a) Giới thiệu Module giao tiếp I2C

Hình 2.9 Hình ảnh thực tế Module giao tiếp I2C

Bằng việc sử dụng giao tiếp I2C ( có mơ tả trực quan trên Hình 2.18), việc điều khiển trực tiếp màn hình được chuyển sang cho IC xử lý nằm trên mạch. Chỉ cần việc gửi mã lệnh cùng nội dung hiển thị, do vậy giúp vi điều khiển có nhiều thời gian xử lý các tiến trình phức tạp khác.

Ưu điểm của việc sử dụng giao tiếp I2C

- Giao tiếp I2C chỉ sử dụng duy nhất 2 dây tín hiệu: SDA và SCL giúp tiết kiệm chân trên vi điều khiển.

- Tốc độ truyền dữ liệu lên đến 400Kbps

- Dữ liệu truyền nhận đảm bảo tính tồn vẹn vì sử dụng cơ chế phản hồi (ACK) trên mỗi byte dữ liệu.

- Có khả năng kết nối nhiều thiết bị với nhau: Trên mạch có sẵn các mối hàn A0, A1, A2 để thay đổi địa chỉ của module.

Địa chỉ mặc định: 0x27, có thể mắc vào I2C bus tối đa 8 module điện áp hoạt động: 3V-6V.

Đề điều khiển độ tương phản điều chỉnh biến trở màu xanh. b) Kết nối I2C với ardiuno Mega 2560.

- Chân GND I2C nối với chân GND của mega 2560 - Chân VCC I2C nối với chân 3.3V của mega 2560 - Chân SDA I2C nối với chân 20 SDA của mega 2560 - Chân SCL I2C nối với chân 21 SCL của mega 2560

CHƯƠNG III TÍNH TỐN VÀ THIẾT KẾ 3.1 Thiết kế sơ đồ khối hệ thống

Hệ thống gồm 7 khối ghép lại với nhau theo nhiều hướng tạo nên một hệ thống hoạt động ổn định được trình bày trong sơ đồ khối Hình 3.1 như sau:

Hình 3.1 Sơ đồ khối hệ thống Khối xử lý Khối xử lý trung tâm Khối Chấp hành Khối ma trận phím Khối module RFID Khối hiển thị Khối cảm biến vân tay

Khối nguồn Khối module

Chức năng từng khối:

- Khối nguồn: Cung cấp nguồn 5V cho bo mạch xử lý trung tâm là arduino UNO và Mega 2560. Nguồn từ bo mạch cấp cho cảm biến vân tay , module RFID-RC522, khối hiển thị LCD, ma trận bàn phím 4x4.Cung cấp nguồn 12V cho khóa điện. Cung cấp nguồn 12V 3A qua module giảm áp LM2596 ra thành nguồn 4,2V 3A để cấp cho module sim 800L.

- Khối xử lý trung tâm: Thu thập dữ liệu từ các thiết bị sau đó xử lý và điều khiển khối chấp hành và khối hiển thị. Khối này do Arduino Mega 2560 thực hiện.

- Khối cảm biến vân tay: Tiến hành quét dấu vân tay để đóng mở cửa và nơi lưu trữ dấu vân tay. Khối này do module cảm biến vân tay AS608 thực hiện. - Khối Module Sim 800L: Cho phép mở cửa khi có cuộc gọi từ số điện thoại

chủ nhà đã được cài đặt sẵn trong vi xử lý.

- Khối hiển thị: Hiển thị thông tin chế độ hoạt động khi người dùng thao tác nhập mật khẩu, quẹt thẻ từ hay ấn vân tay. Khối này do màn hình LCD 16x2 thực hiện.

- Khối ma trận phím: Cho phép nhập mật khẩu để mở cửa, khối này do bàn phím ma trận 4x4 đảm nhiệm.

- Khối RFID: Đọc thẻ quẹt vào, nếu đúng mã ID được cài đặt trong bo mạch trung tâm thì cho phép mở cửa. Khối này do module RFID-RC255 đảm nhiệm.

- Khối chấp hành: Khóa điện 12V sẽ nhận lệnh từ vi xử lý và tiến hành mở cửa.

3.2 Tính tốn và thiết kế mạch 3.2.1 Khối xử lý trung tâm 3.2.1 Khối xử lý trung tâm

Arduino Mega 2560 sử dụng chip ATmega2560. Nó có 54 chân digital I/O 16 chân đầu vào tương tự (Analog Inputs), 4 UARTs (cổng nối tiếp phần cứng), một thạch anh dao động 16 MHz, kết nối USB, một jack cắm điện, một đầu ICSP và một nút reset có thể nhìn thấy rõ trong Hình 3.2. Nó chứa tất cả mọi thứ cần thiết để tạo thành khối xử lý trung tâm với đầy đủ các port.

Ý tưởng thiết kế là kết hợp nhiều module lại với nhau, do vậy sẽ có nhiều chân kết nối nên việc lựa chọn Arduino Mega 2560 là rất phù hợp.

Hình 3.2 Board Arduino Mega 2560

Trong quá trình kết nối các module và lập trình cho hệ thống: Bộ nhớ sử dụng hết 2958 bytes vào khoảng 36% bộ nhớ Tổng số chân I/O sử dụng là 20 chân,

Cơng thức tính dịng tiêu thụ:

Dòng tiêu thụ = 20 x 40mA = 800mA.

3.2.2 Khối cảm biến vân tay

Hình 3.3 Khối xử lý và khối cảm biến vân tay

Cảm biến vân tay AS608 tích hợp xử lý hình ảnh và thuật tốn xử lý trên cùng một chip như được thể hiện trong Hình 3.3. Khả năng xử lý ảnh chụp tốt với độ phân giải lên đến 500dpi. Chuẩn giao tiếp: USB

UART (TTL logical logic) từ 9600 – 115200bps, sử dụng tốc độ mặc định là 57600 bps đảm bảo truyền nhận chính xác dữ liệu. Bên cạnh đó là các thơng số khác như:

- Điện áp cung cấp: 3.6V ~ 6V DC. - Dòng điện tiêu thụ: < 120mA.

Khối xử lý trung tâm

Khối cảm biến vân tay

a) Giao tiếp UART.

UART có tên đầy đủ là Universal Asynchronous Receiver – Transmitter. Nó là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi.

UART có chức năng chính là truyền dữ liệu nối tiếp. Trong UART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai phương thức là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.

Giao tiếp dữ liệu nối tiếp có nghĩa là dữ liệu có thể được truyền qua một cáp hoặc một đường dây ở dạng bit-bit và nó chỉ cần hai cáp được thể hiện trong hình 3.4. Nó u cầu số lượng mạch hay như dây rất ít. Giao tiếp này hữu ích trong các mạch ghép hơn giao tiếp song song.

+Trong giao tiếp UART có các thơng số chính:

- Baud rate (tốc độ baud ): Khoảng thời gian để 1 bit được truyền đi. Phải được cài đặt giống nhau ở cả phần gửi và nhận

- Frame (khung truyền): Khung truyền quy định về mỗi lần truyền bao nhiêu bit - Start bit: Là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận

có một gói dữ liệu sắp đc truyền đến. Đây là bit bắt buộc

- Data: Dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước sau đó đến bit MSB.

- Parity bit: Kiểm tra dữ liệu truyền có đúng khơng.

- Stop bit : Là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của dữ liệu. Đây là bit bắt buộc.

b) Cách nối dây cho cảm biến vân tay AS608 vào Arduino Mega 2560 theo thứ tự

- Dây số 1 nối vào nguồn 5V và dây số 2 nối vào chân GND của Arduino. - Dây số 3 nối vào chân số 19 RX1 và dây số 4 nối chân 18 TX1 của Arduino

Mega.

Hình 3.5 Cảm biến vân tay kết nối Arduino Mega

3.2.3 Khối Module SIM 800L

Để điều khiển mở cửa từ xa em đã sử dụng module Sim 800l. Tuy tính kinh tế khi chọn module này là khơng cao nhưng module vẫn có những ưu điểm. Nếu hệ thống mất điện, module vẫn có thể gửi dữ liệu khi sử dụng nguồn dự phòng, hệ thống mạng GPRS được phủ sống liên tục. Nếu ta di chuyển đến nơi khác vẫn có thể cập mở cửa dễ dàng mà khơng cần phải cấu hình lại hệ thống.

a) Cách nối dây.

- Hai chân nguồn VCC và GND được kết nối với module giảm áp LM2596 để dòng điện cho sim hoạt động ổn định lâu dài.

- TX được nối vào chân RX3 và RX nối vào TX3 của Arduino Mega để truyền nhận dữ liệu theo chuẩn UART.

- Chân nguồn GND của sim 800L nối chung với GND của Mega.

b) Module giảm áp LM2596

Hình 3.1 Hình ảnh thực tế Module giảm áp LM2596

Mạch giảm áp DC LM2596 3A (có thể thấy trực quan trong hình 3.6)nhỏ gọn có khả năng giảm áp từ 30V xuống 1.5V mà vẫn đạt hiệu suất cao (92%) . Thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như Sim 800l, motor, robot…

Thông số kỹ thuật:

- Điện áp đầu vào: Từ 3V đến 30V.

- Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V. - Dòng đáp ứng tối đa là 3A.

- Hiệu suất: 92% - Cơng suất: 15W

- Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm

Module có 2 đầu vào IN, OUT, 1 biến trở để chỉnh áp đầu ra. Khi cấp điện 12V 3A từ nguồn Adapter cho đầu vào (IN) thì người dùng vặn biến trở và dùng VOM để đo mức áp ở đầu ra (OUT) để đạt mức điện áp 4.2 để cấp cho module sim800L.

3.2.4 Khối Module RFID-RC522

a) Chuẩn giao tiếp SPI và cách kết nối

Giao tiếp ngoại vi nối tiếp (SPI) là một loại giao thức kiểu Master – Slave cung cấp một giao diện đơn giản và chi phí thấp giữa vi điều khiển và các thiết bị ngoại vi của nó. SPI là một kiểu truyền thông nối tiếp kiểu đồng bộ tức là nó sử dụng tín hiệu đồng hồ chun dụng để đồng bộ hóa bộ phát và bộ thu hoặc Master và Slave. Bộ phát và bộ thu được kết nối với dữ liệu riêng biệt và tín hiệu đồng hồ sẽ giúp bộ thu khi tìm kiếm dữ liệu trên bus.

Đối với giao tiếp khoảng cách ngắn, giao tiếp nối tiếp đồng bộ sẽ là lựa chọn tốt hơn và trong đó giao tiếp ngoại vi nối tiếp hoặc SPI nói riêng là lựa chọn tốt nhất. Khi chúng ta nói truyền thơng khoảng cách ngắn, nó thường có nghĩa là giao tiếp với một thiết bị hoặc giữa các thiết bị trên cùng một board mạch in (PCB).

Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ Master – Slave trong một giao diện đa điểm. Trong loại giao diện này, một thiết bị được coi là Master của bus (thường là một vi điều khiển) và tất cả các thiết bị khác (IC ngoại vi hoặc thậm chí các vi điều khiển khác) đều được coi là Slave.

Hình 3.2 Phương thức giao tiếp SPI

Trong giao thức SPI, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị Slave. Bus SPI bao gồm 4 tín hiệu hoặc chân, ta có thể thấy rõ trên hình 3.7. Chúng là:

- Master - Out/Slave - In (MOSI hay SI): Cổng ra của bên Master, cổng vào của bên Slave, dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave .

- Master – In / Slave – Out (MISO hay SO): Cổng vào của bên Master, cổng ra của bên Slave, dành cho việc truyền dữ liệu từ thiết Slave đến thiết bị Master.

- Serial Clock (SCK hay SCLK): Xung giữ nhịp cho giao tiếp SPI - Chip Select (CS) hay Slave Select (SS): Chọn chip.

b) Kết nối module RFID-RC522 với Arduino mega 2560 qua giao tiếp SPI Ta sử dụng 7 chân của module RFID để kết nối:

o Chân SDA nối với chân 53

o Chân SCK nối với chân 52

o Chân MOSI nối với chân 51

o Chân MISO nối với chân 50

o Chân GND nối với chân GND

o Chân RST nối với chân 49

o Chân VCC nối với chân 3.3V của Arduino.

3.2.5 Khối ma trận bàn phím 4x4

Kết nối 8 chân của ma trận bàn phím với 8 chân của Arduino Mega 2560 (như hình 3.8).

Hình 3.1 Hình ảnh thực tế của bàn phím ma trận 4x4

Chân quét các cột:

- Chân C1 nối với chân số 25. - Chân C2 nối với chân số 24. - Chân C3 nối với chân số 23.

- Chân C4 nối với chân số 22.

Chân quét các hàng.

- Chân R1 nối với chân 29. - Chân R2 nối với chân 27. - Chân R3 nối với chân 28. - Chân R4 nối với chân 26.

3.2.6 Khối nguồn

a) Nguồn

- Ta sử dụng nguồn 5V từ USB để cấp cho vi xử lý Arduino Mega. - Nguồn 12V giảm áp xuống còn 4.2V cấp cho module sim 800L - Nguồn 12V để cấp cho khóa điện.

- Nguồn Pin 9V để làm nguồn dự phịng khi mất điện.

Hình 3.3 Nguồn pin 9V dự phịng

Hình 3.4 Dây cáp cấp nguồn cho Arduino

Mạch chuyển đổi nguồn dự phịng XH-M350 12V 150W (có thể thấy trong hình 3.12) cũng là một trong những Module nguồn (mạch nguồn) được sử dụng để chuyển giữa hai nguồn chính (các nguồn adapter lấy ra trực tiếp từ điện lưới) và phụ (bình tích điện, acquy, pin , …). Khi xảy ra trường hợp nguồn chính mất điện (do cúp điện, hư hỏng, …) mạch tự động chuyển sang nguồn phụ để tiếp tục hoạt động, mạch sử dụng điện áp 12VDC, thích hợp cho các ứng dụng cần nguồn pin dự phịng 12VDC .

Mạch có thiết kế nhỏ gọn, dễ dàng lắp đặt, đấu nối. Mạch ra trực tiếp 2 cổng cấp nguồn cho tải. Mạch được sử dụng cho nhiều ứng dụng: Khóa cửa thông minh, hệ thống camera, hệ thống cảnh báo chống trộm, máy tính, mạng…

Thơng số kỹ thuật:

- Điện áp hoạt động: 12VDC - Công suất đầu ra tối đa: 150W

- Kích thước: 54 x 26.6 x 17.3mm (dài x rộng x cao) - Trọng lượng: 29g

3.2.7 Khối chấp hành

a) Relay 12V

Hình 3.6 Hình ảnh relay thực tế

Relay là thiết bị đóng cắt cơ bản, nó được sử dụng rất nhiều trong cuộc sống và trong các thiết bị điện tử.

Cấu tạo Relay gồm 2 phần + Cuộn hút:

- Tạo ra năng lượng từ trường để hút các tiếp điểm về phía mình

Một phần của tài liệu Đồ án tốt nghiệp: “THIẾT KẾ KHÓA CỬA THÔNG MINH ĐA NĂNG DỰA TRÊN ARDUINO” (Trang 46)

Tải bản đầy đủ (PDF)

(89 trang)