1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giải pháp iot dùng thu nhập dữ liệu điều khiển thiết bị từ xa thông qua GSM GPRS

135 21 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 135
Dung lượng 11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Từ những yêu cầu thực tế, những đòi hỏi ngày càng cao của cuộc sống, cộng với sự hợp tác, phát triển mạnh mẽ của mạng di động cũng như internet nên chúng em đã chọn đề tài "Giải pháp IoT

Trang 1

ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - TRUYỀN THÔNG

GIẢI PHÁP IoT DÙNG THU THẬP DỮ LIỆU,

ĐIỀU KHIỂN THIẾT BỊ TỪ XA THÔNG QUA GSM/GPRS

SVTH: PHẠM PHÁT ĐẠT MSSV: 15341003

SVTH: TRẦN NGỌC LÂM MSSV: 15341018

S K L 0 0 4 4 3 2

Trang 2

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ-CÔNG NGHIỆP

GIẢI PHÁP IoT DÙNG THU THẬP

DỮ LIỆU, ĐIỀU KHIỂN THIẾT BỊ

TỪ XA THÔNG QUA GSM/GPRS

GVHD: Ts Nguyễn Văn Thái

Trang 3

ĐỒ ÁN TỐT NGHIỆP

NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG

ĐỀ TÀI:

GIẢI PHÁP IoT DÙNG THU THẬP

DỮ LIỆU, ĐIỀU KHIỂN THIẾT BỊ

TỪ XA THÔNG QUA GSM/GPRS

GVHD: Ts Nguyễn Văn Thái SVTH: Phạm Phát Đạt MSSV: 15341003 SVTH: Trần Ngọc Lâm MSSV: 15341018

Trang 4

Tp HCM, ngày 15 tháng 12 năm 2016

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

Chuyên ngành: CNKT Điện - Điện tử Truyền Thông Mã ngành: 41

I TÊN ĐỀ TÀI: GIẢI PHÁP IoT DÙNG THU THẬP DỮ LIỆU, ĐIỀU KHIỂN

THIẾT BỊ TỪ XA THÔNG QUA GSM/GPRS

II NHIỆM VỤ

1 Các số liệu ban đầu:

 Tiến hành tìm hiểu và thu thập các số liệu từ các trang mạng và sách về điều khiển thiết bị từ xa thông qua GSM/GPRS Tham khảo các giải pháp trước đó

để xây dựng nên hệ thống điều khiển thiết bị

 Tìm hiểu các cảm biến, vi điều khiển, kết nối ngoại vi để lựa chọn ra thiết bị, linh kiện phù hợp cho việc thực hiện đề tài

2 Nội dung thực hiện:

 Dùng module Arduino dùng ATMEGA2560 làm vi xử lý trung tâm, trên đó gồm các IO kết nối với module SIM900A dùng để truyền nhận dữ liệu Thông qua đó điều khiển các thiết bị bằng khối rơle được thiết kế riêng

 Viết chương trình cho vi điều khiển

 Thiết kế giao diện điều khiển và giám sát trên Web Application

 Thiết kế,thi công và lập trình khối đo nhiệt độ, độ ẩm và khí gas

 Kết nối các khối vào module

Trang 5

Dựa trên các thông số thu thập được, tiến hành

lựa chọn giải pháp thiết kế và thi công đề tài

09/10/2016

19/10/2016

Lựa chọn linh kiện cần thiết cho việc thực hiện

đề tài như lựa chọn module vi điều khiển, cảm biến…

Trang 7

Em xin gởi lời chân thành cảm ơn các thầy cô trong Khoa Điện-Điện Tử đã tạo những điều kiện tốt nhất cho chúng em hoàn thành đề tài

Trong quá trình thực hiện đồ án chúng em đã gặp không ít khó khăn Nhưng được sự giúp

đỡ, hướng dẫn nhiệt tình của quý thầy cô đã giúp chúng em khắc phục được những khó khăn đó và hoàn thành được đề tài đúng thời hạn

Chúng em cũng gửi lời đồng cảm ơn đến các bạn lớp 153410 đã chia sẻ trao đổi kiến thức cũng như những kinh nghiệm quý báu trong thời gian thực hiện đề tài

Vì là lần đầu tiên khai thác một lĩnh vực còn khá mới mẻ, nên mặc dù chúng em

