Hướng dẫn giám sát hành trình bằng module SIM7600

huong-dan-giam-sat-hanh-trinh-bang-sim7600

Nắm bắt mọi thông tin về hành trình của xe với SIM7600. Bài viết này sẽ cung cấp cho bạn hướng dẫn chi tiết về cách sử dụng SIM7600 để giám sát hành trình một cách thông minh và tiết kiệm thời gian. Với SIM7600, bạn có thể biết được vị trí hiện tại của xe, tốc độ di chuyển, quãng đường đã đi, thời gian hoạt động và nhiều thông tin khác về hành trình. Điều này giúp bạn quản lý xe của mình một cách chuyên nghiệp và tiết kiệm chi phí.

Module sim7600 là gì?

Module SIM7600CE hỗ trợ các băng tần 2G/3G/4G LTE, giúp người dùng sử dụng linh hoạt trong các ứng dụng cần kết nối Internet tốc độ cao. Đây cũng là sự lựa chọn thay thế hoàn hảo cho các bo mạch 2G cũ.

SIM SIM7600CE-M1S hỗ trợ các băng tần LTE-FDD/LTE-TDD/HSPA+/UMTS/EDGE/GPRS/GSM. Module này cũng có khả năng hỗ trợ GPS và hoàn toàn tương thích với SIM7500/SIM7600 Series modules và LTE CAT4 SIM7600X-H module. Với đặc tính của SIM7600CE-M1S, giao tiếp dữ liệu đạt tốc độ tối đa 150Mbps, các kết nối UART, USB2.0, GPIO, …được tích hợp sẵn để đáp ứng nhu cầu linh hoạt của khách hàng trong quá trình tích hợp.

Với giao diện LCC, module này được thiết kế cho các ứng dụng cần giao tiếp dữ liệu với thông lượng cao trong nhiều điều kiện truyền phát sóng khác nhau. 

module-sim7600

Module sim7600

Các tính năng của SIM7600CE-M1S bao gồm cập nhật Firmware qua USB, hỗ trợ TCP/IP/IPV4/IPV6/Multi-PDP/FTP/FTPS/HTTP/HTTPS/DNS/MQTT, DTMF (Gửi và Nhận), Audio Playing,…. Module này còn được hỗ trợ bởi các driver USB cho Microsoft Windows 2000/XP/Vista/Win7/Win8/Win10 và Linux /Android.

Hướng dẫn lắp đặt giám sát hành trình bằng Module Sim7600

1. Lập trình kit bSmart lấy thông tin GPS gửi lên MQTT Broker:

    Đầu tiên mình sẽ liệt kê ra một số hàm để thao tác với GPS của thư viện TinyGSM:

  • modem.enableGPS(): Bật định vị GPS trên module SIM lên, sau khi bật sẽ cần chờ khoảng 15-20 giây để module GPS khởi động, bắt sóng vệ tinh,…
  • modem.getGPS(&gps_lat, &gps_lon, &gps_speed, &gps_alt, &gps_vsat, &gps_usat, &gps_accuracy, &gps_year, &gps_month, &gps_day, &gps_hour, &gps_min, &gps_sec): Lấy thông tin GPS truyền vào các biến tham chiếu, hàm trả về true nếu lấy được định vị ngược lại trả về false.
  • modem.getGPSraw(): Trả về thông tin định vị dưới dạng một chuỗi thô (String) (Toàn bộ thông tin nằm trong một chuỗi cách nhau bởi dấu phẩy)
  • modem.disableGPS(): Tắt module GPS

    Trước khi đi vào code chi tiết, các bạn nên xem sơ qua khung sườn (Hàm setup và hàm loop của chương trình):

void setup() {
  Serial.begin(115200);
  delay(3000);

  Serial.println("\nInit modem SIM");
  while (!initModemSIM()) {
    Serial.print("..");
    delay(1000);
  }

  Serial.println("\nConnect to GPRS");
  while (!connectToGPRS()) {
    Serial.print("..");
    delay(1000);
  }

  Serial.println("\nEnabling GPS/GNSS/GLONASS and waiting 20s for warm-up");
  modem.enableGPS();
  delay(20000L);

  gsmMqtt.setServer(broker, PORT_MQTT);

  Serial.println("Setup Done!");
}

void loop() {
  if (modem.isGprsConnected()) {
    getGPSData();
    mqttLoopWithGPRS();
  } else {
    Serial.println("Khong co ket noi GRPS!");
    delay(2000);
  }
}

// Hàm xử lý trong loop() dành cho MQTT Client dùng GPRS
void mqttLoopWithGPRS() {
  if (!gsmMqtt.connected()) { // Nếu chưa có kết nối tới MQTT Broker
    Serial.println("Ket noi MQTT voi GPRS");
    while ( (!gsmMqtt.connected()) && modem.isGprsConnected()) {
      connectMQTT(&gsmMqtt);
      delay(5000);
    }
  } else { // Nếu đã có kết nối tới MQTT Broker rồi
    pushGPSData();
    gsmMqtt.loop();// Hàm xử lý của thư viện mqtt
  }
}

    Hàm quan trọng nhất trong bài viết này là hàm getGPSData:

