アマゾンで購入したRasperryPi周辺機器

ラズベリーパイのスマート冷蔵庫の記事をせっせと書く傍らに今回の記事では最近Amazonでラズパイのために買った周辺機器を紹介します.

 一つ目は電源ケーブル(Volutz micro usb ケーブル 2パック(2m×2))です.前々から少し長めの電源ケーブルを買おう買おうとしていたのですが,今回の買いました.タイムセールで少し安くなっていたのでついね(笑).

 冷蔵庫からケーブルを出すため今回2mタイプのものを購入しています.用途によっては短いものでもいいかもれませんね.2mが2本入っていますが,2本共に少しデザインが異なります.ケーブルはかなりしっかりとした作りで,ケーブルの端子の部分が太く持ちやすいため,ケーブルを抜き差しが楽にできます.

 

 パッケージになります

f:id:raspberry765:20170722212515j:plain

 

パッケージの中身

f:id:raspberry765:20170722212450p:plain

 

ラズパイ3に差すとこんな感じ!

 

f:id:raspberry765:20170723000609j:plain

 

外すとときも従来のケーブルに比べて楽なような気がします.

 

2つ目に購入したのはmicroSDカード(Samsung microSDHCカード 32GB EVO Plus Class10)です.最近はいろいろなプログラムを作成したり,ソフトをいれたりするためいつかsdが壊れたときが怖い!!と思いバックアップ用のsdを購入しました.なお,バックアップにはラズパイに最初から入っているSD CARD Copierを使用しました.

 使い方については下の参考記事をお読みください.簡単にバックアップがとれます.このバックアップをするためにはsdカードを読み込むusbのsdカードリーダーが必要になります.参考サイトの通りにバックアップをとりました.定期的にバックアップを取らなければ!!

 

BackupPi: Raspberry Pi のバックアップとリストアを Raspberry Pi 自身で行う方法 - Qiita

 記事をお読みいただきありがとうございました.冷蔵庫の記事は現在作成中なのでもうしばらくお待ちください!!がんばらねば!!

スマート冷蔵庫開発2:サーボモーターとカメラ撮影

今回の記事ではサーボモータに2軸のサーボモータによる回転とwebカメラを用いることによって冷蔵庫全体を撮影できるようにしたシステムの説明をします.

使用部品 and 製品

カメラマウントの組み立て方については以下の記事を参考にしました↓.

 

SG90サーボ用の2軸カメラマウントが到着: EeePCの軌跡

SG90サーボ用 2軸 カメラマウント 2軸アングル FPV 空撮にも (マウント+2個SG90)
 

今回の広角カメラを使用した理由は広角カメラを縦方向に使用することによって冷蔵庫の内部を出来るだけ広く撮影をするために今回使用しました.普通のwebカメラでもでも動作しますが一部分しか撮影できませんでした.

 

 

サーボモータとカメラマウントとwebカメラを組み合わせると下記のような写真となります.すでに完成されたシステムなのでパワーLEDがついて状態の写真になっています.サーボモータとカメラマウントとの間に隙間があり,ぐらついたため,薄いプラスチックの板を凸で切り取り隙間を埋めています.またwebカメラは台座を取り外して使用します.運良く,カメラマウントにきれいにはまりました.

f:id:raspberry765:20170719165150j:plain

以下の2つの製品はPiZeroでUSB機器を動かすのに使用しました.Pi3で行う場合はUSBポートが存在するため要りません

 

 

私は下向きのケーブルがシステムを作るうえで便利であったため使用しました.写真でみると下記の写真のような感じになります.USBの出力が下方向にくるのでシステム回路が横方向に広がることを防ぐことができます.ただちょっと長いです.そのため,牛乳パックに実装するときはコードをまとめましたが,あまりコードの扱い方としていいものではありませんので,なにかもっといい変換端子がないか模索中です.

f:id:raspberry765:20170718221426j:plain

回路図

コンデンサを挿入した理由は,参考記事にあるようにサーボモーターの動作時(特に始動時)に大量に電流が流れることがあるため、その時の電圧降下による不具合を防止するためだそうです.コンデンサの容量は手元にあったやつを使用しました.サーボモーターの電源電圧5Vはラズパイの5Vからとっています.

参考記事↓