đã bỏ ra rất nhiều tâm huyết, thời gian, và công sức, nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, những hạn chế, chúng em hy vọng rằng sẽ nhận được nhiều ý kiến đóng góp chân thành của quý thầy cô, các cá nhân… để chúng em có thể hoàn thiện hơn cho đề tài

Xin chân thành cảm ơn!

Người thực hiện đề tài

Phạm Phát Đạt Trần Ngọc Lâm

Trang 8

Trang

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii

LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii

LỜI CAM ĐOAN iv

LỜI CẢM ƠN v

MỤC LỤC vi

LIỆT KÊ HÌNH VẼ ix

LIỆT KÊ BẢNG xii

TÓM TẮT xiii

Chương 1 TỔNG QUAN 1

1.1 ĐẶT VẤN ĐỀ 1

1.2 MỤC TIÊU 1

1.3 GIỚI HẠN 2

Chương 2 CƠ SỞ LÝ THUYẾT 3

2.1 KHỐI VI ĐIỀU KHIỂN TRUNG TÂM 3

2.1.1 Sơ đồ các linh kiện của Arduino Atmega2560 6

2.1.2 Vi điều khiển ATmega2560 7

a Tổng quan ATmega2560 7

b Sơ đồ chân ATmega2560 11

c Cách hoạt động 16

d Cấu trúc bộ nhớ 22

2.1.2 ATmega16U2 25

Trang 9

2.3.2 Nguyên lý hoạt động 38

2.4 RƠLE 41

2.5 MODULE CẢM BIẾN KHÍ GA MQ2 43

2.5.1 Giới thiệu 43

2.5.2 Sơ đồ chân cảm biến khí ga MQ2 44

2.6 Opto 817 45

Chương 3 TÍNH TOÁN VÀ THIẾT KẾ 47

3.1 GIỚI THIỆU TỔNG QUAN 47

3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 47

3.2.1 Thiết kế sơ đồ khối hệ thống 47

3.2.2 Tính toán và thiết kế mạch 49

3.2.2.1 Khối giao tiếp SMS : 49

3.2.2.2 Khối vi điều khiển ATmega2560 50

3.2.2.3 Khối cảm biến 52

3.2.2.4 Khối công suất 55

3.2.2.9 Khối nguồn 56

3.2.3 Sơ đồ nguyên lý của toàn mạch 57

Chương 4 THI CÔNG HỆ THỐNG 60

4.1 THI CÔNG HỆ THỐNG 60

4.1.1 Thi công bo mạch 60

4.1.2 Kết nối các khối 62

4.2 LẮP RÁP VÀ ĐÓNG GÓI MẠCH 64

4.3 LẬP TRÌNH HỆ THỐNG 67

4.3.1 Lưu đồ giải thuật 67

4.3.2 Phần mềm lập trình cho vi điều khiển 70

4.3.2.1 Phần mềm lập trình cho Arduino IDE 70

4.3.3 Phần mềm lập trình cho WebSever 73

4.3.3.1 Phần mềm Notepad++ 73

4.4 TẠO WEBSEVER VÀ DATABASE 75

4.5 QUY TRÌNH THAO TÁC SỬ DỤNG 80

Chương 5 KẾT QUẢ NHẬN XÉT VÀ ĐÁNH GIÁ 82

Trang 10

5.2 NGUỒN 82

5.4 KẾT QUẢ THỰC HIỆN TRÊN WEB APPLICATION 83

5.4 KẾT QUẢ MÔ PHỎNG ỨNG DỤNG WEB APPLICATION 84

Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 84

6.1 TÓM TẮT ĐỀ TÀI 84

6.2 KẾT LUẬN 84

6.3 HƯỚNG PHÁT TRIỂN 85

TÀI LIỆU THAM KHẢO 86

MỘT SỐ TRANG WEB THAM KHẢO KHÁC 87

PHỤ LỤC 88

Trang 11

Hình 2.2 : Arduino Atmega2560 mặt sau 4

Hình 2.3 : Sơ đồ linh kiện trong Arduino Atmega2560 6

Hình 2.4 : Sơ đồ chi tiết các chân trong khối Arduino Atmega2560 6

Hình 2.4 : Vi điều khiển Atmega2560 7

Hình 2.5 : Sơ đồ khối của Atmega2560 9

Hình 2.6 : Sơ đồ chân ATmega2560 11

