このレッスンでは、MQTTプロトコルでサーボモーターをリモート制御する方法を紹介します。
ハードウェア:
ソフトウェア:
ここではA0をアナログ入力ピンとして使っています。
NodeMCUをUSBケーブルでパソコンに接続し、Arduino IDE(Version1.6.4+)でスケッチを開きます:
以下の操作で、WiFiとMQTTの設定に合わせてコードを編集します:
1)WiFiの設定:
const char* ssid = “your_hotspot_ssid”;
const char* password = “your_hotspot_password”;
上記のコード行を探し、そこに自分のssidとパスワードを記述します。
2)MQTTサーバーアドレスの設定
const char* mqtt_server = “broker.mqtt-dashboard.com”;
上記のmqtt_serverの値には、自分のMQTTブローカーのURLやIPアドレスを使うことができます。また、”broker.mqtt-dashboard.com”、”iot.eclipse.org “などの有名なフリーのMQTTサーバーを使用してプロジェクトをテストすることもできます。
3)MQTTクライアント設定
MQTTブローカーがclientID、ユーザー名、パスワード認証を必要とする場合は、次のように変更する必要があります。
if (client.connect(clientId.c_str()))
to
if (client.connect(clientId,userName,passWord)) //put your clientId/userName/passWord here
そうでなければ、デフォルトのままにしておく。
その後、以下のように対応するボード タイプとポート タイプを選択し、スケッチを NodeMCU にアップロードします。
MQTTクライアントの設定方法はこちらをご覧ください。
トピックの設定
アップロードが完了し、無線LANホットスポット名とパスワードの設定がOKで、MQTTブローカーが接続されている場合、シリアルモニターを開くと以下の結果が表示されます:
NodeMCUのシリアルポートにIPアドレスと接続状況が表示され、nodemcuサブスクリプションのメッセージが表示されます。
ここで注意しなければならないのは、アップロード後、サーボモーターが90度回転してしまうので、0度にしておくことである:
1. MQTTクライアントを開き、MQTTブローカーに接続されていることを確認する。
2. “Payload “フレームに “0 “を入力し,ペイロードのタイプとして “Decimal Array “を選択し,このデータをパブリッシュする。
上記の操作が完了すると、サーボモータが0°に回転し、シリアルモニタに”[OsoyooCommand: Rotation angle is: 0 °]”と出力されます。
あとは、MQTTプロトコルで0~180の任意の整数を発行することで、サーボを制御することができます。
SG90マイクロサーボは180度サーボモーターですので、回転角度は180度以上にはなりません。
DownLoad Url osoyoo.com