Arduinoで学ぶ基礎からのモーター制御:基礎からのマイコンモーター制御(6):PWMを使ったサーボモーターの制御 (2/3) - MONOist(モノイスト)

 

f:id:raspberry765:20170719174817j:plain

作成プログラム

作成プログラムですがここでのサンプルプログラムは前回の光検出回路のプログラムを使用して明るさが1500以下になったら撮影をサーボモーターを回転させながら撮影するというプログラムを説明します.作成したプログラムでは重要な要素はコマンドプロントによる撮影とpigpioによるpwm制御です.

 

  • 写真の撮影

  pythonを用いて写真の撮影を撮影する方法は調べれば多くあると思います.しかし

ながら私は最初に撮影した方法がfswebcamというコマンドプロント(cmd)を使用して撮影したため,cmdをpythonで実行する方法はないかと探しました.調べていく中でsubprocessというライブラリを使用すれば良いということが分かりこのスマート冷蔵庫ではfswebcamをsubprocessで呼び出して撮影しています,subprocess詳しい説明については以下を参考にしてください.さらにfswebcamについてのインストール方法についても以下を参考にしてください.

  

subprocess – プロセスを生成して連携する - Python Module of the Week

 

fswebcamの参考記事↓

https://www.raspberrypi.org/documentation/usage/webcams/

fswebcamを使う際に多くの引数を使用しているためその解説をします.

sudo fswebcam -F 10 --no-timestamp --no-banner --rotate 90 /home/pi/blog/test1.jpg

-F 10は撮影するフレーム数(露光時間)を意味します.数値が小さいほどぶれないそうです.

--no-timestamp --no-bannerはfswebcamは通常は撮影すると写真下に時間とバーが表示されます.しかしながらパノラマ写真をつくるときこの情報はいらないため,消去する引数となっています

--rotate 90は画像を90度回転(時計回り)させます.これはもともと横向きで撮影するカメラを縦にして撮影しているため,撮影が終わった段階で90度回転してあげることによって元の状態に戻してあげています.

 

   pwm制御にも様々な方法があります.しかしながら前回の記事で紹介した本でも書かれているのですがラズパイの標準のpwmでは精度が悪いため,サーボモータが小刻みにプルプルと振動してしまい撮影に支障がでてしまいます.本ではwiringPiを用いた高精度なpwm信号を使用していますが,スマート冷蔵庫の開発ではpigpioを用いてpwm制御をしました.以下の理由がpigpioを使う理由になります.

 

  • 高精度のPWMの出力ピンが多い!(32本)

WiringPiはpwmの出力pinが2本しかないため,回路設計の柔軟性がありません.

  • 使い方がシンプル!

基本的な高精度pwmを出力するのに以下の2行で終わりです

pi = pigpio.pi()

pi.set_servo_pulsewidth(ピン番号, pwm_width)

  • 自動実行(rc.local)の不具合がwiringPiであった

これが一番の大きな要因です.実は開発当初はwiringPiでサーボモータの制御をやっていたのですが,通常通りにプログラムを実行すると普通に動いていました.しかしながらrc.localで自動実行するようにpythonのプログラムを書いたとこサーボモータが回転しなかったり,途中で停止したりなどの不具合が多発しました.プログラムの自動実行の方法の変更とか調べてみてやってみたのですがうまくいかなかったのでpigpioを使用しています.

  • WiringPiによるpwmの停止のさせ方が分からない

撮影が終わっても永遠にpwm信号を出力しっぱなしであるため,WiringPiのgpioピンの開放プログラムが分かればいいのですが,私の知識不足でできなかっため,pigpioを使用しています.

 

また以下の記事はpigpioの優秀な点を分かりやすくまとめてあってよい参考ブログです.

Raspberry PiのGPIO制御の決定版 pigpio を試す - karaage. [からあげ]

 またpwmの制御についてお世話になった記事です

pigpioでサーボモーターを動かす。 – Blue-black.ink

 

撮影プログラムは前回の光検出回路にif文で条件を加えて検出した光が1500以下になったらサーボモータを回転させ撮影するようなプログラムとなっています.

if data < 1500:
  for pwm_width in range(1350,1700,150):
  print(pwm_width)
  sleep(0.5)
  pi.set_servo_pulsewidth(pin_az, pwm_width)
   

