Dieu khien va giam sat thiet bi voi cong nghe GPRS thong qua mang internet

88 5 0
Dieu khien va giam sat thiet bi voi cong nghe GPRS thong qua mang internet

Đ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

ĐẠI HỌC QU TRƯỜ KHOA ĐI LUẬN VĂN T ĐIỀU KHIỂ VỚI CÔNG NGH THÔNG QUA M TP HỒ CHÍ MINH, THÁNG C QUỐC GIA TP HỒ CHÍ MINH ỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ o0o N VĂN TỐT NGHIỆP ĐẠI.

ĐẠI HỌC C QUỐC QU GIA TP.HỒ CHÍ MINH TRƯỜ ỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐI ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ -o0o - LUẬN N VĂN T TỐT NGHIỆP ĐẠI HỌC ĐIỀU KHIỂ ỂN VÀ GIÁM SÁT THIẾT T BỊ VỚII CÔNG NGHỆ NGH GPRS THÔNG QUA M MẠNG INTERNET GVHD: Th.S TRẦN N HOÀNG QUÂN SVTH: LƯU TRỌNG NG NHÂN MSSV: 40901805 TP HỒ CHÍ MINH, THÁNG NĂM 2014 ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập – Tự – Hạnh phúc -✩ Số: /BKĐT Khoa: Điện – Điện tử Bộ Môn: Điện Tử -✩ - NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP HỌ VÀ TÊN: LƯU TRỌNG NHÂN MSSV: 40901805 NGÀNH: ĐIỆN TỬ - VIỄN THÔNG LỚP : DD09DV6 Đề tài: Điều khiển giám sát thiết bị với công nghệ GPRS qua mạng Internet Nhiệm vụ (Yêu cầu nội dung số liệu ban đầu): Thiết kế thệ thống điều khiển giám sát thiết bị với công nghệ GPRS qua mạng Internet gồm nội dung: - Điều khiển thiết bị relay từ trang web hiển thị trạng thái thiết bị trang web - Đọc giá trị cảm biến chuyển động hiển thị trang web, ghi lại thời gian phát chuyển động - Trang web truy cập thông qua module SIM900A thiết lập để kết nối GPRS Ngày giao nhiệm vụ luận văn: 02/2014 Ngày hoàn thành nhiệm vụ: 06/06/2014 Họ tên người hướng dẫn: Phần hướng dẫn Th.S TRẦN HOÀNG QUÂN Nội dung yêu cầu LVTN thông qua Bộ Môn Tp.HCM, ngày… tháng… năm 20 CHỦ NHIỆM BỘ MÔN PHẦN DÀNH CHO KHOA, BỘ MÔN: Người duyệt (chấm sơ bộ): Đơn vị: Ngày bảo vệ : Điểm tổng kết: Nơi lưu trữ luận văn: NGƯỜI HƯỚNG DẪN CHÍNH Lời cảm ơn GVHD: Th.S Trần Hoàng Quân LỜI CẢM ƠN Đầu tiên, em xin chân thành cảm ơn thầy Trần Hoàng Quân, người giúp đỡ, hướng dẫn em tận tình suốt q trình thực Đồ án mơn học 2, Thực tập tốt nghiệp trình thực Luận văn tốt nghiệp Để đạt đến ngày hôm nay, nhắc đến dạy bảo, hướng dẫn tận tình thầy, Trường Đại học Bách khoa TP HCM, đặc biệt thầy cô khoa Điện – Điện tử giúp em có kiến thức để thực Luận văn tốt nghiệp Cuối cùng, em xin cảm ơn tất bạn bè, người bên cạnh động viên, giúp đỡ em suốt trình học tập trường thời gian thực Luận văn tốt nghiệp Tp Hồ Chí Minh, ngày 06 tháng 06 năm 2014 Lưu Trọng Nhân i Luận văn tốt nghiệp GVHD: Th.S Trần Hồng Qn TĨM TẮT LUẬN VĂN Luận văn trình bày hệ thống điều khiển giám sát từ xa qua mạng Internet ứng dụng công nghệ GPRS Hệ thống giúp cho người sử dụng điều khiển thiết bị giám sát trạng thái thiết bị từ xa thiết bị kết nối Internet máy vi tính, điện thoại di động, … Nguyên lý hoạt động cụ thể hệ thống sau: - Vi điều khiển gởi lệnh AT cho Sim900A để thiết lập kết nối GPRS - Vi điều khiển đọc trạng thái thiết bị Nếu có thay đổi, vi điểu khiển gởi lệnh AT cho Sim900A để gởi thông tin trạng thái đến cho sở liệu - Vi điều khiển gởi lệnh AT cho Sim900A để lấy thông tin yêu cầu từ sở liệu Từ yêu cầu đó, vi điều khiển điều khiển thiết bị tương ứng thơng qua relay - Trang web có nhiệm vụ hiển thị trạng thái thiết bị thời gian thay đổi trạng thái thiết bị Ngươi dùng điều khiển thiết bị thông qua lựa chọn trang web ii Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân MỤC LỤC GIỚI THIỆU 1.1 Tổng quan .1 1.2 Tình hình nghiên cứu ngồi nước 1.3 Nhiệm vụ luận văn LÝ THUYẾT 2.1 2.1.1 Sơ lược GSM .3 2.1.2 Sơ lược GPRS 2.2 Module SIM900A 2.2.1 Sơ lược SIM900A 2.2.2 Các đặc điểm SIM900A 2.2.3 Sơ đồ chức SIM900A 10 2.2.4 Các giao tiếp SIM900A 11 2.3 Sơ lược GSM GPRS .3 ARM Cortex-M Vi điều khiển STM32F4 19 2.3.1 Sơ lược cấu trúc ARM .19 2.3.2 ARM Cortex-M 20 2.3.3 Vi điều khiển STM32F4 21 2.4 Kit STM32F4 Discovery 23 2.5 Cảm biến phát chuyển động PIR 25 2.6 Sơ lược LCD 16x2 27 2.7 Nguồn Buck (Step-down) IC ổn áp LM2596 31 2.7.1 Nguồn Buck (Step-down) .31 2.7.2 IC ổn áp LM2596 32 THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG 34 3.1 Yêu cầu thiết kế 34 3.2 Sơ đồ khối hệ thống 34 3.3 Thiết kế sơ đồ nguyên lý 35 iii Luận văn tốt nghiệp 3.3.1 Nguồn cung cấp 35 3.3.2 Breakout Board SIM900A .37 3.3.3 Khối Relay 38 3.3.4 Cảm biến chuyển động PIR 40 3.3.5 Mạch LCD 41 3.4 Kết nối mạch 41 THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM 43 4.1 Yêu cầu thiết kế 43 4.2 Trang Web phía Server 43 4.2.1 Phần mềm Microsoft WebMatrix ASP.NET framework 43 4.2.2 Tạo sở liệu 44 4.2.3 Trang hiển thị trang Web .46 4.2.4 Trang hiển thị trạng thái cảm biến thiết bị .48 4.2.5 Trang Web phía Server 49 4.2.6 Trang hiển thị yêu cầu cho thiết bị 50 4.3 GVHD: Th.S Trần Hoàng Quân Phần mềm cho vi điều khiển 50 4.3.1 Giải thuật tổng quát chương trình 50 4.3.2 Giải thuật truyền nhận UART 52 4.3.3 Khởi tạo kết nối GPRS 54 4.3.4 Trao đổi liệu với trang Web giao thức HTTP 54 4.3.5 Ngắt 55 KẾT QUẢ THỰC HIỆN 57 5.1 Đăng tải trang Web lên mạng Internet 57 5.2 Phần mềm vi điều khiển 57 5.3 Hoạt động toàn hệ thống 58 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .61 6.1 Kết luận 61 6.2 Hướng phát triển 61 iv Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân TÀI LIỆU THAM KHẢO 62 PHỤ LỤC .63 8.1 Mã lệnh trang “Default.cshtml” .63 8.3 Mã lệnh trang “Sensor.cshtml” 66 8.4 Mã lệnh trang “DisplayStatus.cshtml” 66 8.5 Mã lệnh trang “GetStatus.cshtml” 67 8.6 Chương trình vi điều khiển 68 v Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân DANH SÁCH HÌNH MINH HỌA Hình 2-1 Cấu trúc mạng GSM Hình 2-2 Cấu trúc mạng GPRS Hình 2-3 Hình ảnh Module SIM900A Hình 2-4 Sơ đồ ác khối chức SIM900A 11 Hình 2-5 Sơ đồ chân SIM900A 11 Hình 2-6 Mạch tham khảo cho ngõ vào VBAT 12 Hình 2-7 Sự sụt áp VBAT trình truyền dẫn 12 Hình 2-8 Bật SIM900A với chân PWRKEY mạch lái 13 Hình 2-9 Bật SIM900A với chân PWRKEY nút nhấn 13 Hình 2-10 Giản đồ thời gian bật chân PWRKEY 14 Hình 2-11 Bật SIM900A với chân PWRKEY PWRKEY_OUT mạch lái 14 Hình 2-12 Bật SIM900A với chân PWRKEY PWRKEY_OUT nút nhấn 14 Hình 2-13 Giản đồ thời gian bật chân PWRKEY PWRKEY_OUT 15 Hình 2-14 Giản đồ thời gian tắt chân PWRKEY 15 Hình 2-15 Giản đồ thời gian tắt chân PWRKEY PWRKEY_OUT 15 Hình 2-16 Kết nối giao tiếp nối tiếp 16 Hình 2-17 Mạch tham khảo giao tiếp thẻ SIM 17 Hình 2-18 Mạch tham khảo đèn LED thị trạng thái 18 Hình 2-19 So sánh dịng ARM Cortex-M 21 Hình 2-20 Các nhóm sản phẩm vi điều khển STM32F4 22 Hình 2-21 Sơ đồ khối vi điều khển STM32F4 23 Hình 2-22 Kit STM32F4 Discovery 23 Hình 2-23 Sơ đồ khối phần cứng STM32F4 Discovery 24 Hình 2-24 Cảm biến PIR 25 Hình 2-25 Sự thay đổi điện áp ngõ có nguồn nhiệt chuyển động 26 Hình 2-26 Thấu kính Fresnel 26 vi Luận văn tốt nghiệp GVHD: Th.S Trần Hồng Qn Hình 2-27 Hình ảnh LCD 16x2 thông dụng 27 Hình 2-28 Sơ đồ mạch Buck 31 Hình 2-29 Mạch Buck SW đóng 32 Hình 2-30 Mạch Buck SW1 ngắt 32 Hình 2-31 IC ổn áp LM2596 32 Hình 2-32 Sơ đồ khối IC ổn áp LM2596 33 Hình 2-33 Mạch ứng dụng LM2596 phiên điện áp cố định 33 Hình 3-1 Sơ đồ khối hệ thống 34 Hình 3-2 Sơ đồ nguyên lý mạch nguồn 4V 35 Hình 3-3 Sơ đồ nguyên lý mạch nguồn 5V 37 Hình 3-4 Sơ đồ nguyên lý Breakout Board SIM900A 37 Hình 3-5 Breakout Board SIM900A 38 Hình 3-6 Sơ đồ nguyên lý mạch relay 39 Hình 3-7 Sơ đồ nguyên lý mạch cảm biến PIR 40 Hình 3-8 Cảm biến PIR TM-208 40 Hình 3-9 Sơ đồ nguyên lý mạch LCD 41 Hình 3-10 Sơ đồ kết nối Breakout Board SIM900A với Kit STM32F4 Discovery 41 Hình 3-11 Sơ đồ kết nối mạch relay mạch PIR sensor với Vit STM32F4 Discovery 42 Hình 3-12 Sơ đồ kết nối mạch LCD với Kit STM32F4 Discovery 42 Hình 4-1 Chương trình Microsoft WebMatrix 43 Hình 4-2 Bảng Devices sở liệu 45 Hình 4-3 Bảng Sensor sở liệu 45 Hình 4-4 Bảng DLog sở liệu 45 Hình 4-5 Bảng SLog sở liệu 45 Hình 4-6 Trang hiển thị trang Web 46 Hình 4-7 Lưu đồ giải thuật 51 Hình 4-8 Giải thuật ngắt UART 52 vii Luận văn tốt nghiệp GVHD: Th.S Trần Hồng Qn Hình 4-9 Giải thuật ngắt UART để đọc yêu cầu trạng thái thiết bị 53 Hình 4-10 Sở đồ ngắt ngồi chân GPIO 56 Hình 5-1 Trang Web sau đăng tải lên mạng 57 Hình 5-2 Phần mềm Keil µVision 58 Hình 5-3 Hệ thống kết nối hoàn chỉnh 58 Hình 5-4 Quan sát biến chế độ debug Keil µVision 59 Hình 5-5 Mạch relay ba relay bật 59 viii Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân PHỤ LỤC 8.1 Mã lệnh trang “Default.cshtml” @{ var var var var var var var var var request1 = ""; request2 = ""; request3 = ""; db = Database.Open("GPRS Demo"); SQLUPDATE01 = "UPDATE Devices Set DRequest=@0 WHERE id=1"; SQLUPDATE02 = "UPDATE Devices Set DRequest=@0 WHERE id=2"; SQLUPDATE03 = "UPDATE Devices Set DRequest=@0 WHERE id=3"; SQLDELETE1 = "DELETE FROM Log"; SQLDELETE2 = "DELETE FROM DLog"; if(IsPost){ if(Request["Button"].Equals("Submit 1")){ request1 = Request["Choice1"]; db.Execute(SQLUPDATE01, request1); } if(Request["Button"].Equals("Submit 2")){ request2 = Request["Choice2"]; db.Execute(SQLUPDATE02, request2); } if(Request["Button"].Equals("Submit 3")){ request3 = Request["Choice3"]; db.Execute(SQLUPDATE03, request3); } if(Request["Button"].Equals("Submit All")){ request1 = Request["Choice1"]; request2 = Request["Choice2"]; request3 = Request["Choice3"]; db.Execute(SQLUPDATE01, request1); db.Execute(SQLUPDATE02, request2); db.Execute(SQLUPDATE03, request3); } if(Request["Button"].Equals("Clear Sensor Log")){ db.Execute(SQLDELETE1); } if(Request["Button"].Equals("Clear Devices Log")){ db.Execute(SQLDELETE2); } } } GPRS-Based Remote Control 63 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân function Load_external_content(){ $('#status').load('DisplayStatus.cshtml'); $('#sensor').load('DisplaySensor.cshtml'); } setInterval('Load_external_content()', 500); GPRS-Based Remote Control Sensor Status of Devices Control Panel I want: Device 1: On Off Device 2: On Off Device 3: On Off 64 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân @{ var day = DateTime.UtcNow.Day; var month = DateTime.UtcNow.Month; var year = DateTime.UtcNow.Year; var DayOfWeek = DateTime.UtcNow.DayOfWeek; } TP.Ho Chi Minh, @DayOfWeek, @day/@month/@year 8.2 Mã lệnh trang “DisplaySensor.cshtml” @{ var var var var var var db = Database.Open("GPRS Demo"); sqlQ = "SELECT * FROM Sensor WHERE id1=1"; selectQueryString = "SELECT * FROM SLog ORDER BY id3"; data = db.QuerySingle(sqlQ); sstt = data.Status; Display = ""; if(sstt == 0){ Display = "No movement."; } if(sstt == 1){ Display = "Movement Detected."; } } @Display 65 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân Data Log Time @foreach(var row in db.Query(selectQueryString)){ @row.Time } 8.3 Mã lệnh trang “Sensor.cshtml” @{ var db = Database.Open("GPRS Demo"); var usensor = Request.QueryString["sensor"]; var timelog = DateTime.UtcNow; var SQLUPDATE = "UPDATE Sensor Set Status=@0 WHERE id1=1"; var SQLINSERT = "INSERT INTO DLog (Time) VALUES (@0)"; db.Execute(SQLUPDATE, usensor); if(usensor == "1"){ db.Execute(SQLINSERT,timelog); } } 8.4 Mã lệnh trang “DisplayStatus.cshtml” @{ var var var var db = Database.Open("GPRS Demo"); sqlQ = "SELECT * FROM Devices"; selectQueryString = "SELECT * FROM DLog ORDER BY id"; data = db.Query(sqlQ); } Status
    @foreach(var row in data){
  • @row.Name is @row.DStatus.
  • }
