ラズパイでサーボモーターを制御② そのモーターは回らなかった
こんにちは。えぬです。
先日は先輩と2人でラズパイと闘っていました。
したことは
です。
目次
scrot(スクリーンショットソフト)の導入
まずは、スクリーンショットソフトの導入です。このブログで作業工程を記録していくにあたり、スクショは絶対にあった方がいい!と思い、インストールしました。参考にさせていただいたサイトはこちらです。
こちらで紹介されている、"scrot"というソフトをインストールしました。前回の活動でksnapshotをインストールしようとしたのですが、apt-getを用いてインストールしてもメニューにksnapshotが表示されず、使用を断念。”なべふぁい”の通信量を無駄に消費しただけで終わってしまいました。そこで、scrotをを今回の活動で導入しました。スクリーンショットを撮ると”/pi”のフォルダに画像が保存されます。最初はこの保存場所がわからず混乱しました(-_-;)
こんな感じにスクリーンショットを撮ることができます。
サーボモーターが回るための設定
次は本題のサーボーモーターの制御です。大変ややこしいです。そういえば、前回では具体的な目標を述べていなかったのでそれも説明していこうと思います。
目標はラズパイで、サーボモーターを制御し、2足歩行をすること。元々は先輩方が取り組まれていたので(過去の記事参照)もう必要な部品が手元にあります。まずはそれらの紹介から。
部品
サーボモーター:VSD18MB
デジットで2000円程度で販売されているものです。かなりパワフルなモーターです。カタログシートには最大消費電流が1.6Aと書かれているのですが、それだけの電力を供給できる電池を用意できるのか、不安が残ります。普通のアルカリ乾電池では電流が足りず、ラジコン等で用いられるリチウム系のバッテリーを用意する必要があるかもしれません。スペックは以下のリンク先から参照できます。
http://www.vigorprecision.com.hk/uploadfile/20120530/20120530163338446.pdf
モーターコントローラ:PCA9685
モーターは大電流を要しますので、直接ラズパイに繋ぐのでは力不足です。そこで、モーターコントローラというものを使います。「モータードライバー」「モーターコントローラー」で検索すると詳細な解説が出てくると思います。こちらのPCA9685はよく使われる製品らしく、沢山の情報がネットにあがっています。ありがたや、ありがたや…
http://akizukidenshi.com/download/ds/akizuki/AE-PCA9685.pdf
以上の部品を用いて改めてチャレンジしていきます!
PCA9685とラズパイの接続
PCA9685とラズパイはI2Cという通信方式で接続します。そのために配線をする必要があります。参考にしたのはこちらのサイト
歴代のRaspberryPiシリーズのGPIO配線図 - NAVER まとめ
まとめサイトですが、ラズパイのピンの配線図が書いてあります。これを参考に
こちらの配線例を参考につなげていきます。
こんな感じ。毎度のごとく机が汚いですね…
i2cの有効化
PCA9685とラズパイはI2cという方法で通信を行います。デフォルトではそれが無効となっているので、有効化する必要があります。
http://www.yam-web.net/raspberry-pi/servomotor.html
参考にさせていただいたのはこちらのサイト。
大変わかりやすいサイトなのですが、詳細な手順が省略されているので補足していきます。
まずは、i2cを行うのに必要なツールをインストールします。
$ sudo apt-get upgrade
$ sudo apt-get update
$ sudo apt-get install i2c-tools //I2Cをチェックするためのツール
$ sudo apt-get install python-smbus //I2C通信用ライブラリ
この、sudo というのは、管理者権限で実行という意味のコマンドです。管理者権限で実行しないと上手くいかない場合が多いのでこの"sudo"を実行したいコマンドの前におまじないのようにつけておくといいでしょう。apt-get upgrade,updateを入力することによって最新版のソフトをインストールできます。今回はpythonという言語を使って制御しようと考えているので、ついでにpythonを使うためのpython-smbusもインストールします。
次に、I2cの有効化です。
$ sudo raspi-config
と入力すると以下の画面が表示されるので、設定を進めていきます。
Interfacingを選択。
そしてI2Cを選択し、"Enable"に設定します。
これで有効化は完了です。
次に、エディタを用いてファイルを編集します。
エディタで/etc/modprobe.d/raspi-blacklist.conf を開き、
#blacklist i2c-bcm2708を確認(コメントアウトされていることを確認。あるいは、記述されていないことを確認)。
ここを直接編集してもよい?
●つづいて、 /etc/modulesを編集
最終行に追加
i2c-dev
i2c-bcm2708
ここで一旦再起動。
参考させていただいたサイトにはこのように書かれているので、これに基づいてコマンドを入力していきます。
& sudo nano /etc/modprobe.d/raspi-blacklist.conf
を入力し、”#blacklist i2c-bcm2708”という文字がないことを確認します。
ctrl+Xを押し、編集画面を終了します。続いて、
$ sudo nano /etc/modules
と入力。次に
i2c-dev
i2c-bcm2708
を最終行に入力し、ctrl+Oを入力して保存を行います。名前は編集しないので、エンターキーを押して終了させます。
この、nanoというコマンドはテキストエディタのコマンドで、上記のように様々なテキストや設定ファイルを編集することができます。同様のものに"vi"がありますが、nanoが一番使いやすいと感じます。恥ずかしながら、私もnanoの使い方を今まで知りませんでした。これは以下のサイトに詳しく乗っているので参考にするといいかもしれません。
このように解説をしてきましたが、このファイルへの書き込み作業は何のために行うかわかっていません。誰か教えて欲しいですね…
次にモーターを動かすためのドライバをインストールします。
$ sudo apt-get install git
$ sudo git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
参考サイトの記述をもとにこのコマンドを入力しましたが、ここで問題発生。gitのインストールは成功しましたが、下の行で行ったリンク先から正常にファイルがダウンロードできません。なぜか、readmeのテキストファイルしかありません。おかしい。サンプルプログラムやドライバなどが入っていないといけないのに…そこで、他のリンクからのダウンロードを試みます。そこで発見したのが下記のサイト。
”べゼリー”というラズパイを用いたロボットを販売しておられる方のサイトです。
このベセリー、ラズパイでの制御を勉強するのにもってこいなので購入してみると良いかも知れません。(ステマではない)
このサイトを参照すると、AdaFruit社がサーボドライバ「PCA9685」を使うためのモジュールを公開しているようですね。ありがたく使わさせていただきます。
$ cd
$ sudo git clone -b legacy https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
と、リンク先からダウンロードします。
ついでに、べゼリー用のプログラムも欲しい!ということでそちらもダウンロードします。というかこちらの方が解説が詳しいのでべゼリーのサンプルプログラムを使用することに決定。
$ cd
$ mkdir bezelie //この2行でべゼリー用のディレクトリ(フォルダを作成)
$ cd /home/pi/bezelie //作成したディレクトリに移動
$ sudo git clone https://github.com/bezelie/pi.git //gitからファイルをDL
この作業ではよく使う新しい2つのコマンドを使用しました。
cd: 指定したディレクトリに移動
mkdir :ディレクトリを作成
これも覚えておくと便利ですね。
$ cd /home/pi/bezelie/pi
$ python sampleServo1.py
そして、サンプルプログラムを実行。しかし…動かない。悩む2人…分からない。
ん?ブログを書いていて気づきました。AdaFruit社が公開しているファイルをコピーしていない?この作業を行っていない!
$ cd
$ sudo cp Adafruit-Raspberry-Pi-Python-Code/Adafruit_PWM_Servo_Driver/* bezelie/pi
この他にも、うまく動かない原因は以下のものが考えられます。っていうか、作業の抜けに気づかず真剣に原因の推測を行っていました…。せっかくなのでメモしておきます。
動かない原因
- モーターへの供給電力が足りない→べゼリーに使わているサーボモーターSG-90を買う
- プログラムがおかしい→プログラムを変える
- モーターコントローラの故障→同じものを新しく購入
次回の作業では動くようにしたいですね!
頑張っていきます!
他にも参考にさせていただいたサイトがあるので紹介させていただきます。
いつか、自らの知識で発信できるようになりたいですね。
導電糸でLEDを光らせたい!
1回生のえぬです。
情報、人シスは今日でテストが終了です。
ということで、本日から活動が再開しております。
本日は、テクノ手芸の活動です。
1年生は第1回ということで、ボタン電池でLEDが光る、という作品を作っています。
配線は導電糸という電気を通す糸を用います。
糸の縫い方に気を付けないと接触が悪かったり、ショートしてしまったりするので難しいですね…
みんな、個性溢れる作品を作りました!
写真に写っているのはムー〇ンとコ〇ン君(自称)です。
次回もお楽しみに!
モデリング話(超初心者向け)
millaboです
昨日はお昼休みにモデリング勉強会をしました
といっても、基本的にはほとんど何もせずに、モデリングってなんですか?なにができるようになるんですか?おいしいんですか?みたいな話をしただけです
知ってる人からすると手を動かさない上に非常に退屈で、すみませんでした
まずはソフトウェアの紹介
・Maya
・sculptris
など無料・有料色々あるよという話。フリーのものはいくつか試してみましょう
続いて、モデリングすることによって何ができるのか具体例!!!(超初心者用)
①3dプリンターでモデリングデータを出力できる。つまり単純に好きなキャラクターのフィギュアなどをつくることができる
応用例: ロボットの部品を印刷して組み立ててその中にセンサやマイコンを隠したりすると...楽しそうですね(^。^)
②モデリングデータに対して、マテリアル・テクスチャをつけ、さらにボーンも埋め込むと、オリジナルのキャラクターを簡単に自作ゲームの登場キャラクターにすることができるΣ(・ω・ノ)ノ
大雑把な流れもお話ししました
参考例: 以前私が書いたもの↓
③当然ゲームの主人公だけでなく、CGアニメーション作品なども頑張れば(精度はノーコメント)作ることができる
などなど...その他の用途も考え方次第でいろいろあります
今日は時間が少なかったため実際にモデリングしませんでしたが、敢えて何もしなかった理由も(一応)あります
それは...
自分でトライ&エラーを繰り返して、じっくりことこと作ってみないことにはどうしようもないのです笑
そんなトライ&エラーを繰り返すなかで話し合った方が、いろいろ勉強になるのです(私の経験上笑)
次回はもし機会があれば、時間をとって簡単なモデリングをみんなで作ってみるというのもやってみる予定ですー
いろんなサイトを参考にとりあえず試行錯誤して作ってみましょー
私は昔下記のリンクを参考に取り組みましたm(__)m
blenderの基礎操作からモデリング、マテリアル・テクスチャ、ボーン、アニメーションまで一通り、とてもまとめられており勉強になりました
それではまた...
ラズパイでサーボモーターを制御① セットアップ編
初めまして!1回生のえぬです。先輩達が春休みに行っていたラズパイでサーボモーターを動かすという計画を進めるため、やったことを書き留めていきます。よろしくお願いします。
諸事情で一からやり直しとなってしまったので、それらの過程を書き留めていきます。
第1回目の今回はラズパイのセットアップ編です。
今回用意したのは
- Raspberry Pi 3 Model B
- 10インチ程度のモバイルディスプレイ
- マウス・キーボード
- microSDカード(16GB)
です。ラズパイはPCと基本的には同じなので、画面を表示させるディスプレイ、操作するためのマウスとキーボードが必要になります。ラズパイの出力端子はHDMIしかないので、HDMI端子を備えたディスプレイが必要です。最近の製品はHDMI端子が付いているので問題ありませんが、古いディスプレイにはないものがあるので注意が必要です。SDカードは16GBが一番適切な容量かと思います。普通に売っている一般的なもので大丈夫です。
OSの準備
ラズパイは普通のPCと同じようにOSが必要です。最初にそれをダウンロードし、SDカードに書き込む作業をします。
1.Raspbianのダウンロード
下記のサイトからダウンロードを行います。with DESKTOPと書かれた左側の方をインストールします。こちらはGUI操作ができる(=普通のPCと同じように操作ができる)OSですのでこちらをインストールします。"Download zip"をクリックするとダウンロードが始まります。サーバー側の回線が重いため、ダウンロードに1時間程度かかるので注意が必要です。学校のwifiだと、途中で接続が切れてしまいやり直し、ということもあるので学校でダウンロードする場合はデスクトップPCで行うのがおすすめです。
Download Raspbian for Raspberry Pi
2.RaspbianをSDカードに書き込む
ダウンロードしたファイルはイメージファイルという特殊なファイルなので、書き込むために別途ソフトウェアが必要になります。今回は”DD for windows"を使用しました。
下記のリンク先からソフトをダウンロードします。起動する際、右クリックして表示されるメニューの[管理者として実行]をクリックして起動してください。そうしないと正常に動作しません…
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows#s74c46f6
立ち上げるとこのような画面が開きます。ファイル選択をクリックし、ダウンロードしたRaspbianのデータを選択してください。
その際、右側のタブが"All files"になっていないと選択することができないので注意してください。選択し、書込を選択するとmicroSDカードへの書き込みが開始します。ここまでで1時間程度かかります…書き込みが終わると準備完了!次のステップに移ります。
ラズパイの起動
microSDカードをラズパイに差し、ディスプレイ、マウス、キーボードを接続し、電源をつなぐと起動します。電源はmicroUSB端子から供給します。スマホを充電するのと同じですね。5V、2.5Aの充電器が推奨されているのでそれを満たす充電器を使用します。何のことかわからない!という人は純正の電源アダプタを利用するのが無難でしょう。我々は仕様を確認せず、12Vの電源アダプタをぶっ差してしまったので危うくラズパイを燃やすところでした…危ない危ない(゚ー゚; 電源を差したら自動的に起動します。デスクトップが表示されたら起動完了です!
その後、学校のwifiに接続しようとしたのですが、セキュリティ方式が特殊なのと、プロキシ設定が上手くいかず挫折…我ら組長のテザリング、通称"なべふぁい"でお茶を濁しました…
日本語化
英語では使いづらいので日本語化します。
まず、日本語のキーボードが使えるようにします。左のラズベリーのボタンをクリックし
Preferences>Keyboard and Mouse>keyboard>Keyboard Layout…
を選択します。CountryでJapanを、VariantでOADG 109Aを選択します。これでほとんどのキーボードは問題なく動作します。
なお、メニューの表記等がRaspbianのバージョンによって微妙に異なるので注意してください。次に、日本語フォントのインストールと表示の日本語化を行いました。
これは下記のサイトを参照したのでこちらをご覧ください。ターミナルからコマンドを入力することで設定できます。
さらにスクリーンショットを撮れるようにしようとしたのですが失敗、なべふぁいの通信量を消費するだけの結果に終わりました…
だらだら書いてきましたが、本日したことはこれで以上です。やっとスタート地点に立つことが出来たという感じですね。今後もいろいろ試していこうと思うので生暖かく見守ってやってください。
以上、えぬでした!
ベースギター解体ショー(観覧者2人)
こんにちはmillaboです
この間、前前前世代からの遺産であるベースギターを前前前世代の先輩からの了解を得たということで解体しました (もともとネックとボディが分離されていて、makeymakeyを使ったものづくりの材料として使っていたもので、壊したわけではない( ゜o゜))
makeymakeyがどんなものかについてはこちらを参考↓
MaKey MaKey - An Invention Kit for Everyone
ちなみに解体する前に一応弦も張ってみましたが、なんせネックとボディが解体されているため、ベースとして使うのはもはや不可能に近かった(知ってたけど(^o^)v)
ということで、解体したベースがこちらです↓
結論からいうとそんなに分解できませんでしたーーー( ;∀;)
ピックガード・ピックアップ・コントロールノブ・ブリッジが取り外せただけでした
あとはストラップピン・エンドピンとか...
ピックアップの中身をもう少し分解しようとしたりもしたのですが、しっかり張り付いていて取れませんでした。
このように、分解してみたもののそれほど分解ともいえない感じでした。
つまりごみを増やしました。(^◇^)バンザイ
以上です。何かまた分解していいものがあればしたいと思います。
(P.S.) ゴンメイくんのプログラミング勉強会もほどよい感じになりそうなので、新入生のみなさんもそろそろ作りたいものを作っていってみましょう!
ゲーム、というかUnity?に興味ある人で、以下(↓)のUnite 2017 Tokyoのサイトを一緒に見ていく会みたいなの開いてみませんか?
興味あるひと募集...(´・ω・`)
5月8・9日に開催されたUnite 2017 Tokyoの公開可能な全ての講演資料、講演動画が公開されました。タイムテーブルの各講演ごとにリンクがあります。https://t.co/NDcivBT2FJ 開発に役立つ講演や、事例やノウハウなど紹介されていますのでぜひご覧ください!
— ユニティ・テクノロジーズ・ジャパン (@unity_japan) 2017年6月9日
ではまた
新一回生プログラミング勉強会第四回
知らない間に6月になって、「あ、もうすぐ夏休みだ」と気づくゴンメイでした
さて、勉強会はこれで四回目です。今回は先週で報告した通り復習会…ではありませんでした!!一回生の皆さんは思っていたよりできていたのでそのまま新しい内容をやったいました^_−☆
今週の内容は関数です!返り値を持つ関数とそうでないvoid関数をやりました!返り値を持つ関数は今までの数学で出てくる関数と同じ性質を持っているので、それをイメージにしたら分かりやすくなると思いました。void関数の説明は関数よりもパケッジで何かをする、マクドでビッグマックセットを頼むような感じになると説明しました。
皆さんはこれでプログラミングの基礎となるものは一通り全部やりました。これからは習得した技術で自分の作りたいものを作り出してほしいです。プログラミングはあくまで何かをするための道具なので、それを使って何をすることこそ真にプログラミングをしてと言えると思いますので、何か作っていきましょう。
来週はグローバル変数とローカル変数についてやります!
では、see you^_−☆
新一回生プログラミング勉強会第三回
どうもどうもどうも一週ぶりのゴンメイで〜す!
勉強会もう三回目、一回生の皆さんもかなりできるようになって来ましたね!
今回は配列をやりました!配列とはというものが、どう使うのか。forを使って100個のint配列を初期化をし、またそれを利用して10個の円を作りったり、それを壁に反射するようなプログラムをやりました(๑╹ω╹๑ )
ちょっと進むのが早いかもしれませんので、来週あたりは今までの内容を確認する復習回を開催する予定です!!
ではまだ来週☆*:.。. o(≧▽≦)o .。.:*☆