RaspberryPi」カテゴリーアーカイブ

Raspberry Pi でゼルダのエフェクトーンつくってみる

http://www.bpnavi.jp/kuji/item/1987/13994

ゼルダのエフェクトーンいいなぁ、欲しいなぁ。
でもくじ運に自信ないなぁ…。
そうだ、僕らには Raspberry Pi がある\(^o^)/

用意するものは Raspberry Pi 一式のほか、以下。

  • タクトスイッチ
  • ブレッドボード
  • 各種ケーブル

本物が何センサーを使っているかはわからないけど、とりあえず手元にあったタクトスイッチを使って実装してみた。
仕組みは簡単で、スイッチがOFFになったら音を鳴らすだけだ。
Pythonスクリプトで組んでみた。

配線

ブレッドボード。fritzingの使い方も電子回路もド素人なんで勘弁。
(先の動画ではスイッチ部分をユニバーサル基板に実装)

回路図のつもり。

RaspberryPi GPIO の 3V からタクトスイッチの片方に入る。
タクトスイッチのもう片方から、GPIOの24と、抵抗をはさんでGNDへ。
大電流が流れないようにする抵抗らしい。よくわかってない。残念。

コード

コードの解説

今回はドアに設置するので、ドアが閉まっているときはタクトスイッチが押されており、ドアが開くとスイッチがOFFになるようにした。
ということで、初期値は current、prev どちらもON(GPIO.HIGH)だ。

0.1秒間隔でスイッチの状態をチェックし、ON→OFFになったら音を鳴らすようにした。
簡易的ではあるが前回の値(prev)と今回チェック値(current)が不一致のときだけ音を鳴らす。
音は nazo.ogg でスクリプトと同じ階層に準備しておく。

音はひとつだけでは芸がないので、配列にした。
好きなだけ配列に append すれば、ランダムに choice されて再生される。

SUPER+C のキーボード割り込みで終了。

設置

前述の通り、ドアでボタンを押しておき、離れるとOFFになるようにする。
タクトスイッチをこういう使い方すると職人に怒られそうなので、他のセンサーを使ったほうがいいかもしれないw

TechShare Raspberry Pi用カメラモジュール

ラズパイでマクロ撮影をしたいと思ったが、純正のカメラモジュールは固定焦点のためマクロ撮影ができない。
スマホ用のマクロレンズで撮影自体はできても、ピント合わせるのが難しいし、
全体的な完成度がね・・・。

ってことで探してみると、Techshareが焦点可変のカメラモジュールを出してた。

レンズを手でくるくる回して焦点の調節が可能。
ホコリとかが噛んでると回しづらいので注意。あと、回し過ぎにも注意。

ここまで寄った写真が撮れる。調整すればもうちょっと寄れるはず。
画質も十分キレイだと思う。

接続方法ほかは純正カメラモジュールと互換なので、まったく同じ。

Camera -Raspberry Pi 用カメラモジュール

 

コレを使ってタイムラプス動画とってみた。
こういうのが撮れますよ、ってことで。

ラズパイ用 オソヨーHDMI 3.5インチディスプレイ

ラズパイ用の小型ディスプレイを探しててみつけた。

HDMI接続なのでOSを選ばない。retroPieでレトロゲーやるのにいい。
3.5インチはゲームを選ぶだろうが、携帯機のゲームなら快適にプレイできるはず。
というかラズパイとほぼ同じ大きさというのが嬉しい。

コの字のHDMIコネクタがついているので、すぐ試せる。

意味があるかはわからんけど、1920×1280まで対応してるらしい。
(潰れて何もわからんと思うけどw)

LOGICOOLの小型ステレオスピーカー Z120BW

ラズパイ(というか retroPie)にちょうどいいスピーカーはないかと探してたところ見つけた。

  • 小型がいいけど持ち運ばない。
  • 音質もそれなりにほしい。
  • USBで給電可能。

という条件で探してみた。

これ、なかなかいい。
小型だがそれなりに重さがあり、しっかりしている。音も悪くない。
USBから給電可能で、音自体はジャックから取るようになっている。
ということで、USB-DACと組み合わせたり、スピーカーなしのディスプレイと組み合わせるのに向いている。
本体の電源が落ちれば、スピーカーの電源も落ちるのもメリット。

iPhone6のマイクで検証してみた。

ノイズ対策

ラズパイは割とノイズが乗らない方だと思うが、多少ノイズが乗る。
気になる人は電源を別の口から取るといい。
ダイソーのUSBアダプタでもいいし、浮いてるiPhoneとかの充電用アダプタでもいい。
ただし、本体の電源と連動するというメリットはなくなる。

 

昔は家電屋なんかで1000円そこらでショボいスピーカーが売ってたけど、そういうのとは隔世の感があるね〜。

Volumio で Raspberry Pi をオーディオサーバに

