나만의 Lora Gps 추적기 만들기

6643 단어 loraiotcloudgps
이 글은 Pycom-LoPy 마이크로컨트롤러를 사용하여 자신의 GPS 추적기를 만드는 방법을 설명한다.
또한 단일 채널 LoRa Nano 게이트웨이를 구축하는 방법도 학습합니다.
당신은 안내식의 디테일과 해석을 좋아합니까?나는 IBM Developer Europe Crowdcast channel의 기술 강연에서 영상 기록을 가지고 있다.
아래의 구조도는 우리가 설정에서 소개할 서로 다른 구성 요소를 보여 준다.
GPS 추적 장치로 사용되는 LoPy 노드를 사용하여 데이터를 LoRa Nano 게이트웨이로 전송합니다.
게이트웨이 자체는 WiFi를 통해 Things Network에 연결됩니다.
마지막으로 IBM Cloud에서 노드 Red를 실행합니다. "Things Network"에서 MQTT 메시지를 추출하여 Cloudant 데이터베이스에 저장하고 지도에 GPS 데이터 포인트를 시각화합니다.

필요한 하드웨어:
  • LoRa 노드 + 안테나(868MHz/915MHz) + 3.7V 배터리 1개
  • 안테나 포함 uBlox NMEA 직렬 GPS 모듈 1개
  • LoRa Nano 게이트웨이 + 안테나(868MHz/915MHz) 1개
  • Pycom 확장판 2개
  • 하드웨어에 대한 참고 정보는 방문https://pycom.io/products/hardware
    필요한 소프트웨어:
    "LoPy"마이크로 컨트롤러를 프로그래밍하기 위해 "Pymakr"- Atom 또는 Visual Studio 코드에 사용할 플러그인: https://pycom.io/products/supported-networks/pymakr/
    Pycom의 LoPy.io는 ESP32 마이크로 컨트롤러 기반의 다중 네트워크 하드웨어 모듈입니다.대부분의 모듈(함수 및 라이브러리)은 MicroPython에 내장되어 있습니다.

    1. LoRaWAN Nano 게이트웨이를 설정하고 Things Network에 연결


    LoRaWAN Nano 게이트웨이의 소스 코드는 다음과 같습니다. https://github.com/pycom/pycom-libraries/archive/master.zip
    다운로드 파일의 압축을 풀고 예시에서 로라완nanogateway 폴더를 찾습니다.
    Nano 게이트웨이 설정에 대한 자세한 내용은 다음을 참조하십시오.
    https://pycom.io/lopy-lorawan-nano-gateway-using-micropython-and-ttn/
    이렇게 하면 사물인터넷에서 게이트웨이를 정의하고 사용자가 있는 지역에 따라 구성 파라미터를 설정하여 코드를 메인보드에 업로드하고 사물인터넷 콘솔 내의 조작성을 검증할 수 있습니다.
    너는 사물인터넷에서 무료로 계좌를 얻을 수 있다.이것은 우리 게이트웨이의 등록점이자 우리가 LoRa GPS 추적기 노드에서 보낼 데이터 패키지의 집적점이다.

    2. GPS 추적기를 사용하여 Lora 노드 설정


    사물인터넷 시작:
    https://core-electronics.com.au/tutorials/pycom/getting-started-on-the-things-network-tutorial.html
    사물인터넷의 지침에 따라 LoPy 장치를 등록하고 활성화합니다.
    https://www.thethingsnetwork.org/docs/devices/lopy/usage.html
    OTAA(공중 활성화) 또는 ABP(개인화 활성화)를 통해 활성화할 수 있는 두 가지 방법이 있습니다.OTAA가 가장 좋은 방법이다. 물론 장치가 많지만 LoRa 나노 스위치와 작동하지 않는 것 같다.
    아래sample code는 ABP를 사용하여 활성화되며, LoRa 통신이 활성화되면 10바이트를 10개의 단독 데이터 패키지로 보냅니다.
    from network import LoRa
    import binascii
    import struct
    
    lora = LoRa(mode=LoRa.LORAWAN)
    
    dev_addr = struct.unpack(">l", binascii.unhexlify('XXXXXXX'))[0]
    nwk_swkey = binascii.unhexlify('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
    app_swkey = binascii.unhexlify('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
    # remove all the non-default channels
    for i in range(3, 16):
        lora.remove_channel(i)
    # set the 3 default channels to the same frequency
    lora.add_channel(0, frequency=config.LORA_FREQUENCY, dr_min=0, dr_max=5)
    lora.add_channel(1, frequency=config.LORA_FREQUENCY, dr_min=0, dr_max=5)
    lora.add_channel(2, frequency=config.LORA_FREQUENCY, dr_min=0, dr_max=5)
    # join a network using ABP (Activation By Personalization)
    lora.join(activation=LoRa.ABP, auth=(dev_addr, nwk_swkey, app_swkey))
    # create a LoRa socket
    s = socket.socket(socket.AF_LORA, socket.SOCK_RAW)
    # set the LoRaWAN data rate
    s.setsockopt(socket.SOL_LORA, socket.SO_DR, config.LORA_NODE_DR)
    # make the socket non-blocking
    s.setblocking(False)
    
    for i in range (10):
        pkt = b'PKT #' + bytes([i])
        print('Sending:', pkt)
        s.send(pkt)
        time.sleep(4)
        rx, port = s.recvfrom(256)
        if rx:
            print('Received: {}, on port: {}'.format(rx, port))
        time.sleep(6)
    
    이제 LoRa 노드를 구성했습니다. 패키지가 Nano 게이트웨이의 컨트롤러와 "Things Network"컨트롤러를 통해 들어가는 것을 볼 수 있을 것입니다.
    다음은 고정된 GPS 위치 데이터를 읽는 코드를 추가할 수 있습니다.
    예제 코드는 여기에서 찾을 수 있습니다: https://github.com/yvesdebeer/Lora_GPSTracker/blob/master/TTN-abp_node_GPS/main.py
    이 예에서 우리는'adafruit\u gps'라이브러리를 사용했는데 우리가 고정된 gps 위치를 가진 후에야 LoRa 데이터 패키지를 보낼 수 있다.
    이것은 매우 좋지만, 우리가 받은 데이터는 모두 바이트다!그러면 우리는 어떻게 그것을 사용할 수 있는 형식으로 변환합니까?우리는 반드시 그것을 해독해야 한다.
    Things Network - 콘솔로 이동하여 응용 프로그램을 선택합니다.다음 탭 "Payload Formats"를 선택하고 디코더를 정의합니다.그것을 보존하는 것을 잊지 마라.
    function Decoder(bytes, port) { 
      console.log(bytes)
      return {
          GPSCoordinates: String.fromCharCode.apply(null, bytes)
      };
    }
    
    이제 로라를 통해 연결된 GPS 추적기가 생겨서 데이터베이스에 저장하고 GPS 데이터를 지도에 표시하는 게 좋지 않습니까?
    이를 위해 IBM 클라우드 환경에서 Node Red를 사용하도록 하겠습니다.
    설치가 쉽고 Lite 계정을 무료로 사용할 수 있습니다.계정here을 등록할 수 있습니다.
    기본적으로 노드의 붉은 흐름은 Cloudant 데이터베이스에 저장되기 때문에 우리는 같은 데이터베이스를 사용하여 GPS 데이터를 쉽게 저장할 수 있다.
    예제 노드 Red flow: https://github.com/yvesdebeer/Lora_GPSTracker/tree/master/Node-Red
    GPS 데이터는 MQTT를 통해 Things Network에서 수집하여 Cloudant에 저장합니다.
    Things Network에서 MQTT를 통해 데이터를 가져오려면 새 액세스 키를 만들거나 생성해야 합니다.Things Network - 콘솔로 이동하여 응용 프로그램을 선택합니다.응용 프로그램의 설정 탭에서 액세스 키를 찾을 수 있습니다.생성된 키는 응용 프로그램 개요 페이지의 밑에 있습니다.
    MQTT와 Things Network의 사용법에 대한 자세한 내용은 다음을 참조하십시오. https://www.thethingsnetwork.org/docs/applications/mqtt/api.html

    결론


    이 글은 로라 통신을 사용하는 사물인터넷의 기초 지식부터 시작하도록 해야 합니다.
    만약 네가 이 모든 실제 행동을 보고 싶다면, 나는 IBM Developer Europe Crowdcast channel의 기술 강연에서 영상 기록을 제공했다
    그곳에서 나는 Lora GPS 추적기를 벨기에의 공공 Lora 통신 공급업체인'Proximus'와 어떻게 연결하는지 보여 주었다.
    Lora의 사물인터넷을 사용하는 다른 용례를 고려하고 계십니까?

    좋은 웹페이지 즐겨찾기