0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

u-blox USB-NORA-W2で始めるAWS IoT ExpressLink - Raspberry Pi pico と連携

Posted at

前回の記事では、u-bloxのモジュールをPCから操作しました。

この記事では、実際のユースケースのように、別のマイコンから利用する方法を試してみます。

IMG_8225.jpg

結線は以下のようにしています

u-blox USB-NORA-W2 Raspberry Pi pico
TX(GPIO43) UART0RX(GP1)
RX(GPIO44) UART0TX(GP0)

Raspberry Pi picoはMicroPythonが使えるようにファームウエアを書き込んでいます。

VS Codeでコーディングしていますが、MicroPicoの拡張機能を入れると試すのが楽でした。

いかがプログラムです。

from machine import UART
import json
import time

uart = UART(0, 115200)


def send_command(cmd: str):
    print(f"SEND: {cmd}")
    uart.write(f"{cmd}\r")

    recieve_result()


def recieve_result():
    time.sleep(0.5)
    rxData = bytes()
    while uart.any() > 0:
        rxData += uart.read(1)

    print(rxData.decode('utf-8'))


print("Start!")

# 
send_command("AT")

send_command("AT+CONF? Version")

send_command("AT+CONNECT")

send_command("AT+CONF Topic1=ublox/data")

for i in range(5):
    msg = {"message": f"Hello World! {i}"}
    send_command(f"AT+SEND1 " + json.dumps(msg))
    time.sleep(1)

やっていることは単純で、MQTTの接続を行った後、メッセージをpublishしています。

AWS IoT Coreのマネージメントコンソールに以下のようなメッセージが届きました。

{
  "message": "Hello World! 4"
}

こうやってみるとホストマイコンの方は、少ない実装でクラウドと接続できることが確認できたかなと思います。

MQTTにsubscribeするプログラムを書く場合に、頻繁に AT+GET で監視する必要があるかというと、ExpressLinkにはEvent Pinの仕様もあります。このPinはハードウエアのモジュールによって変わりますが、USB-NORA-W2の場合は、GPIO11に割り当てられているようです。このPinをホストマイコン側と接続することで、ホストマイコンの通知すべきイベントが発生したら、PinはHighになります。イベントキューが空になると、Lowになります。

ホストマイコンはこの信号を検出したら、どんなイベントがあるかをAT+EVENT?のコマンドで確認し、必要な処理を行うことで、イベントドリブンな実装を行うことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?