こんにちは!今日は、ATOM LiteとStampCatMを使ってAWS IoT CoreにSSL接続する方法についてご紹介します。IoTデバイスをインターネットに接続してクラウド上でデータをやり取りする技術は、近年ますます注目を集めています。その中でも、セキュアな通信を確保するためにSSL(Secure Sockets Layer)を利用することが非常に重要です。今回は、ATOM Liteという小型デバイスと、便利なStampCatMを使って、AWS IoT CoreとSSLで安全に接続する具体的な手順を見ていきます。
ATOM Liteとは?
まず、ATOM Liteは、非常にコンパクトなIoTデバイスです。ESP32というマイクロコントローラをベースにしており、Wi-FiやBluetoothの接続機能を備えています。これを使えば、簡単に様々なセンサーデバイスやアクチュエーターと通信できるのです。
StampCatMとは?
StampCatMは、IoT向けのセルラー通信モジュールです。LTE Cat-M1という省電力で通信できる技術を採用しており、特にバッテリー駆動のIoTデバイスに適しています。このモジュールを使えば、Wi-Fiが使えない場所でも安定した通信が可能です。
では、早速これらを使ってAWS IoT Coreに接続してみましょう。
1. AWS IoT Coreのセットアップ
まず、AWS IoT Coreの設定を行います。AWS IoT Coreは、デバイスがセキュアにデータをやり取りできるクラウドサービスで、AWSの中でも特にIoTデバイス向けのプラットフォームです。
AWSコンソールでIoT Coreにアクセス
AWSマネジメントコンソールにログインし、「IoT Core」を検索します。新しいデバイスの作成
「デバイスの作成」を選び、新しいThing(デバイス)を作成します。Thingの名前は「MyAtomLite」にしましょう。証明書の生成
Thingを作成する過程で、デバイス証明書を生成します。この証明書は、デバイスがAWS IoT Coreにセキュアに接続するために必要なものです。証明書ファイルとプライベートキーをダウンロードしておきます。ポリシーの設定
証明書に対して適切なポリシーをアタッチします。たとえば、以下のようなポリシーを作成します:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:*", "Resource": "*" } ] }
これでAWS IoT Core側の設定は完了です。
2. ATOM Liteのプログラミング
次に、ATOM Liteを使ってAWS IoT Coreに接続します。ここでは、Micropythonを使用してプログラムを実装します。ATOM LiteにMicropythonをインストールし、以下のコードをデバイスにアップロードします。
import network import ussl import usocket from machine import Pin import time import ubinascii from umqtt.simple import MQTTClient # Wi-Fi設定 SSID = "YOUR_SSID" PASSWORD = "YOUR_PASSWORD" # AWS IoT Coreの設定 AWS_HOST = "YOUR_AWS_IOT_ENDPOINT" CLIENT_ID = "MyAtomLite" TOPIC = "test/topic" CERT_FILE = "/cert/aws_cert.pem" KEY_FILE = "/cert/private_key.pem" CA_FILE = "/cert/AmazonRootCA1.pem" # Wi-Fiに接続 def connect_to_wifi(): wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(SSID, PASSWORD) while not wlan.isconnected(): print("Wi-Fiに接続中...") time.sleep(1) print("Wi-Fi接続完了:", wlan.ifconfig()) # MQTTメッセージ送信 def send_message(client, topic, message): client.publish(topic, message) print(f"メッセージを送信しました: {message}") # メインプログラム def main(): connect_to_wifi() # SSL証明書とキーをロード ssl_params = { "keyfile": KEY_FILE, "certfile": CERT_FILE, "ca_certs": CA_FILE } # MQTTクライアントを作成 client = MQTTClient(CLIENT_ID, AWS_HOST, port=8883, ssl=True, ssl_params=ssl_params) client.connect() # メッセージを送信 message = "Hello from ATOM Lite!" send_message(client, TOPIC, message) client.disconnect() if __name__ == "__main__": main()
コードの説明
- Wi-Fi接続: ATOM LiteはWi-Fi経由でAWS IoT Coreに接続します。ここで、SSIDとパスワードを入力することで、ネットワークに接続します。
- SSL証明書: 事前にダウンロードした証明書ファイルを使用して、セキュアな通信を行います。
- MQTT接続: MQTTは軽量なメッセージプロトコルで、IoTデバイスがデータを送受信するのに最適です。このコードでは、AWS IoT Coreに「Hello from ATOM Lite!」というメッセージを送信します。
3. StampCatMでの接続
StampCatMを使う場合、Wi-Fiの代わりにセルラー通信を利用します。まずは、通信モジュールのセットアップを行い、AWS IoT Coreに接続します。
import time import ssl import usocket from mqtt import MQTTClient from machine import UART # StampCatMのUART接続設定 uart = UART(1, baudrate=9600, tx=17, rx=16) # AWS IoT Coreの設定 AWS_HOST = "YOUR_AWS_IOT_ENDPOINT" CLIENT_ID = "MyStampCatM" TOPIC = "test/topic" # セルラー通信の設定 def connect_to_network(): uart.write('AT+CSQ\r') time.sleep(1) print(uart.read()) # MQTTメッセージ送信 def send_message(client, topic, message): client.publish(topic, message) print(f"メッセージを送信しました: {message}") # メインプログラム def main(): connect_to_network() # MQTTクライアントを作成 client = MQTTClient(CLIENT_ID, AWS_HOST, port=8883, ssl=True) client.connect() # メッセージを送信 message = "Hello from StampCatM!" send_message(client, TOPIC, message) client.disconnect() if __name__ == "__main__": main()
4. 実行結果
実際にこのプログラムを実行すると、AWS IoT Coreのコンソール上でデバイスから送信されたメッセージを確認できます。
Wi-Fi接続完了: ('192.168.0.10', '255.255.255.0', '192.168.0.1', '8.8.8.8') メッセージを送信しました: Hello from ATOM Lite!
また、StampCatMの場合も同様にメッセージが送信されます。
メッセージを送信しました: Hello from StampCatM!
5. 結論
今回は、ATOM LiteとStampCatMを使用して、AWS IoT CoreにSSLでセキュアに接続する方法を紹介しました。これで、Wi-Fiやセルラー通信を使って、安全にIoTデバイスとクラウドのやり取りができるようになります。特に、IoTデバイスのセキュリティを高めるためにSSLを正しく設定することが重要です。皆さんも、ぜひ試してみてくださいね!