Bảng 2.2 : Chi tiết các chân ATmega2560 11

Hình 2.12 : Sơ đồ khối khối ADC 19

Hình 2.13 : Sơ đồ khối đơn giản bộ ADC 20

Hình 2.14 : Sơ đồ khối của USART 21

Hình 2.15 : Sơ đồ hệ thống xung clock cho Atmega2560 21

Hình 2.16 : Bộ nhớ chương trình 22

Hình 2.17 : Bản đồ bộ nhớ dữ liệu SRAM 23

Hình 2.18 : Thanh Ghi EEAR 23

Hình 2.19 : Thanh Ghi EEDR 24

Hình 2.20 : Thanh Ghi EECR 24

Hình 2.21 : Sơ đồ khối của Atmega16U2 26

Hình 2.22 : Module SIM900A 27

Hình 2.23 : Sơ đồ thiết kế củ a GSM/GPRS SIM900A Easy 28

Hình 2.24 : Chi tiết linh kiện trong Module SIM900A 29

Hình 2.25 : SIM900A 29

Hình 2.26 : Sơ đồ khối của SIM900A 32

Hình 2.27 : Sơ đồ chân cùa SIM900A 33

Hình 2.28 : Kết nối giữa Breakout SIM900A và Vi điều khiển 34

Hình 2.29 : Cảm biến DTH11 38

Hình 2.30: Gửi tín hiệu Start 39

Hình 2.31 : Đọc dữ liệu bit 0 40

Hình 2.32: Đọc dữ liệu bit 1 40

Hình 2.33 : Rơle 41

Hình 2.34 : Cấu tạo Rơle 42

Trang 12

Hình 2.36 : Cấu tạo MQ2 44

Hình 2.37 : Sơ đồ chân Module khí ga MQ2 44

Hình 2.38 : Module MQ2 with NE555 45

Hình 2.39: Opto 817 45

Hình 3.1 : Sơ đồ tổng quan hệ thống 47

Hình 3.2 : Sơ đồ khối của bộ điều khiển 48

Hình 3.3 : Sơ đồ nguyên lý module SIM900A 50

Hình 3.4 : Transistor kích mở/tắt nguồn cho module SIM900A 50

Hình 3.5 : Sơ đồ nguyên lý Atmega2560 51

Hình 3.6 : Giao tiếp USB 52

Hình 3.7 : Khối tạo xung dao động 52

Hình 3.8 : Sơ đồ kết nối vi xử lý 53

Hình 3.9 : Sơ đồ kết nối vi xử lý thực tế 54

Hình 3.10 : Sơ đồ kết nối chân giữa Arduino và MQ2 54

Hình 3.11 : Khối công suất 55

Hình 3.12 : Sơ đồ nguyên lý nguồn 5V và 12V 57

Hình 3.13 : Sơ đồ nguyên lý toàn mạch 58

Hình 4.1 : Sơ đồ mạch in nguồn 61

Hình 4.2 : Sơ đồ mạch in khối Rơle 61

Hình 4.3 : Kết nối Arduino Atmega2560 và module SIM900A 63

Hình 4.4 : Kết nối Arduino Atmega2560 và cảm biến, buzzer 64

Hình 4.5 : Hình thực tế mạch nguồn 65

Hình 4.6 : Hình thực tế khối công suất 65

Hình 4.7 : Đóng gói mô hình toàn mạch 66

Hình 4.8 : Cảm biến khí ga và buzzer trong mô hình 66

Hình 4.9 : Các thiết bị giả lập trong mô hình 67

Hình 4.10 : Lưu đồ giải thuật chương trình chính 68

Hình 4.12 : Lưu đồ chương trình điều khiển thiết bị 69

Trang 13

Hình 4.24 : Login vào tài khoản 77

Hình 4.25 : Giao diện đăng nhập 78

Hình 4.26 : Tạo database 78

Hình 4.27 : Tạo các table để lưu các giá trị của Arduino 79

Hình 4.28 : Khai báo tên và số cột 79

Hình 4.29 : Tạo các file php để connect tới mysql và Arduino 80

Hình 4.30 : Cách upload file lên Websever 80

Hình 4.31 : Giao diện sau khi upload file 81

Hình 4.32 : Giao diện Web Application 82

Hình 5.1 : Giao diện ban đầu 83

Hình 5.2 : Giao diện sau khi các giá trị được gửi lên Web Application 83

Trang 14

Bảng Trang

Bảng 2.1 : Cổng Serial giao tiếp với phần cứng 4

Bảng 2.2 : Chi tiết các chân ATmega2560 11

Bảng 2.3 : APN một số nhà mạng 35

Bảng 3.1 : Sơ đồ kết nối chân giữa Arduino và MQ2 54

Bảng 4.1 : Danh sách các linh kiện 61

Trang 15

thu thập được từ các cảm biến đo được như nhiệt độ, độ ẩm, khí gas thông qua GSM/GPRS hay Web Application Điều này sẽ giúp cho con người có khả năng theo dõi, giám sát và điều khiển các thiết bị ở bất kỳ nơi đâu một cách nhanh chóng, tiện lợi, góp phần tiết kiệm điện năng, phù hợp với sự phát triển tiên tiến của xã hội

Đề tài lấy cơ sở là mạng GSM/GPRS để điều khiển thiết bị từ xa Việc sử dụng Web Application để điều khiển và giám sát thiết bị có thuận lợi là nhanh chóng, tiết kiệm chi phí, mang tính cạnh tranh và cơ động Ngoài ra, sản phẩm của đề tài này có tính mở,

có thể áp dụng cho nhiều đối tượng khác nhau trong dân dụng cũng như trong công

nghiệp

Trang 16

Chương 1 TỔNG QUAN

1.1 ĐẶT VẤN ĐỀ

Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, các thiết bị điện tử ra đời ngày càng nhiều về chủng loại cũng như tính năng sử dụng Bên cạnh đó nhu cầu sử dụng các thiết bị một cách tự động ngày càng cao, con người ngày càng muốn các thiết

bị hỗ trợ nhiều hơn cho công việc của mình Có thể ở Việt Nam chưa phát triển mạnh

mẽ trong lĩnh vực này nhưng hiện nay ở trên thế giới, nhất là các nước có ngành công nghệ phát triển vượt bậc thì các thiết bị được điều khiển, giám sát thiết bị từ xa đã phát triển rất mạnh mẽ

Từ những yêu cầu thực tế, những đòi hỏi ngày càng cao của cuộc sống, cộng với sự hợp tác, phát triển mạnh mẽ của mạng di động cũng như internet nên chúng em

đã chọn đề tài "Giải pháp IoT dùng thu thập dữ liệu, điều khiển thiết bị từ xa thông qua GSM/GPRS" để đáp ứng được nhu cầu ngày càng cao của con người và góp phần vào

sự tiến bộ, văn minh, hiện đại của xã hội

1.2 MỤC TIÊU

Đề tài dùng module GSM/GPRS SIM900A để thu nhận dữ liệu từ xa và gửi dữ liệu về module Arduino dùng chip ATMega2560 làm vi xử lý trung tâm, các cảm biến như cảm biến nhiệt độ, độ ẩm, khí gas được kết nối với module này để sau đó dữ liệu

sẽ được truyền về server Trên server sẽ cài đặt một phần mềm để làm nhiệm vụ thu nhận, sau đó xử lý và lưu vào database các thông tin đo được và hiển thị bởi một Website Application

NỘI DUNG NGHIÊN CỨU

Trang 17

 Viết sách luận văn

 Báo cáo đề tài tốt nghiệp

1.3 GIỚI HẠN

Trong thời gian thực hiện đề tài là có hạn, với lượng kiến thức được truyền đạt trong suốt khóa học và khả năng có hạn, nhóm thực hiện đề tài chỉ giải quyết những vấn đề sau:

- Thiết lập một Web Application để điều khiển thiết bị và hiển thị trạng thái thiết bị cũng như nhiệt độ, độ ẩm, khí gas lên Web Application

- Ngoài ra, hệ thống còn có chức năng tự động phát tín hiệu cảnh báo qua chuông và hiển thị cảnh báo lên Web Sever

Trang 18

Chương 2 CƠ SỞ LÝ THUYẾT

Trong phạm vi đề tài có sử dụng 3 khối module kết hợp là Arduino Mega 2560, khối module SIM90A và khối rơle dùng để điều khiển thiết bị

