This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 1 year has passed since last update.

Arduino→Python→IoTサーバー

Last updated at Posted at 2022-01-28

export.png

1.準備

1-1.配線

Arduinoで明るさを測定の配線と同じように配線してください。

1-2.PCと接続

ArduinoとパソコンをUSBケーブルデつないでください。

2.Arduino→PC

下記のプログラムをArduinoに書き込んでください。Arduinoで明るさを測定すると時に使ったプログラムと同じですね。
要するにシリアル通信で送信したデータを
・シリアルモニタで表示
・パソコンで受け取るか
だけの問題ですので、Arduino側のプログラムは変わりません。

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  int val=0;
  val=analogRead(1);
  Serial.println(val);
  delay(5000);//5000ms=5秒 ごとに送信。【注意】サーバーに負荷がかかるので5000より小さい値は設定しないでください。
//実装する際は可能な限り大きな数字にしてください。
}

3.PC→IoTサーバー

ここからdfLinkのpythonファイルをダウンロードしてください。

3-1.zipファイルを解凍

zipファイルを解凍後、フォルダ名を「iot_test」など適切な名前に変更しましょう。
※Windowsの注意
Windowsの場合はzipファイルをダブルクリックして、中にあるdfLink_sampleというフォルダだけをデスクトップなどに移動させてから名前の変更を行ってください。

3-2.VSCodeでフォルダを開く

フォルダごとVSCodeで開きましょう。
開き方がわかならない方は
ブートキャンプでやったVSCodeでフォルダを開く動画を参考にしてください。

4.Python側のプログラム

4-1.main.pyを書き換え

main.pyに書かれている内容を全て消去してから、下記のプログラムをmain.pyにコピペしましょう。

main.py
import dfLink

#端末設定---------------------
#端末keyを指定してください。
pkey=''
#-------------------------------------------

#シリアルポートを入力-------------------------
serial_port=''
#-------------------------------------------
#Arduinoとのシリアル通信設定-------------------
my_arduino = dfLink.set_serial(serial_port,9600)
#-------------------------------------------

#while Trueは無限ループ#----------------------
while True:
    # Arduinoからreadlineコマンドでデータを取得し、data_from_arduinoという変数に格納
    data_from_arduino=my_arduino.readline()
    #stripコマンドで、data_from_arduinoの中の余計な文字を削除
    #さらにintで文字で送られてきたデータをint型に変換
    data=int(data_from_arduino.strip())
    print(data)

    # データの設定--------------------------------
    int_data = data #Arduinoから受け取った値をここでint_dataにいれる
    float_data = ""
    txt_data = ""
    # -------------------------------------------

    # データの送信---------------------------------
    # 整数データ:int_data
    # 実数データ(小数を含むデータ):float_data
    # テキストデータ:txt_data
    ret = dfLink.sendData_To_dfLink(int_data=int_data,float_data=float_data,text_data=txt_data,pkey=pkey)
    print(ret)
    # -------------------------------------------
#-------------------------------------------

4-2.serial_serch.pyでシリアルポートを検索

  1. serial_serch.pyを実行し、Arduinoと繋がっているシリアルポートの名前を調べまます。
  2. 複数表示された場合などはArduino IDEからどのシリアルポートを使っているかしらべて、そのシリアルポート名をコピーします。windowsの場合、COM3などCOM数字の表示になっています。

スクリーンショット 2022-01-31 9.36.21.png

4-3.main.pyを変更

4-5でコピペしたシリアルポートをmain.pyの中のserial_portという変数にコピーしたシリアルポート名を代入します。

例(macの場合):名前はmacでも各々異なります。

serial_port='/dev/tty.usbmodem14301'

4-4.端末keyの設定

pkeyという変数には
dfLinkのHPで[サービスの管理]→[サービス選択]で「monitor」を選択し、[各サービスの管理]で表示されるページで[登録済み管理オブジェクト]の一覧にある、testSensorの端末keyを入力してください。

下記のような感じです。

#端末keyを指定してください。
pkey='Bbbbbbbbbbbbbbbbbbbb'

5.実行

main.pyを実行して、Arduinoの明るさセンサーの値がパソコンに表示されるか確認しましょう。
下記のように何かしらの値が表示されれば、Arduinoで読み取った値がシリアル通信でパソコンに送信されています。

5-1.pythonの確認

下記のように何かしらの値とOKが交互に表示されれば、おそらく正常に動いています。
スクリーンショット 2022-01-31 11.18.49.png

3-2.IoTサーバーの確認

ここを参考にサーバーに蓄積されているデータを見ていましょう。

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