Raspberry Pi 3 をオーディオサーバにしてみよう!です。

Volumioって?

  • Raspbianベースのディストリビューション
  • オーディオサーバ機能をまるっとパッケージ
  • NASやUSBストレージに対応
  • 操作は各種ブラウザで可能(内部でwebサーバが動いてる)
  • Apple Air Play にも対応(エミュレートしてる)

・・・という感じで、

  • ラズパイ買ったけどいまいち有効利用できてない
  • 一通り触ってもう飽きた

な諸兄にぴったりな内容となっております。

インストール

volumioはイメージファイル(img)の状態で配布されております。
公式サイトからRaspberryPi用のイメージをダウンロード。

こいつをRaspbianなんかと同じように、Win32DiskImagerなどでSDカードに書き込んでラズパイを起動。
あ、初回はLANケーブルを忘れずに。(DHCPもね)
しばらく待ってから、ブラウザで「http://volumio/」にアクセスすると・・・。

volumio1

こんなんでましたけど!
という感じで非常に簡単です。

wifi設定やらなんやら

右上の歯車マークから色々設定できます。

volumio2

wifi 設定は NETWORK から。
これでLANケーブルからも開放されます。

言語設定を日本語にする場合は APPEARANCE から。
背景画像を変えたりなんてニクいこともできたりします。

USB-DACを使う

ラズパイ自体のアナログ出力はノイズが乗りまくって、音楽鑑賞って感じではありません。
となると HDMI-OUT か DAC を使うことになりますが、今回はお手軽に USB-DAC を使ってみました。

今回使ったのは Signstek MUSE Audio USB-DAC ヘッドホンアンプ。
ケーブル付きでAmazon最安でした。

自分ではんだ付けできる人なら自作キットもあるみたい。
ぼくはキングオブブキヨーなのでムリです。

USB-DACを刺して歯車メニューから「SHUTDOWN」→「Restart」。
起動するまでしばし待ってから、再度歯車メニューから「PLAYBACK OPTIONS」を選択。

volumio3

「Output Device」に「DAC」を選択して「Save」をクリックすればOK。
USB-DACから音が出るはずです。

ヘッドホン等で聴く人はVolumeを10とかにしておいて、徐々に上げていかないと耳が死ぬので注意。

スマフォからアクセスしてみる

スマフォのブラウザから http://volumio/ にアクセス。
名前が引けなければIPアドレスで。

IMG_2969

ぬおおおおお!!!

AirPlayしてみる

iOS端末の下の方をタップしてメニューを出し、AirPlay→Volmio選択。

IMG_2967

IMG_2968

いや、まじこれイイ。

Python で Slack の BOT を作る ~その2~

前回の続き

Pythonを使ってSlackのBOTを作ってみます。
特定のキーワードに反応したりする自動応答スクリプトみたいなものです。

使用するライブラリのインストール

詳しくはココ。

ディレクトリ構造

ディレクトリ構造がちょっと複雑なので、先にディレクトリ構造をのせておきます。

slackbot01

pluginフォルダ → BOTのリアクションはプラグインという形で実装していきます。そのフォルダ。
__init__.py → お約束。
reaction.py → リアクションを記述したスクリプトの実体。
rpi_bot.py → BOTスクリプトの実体。
slackbot_settings.py → BOTの設定ファイル。ファイル名は固定。

rpi_bot.pyの中身

みたまんまです。
Botクラスのインスタンスを生成してrun()しています。

slackbot_settings.pyの中身

BOTの設定を記入していきます。
前回控えておいたAPI_TOKENを記入します。上のは例です。
DEFAULT_REPLYはメンションを受けたとき、該当するリアクションがない場合の返事になります。

reaction.pyの中身

ようやくリアクションの中身に入っていきます。

reaction1メソッドは参加しているチャンネルの発言に特定のキーワードが含まれていたときのリアクション。
トリガとなるキーワードは @listen_to 属性で指定しています。

reaction2メソッドはメンションに対するリアクション。
トリガとなるキーワードは @respond_to 属性で指定しています。

実行してみる

↓チャンネルに対するリアクション

slackbot02

↓メンションに対するリアクション

slackbot03

できた。

あーつかれた(ヽ´ω`)
文字コードの指定漏れなんかで大変苦労しました。
pythonはunicodeの扱いが厄介です。
これがなければ日本でもっと広まってたかもしれませんね。

Python で Slack の BOT を作る ~その1~

Pythonを使ってSlackのBOTを作ってみます。
特定のキーワードに反応したりする自動応答スクリプトみたいなものです。

今回はSlack側にBOTの準備をしていきます。

Slackにログインしてチームメニューから「App&Integrations」をクリック。

slacker03

App Directoryが表示されるので、「BOT」と検索して、↓のAPPを表示。
これが今回使うAPPになります。

slacker04

「Install」をクリックして、BOTの名前やアイコンを入力します。
画面下部の「Save Integration」をクリックすると情報が保存されます。

このとき、画面上部に表示されているAPI Tokenを控えておきます。

slacker05

これでSlack側の準備は完了です。
続いてPythonスクリプトを作っていきます。

Python を使って Slack に投稿

Pythonを使ってSlackに投稿してみます。

Slackとは?

チームで使えるTwitterみたいな。 ナウなヤング風にいえばLINEみたいな。
それらより多機能なのと、今のところ日本語版が無いのが大きな違い。
さらっと使ってみてますがやっぱり便利です。
ローカライズされたらドカッと広まりそうな気配です。

Slackerインストール

Python用ライブラリをインストールします。

APIの準備

APIを使用するためにTokenを生成する必要があります。
あらかじめSlackのチームとアカウントを準備した状態で↓のサイトへ。
Tokens for Testing and Development

Generateあたりをクリックすると生成されるはずです。

slacker01

この文字列をコピペしておきます。

ソース

写真を投稿するのを想定して、パラメタで渡されたファイルをSlackerに投稿するサンプルです。

token
先ほど生成したtokenを指定します。↑のは例だよ。

chat.post_message
メッセージを投稿します。
パラメタにチャンネル名、投稿内容を指定しています。
as_user=Trueとすることで、Botではなく『Tokenを作成したユーザ』名義で投稿できます。

files.upload
ファイルを投稿します。
パラメタに投稿するファイルへのパス、チャンネル(複数指定可)、ファイルタイトルを指定しています。

slacker02

こんな感じで投稿できるはずです。

APIメソッドについての詳細はこちらを参照。
API Methods

活用例

ラズパイに接続したカメラモジュールで写真を撮影して、それを Slack に投稿するサンプルです。
(↑の python スクリプトを slackpost.py として作成しています)

これから

いやーおもしろいなコレ! いろいろ活用できそうです。
motionを使った監視カメラと連携させてみたいと思います。

Raspberry Pi と マイクロサーボSG-90

こないだ作ったヤツにマイクロサーボ SG-90 を追加してみました。

マイクロサーボ(サーボモーターのちっちゃいやつ)

動力としてではなくて、位置を制御するためのモーター。らしい。
ラジコンのステアリングや、ロボットの関節なんかに使われているそうです。

このSG-90、秋月さんとこのデータシートによると

  • 茶→GND
  • 赤→電源
  • 黄→コントロール

となっているようです。
見事に同系色。

これをブレッドボードに実装してみます。

回路図

kairo2_ブレッドボード

メチャクチャか?

コード

モータードライバーとは違って、PWMで「角度」を指定するみたいです。
「-90~+90」を「0~100」で指定するのかと思ったら、計算して求めるみたい。
http://store.techshare.jp/html/page109.html
↑こちらを参考にさせて頂きました。

動きません

上記のコードで動かしてみましたが動きません。
ジッ、ジッ、と音はしてるようなんですが・・・(ヽ´ω)

調べてみると、USB DIP化キットにリセッタブルヒューズというのが実装されていました。
これは『過電流が流れるとプチッと切れ、回路を保護し自分は昇天』(=いわゆるヒューズが飛ぶ現象)のではなく、
『過電流がかかると内部熱で抵抗値が上昇し、回路を保護する』んだそうです。
プチッといかないので、何度でも蘇るってことです。

で、これが働き始めるのが0.2Aであったため、モバイルバッテリーが2.1Aあっても、
0.2Aしか流れてなかった、ってことなんですね! 勉強になります!!

もぎとりました。

改めて動かしてみる

続く?

ちょっとガタガタしていますが、
ホーンの取り付け位置と動かしたい範囲の値を決めてしまえば、ステアリングとして使えそうです。

これをどーやって車体のステアリング機構とくっつけるかだよなぁ(ヽ´ω)

マイクロUSB DIP化キット ヒューズ取り外し

ブレッドボード用マイクロBメスUSBコネクタDIP化キット

K-06656

マイクロBのUSBコネクタをブレッドボードに直付できるようになるこのキット、
ヒューズにMICROSMD010が採用されていまして、通常時0.1A(トリップ0.2A)しか流れません。

これはこれで重要なのですが、モーター等の電源にしたいときは0.1Aでは足りません。
ので、取り外します。
(危ない気もするけど、今回は電源がMAX2Aなので・・・たぶん大丈夫?)

IMG_1667

えーゐ。

IMG_1668

はんだで無理矢理くっつけました。(ご利用は計画的に)

IMG_1669

これでオッケー!!!

最終的には、こういうやつに実装しなおすことにします。

表面実装用ポリスイッチ350mA(750mAで遮断) 耐圧:30V MICROSMD035F-02(4個入)

しかしこれでも0.35Aかぁ・・・。
1Aとか流したい場合はどうすればいいんだろう・・・。