66 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân Change Log Device Change To Time @foreach(var row in db.Query(selectQueryString)){ @row.Name @row.Status @row.ATime } 8.5 Mã lệnh trang “GetStatus.cshtml” @{ var var var var db = Database.Open("GPRS Demo"); ustt1 = Request.QueryString["stt1"]; ustt2 = Request.QueryString["stt2"]; ustt3 = Request.QueryString["stt3"]; var var var var var var SQLUPDATE1 = "UPDATE Devices Set DStatus=@0 WHERE id=1"; SQLUPDATE2 = "UPDATE Devices Set DStatus=@0 WHERE id=2"; SQLUPDATE3 = "UPDATE Devices Set DStatus=@0 WHERE id=3"; sqlQ1 = "SELECT * FROM Devices WHERE id=1"; sqlQ2 = "SELECT * FROM Devices WHERE id=2"; sqlQ3 = "SELECT * FROM Devices WHERE id=3"; var SQLINSERT = "INSERT INTO DLog (Name,Status,ATime) VALUES (@0,@1,@2)"; var timelog = DateTime.Now; var data1 = db.QuerySingle(sqlQ1); var data2 = db.QuerySingle(sqlQ2); var data3 = db.QuerySingle(sqlQ3); if(String.Compare(ustt1,data1.DStatus) != 0){ db.Execute(SQLINSERT,"Device 1",ustt1,timelog); db.Execute(SQLUPDATE1, ustt1); } if(String.Compare(ustt2,data2.DStatus) != 0){ db.Execute(SQLINSERT,"Device 2",ustt2,timelog); db.Execute(SQLUPDATE2, ustt2); } if(String.Compare(ustt3,data3.DStatus) != 0){ db.Execute(SQLINSERT,"Device 3",ustt3,timelog); db.Execute(SQLUPDATE3, ustt3); } } 67 Luận văn tốt nghiệp GVHD: Th.S Trần Hồng Qn 8.6 Chương trình vi điều khiển #include "stm32f4xx.h" #include "hd44780.h" #include "string.h" #define MAX_STRLEN 32 /* Define variables */ char received_string[MAX_STRLEN+1]; char data[MAX_STRLEN+1]; char temp[3][6]; char ip[16]; char char char char dev1[] dev2[] dev3[] read[] static static static static static static static static static = = = = uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t uint8_t "1 on "; "2 on "; "3 on "; "+HTTPACTION"; i = 0; j = 0; get = 0; s1; s2; s3; change; sensor; pre_sen = 0; static IO uint32_t TimingDelay; void Delay( IO uint32_t nTime); void UASRT_Init(void) { /* Private typedef */ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* GPIOA Periph clock enable */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); /* USART2 clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); /* Configure PA2, PA3 in AF pushpull mode */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Use PA2, PA3 for USART2 */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2); GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2); 68 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân /* USART1 configured as follow: - BaudRate = 9600 baud - Word Length = Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &USART_InitStructure); /* Enable the USART2_IRQn Receive Interrupt */ USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); /* Configure the USART2_IRQn Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Enable the USART2 */ USART_Cmd(USART2, ENABLE); } void EXTILine3_Init(void) { /* Private typedef */ EXTI_InitTypeDef EXTI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; /* Enable GPIOE clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); /* Enable SYSCFG clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); /* Configure PE3 pin as input floating */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_Init(GPIOE, &GPIO_InitStructure); /* Connect EXTI Line3 to PA3 pin */ SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource3); /* Configure EXTI Line3 */ EXTI_InitStructure.EXTI_Line = EXTI_Line3; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); 69 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân /* Enable and set EXTI Line3 Interrupt priority */ NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void LED_Init(void) { /* Private typedef */ GPIO_InitTypeDef GPIO_InitStructure; /* GPIOD Periph clock enable */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); /* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_0 | GPIO_Pin_2 | GPIO_Pin_4 | GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &GPIO_InitStructure); } void LCD_Init(void) { hd44780_init(GPIOE, GPIO_Pin_10, GPIO_Pin_12, GPIO_Pin_14, GPIO_Pin_7, GPIO_Pin_9, GPIO_Pin_11, GPIO_Pin_13, HD44780_LINES_2, HD44780_FONT_5x8); } void SysTick_Init(void) { if (SysTick_Config(SystemCoreClock / 1000)) /* Capture error */ while (1); } /* UART transmit function*/ void puts(USART_TypeDef* USARTx, volatile char *s){ while(*s){ /* wait until data register is empty */ while( !(USARTx->SR & 0x00000040) ); USART_SendData(USARTx, *s); *s++; } } void GPRS_Setup(void) { puts(USART2,"ATE0\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("Echo Disable"); Delay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_12); hd44780_position(1,0); hd44780_print(received_string); 70 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân Delay(1000); puts(USART2,"AT\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("Communication"); Delay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_12); hd44780_position(1,0); hd44780_print(received_string); Delay(1000); hd44780_clear(); hd44780_position(0,0); hd44780_print("SETUP GPRS "); Delay(2000); puts(USART2,"AT+SAPBR=3,1,\"APN\",\"v-internet\"\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("Set APN"); Delay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_12); hd44780_position(1,0); hd44780_print(received_string); Delay(1000); puts(USART2,"AT+SAPBR=3,1,\"USER\",\"-\"\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("Set USERNAME"); Delay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_12); hd44780_position(1,0); hd44780_print(received_string); Delay(1000); puts(USART2,"AT+SAPBR=3,1,\"PWD\",\"-\"\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("Set PASSWORDS"); Delay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_12); hd44780_position(1,0); hd44780_print(received_string); Delay(1000); puts(USART2,"AT+SAPBR=1,1\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("Start the GPRS"); Delay(3000); GPIO_ResetBits(GPIOD,GPIO_Pin_12); hd44780_position(1,0); hd44780_print(received_string); Delay(1000); puts(USART2,"AT+SAPBR=2,1\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("IP Address is"); 71 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân Delay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_12); strncpy(ip,&received_string[13],13); hd44780_position(1,0); hd44780_print(ip); Delay(1000); hd44780_clear(); hd44780_position(0,0); hd44780_print("GPRS SETUP"); hd44780_position(1,0); hd44780_print("COMPLETE!"); Delay(2000); } void HTTP_Init(void) { puts(USART2,"AT+HTTPINIT\r\n"); Delay(200); GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void HTTP_Term(void) { puts(USART2,"AT+HTTPTERM\r\n"); Delay(200); GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void HTTP_CID(void) { puts(USART2,"AT+HTTPPARA=\"CID\",1\r\n"); Delay(150); GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void HTTP_Request(void) { strncpy(received_string," ",2); puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/SendReq uest\"\r\n"); Delay(150); GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void HTTP_Stt(uint8_t d1,uint8_t d2,uint8_t d3) { if((d1 == 0)&&(d2 == 0)&&(d3 == 0)){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=off&stt2=off&stt3=off\"\r\n"); } if((d1 == 0)&&(d2 == 0)&&(d3 == 1)){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=off&stt2=off&stt3=on\"\r\n"); } if((d1 == 0)&&(d2 == 1)&&(d3 == 0)){ 72 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=off&stt2=on&stt3=off\"\r\n"); } if((d1 == 0)&&(d2 == 1)&&(d3 == 1)){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=off&stt2=on&stt3=on\"\r\n"); } if((d1 == 1)&&(d2 == 0)&&(d3 == 0)){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=on&stt2=off&stt3=off\"\r\n"); } if((d1 == 1)&&(d2 == 0)&&(d3 == 1)){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=on&stt2=off&stt3=on\"\r\n"); } if((d1 == 1)&&(d2 == 1)&&(d3 == 0)){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=on&stt2=on&stt3=off\"\r\n"); } if((d1 == 1)&&(d2 == 1)&&(d3 == 1)){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/getstat us?stt1=on&stt2=on&stt3=on\"\r\n"); } Delay(150); GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void HTTP_Sensor(uint8_t ssensor) { if(ssensor == 1){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/Sensor? sensor=1\"\r\n"); } if(ssensor == 0){ puts(USART2,"AT+HTTPPARA=\"URL\",\"http://www.gprsdemo.somee.com/Sensor? sensor=0\"\r\n"); } Delay(150); GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void HTTP_GET(void) { puts(USART2,"AT+HTTPACTION=0\r\n"); hd44780_clear(); hd44780_position(0,0); hd44780_print("Data Transfer"); while(strncmp(received_string,read,11)); GPIO_ResetBits(GPIOD,GPIO_Pin_12); } void HTTP_Read(void) { 73 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân get = 1; puts(USART2,"AT+HTTPREAD\r\n"); Delay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_12); Delay(100); get = 0; j = 0; } void Send_Stt(uint8_t ss1,uint8_t ss2,uint8_t ss3) { HTTP_Stt(ss1,ss2,ss3); HTTP_GET(); } void Sensor_Update(uint8_t sen) { HTTP_Sensor(sen); HTTP_GET(); } int main(void) { /* System Initialization */ LCD_Init(); SysTick_Init(); LED_Init(); UASRT_Init(); strcpy(received_string," "); /* Display Welcome message */ hd44780_clear(); hd44780_position(0,2); hd44780_print("WELCOME TO"); hd44780_position(1,2); hd44780_print("GPRS DEMO!"); Delay(2000); hd44780_clear(); hd44780_position(0,0); hd44780_print("System Init "); Delay(2000); hd44780_position(1,0); hd44780_print("Init Complete!"); Delay(2000); /* Setup GPRS and Display GRPS is ready */ GPRS_Setup(); /* External Interrupt Initialization */ EXTILine3_Init(); /* s1 s2 s3 Read output */ = GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_0); = GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2); = GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_4); HTTP_Init(); HTTP_CID(); while(1){ 74 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân HTTP_Request(); HTTP_GET(); HTTP_Read(); /* Compares the value of 'temp[0]' to 'dev1' */ if(strncmp(temp[0],dev1,6) == 0){ if(s1 == 0){ GPIO_SetBits(GPIOD,GPIO_Pin_0); change = 1; } else if(s1 == 1){;} } else{ if(s1 == 0){;} else if(s1 == 1){ GPIO_ResetBits(GPIOD,GPIO_Pin_0); change = 1; } } /* Compares the value of 'temp[1]' to 'dev2' */ if(strncmp(temp[1],dev2,6) == 0){ if(s2 == 0){ GPIO_SetBits(GPIOD,GPIO_Pin_2); change = 1; } else if(s2 == 1){;} } else{ if(s2 == 0){;} else if(s2 == 1){ GPIO_ResetBits(GPIOD,GPIO_Pin_2); change = 1; } } /* Compares the value of 'temp[2]' to 'dev3' */ if(strncmp(temp[2],dev3,6) == 0){ if(s3 == 0){ GPIO_SetBits(GPIOD,GPIO_Pin_4); change = 1; } else if(s3 == 1){;} } else{ if(s3 == 0){;} else if(s3 == 1){ GPIO_ResetBits(GPIOD,GPIO_Pin_4); change = 1; } } s1 = GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_0); s2 = GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2); s3 = GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_4); if(change == 1){ Send_Stt(s1,s2,s3); change = 0; } 75 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân if((sensor == 1)&&(pre_sen == 0)){ Sensor_Update(1); pre_sen = sensor; sensor = 0; GPIO_ResetBits(GPIOD,GPIO_Pin_13); } else if((sensor == 0)&&(pre_sen == 1)){ Sensor_Update(0); pre_sen = sensor; } else{;} } } void EXTI3_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line3) != RESET){ sensor = 1; GPIO_SetBits(GPIOD,GPIO_Pin_13); } EXTI_ClearITPendingBit(EXTI_Line3); } void USART2_IRQHandler(void) { static uint8_t wait = 2; static uint8_t wait_n = 2; if(USART_GetITStatus(USART2, USART_IT_RXNE)){ GPIO_SetBits(GPIOD,GPIO_Pin_12); if(get == 0){ received_string[i] = USART_ReceiveData(USART2); if(received_string[i] == '\r'){ wait_n = 1; } else if((received_string[i] == '\n')&&(wait_n == 1)){ received_string[i] = 0x00; wait_n = 0; i = 0; } else{i++;} } if(get == 1){ data[i] = USART_ReceiveData(USART2); if(data[i] == '#'){ i = 0; strcpy(data," "); wait = 1; } else if((data[i] == '.')&&(wait == 1)){ strncpy(temp[j],data,6); wait = 0; i = 0; j++; } else{i++;} if (i == MAX_STRLEN){ i = 0; } 76 Luận văn tốt nghiệp GVHD: Th.S Trần Hoàng Quân } } } void Delay( IO uint32_t nTime) { TimingDelay = nTime; while(TimingDelay != 0); } /** * @brief Decrements the TimingDelay variable * @param None * @retval None */ void SysTick_Handler(void) { if (TimingDelay != 0x00) { TimingDelay ; } } 77 ... MPU giao thức bit (từ bit DB7 đến DB0) Ngược lại, giao thức giao tiếp bit (từ bit DB7 đến bit DB0) Khi chọn giao thức bit, liệu truyền/nhận lần liên tiếp với bit cao gởi/nhận trước, bit thấp gởi/nhận... bus : - Chế độ bit : Dữ liệu truyền đường, với bit MSB bit DB7 - Chế độ bit : Dữ liệu truyền đường từ DB4 tới DB7, bit MSB DB7 Chân cấp nguồn cho đèn GND cho đèn HD44780 có ghi bit quan trọng :... 32-bit thuật toán 32-bit Cấu trúc ARMv8-A hỗ trợ vùng địa 64-bit thuật toán 64-bit Tập lệnh cho lõi gồm lệnh chiều dài 32-bit, phiên sau hỗ trợ thêm tập lệnh nhiều chiều dài gồm lệnh 32-bit 16-bit

Ngày đăng: 03/10/2022, 08:35