1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8

73 678 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 73
Dung lượng 2,9 MB

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

Nội dung

CHƯƠNG I TỔNG QUAN VỀ VI ĐIỀU KHIỂN ATMEGAATmega 8 có công suất cao, tiêu thụ năng lượng thấp, cấu 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

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN VINH TUẤN

ĐO LƯỜNG ĐIỀU KHIỂN TỪ XA QUA MẠNG ĐIỆN THOẠI DI ĐỘNG BẰNG MODULE SIM900 KẾT NỐI

VI ĐIỀU KHIỂN ATMEGA8

LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG

HÀ NỘI – 2014

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN VINH TUẤN

NGÀNH: CÔNG NGHỆ ĐIỆN TỬ – VIỄN THÔNG

CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ

LUẬN VĂN THẠC SĨ CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS TRẦN QUANG VINH

HÀ NỘI – 2014

Trang 3

LỜI CẢM ƠN

Em xin gửi lời gửi cảm ơn sâu sắc đến Thầy PGS TS Trần Quang Vinh đã tạo mọi điều kiện và giúp đỡ em hoàn thành luận văn này Em cũng xin cảm ơn tới các bạn cùng khóa đã hỗ trợ và giải đáp các vướng mắc của em trong suốt quá trình nghiên cứu

Em xin gửi lời cảm ơn các Thầy cô trong Khoa Điện tử - Viễn thông, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội đã tận tình truyền đạt những kiến thức

bổ ích trong thời gian em học tập tại trường

Cuối cùng em xin gửi lời cảm ơn đến gia đình, bạn bè đã luôn bên em, cổ vũ và động viên em trong những lúc khó khăn để hoàn thành luận văn này

Em xin chân thành cảm ơn!

Trang 4

LỜI CAM ĐOAN

Tôi xin cam đoan nội dung luận văn là do tôi thực hiện, cùng sự giúp đỡ định hướng của thầy giáo hướng dẫn PGS TS Trần Quang Vinh Kiến thức trình bày trong luận văn được chắt lọc qua quá trình tìm hiểu thực trạng công việc thực tế Tài liệu và bảng biểu lấy từ các nguồn khác được trích dẫn đầy đủ

Nguyễn Vinh Tuấn

Trang 5

MỤC LỤC

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT 4

DANH MỤC CÁC HÌNH VẼ 5

CHƯƠNG I TỔNG QUAN VỀ VI ĐIỀU KHIỂN ATMEGA 7

1.1 Giới thiệu chung 7

1.2 Cấu trúc nhân AVR 8

1.2.1 ALU 8

1.2.2 Thanh ghi trạng thái 8

1.2.3 Các thanh ghi chức năng chung 9

1.2.4 Con trỏ ngăn xếp (SP) 9

1.2.5 Quản lý ngắt 9

1.2.6 Cấu trúc bộ nhớ 10

1.3 Các cổng vào ra (I/O) 11

1.3.1 Thanh ghi DDRx 12

1.3.2 Thanh ghi PORTx 13

1.3.2 Thanh ghi PINx 13

1.4 Bộ định thời 13

1.4.1 Các thanh ghi 14

1.4.2 Đơn vị đếm 14

1.5 USART 17

1.5.1 Tạo xung clock 18

1.5.2Định dạng khung truyền 19

1.5.3 Khởi tạo USART 20

1.5.4 Truyền thông dữ liệu-bộ truyền USART 20

1.5.6 Nhận dữ liệu-bộ nhận USART 20

1.6 Bộ biến đổi A/D 21

CHƯƠNG II: GIỚI THIỆU MODULE SIM 900 25

2 1 Tổng quan về Module SIM900 25

2.2 Khảo sát sơ đồ chân và chức năng từng chân 26

2.3 Các chế độ hoạt động của sim900 28

2.3.1 Chế độ Hoạt động 28

2.3.2 Chế độ tắt nguồn 29

2.3 Tập lệnh AT 29

2.3.1 Cú pháp tổng quát của các lệnh AT mở rộng 30

2.3.2 Mã kết quả của lệnh AT 30

2.3.4 Các lỗi +CMS và ý nghĩa của các lỗi 30

2.3.5 Mã lỗi +CMS 31

CHƯƠNG III: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 36

3.1 Kiến trúc phần cứng 36

3.2 Tích hợp mạch phần cứng 39

3.3 Công cụ lập trình 40

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 49

TÀI LIỆU THAM KHẢO 50

PHỤ LỤC 51

Trang 6

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT

RAM : Random Access Memory

ROM : Read Only Memory

RE : Read Enable signal

RISC: Reduced Instruction Set Computing

AGSI : Advanced Simulation Interface

ARM : Advanced RISC Machine

RTOS : Real Time Operating System

VCC : Voltage Connected to Collector

ISS : Instruction Set Simulator

IDE : Intergrated Development Environment

LED : Light Emitting Diode

ADSL : Asymmetric Digital Subscriber Line

AM : Amplitude Modulation

ARIB : Association of Radio Industries and Business

ASK : Amplitude Shift Keying

CFO : Carrier Frequency Offset

CIR : Channel Impulse Response

CP : Cycle Prefix

CPE : Common Phase Error

DAB : Digital Audio Broadcasting

DC : Direct Current

DFS : Dynamic Frequency Selection

DFT : Discrete Fourier Transfrom

DQPSK : Differential Quadrature Phase Shift Keying

FDM : Frequency Divition Multiplexing

FDD : Frequency Division Duplexing

FEC : Forward Error Correction

FFT : Fast Fourier Transfrom

FM : Frequency Modulation

Trang 7

DANH MỤC CÁC HÌNH VẼ

Hình 1.1:Sơ đồ cấu trúc ATmega8 7

Hình 1.2 : Thanh ghi trạng thái SREG 8

Hình 1.3 Thanh ghi chức năng chung 9

Hình 1.4: Thanh ghi con trỏ ngăn xếp 9

Hình 1.5: Bản đồ bộ nhớ chương trình 11

Hình 1.6 Bản đồ bộ nhớ dữ liệu SRAM 11

Hình 1.7 Sơ đồ cấu trúc bộ định thời 14

Hình 1.8 Đơn vị đếm 14

Hình 1.9 Sơ đồ đơn vị so sánh ngõ ra 15

Hình 1.10 Thanh ghi điều khiển bộ định thời 15

Hình 1.11 Thanh ghi bộ định thời 16

Hình 1.12: Thanh ghi mặt nạ ngắt TIMSK 16

Hình 1.13 Thanh ghi cờ ngắt bộ định thời 16

Hình 1.14 Sơ đồ khối bộ USART 18

Hình 1.15 Đơn vị tạo xung clock 19

Hình 1.16 Định dạng khung truyền 19

