Hệ thống giám sát xe tải sử dụng công nghệ GSM

MỤC LỤC

GIỚI THIỆU CHUNG

    Trong đề tài luận văn này, chúng em thiết kế hệ thống để cụ thể mô hình trên. Thiết bị gắn trên xe tải sẽ làm nhiệm vụ chính là thu sóng GPS xác định tọa độ của nó và gửi tọa độ đó cùng các thông số đo được trên xe gửi về trung tâm quản lý. - Thiết kế khối trung giao tiếp với GSM modem - Thiết kế khối ngoại vi kiểm tra nhiệt độ.

    - Giao tiếp khối ngoại vi và khối trung tâm dùng RF module giao tiếp không dây - Kết hợp hệ thống GPS để giám sát xe tải.

    CƠ SỞ LÝ THUYẾT

    Giới thiệu GSM modem và tập lệnh AT

    • Cấu trúc nhân AVR
      • Bộ định thời
        • USART

          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 sàng trao đổ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ẽ báo cho CPU biết thông qua cờ RXC, hoặ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ắt CPU 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. Đâ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 PORTx 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.

          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) và bit stop. 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. Đâ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.

          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.  Mỗi vi mạch đo nhiệt độ DS18B20 có một mã số định danh duy nhất, được khắc bằng laser trong quá trình chế tạo vi mạch nên nhiều vi mạch DS1820 có thể cùng kết nối vào một bus 1-wire mà không có sự nhầm lẫn.  8 bit có ý nghĩa nhất là byte mã kiểm tra CRC (cyclic redundancy check), byte này được tính toán từ 56 bit đầu tiên của dãy mã trên ROM .Để truy cập lên cảm biến một dây DS1820 ta phải sử dụng hai nhóm lệnh: các lệnh ROM và các lệnh chức năng (function commands) bộ nhớ, các lệnh này có thể được mô tả ngắn gọn như sau: Sau khi thiết bị chủ (thường là một vi điều khiển) phát hiện ra một xung presence pulse, nó có thể xuất ra một lệnh ROM.

           SEARCH ROM (F0h) : Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành viên slave đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò tìm.  ALARM SEARCH (ECh) : Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng. Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến.

           READ POWER SUPPLY (B4h) : Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một đường dẫn riêng.

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

          VÀ TẬP LỆNH AT

            AT+CMGL=<number> : liệt kê tin nhắn, cho phép gửi toàn bộ tin nhắn từ bộ nhớ tới thiết bị ngoài. AT+CMSS=<index> : lệnh gửi tin nhắn đã được lưu trong bộ nhớ. Trường hợp muốn gửi tin nhắn đến một số khác (không phải số lưu trong bộ nhớ bằng lệnh AT+CMGW) , ta thêm vào số điện thoại đằng sau <index>.

            AT+CMGD=<index> : lệnh xóa tin nhắn trong bộ nhớ tại vị trí <index>. - “BM” : kho lưu trữ tin nhắn CBM(Cell Broadcast Message) (trong các bộ nhớ không ổn định-volatile memory). - “SR” : báo cáo trạng thái lưu trữ tin nhắn (trong sim hay những nơi khác(trừ volatile memory) trong thiết bị di động ).

            Hình 4.2: kết nối SMA cho anten
            Hình 4.2: kết nối SMA cho anten

            CƠ SỞ THIẾT KẾ

            Giới thiệu về IC MAX232

            Nó sử dụng ATmega16L làm vi xử lý trung tâm giao tiếp với RFmodule qua USART theo chuẩn TTL và cảm biến nhiệt độ DS18B20 theo giao thức 1Wire.

            LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH

            Cách sử dụng codevisionAVR

             Chọn source nếu muốn chương trình tạo ra một cửa sổ trắng để bạn tự tạo ra mã. CodewizardAVR giúp chúng ta khởi tạo các thông số ban đầu cho việc cho việc lập trình, điều này giúp chúng ta tiết kiệm được rất nhiều thời gian, tránh được những sai lầm đáng tiếc do không tìm hiểu kỹ cấu trúc vi xử lý. Đồng thời ta khởi tạo USART0 và USART1, cấu hình input/output cho các PORT, enable giao thức truyền dữ liệu SPI.

            Sau khi thiết lập các thông số ban đầu, ta lưu các thiết lập này: File =>. Sau khi hoàn thành đoạn code, ta lưu lại toàn bộ (Save all) và biên dịch ra mã Hex: Project =>Built All (Ctrl + F9) hoặc ta có thể nhấp trực tiếp vào biểu tượng trên thanh công cụ. Nếu đoạn mã C không có lỗi thì chương trình sẽ hiện ra bảng thông báo no error và các thông số ước đoán về dung lượng file HEX.

            Trong trường hợp chương trình C có lỗi, CodeVision sẽ hiện bảng thông báo chỉ rừ số lỗi. Sau khi đã hoàn thành quá trình tạo file HEX, ta bắt đầu quá trình nạp chip. Sau khi cài driver cho mạch nạp, ta thiết lập các thông số của mạch nạp để tương thích với Codevision.

            Click chuột phải vào Computer chọn Manage => Device Manager=>Ports(COM &LPT) =>AVR910USB Programer (double click) ta thiết lập các thông số như hình bên dưới.

            Hình 6.4: cách sử dụng codevisionAVR(4)
            Hình 6.4: cách sử dụng codevisionAVR(4)

            Lưu đồ giải thuật khối trung tâm

            Nếu có, ATmega162 sẽ xử lý nội dung tin nhắn,còn không thì sẽ giao tiếp với ngoại vi. Nếu thiết bị nào có tin tức gì cần báo hiệu thì sẽ gửi khi nó có được quyền ưu tiên. 6 ký tự theo sau chính là số serial, ATmega162 sẽ so sánh số serial đó với 6 số serial của nó (được lưu trong eeprom).

            Nếu sai thì nó sẽ gửi tin nhắn trở lại số điện thoại mà nó đã lưu để thông báo sai password. 1.Nếu nhận được ký tự ‘S’ thì nó sẽ thay đổi số serial(lưu vào eeprom),đồng thời thông báo đã thay đổi password về server. 3.Nếu nhận được ký tự ‘C’ thì nó sẽ tiếp tục nhận tên thiết bị ngoại vi.

            4.Nếu nhận được ký tự ‘R’ thì nó sẽ tiếp tục nhận các thông số thiết lập, sau đó gửi lệnh đăng ký thiết bị ra ngoại vi. Tương tự nếu nhận respone thì nó gửi respone đó về server, ngược lại nó thông báo thiết bị không còn hoạt động về server. 5.Các trường hợp còn lại, ATmega gửi thông báo sai cấu trúc lệnh về server.

            Giao tiếp với node ngoại vi: ATmega sẽ lần lượt đọc tên thiết bị lưu trong eeprom và gửi tới thiết bị ngoại vi cùng ký tự P(priority) để cấp quyền ưu tiên. Nếu thiết bị nào có thông báo nào về server thì sẽ gửi khi nó được cấp quyền ưu tiên.

            Hình 6.16:lưu đồ node trung tâm 2
            Hình 6.16:lưu đồ node trung tâm 2

            Lưu đồ giải thuật khối ngoại vi

            Chương trình lọc số: Vì DS18B20 xuất ra biến dạng số float nên khi xuất ra LCD, máy tính, module RF cần phải tách ra hàng trăm, chục, đơn vị, thập phân. Đây là thanh ghi 12 bit chứa tốc độ BAUD của USART, UBRRH chứa 4 bit cao nhất và UBRRL chứa 8 bit thap còn lại. Để đưa giá trị lên máy tính hoặc qua RF cần xuất từng ký tự một dựa vào các số đã lọc ở trên.

            Hình 6.18:Lưu đồ chương trình đọc giá trị nhiệt độ
            Hình 6.18:Lưu đồ chương trình đọc giá trị nhiệt độ