Arduino Mega 2560 đã và đang được sử dụng rất rộng rãi trên thế giới, và ngày càng chứng tỏ được sức mạnh của chúng thông qua vô số ứng dụng độc đáo của người dùng trong cộng đồng nguồn mở (open-source) Trong khi đó Module Sim900A là Module được thiết kế tối ưu với giá thành thấp và phục vụ chủ yếu cho việc giám sát, điều khiển các thiết bị từ xa thông qua GMS/GPRS Sau đây chúng ta sẽ tìm hiểu từng khối module cũng như hoạt động của chúng để phục vụ cho việc thực hiện đề tài

2.1 KHỐI VI ĐIỀU KHIỂN TRUNG TÂM

Khối điều khiển trung tâm là khối Arduino Mega 2560 với chip vi điều khiển là ATMega2560 Khối gồm 54 chân In/Out digital (trong đó có 14 ngõ ra PWM), 16 ngõ vào analog, 4 cổng giao tiếp UART, 1 kết nối USB, cổng nguồn, đầu ICSP, nút reset

và hoạt động ở tốc độ 16 Mhz

Trang 19

Hình 2.2 : Arduino Atmega2560 mặt sau

Khối Arduino Mega 2560 sử dụng chip ATmega16U2 để giao tiếp với máy tính, giúp tăng tốc độ nạp chương trình, tốc độ truyền nhận dữ liệu và tương thích với tất cả mã nguồn của Arduino Mega 2560 Arduino Mega 2560 là một vi điều khiển hoạt động dựa trên chip ATmega2560 Bao gồm:

 54 chân digital (trong đó có 15 chân có thể được sử dụng như những chân PWM là từ chân số 2 → 13 và chân 44, 45, 46)

 6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt 5), chân 19 (interrupt 4), chân 20 (interrupt 3), and chân 21 (interrupt 2)

 16 chân vào analog (từ A0 đến A15)

 4 cổng Serial giao tiếp với phần cứng:

Bảng 2.1 : Cổng Serial giao tiếp với phần cứng

CỔNG SERIAL CHÂN RX CHÂN TX

Trang 20

CỔNG SERIAL CHÂN RX CHÂN TX

Trang 21

Hình 2.3 : Sơ đồ linh kiện trong Arduino Mega 2560

Hình 2.4 : Sơ đồ chi tiết các chân trong khối Arduino Mega 2560

Trang 22

2.1.2 Vi điều khiển ATMega2560

Hình 2.4 : Vi điều khiển Atmega2560