pwm_widthについては上記の参考記事でだいたい1500がサーボの角度中央のところにくるとかかれていたため,1500を中心に1350と1650の位置にカメラが回転するようにしました.

そしてsubprocess

subprocess.call(camera,shell = True)

で撮影をするcmdを呼び出します

sleep(0.5) #このsleepがないとサーボがしっかり動かない

sleepをしないとサーボが回転する時間がなく,回転しきれないままで次の命令にいってしまうため,sleepを入れています,

また,撮影する写真の名前が重複しないように名前を変更しています

count = count +1

camera = camera.replace('test'+str(count-1),'test'+str(count))

 

 

 

gist.github.com

 以上がサーボモータとカメラの連携による解説になります.プログラムや回路などまだまだ改善すべき所や非効率な部分があると思います.多分,間違っているところとかもあるかもしれません.随時記事の内容を見直し更新していきたいと思います.最後までお読みいただきありがとうございました!

スマート冷蔵庫開発1:光検出回路

 

今回の記事ではスマート冷蔵庫の開発に必要な光検出回路とそのプログラムについてです.最初に申し上げますが,今作成した回路とプログラムは以下のpp.129-152を参考に作成したものです.他の回路例やプログラムも非常に分かりやすい本なのでRaspberryPiの参考書としてとてもおすすめです.

 スマート冷蔵庫の冷蔵庫内部を撮影するプログラムは冷蔵庫の扉が開いたことを認識し,そして閉じたことが確認されると撮影が開始されるようにしました.

f:id:raspberry765:20170718012513j:plain

構成部品

  •  MCP3208
  • 抵抗10kΩ
  • cdsセル

回路図(配線図)

 

f:id:raspberry765:20170718012638p:plain

作成プログラム

スマート冷蔵庫のプログラムは全てPythonで書かれています.プログラムの詳しい解説については現在追加記事を作成中です,

 

gistcd59a5ed035c792374081783367f2e64

 

 動作確認

何もしないと取得できるデータは3000以上が検出されますが,手でcdsを覆うと1500以下になります.

data = read(0, sclk, mosi, miso, ce0) #ドアが開いたことを確認する光データを取得

の後にifを使用して1500以下であればなどの条件をつければ暗くなったときにのみほかの動作をするプログラムに書き換えることができます.

f:id:raspberry765:20170718011349p:plain

今回は光検出のプログラムの記事を書いてみました.ネット調べてみるとラズパイとcdsを用いた回路は沢山例があるのでぜひ調べてみてください.多分,ラズパイに詳しい人はこのような電子回路の記事はそれほど面白い記事ではないかもしれません...そのため,追加記事として,PythonのプログラムによるADコンバータとのやり取りの流れをDataシートを踏まえて解説する記事を作りたいと思います!.スマート冷蔵庫の開発で一番おもしろい記事はサーボモータとカメラの連携やパノラマ写真の作成などの記事かもしれませんね.ブログを継続できるようにがんばりたいと思います!読んでいただきありがとうございました.

スマート冷蔵庫をRaspberry Piで作ってみた

今回,冷蔵庫の中身をいつでも見ることの出来るシステムをRaspberry PiとwebCameraを用いて開発しました.

作ろうと思ったきっかけとしてはよく買い物をしていると冷蔵庫に何が入っていたのかを忘れてしまい,買い忘れや同じものを買ってしまうことが多かったためです(笑).今回の記事では簡単にシステムの構成概要と動作テストについてです.随時システムのプログラム(Gitにアップ予定)や電子回路について解説した詳しい記事を書きたいと思います.

まず以下の部品と製品がシステム構成に使用したものです.

部品リスト

ざっとこんな感じです.あと光検出回路などで電子回路でADコンバーターなどの電子部品をいくつか使用しますが今回は省略します.私は開発はほとんどRaspberry Pi3で開発を行い,実装をPizero Wで行いました.やっぱりPizeroで開発を行うと動作が重くストレスになるためです.また毎回HDMIをつないでラズパイを起動させるのもストレスなため,TeamViewerを使用してました.TeamViewerの便利さについては過去の記事を参考ください.

 次に開発したシステムの動作フローになります

 

