Title: a system and activated sim TÓM TẮT Hệ thống tự động ngày càng trở nên quan trọng trong cuộc sống con người hiện đại.Việc nghiên cứu các hệ thống tự động cũng trở nên phổ biến và
Trang 1TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
Sinh viên thực hiện:
NGUYỄN THỊ BẢO TRÂN
Trang 2HỆ THỐNG KÍCH HOẠT SIM VÀ CARD
ABSTRACT
System automatic day as return and will be important in cuoc song con people Current max Failed to nghien cuu the system automatic are also return and will be popular and Multiline as higher than Following
is one of a system automatic: enabled sim Because our goal is to help save time, effort and money, while ensuring we can use the sim best way At the same time other purposes and for human applications can
be expanded scale To implement this system we use sim908 mudule Type mudule sim integrated GPRS and GPS
Keywords: automated system, activated sim
Title: a system and activated sim
TÓM TẮT
Hệ thống tự động ngày càng trở nên quan trọng trong cuộc sống con người hiện đại.Việc nghiên cứu các hệ thống tự động cũng trở nên phổ biến và đa dạng hơn Dưới đây là một hệ thống tự động:kích hoạt sim
Vì mục đích giúp ta tiết kiệm được thời gian, công sức và tiền bạc nhưng vẫn đảm bảo ta có thể sử dụng được sim 1 cách tôt nhất Đồng thời nhằm mục đích khác và ứng dụng cho con người ta có thể mở rộng qui mô lớn Để thực hiện hệ thống này ta sử dụng mudule sim908 Loại mudule sim được tích hợp GPRS và GPS
Từ khóa: Hệ thống tự động,kích hoạt sim
Trang 32 PHƯƠNG TIỆN VÀ PHƯƠNG PHÁP NGHIÊN CỨU
2.1 Phương tiện
Để hoàn thành đồ án này chúng ta phải sử dụng msp430 có tích hợp UART, mudule sim800L, phần mền Proteus nhằm mô phỏng kết quả, phần mền IAR Embedded Wordbech,phần mền hercules
+ USCI_Ax thì hỗ trợ các chế độ giao tiếp: UART, IrDA, SPI
Đặc điểm của UART:
-7 hoặc 8 bit data với bit kiểm tra chẵn lẽ hoặc không
- Có thanh ghi dịch, thanh ghi đệm truyền và nhận độc lập
- Bắt đầu truyền và nhận dữ liệu từ bit LSB hoặc MSB
- Có khả năng phát hiện cạnh bắt đầu được truyền đến và tự động được đánh thức từ chế độ tiết kiệm nguồn
- Tốc độ baud có thể lập trình, có sự điều chỉnh và bổ sung để nâng cao độ chính xác
- Có cờ trạng thái dùng cho phát hiện và ngăn chặn lỗi
Trang 4-Khi UCOS16=0, dùng cho thiết lập tốc độ baud ở nguồn tần số thấp
Tốc độ baud tối đa bằng 1/3 lần tần số của nguồn xung clock
+ UCA0BRx = INT(N)
+ UCBRSx = round (( N − INT(N)) × 8 )
Với N:
-Khi UCOS16=1, dùng cho thiết lập tốc độ baud ở nguồn tần số
cao Tốc độ baud tối đa bằng 1/16 lần tần số của nguồn xung clock
+ UCBRx = INT(N/16)
+ UCBRFx = round (((N/16) − INT (N/16)) × 16
2.2.2 Khối Sim 800L
Mạch GSM GPRS SIM800L Mini giao tiếp với Vi điều kiển qua giao tiếp
UART (lưu ý với Vi điều khiển sử dụng 5VDC cần mắc thêm mạch chuyển
mức Logic hoặc trở phân áp sang 3.3VDC để tránh làm cháy mạch), thích
hợp với các ứng dụng gọi điện nhắn tin SMS GSM, GPSR
Thông số kỹ thuật:
Nguồn cấp: 4.2VDC , có thể sử dụng với nguồn dòng thấp từ
500mAh trở lên (như cổng USB, nguồn từ Board Arduino) Nhưng khuyên
các bạn nên dùng nguồn có dòng và áp đủ 4.2V-1A để đảm bảo mạch
Trang 5Chức năng các chân:
VCC: Nguồn vào 4.2V.
TXD: Chân truyền Uart TX
RXD: Chân nhận Uart RX
DTR : Chân UART DTR, thường không xài
SPKP, SPKN: ngõ ra âm thanh, nối với loa để phát âm thanh (8
Ohm-0.87W)
MICP, MICN: ngõ vao âm thanh, phải gắn thêm Micro để thu âm
thanh
Reset: Chân khởi động lại Sim800L (thường không xài)
RING : báo có cuộc gọi đến
GND: Chân Mass, cấp 0V
2.2.3 Khối Phím Điều Khiển
Các chân thường trực mức
cao, khi nhấn nút các chân sẽ trở
về mức thấp, tùy vào cách nối
chân vào msp430 mà chân có
nhiệm vụ thực hiện lệnh gọi hay
nhắn tin
2.2.4 Khối hiển thị LCD
Khối hiển thị LCD 16x2
- LCD 16x2 là một loại màn hình tinh thể lỏng hiển thị 16 kí tự và
có hai dòng hiển thị, mổi kí tự tạo nên từ ma trận điểm 5x7 hoặc 5x10
- Có thể giao tiếp ở chế độ 4bit hoặc 8 bit, tốc độ giao tiếp BUS 2MHz
Trang 6-Sơ đồ chân của LCD:
Chân 1 - Vss điện thế 0V ;
Chân 2 - Vcc điện thế +5V;
Chân 3 - Vee chỉnh độ tương phản;
Chân 4 - RS, RS = 0 thanh ghi lệnh, RS = 1 thanh ghi dữ liệu;
Chân 5 - R/W, R/W = 0 ghi dữ liệu, R/W = 1 dọc dữ liệu
Chân 6 - E chân cho phép thực thi lệnh;
Chân 7 - DB0 đến 14-DB7 chân dữ liệu
Chân 15 - A chân Anot của đèn nền LCD;
Chân 16 - K chân Katot của đèn nền LCD
- Nguyên tắc hoạt động: các chân 1,2,3 là các chân VSS , VDD, VEE
trong đó VSS chân nối đất , VEE chân chọn độ tương phản chân này
được chọn qua 1 biến trở 10K một đầu nối VCC , một đầu nối mass
Chân VDD nối dương nguồn Chân chọn thanh ghi RS (Register
Select): Có hai thanh ghi trong LCD, chân RS(Register Select) được
dùng để chọn thanh ghi, như sau: Nếu RS = 0 ở chế độ ghi lệnh như xóa
màn hình, bật tắt con trỏ…
Nếu RS=1 ở chế độ ghi dữ liệu như hiển thị ký tự, chữ số lên màn hình
Chân đọc/ ghi (R/W): Đầu vào đọc/ghi cho phép người dùng ghi thông
tin lên LCD khi R/W=1
- Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD
để chốt dữ liệu của nó Khi dữ liệu được đến chân dữ liệu thì cần có 1
xung từ mức cao xuống mức thấp ở chân này để LCD chốt dữ liệu ,
xung này phải có độ 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 trong LCD Để hiển thị
Trang 7cá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 và các con số tương ứng đến các chân này khi bật RS =1;
2.2.5 Cảm biến độ ẩm đất Soil Moisture Sensor
Cảm biến độ ẩm đất Soil Moisture Sensor thường được sử dụng trong các
mô hình tưới nước tự động, vườn thông minh, , cảm biến giúp xác định độ
ẩm của đất qua đầu dò và trả về giá trị Analog, Digital qua 2 chân tương
ứng để giao tiếp với Vi điều khiển để thực hiện vô số các ứng dụng khác
nhau
Thông số kỹ thuật:
Điện áp hoạt động: 3.3~5VDC
Tín hiệu đầu ra:
o Analog: theo điện áp cấp nguồn tương ứng
o Digital: High hoặc Low, có thể điều chỉnh độ ẩm mong muốn bằng biến trở thông qua mạch so sánh LM393 tích hợp
Kích thước: 3 x 1.6cm
Sơ đồ chân:
VCC 3 3V ~ 5V
GND GND của nguồn ngoài
DO Đầu ra tín hiệu số (mức cao hoặc mức thấp)
AO Đầu ra tín hiệu tương tự (Analog)
CODE CẢNH BÁO ĐỘ ẨM ĐẤT QUA SMS
unsigned long am0;//bien lay gia tri adc10mem
float am1;//gia tri thuc
int doam;//gia tri nguyen
unsigned int getadcvalue(void);//ham lay gia tri bien doi adc
int doamset = 60;
Trang 8unsigned int i,j,a,b,c,d,e,k,h,l;
Trang 10P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
Trang 11P1IE |= 0x18; // P1.31 & P1.4 interrupt enabled
P1IES |= 0x18; // P1.3 & P1.4 Hi/lo edge
P1IFG &= ~0x18; // P1.3 & P1.4 IFG cleared
P2DIR |= BIT1 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7 ;//ngo ra dieu khien lcd P2SEL &= ~(BIT6 | BIT7); // su dung chuc nang tich hop
P2SEL2 &= ~(BIT6 | BIT7); // chon bit P2.6 và P2.7 là ngõ ra,
P2OUT &= ~(BIT6 | BIT7); //bo chuc nang mac dinh là ngõ vào dao dong
//P1OUT &= ~BIT5;
Trang 12lcd_puts("%");
lcd_gotoxy(9,0); lcd_puts("%");
//lcd_gotoxy(13,1); lcd_puts("%");
P1DIR |= BIT5; //ngo ra bat den
P1OUT &=~ BIT5;
_BIS_SR(GIE);//cho phep ngat toan cuc
// adc Cam bien do am dat
// ADC10CTL0 &=~ ENC; //xoa bit ENC de thay doi cau hinh
ADC10CTL0 =REFON + ADC10SHT_2 + ADC10ON; // dien the tham chieu avcc=3.3V, toc do lay mau va
giu mau la 16*adcclock, bat adc10
Trang 13am0 = getadcvalue();
am1 = (float)(100-((am0-370)/6.3));
///hien thi lcd
doam = (int)am1/1;/////nt////
if(doam <0) doam=0;
else if(doam >99) doam=99;
#pragma vector = PORT1_VECTOR
interrupt void Port_1(void)
{if (P1IFG & BIT3)
Trang 14P1IFG &= ~BIT3;}//xoa co ngat de cho phep ngat lai
if(P1IFG & BIT4)
{if(doamset<94)
{doamset ;
lcd_gotoxy(8,1); lcd_2n(doamset);
lcd_gotoxy(11,1); lcd_2n(doamset+5);
lcd_gotoxy(13,1); lcd_puts("% ");}
P1IFG &= ~BIT4;}
Trang 15union reg* P2_DIR=(union reg*)0x2a; //khai bao dia chi o nho
union reg* P2_OUT=(union reg*)0x29;
union reg* P2_SEL=(union reg*)0x2e;
union reg* P2_IN=(union reg*)0x28;
Trang 16union reg* P1_SEL=(union reg*)0x26;
union reg* P1_DIR=(union reg*)0x22; //khai bao dia chi o nho
union reg* P1_OUT=(union reg*)0x21;
union reg* P1_IN=(union reg*)0x20;
/* Display ON/OFF Control definitions */
#define DON 0x0F /* Display on */
#define DOFF 0x0B /* Display off */
#define CURSOR_ON 0x0F /* Cursor on */
#define CURSOR_OFF 0x0D /* Cursor off */
#define BLINK_ON 0x0F /* Cursor Blink */
#define BLINK_OFF 0x0E /* Cursor No Blink */
/* Cursor or Display Shift definitions */
#define SHIFT_CUR_LEFT 0x04 /* Cursor shifts to the left */
#define SHIFT_CUR_RIGHT 0x05 /* Cursor shifts to the right */
#define SHIFT_DISP_LEFT 0x06 /* Display shifts to the left */
Trang 17#define SHIFT_DISP_RIGHT 0x07 /* Display shifts to the right */
/* Function Set definitions */
#define FOUR_BIT 0x2C /* 4-bit Interface */
#define EIGHT_BIT 0x3C /* 8-bit Interface */
#define LINE_5X7 0x30 /* 5x7 characters, single line */
#define LINE_5X10 0x34 /* 5x10 characters */
#define LINES_5X7 0x38 /* 5x7 characters, multiple line */
//=========================================================
=====
#define LCD_RS P2_OUT -> _BIT.b1
#define LCD_RS_DIR P2_DIR -> _BIT.b1
#define LCD_EN P2_OUT -> _BIT.b3
#define LCD_EN_DIR P2_DIR -> _BIT.b3
#define LCD_DATA_4 P2_OUT -> _BIT.b4
#define LCD_DATA_4_DIR P2_DIR -> _BIT.b4
#define LCD_DATA_5 P2_OUT -> _BIT.b5
#define LCD_DATA_5_DIR P2_DIR -> _BIT.b5
#define LCD_DATA_6 P2_OUT -> _BIT.b6
#define LCD_DATA_6_DIR P2_DIR -> _BIT.b6
#define LCD_DATA_7 P2_OUT -> _BIT.b7
#define LCD_DATA_7_DIR P2_DIR-> _BIT.b7
/****************************************************************************
* MODULE PRIVATE FUNCTIONS:
Trang 18* void lcd_delay_us (unsigned long t);
* void lcd_delay_ms (unsigned long t);
* void lcd_put_byte(unsigned char rs, unsigned char data);
*
******************************************************************************/
//=========================================================
=====================
//CHUONG TRINH DELAY:
void delay_ms(unsigned int ms){
Trang 19for (i = 0; i<t; i++ )
Trang 21* void lcd_gotoxy(unsigned char col, unsigned char row)
* void lcd_putc(char c)
* void lcd_puts(const char* s)
* void lcd_clr_puts (const char* s1 , const char* s2)
* void lcd_put_num (unsigned long val, char dec, unsigned char neg)
Trang 22lcd_delay_ms(500);
lcd_put_byte(0,0x30);
lcd_delay_ms(500);
lcd_put_byte(0,0x32);
lcd_delay_ms(500); // delay for LCD reset
lcd_delay_ms(2); // wait for LCD
lcd_put_byte(0,FOUR_BIT & LINES_5X7); // Set LCD type
lcd_delay_ms(2); // wait for LCD
lcd_put_byte(0,DOFF&CURSOR_OFF&BLINK_OFF); // display off
lcd_delay_ms(2); // wait for LCD
lcd_put_byte(0,DON&CURSOR_OFF&BLINK_OFF); // display
on
lcd_delay_ms(2); // wait for LCD
lcd_put_byte(0,0x01); // clear display and move cursor to home
lcd_delay_ms(2); // wait for LCD
lcd_put_byte(0,SHIFT_CUR_LEFT); // cursor shift mode
lcd_delay_ms(2); // wait for LCD
lcd_put_byte(0,0x01); // clear display and move cursor to home
lcd_delay_ms(2); // wait for LCD
}
//*****************************************************************************
// Clear the LCD
Trang 23//*****************************************************************************
void lcd_clear(void)
{
lcd_put_byte(0,0x01); // display off
lcd_delay_ms(2); // wait for LCD
}
//*****************************************************************************
// Move the pointer of LCD to coordinate (column, row)
// Note that cursor is at (0,0) after reset of clear LCD
Trang 24// Put a writable character on LCD
// If the character is '\f', clear the LCD
// If the character is '\n', move cursor to the second line
Trang 25// Put a constant or a number stored in 'val' on LCD
// The number must be multiplied and convert in type "unsigned long"
// or "unsigned int"
// dec: amount of digits after '.'
// neg: sign of the number, neg = 0 if the number is positive
//
// Example 1: lcd_put_num(val, 3, 0); // val = 12345
Trang 26// will put "12.345" on the LCD
// Example 2: lcd_put_num(val, 6, 1); // val = 12345
// will put "-0.012345" on the LCD
Trang 29Khó khăn: Do lịch thi qúa nhiều nên gần báo cáo mới có thể thực hiện
đồ án, lần đầu tiếp xúc msp430 và modulesim nên có một số khó khăn nhất định
3 ĐỀ NGHỊ
Qua quá trình làm mạch và chạy thử nhận ra rằng ứng dụng mudule sim800l vào cuộc sống hiện nay là khá lớn,đề tài có thể mở rộng lên,thực hiện thêm nhiều chứa năng, khai thác tối đa chức năng mudule sim800l và msp430
TÀI LIỆU THAM KHẢO
[1] Giáo trình Kỹ Thuật Vi Điều Khiển MSP430FG4618 của thầy Trần Hữu danh