“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 52
Hình 4-3 Bảng dữ liệu học sinh
Chúng ta sẽ tạo ra một ứng dụng C# đơn giản để kết nối với bảng Pupils ở trên. Ứng dụng tra cứu điểm thi của học sinh: Nhập MSHS click Find, Kết quả sẽ hiện thịở texBox phía dưới như hình 4-5, 4-5
Hình 4-4 Tìm thành công Hình 4-5 Tìm không thành công
Đây là đoạn code của chương trình:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsApplication3 {
publicpartialclassForm1 : Form
{
public Form1() {
InitializeComponent(); }
privatevoid button1_Click(object sender, EventArgs e) {
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 53
string conString =@"Provider=Microsoft.JET.OLEDB.4.0;"+ @"data source=D:\DATA.mdb";
OleDbConnection conn = newOleDbConnection(conString); try
{
// create an open the connection
conn.Open();
// create the adapter and fill the DataSet
OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT MSHS, Name, Toan, Ly, Hoa FROM Pupils where MSHS = \'" + textBox1.Text + "\'", conn); dataSet1.Clear();
int numberOfRowsFeched = adapter1.Fill(dataSet1, "Pupils"); if (numberOfRowsFeched > 0)
{
DataTable dt = dataSet1.Tables["Pupils"];
textBox2.Text = "MSSV:" + " " +dt.Rows[0][0] + ", " + dt.Rows[0][1]+ ": Toan: " +dt.Rows[0][2].ToString() + ", Ly: " +
dt.Rows[0][3].ToString() + ", Hoa: " + dt.Rows[0][4].ToString(); }
else
{
textBox2.Text = "ID not found."; }
}
catch (Exception E) {
MessageBox.Show("Error occured: " + E.Message); } finally { conn.Close(); } } } }
Xem thêm tài liệu SQLlab.pdf trong thư mục Tài liệu tham khảo
4.3.3Truyền nhận dữ liệu qua cổng com (RS232) Bố trí chân của cổng COM
Hình 4-6 Cổng COM
Các thông số cổng COM cần lưu ý:
Thông số của cổng COM cần quan tâm là: - Địa chỉ cổng (Port Name).
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 54
- Tốc độ baud (baudrate),
- Số bít trong một khung dữ liệu (data bits), - Số bit dừng giữa các khung dữ liệu (stop bit), - Bít kiểm tra chẵn lẻ (parity bit).
Thông thường (defaut) cài đặt : Port Name= COM1 (địa chỉ mã Hexa: 3f8),baudrate = 9600, data bits = 8, stop bit = 1, parity = none.
Cơ chế bắt tay cứng (Handshaking): Có 4 loại: - None,
- XON/XOFF, - CTS/RTS,
- CTS/RTS XON/XOFF
Phụ thuộc vào từng cơ chế bắt tay mà có cách nối dây khác nhau.
Nối dây cho cơ chế NONE và XON/XOFF:
Hình 4-7 Nối dây cho cơ chế NONE và XON/XOFF
Nối dây cho cơ chế CTS/RTS, CTS/RTS XON/XOFF:
Hình 4-8 Nối dây cho cơ chế CTS/RTS, CTS/RTS XON/XOFF
Thông thường người ta sử dụng cơ chế handshaking: None, vì vậy chỉ cần 3 dây nối như hình 2.
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 55
Tạo 1 Windows Application trong Visual C#:
Hình 4-9Form truyền nhận dữ liệu
Trong ToolBox chọn Điều khiển SerialPort kéo vào cửa sổ Form1→ Xuất hiện đối tượng SerialPort1 ởphía dưới. (Xem hình 4)
Và những thuộc tính của điều khiển serialPort1 ởgóc dưới bên trái: Ởđây ta có thể cài đặt các thông số của cổng COM. Để các tham sốở trang thái default: Baudrate=9600, databits=8, handshake=none, stopbit = one, parity = none. Portname =COM1
Trong Visual Studio 2005 đã xây dựng lớp đối tượng SerialPort với đầy đủ các hàm hỗ trợcho phép người dùng có thểtác động đến cổng COM một các dễ dàng.
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 56
Hình 4-10Sử dụngSerial Port để sử dụng cho truyền dữ liệu qua cổng COM
Một sốhàm cơ bản trong SerialPort thường dùng:
- SerialPort.IsOpen(): Trả lại trang thái của cổng là đang đóng hay mở. - SerialPort.Open(): Mở cổng với thông sốđã cài đặt.
- SerialPort.Close(): Đóng cổng.
- SerialPort.WriteLine(String data): Truyền một string xuống bộ đệm cổng để truyền đi.
- SerialPort.ReadExisting (): Đọc một string từ bộđệm cổng . - SerialPort.ReadChar(): Đọc một giá trị kiểu char từ bộđệm cổng. - SerialPort.ReadByte(): Đọc một giá trị kiểu Byte từ bộđệm cổng.
Quá trình truyền:
Quá trình truyền thì đơn gian, vì khi nào người dùng click nút truyền thì dữ liệu mới được truyền đi
Quá trình nhận dữ liệu:
Quá trình nhận dữ liệu là rắc rối hơn một chút, vì dữ liệu đến lúc nào là chưa biết.Có hai cách để thực hiện quá trình quá trình truyền:
- Cách một: Thường xuyên kiểm tra cổng xem dữ liệu có được truyền đến không. - Cách hai: Phải bắt được sự kiện dữ liệu đến, khi dữ liệu đến ta gọi hàm sử lý. Với cách 1 ta sử dụng một Timer ngắt thời gian, cứ sau một thời gian nhất định (mà ta cài đặt Timer)hàm kiểm tra và sử lý sẽđược gọi.
Với cách 2 ta sử dụng sự kiện SerialDataReceivedEvent. Khi có sự kiện này ta sẽ đọc và xử lý dữ liệu.
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 57 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace COM_tranceiver {
publicpartialclassForm1 : Form
{
privatedelegatevoidSetTextCallback(string text);
public Form1()
{
InitializeComponent();
serialPort1.DataReceived+=newSerialDataReceivedEventHandler(serialPort1_DataRec eived);
}
bool Open = true;
privatevoid Button_Trans_Click(object sender, EventArgs e)
{ if(serialPort1.IsOpen) { serialPort1.WriteTimeout = 500; serialPort1.DtrEnable = true; serialPort1.RtsEnable = true; serialPort1.DiscardOutBuffer(); serialPort1.DiscardInBuffer(); serialPort1.WriteLine(Tbox_Trans.Text); } else {
MessageBox.Show("Cong chua mo! Hay mo cong","Chu y"); }
}
privatevoid Button_Open_Click(object sender, EventArgs e)
{
if (Open) {
Open = false;
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 58 serialPort1.Open(); } else { Open = true; Button_Open.Text = "Open"; serialPort1.Close(); } }
privatevoid serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//string data = "";// Luu du lieu nhan
if (sender == serialPort1) { string data=""; data = serialPort1.ReadChar().ToString(); SetText(Tbox_Recei.Text + data); } }
privatevoid Form1_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Ban muon thoat khoi chuong trinh","Chu y"); serialPort1.Close();
}
privatevoid SetText(string text) {
// InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true.
if (this.Tbox_Recei.InvokeRequired) {
SetTextCallback d = newSetTextCallback(SetText);
this.Invoke(d, newobject[] { text }); }
else
{
this.Tbox_Recei.Text = text; }
} } }
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 59 4.3.4 Làm việc với chuỗi
Bài toán: lấy 2 ký tự trong 1 chuỗi cho trước rồi so sánh với 1 chuỗi khác
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { classProgram {
staticvoid Main(string[] args) {
string S1 = "DK";
string S2 = "DT";
string S3 = "DK00";
// lay 2 ky tu dau cua du lieu
string S4=S3.Substring(0,2); // so sanh S4 voi S1 int kq; kq = string.Compare(S4,S1); if (kq==0) {
Console.WriteLine("dieu khien thiet bi"); }
// so sanh S4 voi S1
kq = string.Compare(S4,S2);
if (kq==0) {
Console.WriteLine("tra cuu diem"); }
}
4.3.5 Cơ sở dữ liệu
Cơ sở dữ liệu: gồm bảng Pupils và bảng Teachers:
- Bảng Pupils: dữ liệu các học sinh bao gồm các cột: MSHS, Name, Class, Mobile, Toan, Ly, Hoa
- Bảng Teachers: dữ liệu giáo viên gồm các cột: MSGV, Name, HocVi, Mobile, Email, ChuyenMon
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 60
Hình 4-11 Bảng dữ liệu sách học sinh
Hình 4-12 Bảng dữ liêu giáo viên
4.3.6 Cấu hình Modem GSM
Kết nốiGSM Modem với PC
Mởchương trình Hyper Teminal, gõ các lệnh sau:
SỐ TT LỆNH CHÚ GIẢI
1 AT<CR>
2 AT+CPIN? <CR> Kiểm tra Sim có hoạt động
3 AT+CMGF=0<CR> Thiết lập chếđộ PDU
4 AT+CNMI=2,1,0,0,0<CR> Thiết lập khi có tin nhắn mới
5 AT+IPR=9600<CR> Tốc độ bound = 9600bps
6 AT+ICF=3,4<CR> 8 data, 1 stop, parity: none
7 AT+IFC=2,2<CR> Local Flow Control Lưu ý:
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 61
- Khi gõ mà không thấy chữ trên Cửa sổ Hyper Teminal mà vẫn thấy GSM Modem phản hồi, ta gõ lệnh ATE1<CR>
- Xem thêm chú giải cho các lệnh trong “AT Commands Interface Guide”
4.4 GIAO DIỆN CHƯƠNG TRÌNH
4.4.1 Cài đặt kết nối
Chọn COM-Port, Baud rate, Timeout
Hình 4-13 Cài đặt kết nối
4.4.2 Giao diện chương trình chính
Khi kết nối thành công thì có chữ CONNECTED ở cuối màn hình, nếu không thành công thì xuất hiện NO PHONE CONNECTION
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 62 4.4.3 Khi có tin nhắn tới
Màn hình sẽ xuất hiện nội dung tin nhắn đến từ số nào và sau khoảng 5s sẽ xuất hiện “1 Message sent to +84xxxxxxxxx” báo đã gửi tin nhắn trả lời
Hình 4-15 Khi có tin nhắn đến
Khi có tin nhắn đến, chương trình sẽ xử lý tin nhắn và gửi tin nhắn trả lời
4.4.4 Trong Tab Message gồm 4 menu: Send, Send Multiple, Read, Delete
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 63 4.4.5 Menu Send
Chức năng gửi tin nhắn: Destination Number : Nhập sốđiện thoại cần gửi; Message: Nhập nội dung tin nhắn
Hình 4-17 Form Send Message
4.4.6 Menu Send Multiple
Chức năng: gửi thông báo cho phụ huynh học sinh hay giáo viên
Chọn nhóm cần gửi trong group Send To, nhập nội dung tin nhắn vào textbox Message, sau đó click Send để gửi
Hình 4-18 Form Send Multiple Message
4.4.7 Menu Read Message
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 64
Hình 4-19 Form Read Message
4.4.8 Menu Delete
Chức năng xoá 1 hay tất cả tin nhắn
Hình 4-20 Form Delete Message
4.5 TESTING
-Kết nối Modem với Máy vi tính qua cổng COM -Cấp nguồn cho GSM Modem
-Cấu hình cho GSM Modem như phần 4.3.6 -Mởchương trình, giao diện chương trình như sau:
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 65
Hình 4-21 Giao diện chương trình chính
-Soạn tin nhắn theo cú pháp gửi đến Modem ví dụ: DT A103
Hình 4-22 Soạn tin tra cứu điểm thi -Chương trình xử lý tin nhắn và gửi tin trả lời
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 66
Hình 4-23 Chương trình đã nhận tin và trả lời
-Điện thoại nhận tin trả lời có nội dung: MSHS: A103, Do Minh Thai: Toan: 9, Ly: 9, Hoa: 9
Hình 4-24 Nội dung tin trả lời -Nếu soạn tin để tra cứu thông tin giáo viên soạn:
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 67
Hình 4-25 Tin nhắn tra cứu thông tin giáo viên
-Điện thoại nhận tin trả lời có nội dung:
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 68
CHƯƠNG 5. THIẾT KẾ, THI CÔNG MẠCH ĐIỀU
KHIỂN THIẾT BỊ ĐIỆN QUA TIN NHẮN
Thiết kế mạch kết nối với GSM Modem: nhận tin nhắn, xử lý tin nhắn, điều khiển thiết bịđiện (đèn và quạt) tắt hoặc mở hoặc kiểm tra trạng thái hoạt động của thiết bị theo nội dung tin nhắn và gửi tin trả lời.
Mục đích:
- Điều khiển tắt/ mởĐèn (qua SMS) - Điều khiển tắt/ mở Quạt (qua SMS)
- Kiểm tra trạng thái của Đèn, Quạt (qua SMS)
- Gửi tin nhắn trả lời báo kết quả (sai cú pháp; sai mật khẩu; báo trạng thái của đèn, quạt)
Ngôn ngữchương trình: ASSEMBLY
5.1 SƠ ĐỒ KHỐI
Nguyên lý hoạt động:
GSM Modem nhận tin nhắn, truyền cho VĐK, VĐK xử lý và đem hiển thị trên khối hiển thị, đồng thời cũng xửlý điều khiển Relay, sau đó VĐK điều khiển GSM Modem gửi tin nhắn trả lời thông qua tập lệnh AT
5.2 THIẾT KẾ MẠCH 5.2.1 Khối GSM Modem Hình 5-2 GSM Modem HIỂN THỊ GSM MODEM VĐK 89S52 RELAY Hình 5-1 Sơ đồ khối hệ thống
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 69
Hình 5-3 Cáp RS232
a) Gửi các lệnh AT tới modem GSM bằng MS HyperTerminal
Để sử dụng MS HyperTerminal cho việc gửi các lệnh AT đến điện thoại di động hay modem GSM/GPRS, bạn cần phải thực hiện theo những bước như sau:
Cho một thẻ SIM vẫn còn hoạt động vào vào trong khe cắm SIM của modem GSM.
Kết nối modem GSM tới máy tính qua cổng COM. Nếu sử dụng cổng USB thì phải cài đặt driver của modem GSM tương ứng cho nó. Bạn sẽ tìn thấy driver của modem wireless trong đĩa CD mà nhà sản xuất cung cấp cho bạn. Và nếu như nhà sản xuất không cung cấp driver cho điện thoại hay modem GSM/GPRS thì bạn có thể vào trang web của nhà sản xuấtđể download nó về rồi cài vào
Chạy MS HyperTerminal bằng cách chọn Start ->Programs ->Accessories - >Communications ->HyperTerminal
Trong hộp thoại Connection Description, hãy gõ tên và chọn một biểu tượng icon mà bạn thích dùng cho kết nối này. Sau đó thì nhấn nút OK
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 70
Trong hộp thoại Connect to, chọn COM port mà điện thoại di động hay modem GSM/GPRS đang kết nối tới tại khay Connect using. Thí dụ, bạn có thể chọn COM khi điện thoại di động hay modem đang được kết nối với port COM1. Sau đó thì nhấn nút OK.
Hình 5-5 Hộp thoại Connect to
Hộp thoại Properties xuất hiện. Chọn các thiết lập port chính xác cho modem GSM/GPRS. Sau đó click vào nút OK
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 71
(để tìm ra các thiết lập chính xác phù hợp modem GSM/GPRS thì có một cách đó là tra sổ hướng dẫn cầm tay của modem GSM/GPRS. Và một cách khác là kiểm tra các thiết lập port được sử dụng cho driver của modem wireless mà bạn cài đặt trước đó ).
Gõ “AT” ở trong cửa sổ màn hình window chính. Một phản hồi “OK” sẽ được trả lời từ điện thoại diđộng hay modem GSM/GPRS
Gõ “AT+CPIN?” trong cửa sổ màn hình window chính. Lệnh AT “AT+CPIN” được sử dụng để chất vần liệu điện thoại di động hay modem GSM/GPRS đang đợi một PIN có đúng không (personal identification number _số nhận dạng cá nhân, ví dụ như password). Nếu thấy có phan3hoi62 là “+CPIN:READY”thì nó có nghĩa là thẻ SIM không yêu cầu có một PIN và nó đã sẵn sàng cho sử dụng. Còn nếu như thẻ SIM của bạn yêu cầu có một PIN thì bạn cần đặt PIN thông qua lệnh AT “AT+CPIN+<PIN>”.
Hình 5-7 Cửa sổ làm việc
Nếu như bạn nhận được phản hồi như cửa sổ màn hình trên thì điện thoại di động hay modem GSM/GPRS đang hoạt động đúng. Và tới đây bạn có thể gõ cá lệnh AT theo ý riêng của bạn đểđiều khiển điện thoại di động hay modem GSM/GPRS.
b) Cấu hình cho Modem:
Kết nối Modem GSM với PC
Mởchương trình Hyper Teminal, gõ các lệnh sau:
SỐ TT LỆNH CHÚ GIẢI
1 AT<CR>
2 AT+CPIN? <CR> Kiểm tra Sim có hoạt động 3 AT+CMGF=1<CR> Thiết lập chếđộ TEXT 4 AT+CNMI=0,1,0,0,0<CR> Thiết lập khi có tin nhắn mới
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 72
5 AT+IPR=9600<CR> Tốc độ bound = 9600bps 6 AT+ICF=3,4<CR> 8 data, 1 stop, parity: none 7 AT+IFC=2,2<CR> Local Flow Control
8 AT+CSAS<CR> Lưu cấu hình
Lưu ý:
- <CR>: Carriage Return = Enter
- Khi gõ mà không thấy chữ trên Cửa sổ Hyper Teminal mà vẫn thấy GSM Modem phản hồi, ta gõ lệnh ATE1<CR>
- Xem thêm chú giải cho các lệnh trong “AT Commands Interface Guide”
c) Mạch giao tiếp giữa GSM modem và vi điều khiển
Sơ đồ nguyên lý:
Hình 5-8 Sơ đồ mạch nguyên lý mạch vi điều khiển
Giao tiếp giữa GSM Modem với VĐK qua cổng COM của GSM Modem sử dụng IC MAX232 để chuyển từRS232 sang TTL và ngược lại.
5.2.2 Khối hiển thị
“Tra cứu thông tin và Điều khiển thiết bịđiện qua tin nhắn” T r a n g | 73
Hình 5-9 Khối hiển thị -Các chân VDD và VSS được nối với nguồn và GND.
-Chân VEE được nối tới biến trởđể chỉnh độtương phản của LCD.
-Các chân RS, RW\ và E được kết nối tới VĐK đểđiều khiển đọc / ghi LCD. -Các chân D0 – D7 nối tới port của VĐK
5.2.3 Khối Relay
Relay sẽđóng hay ngắt là do VĐK điều khiển dựa vào kết quả xử lý.
Hình 5-10 Sơ đồ nguyên lý khối Relay
Tín hiệu điều khiển từVĐK sẽđược đưa qua cổng EX-OR đểđóng ngắt Transistor. Transistor dẫn thì Relay đóng, đồng thời Led báo hiệu cũng sáng báo hiệu Relay đóng. Ngoài ra còn có công tắc điều khiển đóng ngắt Relay.
5.3 LƯU ĐỒCHƯƠNG TRÌNH
Qúa trình truyền nhận dữ liệu giữa Modem GSM và Vi điều khiển