f:id:raspberry765:20170715133905j:plain

  1. 光検出1                                まず冷蔵庫の扉が開いたときの明るい光を検出し,冷蔵庫の写真を撮る準備をします.このようなシステムにした理由としては冷蔵庫の中身が変化するのは冷蔵庫の扉が開いたときであるためこのようなシステムにしています.また,光検出はADコンバーターcdsを用いた回路です.この回路については後日他の記事で解説したいと思います.
  2. 光検出2                                光検出2では冷蔵庫が閉じた状態である暗い光を検出します.この光検出2によって冷蔵庫が開いているときに誤って撮影が行われないようにします.
  3. サーボモーター回転と撮影                        冷蔵庫が閉じたことを光検出2で確認されれば冷蔵庫の中身を撮影開始します.冷蔵庫の中身は広いのでサーボモーターでカメラを回転させながら任意の回数を撮影します.また2軸のカメラマウントを使用しているため,上下左右の写真を撮ることによって冷蔵庫の中身全体を撮影できるようにしています.また,撮影時に冷蔵庫の中は暗いためパワーLEDを点灯させます.(ここの処理についても後日記事にします)
  4. パノラマ写真作成(画像処理)                      3で撮影した複数の写真を一枚にするパノラマ画像処理を行います.この処理によって冷蔵庫の中身を一枚の写真で見れるようにします.(ここの処理についても後日記事にします)
  5. メールに写真を添付してスマホに送信                   写真をメールに添付し,パソコンやスマホで見れるようにすることによって外出先でも冷蔵庫の中身が確認できる!

 システムの実機写真

 本当は外装にもこだわりたかったのですが,良いアイデアが浮かばなかったため,今回牛乳パックで作ってみました2軸のサーボモーターによって上下,左右方向にカメラを動かし,写真を撮影します.

f:id:raspberry765:20170715135854j:plain

f:id:raspberry765:20170715135845j:plain

撮影した写真

サーボモーターで回転させて撮影した写真をパノラマ合成で一つにする.Open CVを利用

f:id:raspberry765:20170715142809j:plain

実際の冷蔵庫の中をスマホで撮影した写真↓今回システムで撮影した箇所を一部ですがサーボモータで全体を撮影すれば十分冷蔵庫の中を確認できる考えています.

f:id:raspberry765:20170715143738j:plain

 

f:id:raspberry765:20170715145954j:plain

上の画像がgmailに送信された冷蔵庫の写真になります.今後の方針としてはたまに不具合があるためプログラムの見直しを行います.また,写真からでは中身が分からない牛乳パックの中身とかについては重みセンサーなどを用いて中身が分かるようになればいいなと思います.さらに外観にもこだわり,もっと頑丈なものにしたいと思います.読んでいただきありがとうございました.最近というかブログをはじめてからまったく更新をしていなかったで,これを機会にまめに書いていこうと思います!

Raspberrypi便利ツール(xrdp, TeamViewerm,matchbox-keyboard)

 

今日は僕がいつも利用しているraspberrypiでモノを開発しているときに利用している便利ツールについて書いてみたいと思います.

 

 

一つ目リモートデスクトップ(xrdp)

インストール方法は以下のコマンドを実行して下さい

  1. sudo apt-get update
  2. sudo apt-get install xrdp 

日本語キーボードの入力に対応させるために以下のコマンドを実行

  1.  cd /etc/xrdp/

  2.   sudo wget http://w.vmeta.jp/temp/km-0411.ini

  3.   sudo ln -s km-0411.ini km-e0010411.ini

  4.   sudo ln -s km-0411.ini km-e0200411.ini

  5.   sudo ln -s km-0411.ini km-e0210411.ini

  6.  sudo service xrdp restart

二つ目もリモートツールでTeamviewerになります.

なぜ二つ目もリモートツールなのかと申しますと,

  • xrdpの欠点:同じLAN内にいないとアクセスできない

外部からのアクセスは出来ないこともないですが,アクセスするには無線LANのポートの開放(すいません,詳しく調べてないので詳細にはかけませんが,何かしら無線LANの設定をいじる必要が確かあります)が必要になります.しかしながら,TeamViewerはそのような設定を一切する必要がありません.家の外部のPCやスマホから簡単に接続出来ます.

