You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/vi/3-transport/lessons/1-location-tracking/virtual-device-gps-sensor.md

8.5 KiB

Đọc dữ liệu GPS - Phần cứng IoT ảo

Trong phần này của bài học, bạn sẽ thêm cảm biến GPS vào thiết bị IoT ảo của mình và đọc các giá trị từ nó.

Phần cứng ảo

Thiết bị IoT ảo sẽ sử dụng một cảm biến GPS mô phỏng, có thể truy cập qua UART thông qua cổng nối tiếp.

Một cảm biến GPS vật lý sẽ có một ăng-ten để thu sóng radio từ các vệ tinh GPS và chuyển đổi tín hiệu GPS thành dữ liệu GPS. Phiên bản ảo mô phỏng điều này bằng cách cho phép bạn đặt vĩ độ và kinh độ, gửi các câu NMEA thô, hoặc tải lên một tệp GPX với nhiều vị trí có thể được trả về tuần tự.

🎓 Các câu NMEA sẽ được đề cập sau trong bài học này

Thêm cảm biến vào CounterFit

Để sử dụng cảm biến GPS ảo, bạn cần thêm nó vào ứng dụng CounterFit.

Nhiệm vụ - thêm cảm biến vào CounterFit

Thêm cảm biến GPS vào ứng dụng CounterFit.

  1. Tạo một ứng dụng Python mới trên máy tính của bạn trong một thư mục có tên gps-sensor với một tệp duy nhất là app.py và một môi trường ảo Python, sau đó thêm các gói pip của CounterFit.

    ⚠️ Bạn có thể tham khảo hướng dẫn tạo và thiết lập dự án Python CounterFit trong bài học 1 nếu cần.

  2. Cài đặt một gói Pip bổ sung để cài đặt một shim CounterFit có thể giao tiếp với các cảm biến dựa trên UART qua kết nối nối tiếp. Đảm bảo rằng bạn đang cài đặt từ một terminal với môi trường ảo đã được kích hoạt.

    pip install counterfit-shims-serial
    
  3. Đảm bảo ứng dụng web CounterFit đang chạy.

  4. Tạo một cảm biến GPS:

    1. Trong hộp Create sensor ở khung Sensors, thả xuống hộp Sensor type và chọn UART GPS.

    2. Giữ nguyên Port/dev/ttyAMA0.

    3. Chọn nút Add để tạo cảm biến GPS trên cổng /dev/ttyAMA0.

    Cài đặt cảm biến GPS

    Cảm biến GPS sẽ được tạo và xuất hiện trong danh sách cảm biến.

    Cảm biến GPS đã được tạo

Lập trình cảm biến GPS

Thiết bị IoT ảo bây giờ có thể được lập trình để sử dụng cảm biến GPS ảo.

Nhiệm vụ - lập trình cảm biến GPS

Lập trình ứng dụng cảm biến GPS.

  1. Đảm bảo ứng dụng gps-sensor đang mở trong VS Code.

  2. Mở tệp app.py.

  3. Thêm đoạn mã sau vào đầu app.py để kết nối ứng dụng với CounterFit:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. Thêm đoạn mã sau bên dưới để nhập một số thư viện cần thiết, bao gồm thư viện cho cổng nối tiếp CounterFit:

    import time
    import counterfit_shims_serial
    
    serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
    

    Đoạn mã này nhập module serial từ gói Pip counterfit_shims_serial. Sau đó, nó kết nối với cổng nối tiếp /dev/ttyAMA0 - đây là địa chỉ của cổng nối tiếp mà cảm biến GPS ảo sử dụng cho cổng UART.

  5. Thêm đoạn mã sau bên dưới để đọc từ cổng nối tiếp và in các giá trị ra console:

    def print_gps_data(line):
        print(line.rstrip())
    
    while True:
        line = serial.readline().decode('utf-8')
    
        while len(line) > 0:
            print_gps_data(line)
            line = serial.readline().decode('utf-8')
    
        time.sleep(1)
    

    Một hàm có tên print_gps_data được định nghĩa để in dòng dữ liệu được truyền vào ra console.

    Tiếp theo, đoạn mã lặp vô hạn, đọc nhiều dòng văn bản từ cổng nối tiếp trong mỗi vòng lặp. Nó gọi hàm print_gps_data cho mỗi dòng.

    Sau khi đọc xong tất cả dữ liệu, vòng lặp sẽ ngủ 1 giây, sau đó thử lại.

  6. Chạy đoạn mã này, đảm bảo bạn đang sử dụng một terminal khác với terminal mà ứng dụng CounterFit đang chạy, để ứng dụng CounterFit vẫn tiếp tục hoạt động.

  7. Từ ứng dụng CounterFit, thay đổi giá trị của cảm biến GPS. Bạn có thể làm điều này bằng một trong các cách sau:

    • Đặt Source thành Lat/Lon, và đặt vĩ độ, kinh độ cụ thể cùng số lượng vệ tinh được sử dụng để lấy tín hiệu GPS. Giá trị này sẽ chỉ được gửi một lần, vì vậy hãy đánh dấu vào ô Repeat để dữ liệu lặp lại mỗi giây.

      Cảm biến GPS với Lat/Lon được chọn

    • Đặt Source thành NMEA và thêm một số câu NMEA vào hộp văn bản. Tất cả các giá trị này sẽ được gửi, với độ trễ 1 giây trước mỗi câu GGA (định vị) mới có thể được đọc.

      Cảm biến GPS với các câu NMEA được đặt

      Bạn có thể sử dụng công cụ như nmeagen.org để tạo các câu này bằng cách vẽ trên bản đồ. Các giá trị này sẽ chỉ được gửi một lần, vì vậy hãy đánh dấu vào ô Repeat để dữ liệu lặp lại sau mỗi giây khi tất cả đã được gửi.

    • Đặt Source thành tệp GPX, và tải lên một tệp GPX với các vị trí đường đi. Bạn có thể tải xuống các tệp GPX từ một số trang web bản đồ và đi bộ phổ biến, chẳng hạn như AllTrails. Các tệp này chứa nhiều vị trí GPS dưới dạng đường đi, và cảm biến GPS sẽ trả về mỗi vị trí mới sau mỗi giây.

      Cảm biến GPS với tệp GPX được đặt

      Các giá trị này sẽ chỉ được gửi một lần, vì vậy hãy đánh dấu vào ô Repeat để dữ liệu lặp lại sau mỗi giây khi tất cả đã được gửi.

    Sau khi bạn đã cấu hình cài đặt GPS, chọn nút Set để áp dụng các giá trị này cho cảm biến.

  8. Bạn sẽ thấy đầu ra thô từ cảm biến GPS, tương tự như sau:

    $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
    $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
    

💁 Bạn có thể tìm thấy đoạn mã này trong thư mục code-gps/virtual-device.

😀 Chương trình cảm biến GPS của bạn đã thành công!


Tuyên bố miễn trừ trách nhiệm:
Tài liệu này đã được dịch bằng dịch vụ dịch thuật AI Co-op Translator. Mặc dù chúng tôi cố gắng đảm bảo độ chính xác, xin lưu ý rằng các bản dịch tự động có thể chứa lỗi hoặc không chính xác. Tài liệu gốc bằng ngôn ngữ bản địa nên được coi là nguồn thông tin chính thức. Đối với các thông tin quan trọng, khuyến nghị sử dụng dịch vụ dịch thuật chuyên nghiệp bởi con người. Chúng tôi không chịu trách nhiệm cho bất kỳ sự hiểu lầm hoặc diễn giải sai nào phát sinh từ việc sử dụng bản dịch này.