Hình 1.17 Sơ đồ bộ biến đổi A/D 21

Hình 1.17a Thanh ghi ADMUX 22

Hình 1.18 Thanh ghi điều khiển và trạng thái ADC 22

Hình 1.19 Thanh ghi dữ liệu ADC 24

Hình 2.1: Sơ đồ chức năng Sim 900 25

Hình 2.2 Sơ đồ chân của Module Sim900 26

Hình 2.3 Ứng dụng mô hình triển khai thực tế 34

Hình 3.1 Sơ đồ khối kết nối vi điều khiển với modul sim 900 36

Hình 3 2 Sơ đồ khối của hệ thống 36

Hình 3.3 mạch nguồn cung cấp 37

Hình 3.4 Mạch ATmega8 kết nối header 37

Hình 3.5 Mạch RS232 38

Hình 3.6 Cầu phân áp biến trờ 38

Hình 3.7 mạch Rơle đóng ngắt tải công suất 39

Hình 3.8 Mạch Vi điều khiển ATmega8 39

Hình 3.9 Mạch ModulSim900 40

Giao diện kết nối giữa Mạch ATmega8 và ModulSim900 40

Hình 3.10 Tạo project 40

Hình 3.11 Chọn lọa chip 41

Hình 3.11 Chọn cấu hình ATmega8 41

Hình 3.12 Giao diện chương trình 42

Hình 3.13 Các hàm biến được định nghĩa 44

Hình 3.14 lưu đồ hoạt động, cấu trúc của chương trình 44

Hình 3.15 mô tả chu trình gọi hàm xử lý dữ liệu 45

Hình 3.16 Tạo project chương trình java 46

Hình 3.17 Sơ đồ cây các hàm biến xử lý số liệu 46

Hình 3.20 Tương tác gọi hàm xử lý giữa các khối chức năng 47

Hình 3.18 Giao diện chương trình trên điện thoại khi hoạt động 48

Trang 8

MỞ ĐẦU

Hiện nay, xung quanh ta bắt gặp nhiều sản phẩm công nghệ điện – điện tử với những quy mô to, nhỏ ở tất các các lĩnh vực viễn thông, y tế, giáo dục, … Trên thế giới các nước phát triển công nghệ, ứng dụng điện tử điều khiển đo lường đã phát triển từ lâu, nhưng ở Việt Nam chúng ta đang phát triển và còn khá mới, hầu hết chúng ta mới nhập nguyên sản phẩm phục vụ cho một ứng dụng mà chưa tự tạo riêng cho mình nhiều ứng dụng mang tính công nghệ đặc biệt để đáp ứng nhu cầu thực tế của chúng ta Với những yêu cầu trên, đề tài tập trung vào việc phát triển module

“ĐO LƯỜNG ĐIỀU KHIỂN TỪ XA QUA MẠNG ĐIỆN THOẠI DI ĐỘNG BẰNG MODULE SIM 900 KẾT NỐI VI ĐIỀU KHIỂN ATMEGA8” Phạm vi đề tài và ứng dụng: Hệ thống đo lường tín hiệu đo điện áp đầu vào, đưa tín hiệu điều khiển lối ra, khi có các tác động từ đầu vào (bật nguồn, cảm biến, công tắc hành trình…) hệ thống sẽ gửi tin nhắn thông báo trạng thái tới người điều khiển, người sử dụng tương tác với hệ thống phần cứng bằng việc gửi tin nhắn theo tập lệnh được định nghĩa từ trước Hệ thống hiện được áp dụng vào việc đo giá trị điện áp biến đổi biến trở, điều khiển bật tắt đèn, các ứng dụng đơn giản tương tự

Tuy nhiên do thời gian và kiến thức có hạn nên bản luận văn này chưa thể đề cập được đầy đủ mọi vấn đề liên quan, và chắc chắn không tránh khỏi những thiếu sót

Em rất mong nhận được sự thông cảm và hy vọng nhận được nhiều ý kiến đóng góp để

em có thêm những kiến thức quý báu cho những công việc tương lai

Em xin chân thành cảm ơn !

Trang 9

CHƯƠNG I TỔNG QUAN VỀ VI ĐIỀU KHIỂN ATMEGA

ATmega 8 có công suất cao, tiêu thụ năng lượng thấp, cấu 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 8bit, 16 MIPA tại tấn số đặt 16MHz, bộ nhân 2 chu kỳ On-chip, Power-on Reset và Brown-out Dectectiion 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 reduction, Power-save, power-down và Standby), có khả năng Reset khi bật nguồn, khả năng dò lỗi Brown out laapjt rình được, có nguồn ngắt trong và ngoài Thiết bị được sản xuấ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 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 Mạch gồm có Atmega8, Sim900, port mở rộng, cổng Com kết nối với máy tính, giao tiếp với Sim900

Hình 1.1:Sơ đồ cấu trúc ATmega8

ATmega8 là vi điều khiển 8 bit, 8Kbyte flash, 512byte EEPROM, 1Kbyte SRAM, có hai bộ timer/couter 8 bit và 01 bộ timer/couter 16 bit, có 3 kênh điều khiển xung, 6 kênh lối vào chuyển đổi DC độ phân giải 10 bit dựa trên kiến trúc RISC Sử dụng mạch giao động ngoài từ 0-8Mhz với Atmega8L, với atmega8 từ 0-16Mhz ATmega 8

Trang 10

hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiêm,

1.2 Cấu trúc nhân AVR

AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ liệu Các lệnh được thực hiện chỉ trong một chu kỳ xung clock Bộ nhớ chương trình được lưu trong bộ nhớ Flash

1.2.1 ALU

ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán được thực hiện trong một chu kỳ xung clock Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit

1.2.2 Thanh ghi trạng thái

Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic

Hình 1.2 : Thanh ghi trạng thái SREG

C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập)

Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0)

N: Negative Flag (Nếu kết quả của phép toán là âm)

V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2)

V, For signed tests (S=N XOR V)S: N

H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau)

T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chung gian trong các lệnh BLD,BST)

I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục ngắt Nếu bit này

ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.)

Trang 11

1.2.3 Các thanh ghi chức năng chung

Hình 1.3 Thanh ghi chức năng chung

1.2.4 Con trỏ ngăn xếp (SP)

Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit.Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E(Trong bộ nhớ RAM

là $5E) Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp

Hình 1.4: Thanh ghi con trỏ ngăn xếp

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1

và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2 Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp

ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi 1.2.5 Quản lý ngắt

Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn xàng

cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được một byte nó sẽ

Trang 12

báo cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được một byte thì cờ TX được thiết lập…

Khi có tín hiệu báo ngắtCPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình mà trước khi có ngăt nó đang thực hiện Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo mức ưu tiên Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ.Còn nó mà có mức ưu tiên thấp hơn thì nó sẽ bị bỏ qua