Atmega2560 là vi điều khiển 8 bit dựa trên kiến trúc RISC có bộ nhớ 256KB ISP flash, 8KB SRAM, 4KB EEPROM Vi điều khiển Atmega2560 AVR có công suất cao, tiêu thụ năng lượng thấp, cấu trúc RISC tiến với 130 lệnh với chu kỳ thực hiện đơn xung lớn nhất, 32 thanh ghi đa mục đích 8 bít, 16 MIPS tại tần số đặt 16 MHz, bộ nhân 2 chu kỳ On-chip, Power-on Reset và Brown-out Detection có thể lập trình, bộ dao động RC bên trong có thể lập trình các mức, 5 Mode ngủ (Idle, ADC Noise

Trang 23

- 160 thanh ghi vào ra mở rộng

- 32 thanh ghi đa mục đích

- 6 kênh PWM có thể lập trình thay đổi độ phân giải từ 2 tới 16 bit

- Bộ so sánh tương tự có thể lựa chọn ngõ vào

- Hai khối USART lập trình được

- Khối truyền nhận nối tiếp SPI

- Khối giao tiếp nối tiếp hai dây TWI

Trang 24

Dưới đây là sơ đồ khối của Atmega2560 :

Hình 2.5 : Sơ đồ khối của Atmega2560

Tất cả 32 thanh ghi đều trực tiếp kết nối tới bộ xử lý logic số học - Arithmetic Logic Unit (ALU), cho phép truy nhập 2 thanh ghi độc lập trong một câu lệnh đơn được thực hiện trong một chu kỳ xung Kết quả của cấu trúc trở nên gọn nhẹ, hiệu quả hơn, trong khi vẫn đạt được thời gian xử lý nhanh hơn gấp 10 lần các vi điều khiển CISC thông thường khác, 256Kbyte Flash trên chíp có thể lập trình với các khả năng đọc trong khi ghi (Read-While-Write), 4K byte EEPROM, 8K byte SRAM, 86 đường vào ra đa mục đích, 32 thanh ghi đa mục đích, 6 Timer/Counter rất linh hoạt với các compare mode, các ngắt trong và ngắt ngoài, một bộ USART nối tiếp có thể lập trình được, ghép nối nối tiếp 2 dây định hướng byte, 16 kênh ADC có độ chính xác 10-

Trang 25

tiếp theo hoặc Reset phần cứng xuất hiện

Trong Power-save mode, timer không đồng bộ tiếp tục chạy, cho phép sử dụng

để duy trì thời gian nền, trong khi các phần còn lại của thiết bị được ngủ

ADC Noise Reduction mode dừng CPU và tất các module I/O ngoại trừ timer không đồng bộ và ADC để tối thiểu hóa nhiễu mạch trong suốt quá trình ADC trong chuyển đổi

Trong Standby mode, bộ dao động thạch anh/ resonator được phép chạy trong khi các phần còn lại của thiết bị được ngủ Điều này cho phép start-up rất nhanh cùng với hiệu quả tiêu thụ ít năng lượng

Thiết bị được sản suất áp dụng công nghệ tích hợp bộ nhớ non-volatile cao của Atmel Bộ nhớ chương trình Flash này có thể lập trình thông qua ghép nối tiếp SPI bằng chương trình lập trình bộ nhớ non-volatile riêng, hoặc bằng một chương trình boot on – chip, chạy trong AVR core Chương trình boot có thể sử dụng bất kỳ một ghép nối nào để download chương trình ứng dụng trong bộ nhớ Flash Phần mềm trong Boot Flash sẽ tiếp tục chạy trong khi các phần sử dụng Flash vẫn được update,

hỗ trợ cho hoạt động đọc trong khi ghi (Read-While-Write)

Bằng việc kết hợp với một CPU 8-bit RISC với bộ nhớ Flash tự lập trình trong hệ thống trên một chíp, Atmel ATmega2560 là một vi điều khiển cực mạnh, thỏa mãn yêu cầu về một bộ vi điều khiển với độ linh hoạt cao và đem lại lợi nhuận lớn với rất nhiều các ứng dụng điều khiển tác động nhanh

ATMega2560 AVR cũng hỗ trợ đầy đủ về lập trình và phát triển các tool hệ thống, bao gồm bộ dịch C, macro assemblers, bộ mô phỏng/gỡ rối chương trình, In-Circuit Emulators, và evaluation kits

Trang 26

b Sơ đồ chân ATMega2560

Hình 2.6 : Sơ đồ chân ATMega2560

Bảng 2.2 : Chi tiết các chân ATMega2560

Trang 27

11 GND GND

26 PB7 ( OC0A/OC1C/PCINT7 ) Digital pin 13 (PWM)

Trang 28

31 VCC VCC

Trang 29

55 PC2 ( A10 ) Digital pin 35

Trang 30

75 PA3 ( AD3 ) Digital pin 25

Trang 31

cả các chân của các Port đều có điện trở kéo lên (pull-up) riêng, ta có thể cho phép hay không cho phép điện trở kéo lên này hoạt động

Điện trở kéo lên là một điện trở được dùng khi thiết kế các mạch điện tử logic

Nó có một đầu được nối với nguồn điện áp dương (VCC – VDD) và đầu còn lại được nối với tín hiệu lối vào/ra của một mạch logic chức năng

c Cách hoạt động

Khi khảo sát các cổng như là các cổng vào ra số thông thường thì tính chất của các cổng (PortA, PortB, …) là tương tự nhau, nên ta chỉ cần khảo sát một cổng nào đó trong số 7 cổng của vi điều khiển là đủ Mỗi một cổng vào ra của vi điều khiển được liên kết với ba thanh ghi: PORTx, DDRx, PINx ( x thay thế cho A,B….) Ba thanh ghi này sẽ được phối hợp với nhau để điều khiển hoạt động của cổng, chẳng hạn thiết lập cổng thành lối vào có sử dụng điện trở kéo lên…

Sau đây là nguyên lý chi tiết vai trò của ba thanh ghi trên:

Trang 32

- Thanh ghi DDRx

Đây là thanh ghi 8 bit (có thể đọc ghi) có khả năng điều khiển hướng của cổng (là lối vào hay lối ra) Khi một bit của thanh ghi này được set lên 1 thì chân tương ứng với nó được cấu hình thành ngõ ra Ngược lại, nếu bit của thanh ghi DDRx là 0 thì chân tương ứng với nó được thiết lập thành ngõ vào

Hình 2.7 : Thanh ghi DDRx

- Thanh ghi PORTx

PORTx là thanh ghi 8 bit có thể đọc ghi Đây là thanh ghi dữ liệu của PORTx Nếu thanh ghi DDRx thiết lập cổng là lối ra, khi đó giá trị của thanh ghi PORTx cũng

là giá trị của các chân tương ứng của PORTx, nói cách khác, khi ta ghi một giá trị logic lên 1 bit của thanh ghi này thì chân tương ứng với bit đó cũng có cùng mức logic Khi thanh ghi DDRx thiết lập cổng thành lối vào thì thanh ghi PORTx đóng vai trò như một thanh ghi điều khiển cổng Cụ thể, nếu một bit của thanh ghi này được ghi thành 1 thì điện trở treo ở chân tương ứng với nó sẽ được kích hoạt, ngược lại nếu bit được ghi thành 0 thì điện trở treo ở chân tương ứng sẽ không được kích hoạt, cổng ở trạng thái cao trở (HI-Z)

Hình 2.8 : Thanh ghi PORTx

Trang 33

Hình 2.9 : Thanh ghi PINx

Ngoài ra ATMega2560 còn có 4 bộ định thời, bộ định thời 1 và 3 là bộ định thời

16 bit, bộ định thời 0 và 2 là bộ định thời 8 bit ATMega2560 có 8 ngắt ngoài từ INT0 đến INT7 (ở đây chưa kể tới ngắt Reset) Tám ngắt này tương ứng với 8 chân của MCU la INT0, INT1……INT7 Để ý là ngay cả khi các chân INT0, INT1,…INT7 của MCU được cấu hình như là chân lối ra, thì các ngắt ngoài vẫn có tác dụng nếu được cho phép Các ngắt ngoài có thể bắt mẫu theo kiểu cạnh lên (Rising), cạnh xuống (Falling) hay mức thấp (Low level) Vi điều khiển ATMega2560 còn có nhiều bộ phận ngoại vi khác, các bộ ngoại vi này rất tiện lợi trong các ứng dụng điều khiển (bộ PWM) xử lí số liệu (bộ ADC, bộ so sánh Analog), giao tiếp (bộ USART, SPI, I2C)… Việc tích hợp các bộ ngoại vi này vào trong chip giúp cho các thiết kế trở nên thuận tiên hơn, kích thước bo mạch cũng gọn gàng hơn

- Bộ so sánh tương tự

Sơ đồ đơn giản của bộ so sánh tương tự (Analog Comparator)

Hình 2.11 : Sơ đồ khối của bộ so sánh tương tự

Nguyên tắc hoạt động của bộ so sánh tương tự là: Khi ngõ vào AIN0 có điện thế cao hơn ngõ vào AIN1 thì ngõ ra ACO sẽ ở mức cao (tương ứng với mức logic 1), ngược lại khi ngõ vào AIN0 có điện thế thấp hơn ngõ vào AIN1 thì ngõ ra ACO sẽ ở

Trang 34

mức thấp (tương ứng với mức logic 0) Thường thì trong hai ngõ vào, có một ngõ vào

có điện thế được giữ cố định dùng đề làm điện thế tham chiếu (Vref), điện thế ngõ còn lại có thể thay đổi đề có thể tham chiếu với ngõ vào Vref Trạng thái của ngõ ra ACO của bộ so sánh có thể được dùng để tạo ra một ngắt, kết nối với bộ định thời 1 để sử dụng chức năng input capture của bộ định thời này

- Bộ biến đổi ADC

Bộ biến đổi ADC có chức năng biến đổi tín hiệu tương tự (analog signal) có giá trị thay đổi trong một dải biết trước thành tín hiệu số (digital signal) Bộ ADC của Atmega2560 có độ phân giải 10 bit, sai số tuyệt đối là 2LSB, dải tín hiệu ngõ vào từ 0V-Vcc, tín hiệu ngõ vào có nhiều lựa Bộ ADC của Atmega2560 là loại ADC xấp xỉ liên tiếp với hai chế độ có thể lựa chọn là chuyển đổi liên tục (Free Running) và chuyển đổi từng bước (Single Conversion)

Chuyển đổi liên tục: là chế độ mà sau khi khởi động thì bộ ADC thực hiện chuyển đổi liên tục không ngừng

Chuyển đổi từng bước: là bộ ADC sau khi hoàn thành một chuyển đổi thì sẽ ngừng, một chuyển đổi tiếp theo chỉ được bắt đầu khi phần mềm có yêu cầu chuyển đổi tiếp

Trang 35

Hình 2.12 : Sơ đồ khối khối ADC

Sơ đồ khối đơn giản của một bộ ADC được thể hiện như sau:

Hình 2.13 : Sơ đồ khối đơn giản bộ ADC

Nguyên tắc hoạt động của khối ADC: Tín hiệu tương tự đưa vào các ngõ ADC0:

7 được lấy mẫu và biến đổi thành tín hiệu số tương ứng Tín hiệu số được lưu hành

Trang 36

trong hai thanh ghi ACDH và ADCL Một ngắt có thể được tạo ra khi hoàn thành một chu trình biến đổi ADC Bộ ADC của Atmega2560 phức tạp hơn nhiều, tuy nhiên cơ

sở vẫn dựa vào nguyên tắc trên

- Bộ truyền dữ liệu nối tiếp USART

ATMega2560 có bốn bộ USART là USART0, USART1, USART2 và USART3 Bốn bộ USART này là độc lập nhau, điều này có nghĩa là bốn khối USART có thể

hoạt động cùng một lúc Bên dưới là sơ đồ khối đơn giản của khối USART

Hình 2.14 : Sơ đồ khối của USART

- Hệ thống xung CLOCK và lập trình bộ nhớ ON – CHIP

Hệ thống xung clock Atmega2560 được chia thành nhiều khối khác nhau, mỗi khối sẽ cung cấp xung clock cho các khối ngoại vi ứng dụng tương ứng

Trang 37

Hình 2.15 : Sơ đồ hệ thống xung clock cho Atmega2560

d Cấu trúc bộ nhớ

AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chương trình

Ngoài ra Atmega2560 còn có bộ nhớ EEPROM để lưu trữ dữ liệu

Trang 38

- Bộ nhớ dữ liệu SRAM

8608/8704 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O

và bộ nhớ dữ liệu SRAM nội Trong đó 416 địa chỉ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 8192 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội

Trang 39

Hình 2.18 : Thanh Ghi EEAR

- Thanh Ghi EEDR

Đây là thanh ghi dữ liệu của EEPROM, là nơi chứa dữ liệu ta định ghi vào hay lấy ra từ EEPROM

Hình 2.19 : Thanh Ghi EEDR

- Thanh Ghi EECR

Đây là thanh ghi điều khiển EEPROM, ta chỉ sử dụng 4 bit đầu của thanh ghi này, 4 bit cuối là dự trữ, ta nên ghi 0 vào các bit dự trữ Sau đây ta xét chức năng của từng bit

Hình 2.20 : Thanh Ghi EECR

• Bit 0 – EERE: EEPROM Read Enable

• Bit 1 – EEWE: EEPROM Write Enable

• Bit 2 – EEMWE: EEPROM Master Write Enable

• Bit 3 – EERIE: EEPROM Ready Interrupt Enable

Tóm lại để ghi vào EEPROM ta cần thực hiện các bước sau:

Trang 40

2 Cấm tất cả các ngắt

3 Ghi địa chỉ vào thanh ghi EEAR

4 Ghi dữ liệu mà ta cần ghi vào EEPROM vào thanh ghi EEDR

5 Set bit EEMWE thành 1

6 Set bit EEWE thành 1

7 Cho phép các ngắt trở lại

Đọc dữ liệu từ EEPROM: Việc đọc dữ liệu từ EEPROM đơn giản hơn ghi dữ liệu vào EEPROM, để đọc dữ liệu từ EEPROM ta thực hiện các bước sau:

1 Chờ cho bit EEWE về 0

2 Ghi địa chỉ vào thanh ghi EEAR

3 Set bit EERE lên 1

- 22 thanh ghi I/O

- 32 thanh ghi đa mục đích

- 2 bộ định thời 8 bit (0,2)

Ngày đăng: 27/11/2021, 23:35

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w