またxrdpはリモートを行う側パソコン(ホスト)でコピーした文章などをリモート先であるラズパイに貼り付けることができません.(これ結構不便です.ホスト側で調べた内容をよくラズパイ側でも使用したいときが結構あります.調べたコマンドとかコピーして使いたいときとか)Teamviewrはそれができるため機能的に便利な気かします.ただTeamviewrの方が少し重い気がします.フリーズするほど使えなくなる状態になるとかはありませんけど.

 

インストール方法

ラズパイ側で下記サイトにアクセス

TeamViewer for Raspberry Pi – Preview Landing Page — TeamViewer Pages

f:id:raspberry765:20170412234306p:plain

 

 

DownLoad TeamViewer for Raspberry Piをクリック

そして以下のコマンドを実行

  1. sudo apt-get update
  2. sudo apt-get install libqt5gui5 libqt5qml5 libqt5quick5 libqt5webkit5 libqt5qml5 libqt5core5a qml-module-qtquick-controls qml-module-qtquick2 libqt5widgets5
  3. sudo apt-get -f install
  4. sudo dpkg -i teamviewer-host_11.0.63329_armhf.deb

一行目から三行目のコマンドは僕がTeamViewerをインストールしようと四番目のコマンドを実行したときにエラーを吐かれました.その時に下記のようなサイトに同じような質問があり,

Raspberry Pi • View topic - TeamViewer IoT Developer Contest: Win up to EUR 5,000

解決方法が書いてあったため,一から三行目コマンドを実行したところTeamViewerを起動出来ました. またラズパイのTeamViewerのインストール方法は様々なサイトで公開されていますが,四行目の数字が最近のTeamViewerには追加されていました.(最初インストール出来なくて焦った)

また今使用しているラズパイのOSはRaspbian 8.0 (jessie)を使用していますが,昔のバージョンのRaspbianでは一から三行目のコマンドを実行しなくても普通に四行目だけでインストール出来た気がしたします.

 使い方は自分のパソコンにもWindowsならWindows版のTeamViewerをインストールして

ホスト側でパートナーに接続を押す 

f:id:raspberry765:20170413003903p:plain

そしたら,遠隔操作を受ける側のIDとパスワードを入力します.

ものすごく簡単にリモートアクセスが出来ます.

ちなみに私はリモートを受ける側(ラズパイ側)の歯車マークから

セキュリティの覧でパスワードを固定することもできます.

f:id:raspberry765:20170413004203p:plain

 

また,ラズパイの電源を付けたらTeamViewerが自動起動するためには

下記コマンドを入力

  1. sudo teamviewer daemon start

これでHDMIもマウス,キーボードを繋げなくても電源とネットさえあればTeamViewerが自動起動し簡単にリモートアクセスが出来ます.自分のIDは変化しないのでパスワードも固定すれば電源とネットさえつながればいつでもそのラズパイにアクセスできます.

 

三つ目に仮想キーボード(matchbox-keyboard)です.

僕がよく仮想キーボードを使用するときはいつもリモートでラズパイを操作しているのですが,たまにラズパイがちゃんと起動をしているかを実際に確かめるときにHDMIを接続して確かめるのですが,少しキーボード使用したい.だけど接続するのがめんどくさい!!

そんなときにマウスだけ接続すれば仮想キーボードを使用すると簡単に操作することが出来ます.矢印やEnterキーもあるので,コマンドプロントの操作とかも行えるので便利です!後はタッチパネルの操作のときも便利になります.

以下のサイトで詳しい内容が書かれています.

Raspberry Pi の仮想キーボード | Raspberry Pi

インストール方法は

  1. $ sudo apt-get install matchbox-keyboard

実行方法

 スタートメニューからアクセサリ→Keyboardを選択

f:id:raspberry765:20170412002825p:plain

 

スタートメニューに存在しない場合は設定→Main Menu Editorを選択

f:id:raspberry765:20170412003549p:plain

 

アクセサリからKeboardの表示に☑を入れる

そうすればスタートメニューのアクセサリにキーボードが現れます.

f:id:raspberry765:20170412003741p:plain

 

 

こんな感じで便利ツールを有効活用しモノづくりをガンガンやっていきましょう!

まずはRaspberryPiの購入から!! 