Bộ nhớ ngăn xếplà vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên Để truy nhập vào SRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theo kiểu ngăn xếp thì ta dùng con trỏ SP Con trỏ này là một thanh ghi 16 bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) và SPH:0x3E/0x5E

Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1

và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2 Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ Và giá trị ngăn xếp

ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi

1.2.6 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 ATmega8 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu

1.2.6.1 Bộ nhớ chương trình (Bộ nhớ Flash)

Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8KX16 Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot và phần dành cho chương trình ứng dụng

Trang 13

Hình 1.5: Bản đồ bộ nhớ chương trình

1.2.6.2 Bộ nhớ dữ liệu SRAM

1120 ô 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 đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội

Trang 14

chúng là các cổng vào ra số.Nếu xét trên mặt này thì các cổng vào ra này là cổng vào

ra hai chiều có thể định hướng theo từng bit Và chứa cả điện trở pull-up (có thể lập trình được).Mặc dù mỗi port có các đặc điểm riêng nhưng khi xét chúng là các cổng vào ra số thì dường như điều khiển vào ra dữ liệu thì hoàn toàn như nhau.Chúng ta có thanh ghi và một địa chỉ cổng đối với mỗi cổng, đó là : thanh ghi dữ liệu cổng (PORTA, PORTB, PORTC, PORTD)

Các thanh ghi Port B

Các thanh ghi Port C

Các thanh ghi Port D

1.3.1 Thanh ghi DDRx

Đây là thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác dụng điều khiển hướng cổng PORTx (tức là cổng ra hay cổng vào) Nếu như một bit trong thanh

Trang 15

Ngược lại nếu như bit đó không được set thì bit tương ứng trên PORTx được định nghĩa là cổng vào

1.3.2 Thanh ghi PORTx

Đây cũng là thanh ghi 8 bit (các bit có thể đọc và ghi được) nó là thanh ghi dữ liệu của cổng Px và trong trường hợp nếu cổng được định nghĩa là cổng ra thì khi ta ghi một bit lên thanh ghi này thì chân tương ứng trên port đó cũng có cùng mức logic.Trong trường hợp mà cổng được định nghĩa là cổng vào thì thanh ghi này lại mang dữ liệu điều khiển cổng.Cụ thể nếu bit nào đó của thanh ghi này được set (đưa lên mức 1) thì điện trở kéo lên (pull-up)của chân tương ứng của port đó sẽ được kích hoạt Ngược lại

nó sẽ ở trạng thái hi-Z.Thanh ghi này sau khi khởi động Vi điều khiểnsẽ có giá trị là 0x00

1.3.2 Thanh ghi PINx

Đây là thanh ghi 8 bit chứa dữ liệu vào của PORTx (trong trường hợp PORTx được thiết lập là cổng vào) và nó chỉ có thể đọc mà không thể ghi vào được

Tóm lại

- Để đọc dữ liệu từ ngoài thì ta phải thực hiện các bước sau:

Đưa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n

trong port) đó là đầu vào (xóa thanh ghi DDRx hoặc bit)

Sau đó kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx ( bit)

Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: là cổng và n là bit)

- Để đưa dữ liệu từ vi điều khiển ra các cổng cũng có các bước hoàn toàn tương tự

Ban đầu ta cũng phải định nghĩa đó là cổng ra bằng cách set bit tương ứng của cổng đó….và sau đó là ghi dữ liệu ra bit tương ứng của thanh ghi PORTx

Trang 16

Hình 1.7 Sơ đồ cấu trúc bộ định thời

Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm.Kết quả so sánh có thể được sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại chân OC0 1.4.2 Đơn vị đếm

Phần chính của bộ định thời 8 bit là một đơn vị đếm song hướng có thể lập trình được Cấu trúc của nó như hình dưới đây:

Hình 1.8 Đơn vị đếm

- count: tăng hay giảm TCNT0 1

- direction: lựa chọn giữa đếm lên và đếm xuống

- clear: xóa thanh ghi TCNT0

Trang 17

- TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất

- BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0)

1.4.3 Đơn vị so sánh ngõ ra

Hình 1.9 Sơ đồ đơn vị so sánh ngõ ra

Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh ngõ

ra (OCR0) Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu Báo hiệu này sẽ đặt giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung clock tiếp theo Nếu được kích hoạt (OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và sẽ tự động được xóa khi ngắt được thực thi Cờ OCF0 cũng có thể được xóa bằng phần mềm

1.4.4 Mô tả các thanh ghi

Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0

Hình 1.10 Thanh ghi điều khiển bộ định thời

- Bit 7-FOC0: So sánh ngõ ra bắt buộc

Bit này chỉ tích cực khi bit WGM00 chỉ định chế độ làm việc không có PWM Khi đặt bit này lên 1, một báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng

- Bit 6, 3-WGM01:0: Chế độ tạo dạng sóng

Các bit này điều khiển đếm thứ tự của bộ đếm, nguồn cho giá trị lớn nhất của bộ đếm (TOP) và kiểu tạo dạng sóng sẽ được sử dụng

Trang 18

- Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra

Các bit này điều khiển hoạt động của chân OC0 Nếu một hoặc cả hai bit COM01:0 được đặt lên 1, ngõ ra OC0 sẽ hoạt động

- Bit 2:0: CS02:0: Chọn xung đồng hồ

Ba bit này dùng để lựa chọn nguồn xung cho bộ định thời/bộ đếm

Thanh ghi bộ định thời/bộ đếm

Hình 1.11 Thanh ghi bộ định thời

Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi) vào bộ đếm

8 bit

Thanh ghi mặt nạ ngắt

Hình 1.12: Thanh ghi mặt nạ ngắt TIMSK

- Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh

- Bit 0-TOIE0: Cho phép ngắt tràn bộ đếm

Thanh ghi cờ ngắt bộ định thời

Hình 1.13 Thanh ghi cờ ngắt bộ định thời

- Bit 1-OCF0: Cờ so sánh ngõ ra 0

- Bit 0-TOV0: Cờ tràn bộ đếm

Bit TOV0 được đặt lên 1 khi bộ đếm bị tràn và được xóa bởi phần cứng khi vector ngắt tương ứng được thực hiện Bit này cũng có thể được xóa bằng phần mềm

Trang 19

- Bộ tạo tốc độ baud có độ chính xác cao

- Hỗ trợ khung truyền nối tiếp với 5, 6, 7, 8, hoặc 9 bit dữ liệu và 1 hoặc 2 bit stop

- Kiểm tra chẵn lẻ

- Phát hiện tràn dữ liệu

- Phát hiện lỗi khung

- Lọc nhiễu, bao gồm phát hiện bit start lỗi và bộ lọc thông thấp số

- Ngắt khi kết thúc truyền, thanh ghi truyền hết dữ liệu và kết thúc nhận

- Chế độ truyền thông đa vi xử lý

- Chế độ truyền đồng bộ tốc độ cao

Sơ đồ khối của bộ USART như sau:

Trang 20

Hình 1.14 Sơ đồ khối bộ USART

USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận Các thanh ghi điều khiển được sử dụng chung giữa các phần này

1.5.1 Tạo xung clock

Bộ tạo xung clock tạo ra xung đồng hồ căn bản cho bộ truyền và bộ nhận USART hỗ trợ 4 chế độ hoạt động xung clock: bất đồng bộ, bất đồng bộ tốc độ cao, truyền đồng

bộ master và truyền đồng bộ slave Sơ đồ khối của bộ tạo xung clock như sau:

Trang 21

Hình 1.15 Đơn vị tạo xung clock

txclk: xung đồng hộ bộ truyền

rxclk: xung đồng hồ bộ nhận

xcki: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng bộ master

xcko: tín hiệu xung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng bộ slave

fosc: tần số từ chân XTAL

1.5.2 Định dạng khung truyền

USART chấp nhận tất cả 30 tổ hợp của các định dạng khung truyền sau đây:

- 1 bit start

- 5, 6, 7, 8, hoặc 9 bit dữ liệu

- Có hoặc không có bit chẵn lẻ

- 1 hoặc 2 bit stop

Một khung truyền bắt đầu với một bit start, theo sau đó là bit có trọng số thấp nhất (LSB) của dữ liệu (có thể lên tới 9 bit), kết thúc bằng bit có trọng số lớn nhất (MSB)

Sp: bit stop (mức cao)

IDLE: không có dữ liệu truyền (mức cao trong suốt thời gian idle)

Trang 22

1.5.3 Khởi tạo USART

Quá trình khởi tạo USART bao gồm việc thiết lập tốc độ baud, thiết lập định dạng khung và kích hoạt bộ truyền và bộ nhận

Ví dụ dưới đây thiết lập hoạt động truyền bất động bộ sử dụng polling (không dùng ngắt) và định dạng khung truyền là cố định Tốc độ baud là một tham số của hàm 1.5.4 Truyền thông dữ liệu-bộ truyền USART

Bộ truyền USART được kích hoạt bằng cách thiết lập bit TXEN trong thanh ghi UCSRB Khi bộ truyền được kích hoạt, chân TxD hoạt động như ngõ ra của bộ truyền nối tiếp.Tốc độ baud, chế độ hoạt động và định dạng khung truyền phải được thiết lập trước khi thực hiện truyền dữ liệu

1.5.5.1 Truyền khung 5 đến 8 bit dữ liệu

Việc truyền dữ liệu được thiết lập bằng cách nạp dữ liệu truyền vào bộ đệm truyền Dữ liệu trong bộ đệm sẽ được đưa vào thanh ghi dịch khi thanh ghi dịch đã sẵn sàng gửi một khung mới

Truyền khung 9 bit dữ liệu

Nếu sử dụng 9 bit dữ liệu, bit thứ 9 phải được ghi vào bit TXB8 trong thanh ghi UCSRB trước khi byte còn lại được ghi vào UDR

1.5.6 Nhận dữ liệu-bộ nhận USART

Bộ nhận USART được kích hoạt bằng cách đặt bit RXEN trong thanh ghi UCRSB lên

1 Khi bộ nhận được kích hoạt, chân RxD hoạt động như ngõ vào của bộ nhận nối tiếp.Tốc độ baud, chế độ hoạt động và định dạng khung truyền phải được thiết lập trước khi thực hiện truyền dữ liệu

Nhận khung với 5 đến 8 bit dữ liệu

Bộ nhận bắt đầu nhận dữ liệu khi nó phát hiện một bit start hợp lệ Mỗi bit theo sau bit start sẽ được lấy mẫu tại tốc độ baud hoặc tốc độ đồng hồ XCK, và được dịch vào trong thanh ghi dịch của bộ nhận cho đến khi phát hiện một bit stop đầu tiên Nội dung của thanh ghi dịch sau đó được đưa vào bộ đệm Bộ đệm của bộ nhận có thể được đọc bằng cách đọc UDR

Ví dụ sau đây là một hàm nhận USART dựa trên việc kiểm tra cờ kết thúc truyền (RXC)

Nhận khung với 9 bit dữ liệu

Nếu nhận dữ liệu 9 bit, bit thứ 9 phải được đọc từ bit RXB8 trong thanh ghi UCSRB trước khi đọc các bit thấp trong UDR

Ví dụ sau đây là một hàm nhận dữ liệu 9 bit

Trang 23

1.6 Bộ biến đổi A/D

Vi điều khiểnATmega8 có một bộ biến đổi ADC tích hợp trong chip với các đặc điểm:

- Độ phân giải 10 bit

- Sai số tuyến tính:0.5LSB

- Độ chính xác +/-2LSB

- Thời gian chuyển đổi:65-260μs

- 8 Kênh đầu vào có thể được lựa chọn

- Có hai chế độ chuyển đổi free running và single conversion

- Có nguồn báo ngắt khi hoàn thành chuyển đổi

- Loại bỏ nhiễu trong chế độ ngủ

Hình 1.17 Sơ đồ bộ biến đổi A/D

Tám đầu vào của ADC là tám chân của PORTA và chúng được chọn thông qua một MUX

Trang 24

Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3 thanh ghi:ADMUX là thanh ghi điều khiển lựa chọn kênh đầu vào cho ADC, ADCSRA là thanh ghi điều khiển và thanh ghi trạng thái của ADC, ADCH và ADCL là 2 thanh ghi dữ liệu

ADMUX: Multiplexer select register

Đây là thanh ghi điều khiển 8 bit

Hình 1.17a Thanh ghi ADMUX

Với 4 bit được định nghĩa là MUX3, MUX2, MUX1,và MUX0, ứng với các tổ hợp logic ta có thể chọn kênh đầu vào Cụ thể:

Các bit REFS1 và REFS0 dùng để chọn giá trị điện áp tham khảo cho ADC, như sau:

Chú ý:Nếu như ta thay đổi kênh trong thời điểm mà ADC đang chuyển đổi thì khi quá trình chuyển đổi đã hoàn thành thì kênh vào mới được thay đổi

ADCSR-ADC control and status register

Đây là thanh ghi điều khiển và lưu trạng thái của ADC

Trang 25

Bit 7-ADEN:ADC enable

Đây là bit điều khiển hoạt động của ADC.Khi bit này được set 1 thì ADC có thể hoạt động và ngược lại.Nếu như ta ngừng hoạt động của ADC trong khi nó đang chuyển đổi thì nó sẽ kết thúc quá trình chuyển đổi.Mặc dù chưa chuyển đổi xong

Bit 6-ADSC: ADC start conversion

Trong chế độ chuyển đổi đơn thì bit này phải được set lên 1 để bắt đầu chuyển đổi.Trong chế độ chuyển đổi tự do thì bit này cần được set lên 1 để bắt đầu lần chuyển đổi đầu tiên.Bit này được giữ sốt trong quá trình chuyển đổi và được xóa khi mà chuyển đổi xong

Bit 5-ADATE :ADCAuto Trigger enable

Khi bit này được set thì ADC sẽ bắt đầu chuyển đổi mỗi khi có một nguồn kích hoạt xuất hiện Việc lựa chọn nguồn kích hoạt được thực hiện bằng cách set các bit trong thanh ghi SFIOR

Bit 4-ADIF:ADC interrupt Flag

Bit này được set lên 1 bởi phần cứng khi quá trình chuyển đổi đã hoàn thành và thanh ghi dữ liệu đã được cập nhật Bit này được xóa bằng phần cứng nếu như ngắt này được phép và được phục vụ Hoặc nó có thể được xóa bằng cách ghi giá trị logic “0”vào cờ này.Cụ thể khi ngắt bị cấm ta có thể sử dụng các lệnh sbi và cbi để tác dụng lên bit này

Bit 3-ADIE:ACD interrupt Enable

Nếu bit này set 1 và ngắt toàn cục được cho phép thì ngắt này được phép phục vụ (khi chuyển đổi xong dữ liệu) và nếu bị xóa thì ngược lại

Bit 2.1.0-ADPS2…ADPS0:Bit lựa chọn xung nhịp(Tốc độ)

Nguồn xung được lấy từ nguồn xung của Vi điều khiển(XTAL)và được chia tần thông qua bộ chia tần

Các bit ADPS có nhiệm vụ chọn số chia cho bộ chia tần theo bảng sau:

Thanh ghi dữ liệu ACDH và ADCL

Thanh ghi này chứa dữ liệu chuyển đổi từ tương tự sang số, được sắp xếp như hình dưới đây

Trang 26

Hình 1.19 Thanh ghi dữ liệu ADC

Nguyên tắc hoạt động và lập trình điều khiển

ADC có nhiệm vụ chuyển đổi tín hiệu điện áp tương tự thành tín hiệu số có độ phân giải 10 bit.Với giá trị nhỏ nhất của điện áp đặt ở chân AGND và giá trị cực đại của điện áp tương tự được mắc vào chân AREF Tám kênh tương tự đầu vào được chọn lựa thông qua ADMUX và ADMUX này được điều khiển bởi thanh ghi ADMUX ADC này có thể hoạt động được ở hai chế độ Đó là chuyển đổi đơn:chỉ chuyển đổi một lần khi có lệnh chuyển đổi và chế độ tự chuyển đổi (Free running mode) đây là chế độ mà ADC tự động chuyển đổi khi được hoạt động và công việc chuyển đổi có tính tuần hoàn(chỉ cần khởi động một lần)

ADC được phép hoạt động nhờ thiết lập bit ADEN Quá trình chuyển đổi được bắt đầu bằng việc ghi vào bit ADSC mức logic 1 và trong suốt quá trình chuyển đổi bit này luôn được giữ ở mức cao Khi quá trình chuyển đổi hoàn thành thì bit này được xóa bằng phần cứng và cờ AIDF được bật lên

Dữ liệu sau khi chuyển đổi được đưa ra thanh ghi dữ liệu ADCL và ADCH, nhưng chú

ý khi đọc dữ liệu từ hai thanh ghi này thì đọc ADCL trước rồi mới đọc ADCH.Nếu đọc ADCH trước thì dữ liệu cập nhật có thể ghi đè lên ADCL (Vi điều khiển nghĩ rằng

đã đọc xong dữ liệu)

Để điều khiển vào ra dữ liệu với ADC, các bước thực hiện như sau:

Bước 1: Định nghĩa các cổng vào cho tín hiệu tương tự

Xóa bit tương ứng với chân đó trong thanh ghi DDRA Sau đó loại bỏ điện trở treo bằng cách xóa bit tương ứng ở thanh ghi PORTA

Bước 2:Chọn kênh tương tự vào(chọn chân vào cho ADC) thông qua thanh ghi

ADMUX(có thể thay đổi trong quá trình hoạt động)

Bước 3: Thiết lập các thông số cho ADC

Tốc độ chuyển đổi thông qua xung nhip chuyển đổi

Chế độ chuyển đổi : đơn hoặc tự động

Sử dụng ngắt hoặc không

Bước 4:Bắt đầu chuyển đổi và đọc dữ liệu

Trang 27

CHƯƠNG II: GIỚI THIỆU MODULE SIM 900

2 1 Tổng quan về Module SIM900

Giới thiệu:

- SIMCom giới thiệu Module Sim900 là một module GSM/GPRS cực kỳ nhỏ gọn, được thiết kế cho thị trường toàn cầu Sim900 hoạt động được ở 4 băng tần GSM 850MHz, EGSM 900MHz, DCS 1800MHz và PCS 1900MHz như là một loại thiết bị đầu cuối với một Chip xử lý đơn nhân đầy sức mạnh, tăng cường các tính năng quan trọng dựa trên nền vi xử lý ARM926EJ-S, cho bạn nhiều lợi ích từ kích thước nhỏ gọn (24x24 mm), đáp ứng những yêu cầu về không gian trong các ứng dụng M2M

- GSM Module Sim900 là một sản phẩm do AT-COM phát triển nhằm giúp người sử dụng có thể khai thác các tính năng của Sim900 một cách dễ dàng Board hỗ trợ khá đầy các ngõ ra của Module Sim900 ( RS232, Audio, ADC, VRTC, PWM, I2C ) Dễ kết nối kết nối với các dòng vi điều khiển như PIC, AVR, ARM, Arduino để phát triển các ứng dụng điều khiển, giám sát qua môi trường mạng GSM, GPRS Ngõ ra RS232 giúp giao tiếp máy tính và lập trình cho Module Sim900 thông qua tập lệnh AT COMMAND

1.1 Đặc điểm kĩ thuật của GSM Module Sim900

Trang 28

- Nguồn xung dùng IC LM2596 cho dòng tải 3A, tần số đáp ứng 150Khz

- Điện áp ngõ vào: 7-12V DC

- Điện áp ngõ ra : 4.5V, 4V, 3.3V chọn bằng “jumper select “ trên mạch

Giao tiếp máy tính:

- Cổng USB 2.0 kiểu B cho phép SIM900 giao tiếp máy tính

- Sử dụng IC FT232RL chuyển đổi USB TO UART

Đế sim card tích hợp trên board

Tích hợp gõ ra speaker, Mic

Header, RS232, ADC,VRTC, I2C, PWM

Hỗ trợ source code driver sim900

Hỗ trợ thiết kế shematic cho sim900

Kích thước nhỏ ngọn 47mm x 34.29mm

2.2 Khảo sát sơ đồ chân và chức năng từng chân

Khảo sát sơ đồ chân và chức năng từng chân

Hình 2.2 Sơ đồ chân của Module Sim900

STT Tên chân I/O Miêu tả

+ PIN 1: PWRKEY I

PWRKEY được dùng để bật hay tắt nguồn hệ thống Người sử dụng điều khiển PWRKEY ở mức điện áp thấp trong một thời gian ngắn bởi vì hệ thống cần có một khoảng thời gian ngắn để kích sim900 hoạt động

- PIN 2: PWRKEY_OUT O

Khi kết nối PWRKEY và PWRKEY_OUT , người sử dụng kích hoạt nó trong một thời gian ngắn sau đó thoát ra thì cũng có thể khởi động hoặc tắt các module

Trang 29

- PIN 5: DCD O Phát hiện dữ liệu mang theo

- PIN 6: DSR O Dữ liệu cài đặt sẵn sàng

- PIN 7: CTS O Xóa để gửi

- PIN 8: RTS I Yêu cầu để gửi

- PIN 9: TXD O Truyền dữ liệu

- PIN10: RXD I Nhận dữ liệu

- PIN 11: DISP_CLK O Khối hiển thị

- PIN 12: DISP_DATA I/O

- PIN 13: DISP_D/C O

- PIN 14: DISP_CS

- PIN 15: VDD_EXT O Nguồn ra 2.8V

- PIN 16: NRESET I Reset lại sim900

Ngõ vào cho RTC: khi không có nguồn cungcấp cho hệ thống

Ngõ vào nguồn dữ trữ: khi nguồn chính đã có và nguồn dữ trữ ở mức thấp

- PIN 27: DBG_TXD O Gỡ lỗi và nâng cấp firmware

- PIN 28: DBG_RXD I

- PIN 29: GND Nối đất

- PIN 30: SIM_VDD O Cấp nguồn cho simcard

- PIN 31: SIM_DATA I/O Dữ liệu đầu ra của sim

- PIN 32: SIM_CLK O Sim clock

- PIN 33: SIM_RTS O Reset lại sim

- PIN 34: SIM_PRESENCE I Phát hiện simcard

- PIN 35: PWM1 O Đầu ra PWM

- PIN 36: PWM2

- PIN 37: SDA I/O Đường truyền dữ liệu I2C

- PIN 38: SCL O Đường truyền I2C

- PIN 39: GND Nối đất

GPIO1/KBR4 O Khối bàn phím

Trang 30

Hiệu điện thế chuẩn: Vchuẩn = 4.0V

Hiệu điện thế lớn nhất: Vmax = 4.5V

Hiệu điện thế nhỏ nhất: Vmin = 3.4V

2.3 Các chế độ hoạt động của sim900

Sim900 có ba chế độ hoạt động khác nhau, với các chế độ này thì nguồn tiêu thụ và sự hoạt động cũng khác nhau Chi tiết các chế độ hoạt động của sim900 được thể hiện 2.3.1 Chế độ Hoạt động

+ Chế độ bình thường

- GSM/GPRS SLEEP

Sim900 sẽ tự động đi vào chế độ SLEEP (chế độ nghỉ) nếu DTR được thiết lập là mức cao và không có ngắt ở phần cứng Trong trường hợp này, dòng tiêu thụ của module sim900 sẽ được làm giảm tối thiểu chỉ còn 1.5mA

Trong chế độ SLEEP, các mô-đun vẫn có thể nhận được tin nhắn SMS từ hệ thống bình thường

- GSM IDLE

Trang 31

Phần mềm được kích hoạt để hoạt động Sim900 đã đăng nhập vào hệ thống mạng GSM, và sẵn sàng để gửi và nhận tin nhắn,cuộc gọi

- GSM TALK

Kết nối giữa sim900 và thiết bị khác hỗ trợ GPRS được thực hiện Trong trường hợp này, công suất tiêu thụ phụ thuộc vào các thiết lập mạng như DTX bật/tắt, FR/EFR/HR, ăng-ten

- GPRS STANDBY

Sim900 đã sẵn sàng cho việc kết nối GPRS, nhưng không có dữ liệu hiện đang được gửi hoặc nhận được Trong trường hợp này, công suất tiêu thụ phụ thuộc vào các thiết lập mạng và cấu hình GPRS

- GPRS DATA

Dữ liệu GPRS đã được truyền (PPP hoặc TCP hoặc UDP) trong quá trình hoạt động Trong trường hợp này, công suất tiêu thụ có liên quan với các thiết lập mạng (ví dụ như điều khiển chế độ công suất), tốc độ uplink /downlink và cấu hình GPRS

Ngừng hoạt động nhưng không cần ngắt nguồn cung cấp Sử dụng lệnh "AT + CFUN"

để thiết lập sim900 về chế độ tiết kiệm mà không cần loại bỏ các nguồn cung cấp năng lượng Trong trường hợp này, phần ăng ten sẽ không làm việc hoặc SIM card sẽ không thể truy cập được, hoặc cả hai phần ăng ten và SIM card sẽ không hoạt động Nguồn tiêu thụ trong trường hợp này là rất thấp

Trang 32

Quy tắc 4: Thông tin phản hồi và mã kết quả (bao gồm mã kết quả cuối cùng và mã kết quả không mong muốn) luôn bắt đầu với một ký tự về đầu dòng và một ký tự xuống dòng

2.3.2 Mã kết quả của lệnh AT

a Mã kết quả cuối cùng

Mã kết quả cuối cùng đánh dấu kết thúc phản hồi cho một lệnh AT Nó cho biết GSM modem đã hoàn thành thực thi lệnh Hai mã được sử dụng thường xuyên là OK và ERROR Mỗi một lệnh chỉ có một mã kết quả cuối cùng được trả về

Mã kết quả cuối cùng OK Cho biết một lệnh AT nào đó đã được thực hiện thành công bởi GSM modem Luôn bắt đầu và kết thúc với ký tự về đầu dòng và xuống dòng

Mã kết quả cuối cùng ERROR

Mã này cho biết đã có lỗi xảy ra khi thực hiện một lệnh AT Sau khi xảy ra lỗi, GSM/GPRS modem sẽ không xử lý tiếp phần còn lại trong chuỗi lệnh

Một số nguyên nhân dẫn đến lỗi như cú pháp của lệnh sai; Giá trị của một tham số không hợp lệ; Tên lệnh bị gõ sai; GSM/GPRS modem không hỗ trợ lệnh đó; Mã lỗi này cũng bắt đầu và kết thúc với ký tự về đầu dòng và xuống dòng

Mã kết quả cuối cùng +CMS ERROR

Mã này được trả về khi một lỗi dịch vụ tin nhắn xảy ra Một mã lỗi được trả về cho người lập trình để kiểm tra nguyên nhân gây ra lỗi Lỗi này chỉ liên quan đến những lệnh AT thao tác với SMS Cũng như OK và ERROR, mã lỗi này cũng bắt đầu và kết thúc với một ký tự về đầu dòng và xuống dòng, và một số nguyên thể hiện một lỗi xác định

2.3.4 Các lỗi +CMS và ý nghĩa của các lỗi

Mã lỗi +CMS Ý nghĩa

300 Lỗi thiết bị di động Thường là máy điện thoại hoặc GSM/GPRS modem

301 Dịch vụ SMS của thiết bị di động đã bị chiếm dụng

302 Thao tác thực hiện bởi lệnh AT không được cho phép

303 Thao tác thực hiện bởi lệnh AT không được hỗ trợ

304 Một hoặc nhiều giá trị tham số gắn với lệnh AT không hợp lệ

Trang 33

305 Một hoặc nhiều giá trị tham số gắn với lệnh AT không hợp lệ

(Với chế độ văn bản)

310 Không có thẻ SIM

311 Thẻ SIM đòi hỏi phải nhập mã PIN

312 Thẻ SIM đòi hỏi phải nhập mã PH-SIM PIN

313 Lỗi thẻ SIM

314 Thẻ SIM bận

315 Thẻ SIM hỏng

2.3.5 Mã lỗi +CMS

Mã kết quả không được yêu cầu

Là những mã kết quả được gửi từ GSM/GPRS modem để cung cấp về sự xảy ra của một sự kiện nào đó Ví dụ, chúng ta có thể dùng lệnh +CNMI (New Message Indication to TE) để yêu cầu GSM/GPRS modem gửi các mã kết quả “+CMTI” tới máy tính mỗi khi có tin nhắn SMS được nhận từ SMSC

Dưới đây là một vài mã kết quả liên quan tới SMS:

CDS: được dùng để chuyển một tin nhắn SMS mới nhận thông báo tình trạng tới thiết

bị đầu cuối

CDSI: được dùng để nhắc nhở thiết bị đầu cuối về một tin nhắn SMS mới thông

báo tình trạng đã được nhận và vị trí trong bộ nhớ lưu nó

CMT: được dùng để chuyển một tin nhắn mới nhận vào thiết bị đầu cuối

CMTI: được dùng để nhắc nhở thiết bị đầu cuối có tin nhắn mới nhận và vị trí nó được lưu trong bộ nhớ

Một số lệnh AT được dùng

Một số thuật ngữ sử dụng: Carriage return (Mã ASCII 0x0D)

: Line Feed ( Mã ASCII 0 x0 A)

MT: Mobile Terminal - Thiết bị đầu cuối mạng (trong trường hợp này là

module Sim900)

TE : Terminal Equipment - Thiết bị đầu c uối (vi điều khiển, máy tính)

Dưới đây là một số lệnh AT thường gặp

- Lệnh ATZ

Lệnh ATZ dùng thiết lập lại (reset) tất cả các tham số hiện tại theo mẫu được người dùng định nghĩa Lệnh trả về của modem là lệnh OK Mẫu người dùng định nghĩa trước đó được lưu trên bộ nhớ cố định Nếu không thiết lập lại được theo mẫu của người dùng định nghĩa thì nó sẽ reset lại theo đúng các tham số mặc định của nhà sản xuất Bất cứ lệnh AT cộng thêm nào trên cùng một dòng với lệnh ATZ đều không được thực hiện

- Lệnh AT+CMGR

Lệnh AT+CMGR được dùng để đọc tin nhắn trên một ngăn nào đó trên sim điện thoại Cấu trúc lệnh như sau: AT+CMGR=i, với i là ngăn bộ nhớ chứa tin nhắn trong sim

Trang 34

Đáp ứng trở về là lệnh OK nếu ngăn i có chứa tin nhắn Nếu ngăn i không chứa tin nhắn thì sẽ xuất hiện thông báo lỗi trả về ERROR Ví dụ khi gõ lệnh AT+CMGR=1 thì sim900 sẽ đọc tin nhắn tại ngăn số 1 của bộ nhớ sim điện thoại gắn ngoài

- Lệnh AT+CMGS

Lệnh AT+CMGS dùng để gửi tin nhắn SMS tới một số điện thoại cho trước

Cú pháp gửi tin như sau:

- AT+CMGS= “số điện thoại cần gửi”

- Nội dung tin nhắn

- ESC/Ctrl Z

Số điện thoại cần gửi phải được đặt trong dấu ngoặc kép Sau khi gõ xong số

điện thoại thì cần thực hiện lệnh enter để xuống dòng và bắt đầu nội dung tin nhắn Kết thúc lệnh này bằng việc thực hiện lệnh Cltr Z

Ví dụ lệnh gửi tin nhắn tới số 0989196980 với nội dung “abcd” được thực hiện tại chế

độ text trong phần mềm lập trình CCS như sau:

Với i là ngăn bộ nhớ chứa tin nhắn cần xóa Nếu ngăn i chứa tin nhắn thì đáp ứng trả

về là OK, còn nếu việc thực hiện tin nhắn không thực hiện được như ngăn i không có tin nhắn, hoặc lỗi kết nối tới sim, lỗi sóng thì trả về sẽ là ERROR

Ví dụ xóa tin nhắn từ ngăn số 1 của sim: AT+CMGD=1

- Lệnh ATE

Lệnh này dùng để thiết lập chế độ lệnh phản hồi trở lại Đáp ứng trở lại là OK

Lệnh ATE có hai tham số hoàn toàn khác nhau:

- ATE0: tắt chế độ phản hồi

- ATE1: bật chế độ phản hồi

Khi giao tiếp module sim900 với phần mềm terminal trên máy tính, nếu ta dùng lệnh ATE0 thì khi gõ các lệnh AT khác thì không nhìn thấy lệnh ta gõ mà chỉ nhìn thấy kết quả trả về của sim900 Ngược lại, khi dùng lệnh ATE1 thì sẽ nhìn được cả lệnh ta gõ lên và lệnh sim900 trả về

- Lệnh AT&W

Lệnh AT&W được dùng để lưu cấu hình cài đặt được thiết lập bởi các lệnh ATE và

Trang 35

Lệnh AT+CMGF dùng để lựa chọn định dạng tin nhắn SMS, với hai chế độ là text và PDU, cụ thể như sau:

