Machinistを試してみる -超音波距離センサデータアップロードプログラムのデーモン化-
前回のMachinistに超音波距離センサデータアップロードするプログラムをデーモン化します。
参考サイト
デーモン化の設定
まず、デーモン化するプログラムの設定ファイルを作成します。
/usr/lib/systemd/system/python_deamon.serviceに以下の内容を記述する
次に以下のコマンドを実行する
デーモンをスタートするコマンド
systemctl start python_deamon.service
デーモンのステータスを確認するコマンド
systemctl status python_deamon.service
ラズパイ起動時にデーモンを実行するコマンド
systemctl enable python_deamon.service
ラズパイを再起動してMachinist上にデータがアップロードされていることを確認できればOK
Machinistを試してみる -ラズパイを用いた超音波距離センサデータのアップロード-
今回はラズパイを用いて超音波距離センサのデータをMachinistにアップロードするプログラムを作成します。
実行環境
- Raspberry Pi 4 Model B
- python 2.7.16
- 超音波距離センサ:A02YYUW
- シリアル変換モジュール:Rasbee CP-2102
超音波距離センサ
- モデル:DYP-A02YY-V1.0
- 電圧: 5V
- 測定範囲:3cm-450cm
- 通信:UART
- 測定精度:±(1 + S * 0.5%)/±(1+S*0.3%)CM(Sは測定距離)
www.mouser.jp
ラズパイと超音波距離センサとの接続方法
ラズパイと超音波距離センサはUARTで通信させます。今回はシリアル変換モジュールを利用します。
超音波距離センサのピンアサインは以下のサイトから確認
1:VCC Power Input
2:GND Ground
3:RX Processed Value/Real-time Value Output Selection
4:TX UART Output
実際にラズパイと超音波距離センサを接続すると以下のようになる
シリアル変換モジュール (ジャンプワイヤーの色)
5v :赤
GND:黒
RX:橙
TX:黄
超音波距離センサ (ジャンプワイヤーの色)
5v :赤
GND:黒
RX:黄色
TX:白
センサデータ取得とMachinistへのデータアップロード
超音波距離センサのデータを取得するため以下のリポジトリのコードを使用する
github.com
また、Machinistへデータアップロードするため前回の記事の内容を流用する
Machinistを試してみる -pythonでデータをアップロード- - IT×農家の長男
ホームディレクトリまたは作業用ディレクトリで以下のコマンドを実行する
git clone https://github.com/DFRobot/DFRobot_RaspberryPi_A02YYUW.git
cd DFRobot_RaspberryPi_A02YYUW/raspberry
touch upload_distance.py
以下のソースコードをコピーし、upload_distance.pyにペーストする
このプログラムは1ループ毎にデータの取得を行い、1分毎に直近の取得データをMachinistにアップロードするもの
プログラムの実行には以下のコマンドを入力する
python upload_distance.py
データの確認
10cmの位置に箱を設置して、データを計測した。
プログラム実行結果
平均誤差2mmの結果となった
Machinistを試してみる -pythonでデータをアップロード-
はじめに
IoTデータの可視化サービスについてネットで検索していたところ、Machinist(マシニスト)が無料で利用できるようです。
そこで今回はpythonを利用してMachinistにダミーのデータをアップロードし、可視化されることを確認してみます。
手順
1. まずはこちらのリンクにアクセス
2. アカウントの登録を行う
3. APIキーの確認
アカウント登録が完了したら、サイトにログインし、アカウント設定をクリック
APIキーはデータアップロード時に使用するのでメモする
4. ホームディレクトリ直下に./API_KEYSディレクトリを作成し、API_KEYをjson形式で保存する
APIキーを第3者に知られないようにするため、別の場所にAPIキーを保存し、ソースコードから読み込むようにする
mkdir ~/.API_KEYS
cd ~/.API_KEYS
touch machinist.json
5. サンプルコードを作成
ユーザマニュアルに記載されているデータをアップロードするプログラムを作成
任意の場所にpyhonのファイルを作成
mkdir ~/workspace
cd ~/workspace
touch post_dummy_sensor_data.py
以下pyhonのサンプルプログラム
このプログラムでは
を実行します
プログラムの実行
python post_dummy_sensor_data.py
実行結果が以下の通りになれば、データのアップロードが成功。
data posted. status: 200
check status? 200->ok! 4**->bad!
Machinistのページに移動し、以下のようなグラフが表示されればOK!
VMWareでgazeboが起動できない時の対処法
はじめに
VMware上でgazeboが起動できなかったので、その対処法のメモ。
環境構築
実行環境
問題
ROSのインストール作業完了後、試しにgazeboを起動しようとしたら以下のようなエラーがかえってきた。
gazebo
VMware: vmw_ioctl_command error Invalid argument.
解決法
環境変数を設定し、OpenGLのサポートを無効することによって解決する。
以下のコマンドを入力する。
export SVGA_VGPU10=0
以降、設定を維持したい場合は以下のように.bashrcにコマンドを記述。
echo "export SVGA_VGPU10=0" >> ~/.bashrc
力センサデータをROSノードにしてみた
はじめに
以前の記事で力センサデータをArduino UNOのシリアルモニタ上で表示させました。 今回はセンサデータをROSのノードにしてターミナルに表示してみたいと思います。
rosserial_arduino
最近知ったのですが、 rosserial_arduinoのパッケージをインストールすればArduinoをROSノードにすることができるようです。
公式のROS Wikiにパッケージのチュートリアルがあるのでこれを参考にすすめていきます。
rosserial_arduino/Tutorials - ROS Wiki実行環境
まずはパッケージのインストールから。
$ sudo apt-get install ros-kinetic-rosserial ros-kinetic-rosserial-arduino
次にgithubからrosserialのパッケージをビルド。
$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-drivers/rosserial.git
$ cd ~/catkin_ws
$ catkin_make
Arduinoで使用するros_libの作成。 もし、ros_libが存在している場合はライブラリを削除する必要がある。
$ cd Arduinodir/libraries
$ rm -rf ros_lib
$ rosrun rosserial_arduino make_libraries.py .
おわりに
複数のセンサを扱うときはトピック名を変えれば大丈夫です。
ラズパイで監視カメラ作成 -その2-
はじめに
今回はLINEとの連携についてまとめます。
blue-black.inkLINE Notifyの利用
LINE Notifyについては以下のサイトで説明されています。
LINE Notifyは、メッセージ アプリ「LINE」が提供する外部サービスとの通知連携サービスです。
LINE意外の アプリやWebサービスとAPIで連携し、各サービスにきた通知をLINEのメッセージで送信することができます。
出典元: https://ferret-plus.com/5355
セッティング
以下のURLを参考に進めていきます。四流女子大学生がRaspberry Piに手を出してみた[監視カメラ編] - Qiita
四流女子大学生がRaspberry Piに手を出してみた[LINE通知編] - Qiita
はじめにトークンを取得します。トークンは忘れないようにメモをしましょう。
次にラズパイ上に監視カメラ用のディレクトリを作成し、ソースコードを追加します。
$ mkdir ~/motion && cd motion
$ cd motion
$ sudo vi line_notify.py
motionの設定ファイルを以下のように書き換えます。
$ sudo vi /etc/motion/motion.conf
以下に変更
# 100行目:取得画像のサイズ
width 640
# 103行目:取得画像のサイズ
height 480
# 196行目:画像取得の閾値
threshold 8000
# 273行目:画像ファイルの出力を無効
output_pictures on
# 450行目:画像を保存するディレクトリ
target_dir /home/pi/motion
# 468行目:画像のファイル名
picture_filename %Y%m%d%H%M%S
# 647行目:画像保存時のコマンド
on_picture_save python3 /home/pi/motion/line_notify.py %f
動作確認
$ cd ~/motion && sudo motion -c /etc/motion/motion.conf &
LINE上に画像が送られればOK!(偶然に猫が通過したみたいです。)
ctr + c で終了しても動作は続きます。
終わりに
動作検出が行われるとすぐにLINE通知が来てしまうので、次は通知周りを改善します。
ラズパイで監視カメラ作成 -その1-
はじめに
今回はラズパイとUSBカメラを使って監視カメラをつくっていきます。
motionというライブラリを使うことで、カメラ画像のストリーミングが見れるそうです。
raspberry pi motion で動体検知する方法 - アイシステムBLOGmotionの導入
環境
- Raspberry Pi : stretch
- python 3.5.3
まずはmotionのインストール
$ sudo apt install motion
デーモンの設定
$ cd /etc/default
$ sudo vi motion
設定ファイルの修正
$ sudo vi /etc/motion/motion.conf
以下に変更
# 11行目:デーモンの有効化
daemon on
# 100行目:取得画像のサイズ
width 320
# 103行目:取得画像のサイズ
height 240
# 107行目:フレームレート
framerate 2
# 273行目:画像ファイルの出力を無効
output_pictures off
# 293行目:映像ファイルの出力を無効
ffmpeg_output_movies off
# 504行目:外部からストリームへのアクセスを許可
stream_localhost off
動作確認
以下のコマンドを入力して実行
$ sudo motion -c /etc/motion/motion.conf
ブラウザ上で以下のような画像が取得できればOK。終了は以下のコマンドを入力して実行
$ sudo service motion stop
おわりに
次はLINEかslackで連携させていきたいと思います。