タイトル通りにまずはRaspbery piの購入について書いていこうと思います.といっても実はラズパイ3,zeroと両方すでに購入済みであるため,今回はRaspberry Pi Zero Wの購入をPIMORONIにから行いました.まだ日本では未発売ですが海外からは輸入をすることが出来ます.海外からも輸入は最初は怖いですがやってみるとすごく簡単です.

まずはPIMORONIにアクセス!

Pimoroni - Raspberry Pi, Adafruit, SparkFun from the UK

 

Raspberry Pi Zero Wのコーナーに行って

f:id:raspberry765:20170404223911p:plain

買いたい商品をAdd to basketへ!

ちなみに私はZero W onlyを購入しました!

ちなみに2017年4月4日現在はまだPiZero Wはお一人様一つみたいですね(THIS PRODUCT IS LIMITED TO 1 UNIT PER CUSTOMER

初めての人は Zero W + Adaptors + Pibow Zero W とかStarter Kitでもいいかもしれません.

今回さらに友達の分のPi3と小型Arudino マイコン?Teensy LCも購入しました.

購入するときは友達とかと一緒に輸入をすれば送料を半分ずつ出せるのですごくお得です.

購入するものをBaketに入れたら画面右上の黄色四角のCheck Outを押す.

そうするとYour Cartの中身になりますから個数と値段をあっているかチェック!

f:id:raspberry765:20170404225539p:plain

よかったら,次にCHECKOUT Nowを押す.

たまにCHECKOUT Nowを押した後,こんな感じのページに飛びますが

無視で,スクロールして下のTake me to the Checkoutへ(こんな商品もあるから買ってきなよ!! Hey!!的な感じですかね..)

f:id:raspberry765:20170404225913p:plain

購入画面へ行くと

f:id:raspberry765:20170404230553p:plain

のような形になりますので,住所と支払い方法を選択.

私は支払はクレジットカードを持っているのでPayPalで支払いました.

もしPayPalに登録していなかったら,PayPalは簡単で登録費も無料なのでぜひこの機会に登録してみてはいかがですか?

クレジットカード決済-PayPal(ペイパル)

amazon payは謎のままです.

そして住所入力です

私はここのサイトを参考にして住所を書きました.

bicycle.kaigai-tuhan.com

 住所入力が終了したら,

Coninue to Shipping methodに移動

Royal MailかUPS Saverかどちらか選びます.私はいつもRoyal Mailで頼み2週間か3週間ぐらいで今住んでいる新潟に到着します.UPS Saverは速達みたいなものですかね.両方ともトラッキング番号が発行されるため荷物がどこにあるかが分かるため安心です.

配達の速度については以下を参照にしてください

koyoihanahan.wp.xdomain.jp

そしたら最後 Compete orderで注文です.

注文がしっかりできてると,メールにオーダー完了が届きます(Confirmedという件名がついたメール)

そして配送が開始されるとラッキング番号が書かれている(A shipment from orderと

いう件名がついたメール)が送られてきます.

後はただ待つだけになります...

海外なので少し注文してから長いです.

 

最後まで読んでいただきありがとうございます!

 

 

初めまして!

4月から新しい生活に変わるので新しいことを始めたいと思いブログを始めました.ブログの内容は僕が今現在興味を持っているraspberrypiを主に取り上げてこうと思っています.さらに僕はいろんな情報を集めるのが好きなので(気が付いたらSmart NewsやNews picks)を見ているのでそこで集めた情報をこのブログを見てくれた皆さんに広めていきたいと思います.後,料理とかも好きなのでアップ出来たらと思います.さらに最近はおこずかいサイトによくはまっています.みなさんはハピタスとかを利用したことはありますか?例えば通常通りに楽天クレジットカードを作ったら5000ポイント位が楽天から付与されますよね?しかしながら,ハピタスといったポイントサイト経由でクレジットカードを作成すればキャッシュで10000円以上さらに還元なんてこともよくあります!こういう情報も集めるのが好きなので多くの人にシェアできたらなと思います.

 

今,現在新居に向けての引っ越し作業中ですがどうも引っ越し作業に力が入りません.まあ,引っ越し先が歩いて5分というところにあるため,「新生活を始めるぞ!!」という感覚が無いからかもしれません.

最後まで読んでいただきありがとうございました.これからもブログを継続出来るように頑張りたいと思います!