AT+CMGF=1: lựa chọn sử dụng tin nhắn ở chế độ văn bản

AT+CMGF=0: lựa chọn sử dụng tin nhắn ở chế độ PDU

Đáp ứng trả về là “OK” nếu như modem hỗ trợ, ngược lại, nếu modem không hỗ trợ chế độ định dạng tin nhắn là text hoặc PDU thì đáp ứng trả về sẽ là “ERROR”

- Lệnh AT+CNMI

Lệnh này dùng để thông báo có tin nhắn mới đến Với các tham số khác

nhau thì mỗi khi có tin nhắn, đáp ứng trả về cũng sẽ khác nhau

Ví dụ về các lệnh AT+CNMI khác nhau khi cùng nhận một tin nhắn SMS có nội dung giống nhau:

- Lệnh AT+CSAS

Lệnh AT+CSAS dùng để lưu các thiết lập SMS do người dùng đã cài đặt trước đó Lệnh này sẽ lưu trực tiếp các thông số đã cài đặt cho tin nhắn SMS như các lệnh AT+CMGF=1; AT+CNMI=2,2,0,0,0 và còn nhiều lệnh khác liên quan tới tin nhắn SMS đều được lưu lại bởi lệnh AT+CSAS này

Trên đây là một số lệnh AT thường dùng để GSM/GPRS modem xử lý với tin nhắn SMS Và cũng chính các lệnh cơ bản này được sử dụng trong việc viết chương trình điều khiển thiết bị có sử dụng trong đồ án này Sim900 đóng vai trò là Mobile Terminal Ngoài ra, còn rất nhiều tập lệnh AT dùng cho sim900 để phục vụ cho các quá trình khác nhau như thực hiện cuộc gọi, kết nối GPRS, cài đặt thời gian, đặt mật khẩu và còn nhiều chức năng khác phục vụ trong quá trình hoạt động của modem

Ứng dụng:

GSM Module Sim900 cho phép ta triển khai các ứng dụng giám sát/điều

khiển dựa trên tin nhắn SMS, hoặc công nghệ GPRS cho phép giám sát ngay

trên nền web

Trang 36

Hình 2.3 Ứng dụng mô hình triển khai thực tế

Hình 4: Ứng dụng của GSM MODULE SIM900

GSM Module Sim900 cho phép điều khiển các thiết bị điện trong nhà như đèn quạt, máy tính, các thiết bị sử dụng điện 220V, thiết bị công suất thấp…Đồng thời GSM Module Sim900 cũng cập nhật và giám sát các thiết bị bằng các cảm biến mà người dùng tùy chọn thông qua các mạch vi điều khiển

2 Hướng dẫn sử dụng:

GSM Module Sim900 hoạt động với mức điện áp từ 3.2V – 4.8V, yêu cầu dòng cung cấp 2A Simcom khuyên nên sử dụng mạch nguồn xung 3A dùng IC ổn áp LM2576 hoặc LM2596 Để bật/tắt GSM Module Sim900 ta kích một xung mức cao vào chân số

1 trong thời gian khoảng 1s, lúc này đèn Led status sẽ sáng, sau đó nhấp nháy với tần suất nhanh báo hiệu Sim900 đang khởi động và tìm mạng 10s sau Led status nhấp nháy chậm lại báo hiệu Sim900 đã hoạt động bình thường.Với các ngõ giao tiếp được thiết kế sao cho thuận tiện nhất cho người sử dụng, bạn có thể tự phát triển ý tưởng và làm ra một sản phẩm “hand made” hiện đại nhưng cũng rất thiết thực với cuộc sống

Để test SIM900 với máy vi tính ta cần một board giao tiếp máy tính

truyền nhận dữ liệu từ cổng UART của SIM900 với bất kì một phần mềm

Terminal nào trên máy vi tính

Để hướng dẫn test GSM Module Sim900 sử dụng mạch nguồn

LM2596 STEP DOWN và mạch giao tiếp USB to UART do AT-COM

Sau khi kết nối ta sử dụng phần mềm Terminal.exe để giao tiếp máy tính với

GSM Module Sim900

Test GSM Module Sim900:

Bước 1: Khởi động SIM900

- Sau khi khởi động SIM900 ta sẽ nhìn thấy trên màn hình như sau…

Ngày đăng: 16/09/2015, 19:11

HÌNH ẢNH LIÊN QUAN

Hình 1.1:Sơ đồ cấu trúc ATmega8 - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 1.1 Sơ đồ cấu trúc ATmega8 (Trang 9)
Hình 1.7  Sơ đồ cấu trúc bộ định thời - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 1.7 Sơ đồ cấu trúc bộ định thời (Trang 16)
Hình 1.9  Sơ đồ đơn vị so sánh ngõ ra - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 1.9 Sơ đồ đơn vị so sánh ngõ ra (Trang 17)
Hình 1.14 Sơ đồ khối bộ USART - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 1.14 Sơ đồ khối bộ USART (Trang 20)
Hình 1.15  Đơn vị tạo xung clock. - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 1.15 Đơn vị tạo xung clock (Trang 21)
Hình 1.17 Sơ đồ bộ biến đổi A/D - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 1.17 Sơ đồ bộ biến đổi A/D (Trang 23)
Hình 2.1:    Sơ đồ chức năng Sim 900 - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 2.1 Sơ đồ chức năng Sim 900 (Trang 27)
Hình 3.8 Mạch Vi điều khiển ATmega8 - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.8 Mạch Vi điều khiển ATmega8 (Trang 41)
Hình 3.9 Mạch ModulSim900 - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.9 Mạch ModulSim900 (Trang 42)
Hình 3.12 Giao diện chương trình - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.12 Giao diện chương trình (Trang 44)
Hình 3.13 Các hàm biến được định nghĩa - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.13 Các hàm biến được định nghĩa (Trang 46)
Hình 3.15 mô tả chu trình gọi hàm xử lý dữ liệu - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.15 mô tả chu trình gọi hàm xử lý dữ liệu (Trang 47)
Hình 3.17 Sơ đồ cây các hàm biến xử lý số liệu - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.17 Sơ đồ cây các hàm biến xử lý số liệu (Trang 48)
Hình 3.20 Tương tác gọi hàm xử lý giữa các khối chức năng - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.20 Tương tác gọi hàm xử lý giữa các khối chức năng (Trang 49)
Hình 3.18 Giao diện chương trình trên điện thoại khi hoạt động - Đo lường điều khiển từ xa qua mạng điện thoại di động bằng modulsim900 kết nối vi điều khiển ATmega8
Hình 3.18 Giao diện chương trình trên điện thoại khi hoạt động (Trang 50)

TRÍCH ĐOẠN

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