void getGPSData() {
  if ((millis() - lastTime) < GETTING_GPS_INTERVAL) return; // Chi lay du lieu GPS moi GETTING_GPS_INTERVAL (ms)
  if (modem.getGPS(&gps_lat, &gps_lon, &gps_speed, &gps_alt, &gps_vsat, &gps_usat, &gps_accuracy,
                   &gps_year, &gps_month, &gps_day, &gps_hour, &gps_min, &gps_sec)) {
    Serial.println("Getted GPS Info");
    gps_updtTime = modem.getGSMDateTime(DATE_FULL);
  } else {
    Serial.println("Cannot get GPS");
    gps_updtTime = "";
  }
  lastTime = millis();
}

    Trong hàm getGPSData, ngoài việc lấy dữ liệu GPS thì mình đồng thời cũng lấy chuỗi biểu diễn thời gian thực, nhằm giúp đánh dấu thời điểm lấy định vị.

    Các bạn xem code đầy đủ bên dưới, trong ấy mình cũng đã có giải thích ở một số chỗ.

    Code đầy đủ: https://github.com/loc4atnt/sim7600_gps

Code đã hoạt động trên bSmart

Broker shiftr.io đã nhận dữ liệu

Dữ liệu trên topic mycar/gps

2. Xây dựng ứng dụng NodeRed hiển thị bản đồ:

    Đầu tiên các bạn cần cài thêm một thư viện hiển thị map cho NodeRed.

    Mở menu Manage palette.

Mở menu quản lý thư viện mở rộng

    Chọn tab Install, tìm thư viện “node-red-contrib-web-worldmap” và cài đặt

    Sau khi cài đặt thành công, bạn quay trở lại tab danh sách node sẽ thấy xuất hiện mục mới “location” chứa các node của thư viện worldmap.

    Tiếp theo, chúng ta sẽ bắt đầu xây dựng ứng dụng. Ứng dụng của chúng ta ở bài này khá đơn giản chỉ gồm 3 node: mqtt in, template và worldmap. Các bạn tìm trong tab danh sách node và kéo 3 node ấy ra liên kết lại như hình dưới:

    Về setup Server cho node mqtt in mình đã hướng dẫn ở các bài trước nên không nhắc lại, các bạn nhập Topic và chọn kiểu dữ liệu Output của node là đối tượng JSON.

    Tiếp theo chúng ta cần setup để hiển thị lên map icon chiếc ô tô của chúng ta tại tọa độ nhận từ node mqtt in.

    Để hiển thị một marker (điểm đánh dấu) lên map, chúng ta cần truyền vào node worldmap một JSON chứa ít nhất 3 key: “name”, “lat”, “lon”. Với “name” là tên của marker (tên phải phân biệt duy nhất trên map), “lat” và “lon” lần lượt là vĩ độ và kinh độ của vị trí. Ngoài ra bạn có thể truyền thêm vào JSON các thuộc tính khác để hiển thị marker theo ý mình:

    Như vậy ta cần truyền vào node worldmap một payload là đối tượng JSON theo cấu trúc nói trên – Node template sẽ giúp chúng ta làm điều này.

    Template là node cho ra dữ liệu payload theo mẫu soạn sẵn. Ở đây payload xuất ra từ node này là đối tượng JSON chứa dữ liệu để truyền vào node worldmap kế tiếp. Payload trong ô Property lúc này chính là JSON xuất ra từ node mqtt in, hay nói cách khác là dữ liệu mà ta đã gửi lên từ bSmart.

    Template:

{
    "name": "Stupid Car",
    "lat": {{payload.lat}},
    "lon": {{payload.lon}},
    "icon": "car",
    "iconColor": "#03fc5a",
    "label": "Stupid Car",
    "popup": "<p>Tốc độ: {{payload.speed}}<br>Cập nhật lần cuối: {{payload.time}}</p>"
}

Config cho node template

    Cuối cùng là setup node worldmap, chúng ta chỉ cần quan tâm đến 2 mục chính là Start và Web path. Trong đó, Start là tọa độ và mức Zoom khi ta mới truy cập vào map, còn Web path là đường dẫn web đến map này.

    Như vậy là chúng ta đã hoàn thành sản phẩm rồi, khá đơn giản đúng không mọi người, Deploy và xem thành quả thôi! Các bạn truy cập theo Web path đã nhập lúc nãy để xem, ví dụ mình host trên máy tính thì truy cập localhost:1880/worldmap

    Dưới đây là một số hình ảnh Demo:

Marker định vị kit bSmart của mình

Popup hiển thị thêm một số thông tin của marker

Trên đây là hướng dẫn chi tiết về cách giám sát hành trình bằng sim module SIM7600, một giải pháp đơn giản và hiệu quả để theo dõi vị trí của xe hoặc thiết bị di động. Với những bước đơn giản trên, bạn có thể tự tay lắp đặt và sử dụng giải pháp này để đảm bảo an toàn và quản lý tốt hơn các hoạt động di chuyển của mình. Hy vọng bài viết này sẽ giúp ích cho bạn trong quá trình thực hiện và đạt được kết quả tốt nhất.

Xem thêm các sản phẩm:

SIM7600CE-M1S 4G LTE-CAT 4 GPS SIMCOM MODULE

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *