検索
新会社でも作れる法人ETCカード
カテゴリーアーカイブ
最新記事
フレッツ光 or 光コラボキャンペーン!王道の光回線「フレッツ光」か高額キャッシュバック「光コラボ」か、あなたならどちらを選ぶ?
<< 2018年09月 >>
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
タグクラウド
プロフィール
naekさんの画像
naek
SEをやっているにもかかわらず、IT業界の進化が早すぎてついていけないかもしれない自分に鞭打つため始めました。 最新技術やそれを使った利用方法など調べたり考えたりして、それを記事にすることで自分自身の勉強と、ついでにたくさんの人にその技術をうまく活用してもらいたいと願っています。 文章力はありませんので、説明がよくわからんとかこういわれたらわかりやすいなどいろいろコメントいただけましたらうれしく思います。 IT情報に特化せずその周辺情報などもいろいろと書いてゆきたいと思います。 皆様よろしくお願いいたします。
プロフィール
ファン

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2018年09月18日

Raspberry PiとPythonで生活を改善してみるパート2

それでは、前回(Raspberry PiとPythonで生活を改善してみるパート1)の続きです。

Pythonでプログラミングする


今回は日本語音声合成にOpen Jtalkを使用しました。
Open Jtalkは、(1)テキストをwavファイル(音声)に変換して、(2)aplayコマンドでその音声ファイルを鳴らす(つまりしゃべらせる)ということができます。


インストールは

$ sudo apt-get install open-jtalk

インストールすると、Do you want to continue? と聞かれますので、 y を押してEnterします。
インストール時、推奨パッケージ(Suggested Package)がありますので、これもインストールしておきます。

$ sudo apt-get install open-jtalk-mecab-naist-jdic
$ sudo apt-get install hts-voice-nitech-jp-atr503-m001


音声ファイルへの変換としゃべらせるコマンドを一緒にした実行ファイルを作る


毎回 テキストファイルをwavファイルに変換-->しゃべらせる-->wavファイルを削除 をするのは面倒なので、これをsaywd.shという名前の1個の実行ファイルにまとめます。

$ sudo nano saywd.sh

と打って、ファイルに下のスクリプトを記入します。


#!/bin/sh
TMP=/tmp/jsay.wav
echo "$1" | open_jtalk \
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-ow $TMP && \
aplay --quiet $TMP
rm -f $TMP


Ctrl+X --> y を押してEnterキーを押して保存します。

次に、実行ファイルに実行権限を付与します。

$ chmod 755 saywd.sh

これでしゃべらせるための実行ファイルの準備はOKです。

$ ./saywd.sh 何かしゃべってみて

と書いてEnterを押すとしゃべります。
ここでしゃべらない場合は、ここまでのステップをもう一回確認してみてください。
あと、スピーカーがちゃんとなるかどうかも


いつ何をしゃべらせるかの実行ファイルを作成する


では次に、人感センサーの前を通りかかった時に設定した言葉をしゃべらせる内容の実行ファイルをpythonという言語で作成します。

$ sudo nano nichan_supporter.py

と打ってEnterキーを押します。
開いた画面で、以下のスクリプトを貼り付けます。


#turns on and off a light emitting diode(LED) depending on motion sensor
# coding: utf-8

import RPi.GPIO as GPIO #importing the RPi.GPIO module
import time #importing the time module
import subprocess
import datetime as dt
GPIO.cleanup() #to clean up at the end of your script
led_pin =37 #select the pin for the LED
motion_pin = 35 #select the pin for the motion sensor
target1 = "Sさん"

# トーク内容
CMD1 = "./custom_jtalk.sh " + target1 + "、制服に着替えましたか。靴下は履きましたか。"
CMD2 = "./custom_jtalk.sh " + target1 + "、トイレは、もう済ませましたか。もう7時30分過ぎたから、そろそろ行っておかないと、50分に間に合わないよ。"
CMD3 = "./custom_jtalk.sh " + target1 + "、お弁当と水筒は入れてもらいましたか。まだだったら、すぐに入れましょう。"
CMD4 = "./custom_jtalk.sh " + target1 + "、おかえり。制服はハンガーにかけましたか?着替えた服は洗濯物置にもっていきましたか?"
CMD5 = "./custom_jtalk.sh " + target1 + "、宿題とかやらなあかんことはもう終わりましたか。ゲームや工作は、やらないといけないことを済ませてからやりましょう。やらないといけないことが残って後でしんどくなります。"
CMD6 = "./custom_jtalk.sh " + target1 + "、玄関の教科書を2階に片付けましょう。教科書が悲しんでいますよ。"
CMD7 = "./custom_jtalk.sh " + target1 + "、そろそろ晩ご飯ですよ。"
CMD8 = "./custom_jtalk.sh " + target1 + "、9時30分までにお風呂に入りましょう。"
CMD9 = "./custom_jtalk.sh " + target1 + "、そろそろ10時です。寝る準備をしよう。明日の準備は終わってますか。まだならすぐにやりましょう。"

def init():
GPIO.setmode(GPIO.BOARD) #to specify which pin numbering
GPIO.setwarnings(False)
GPIO.setup(led_pin,GPIO.OUT) #declare the led_poin as an output
GPIO.setup(motion_pin,GPIO.IN,pull_up_down=GPIO.PUD_UP) #declare the motion_pin as an input
print("----------------------------------------------------------")


def main():


while True:

value=GPIO.input(motion_pin)
dt_now=dt.datetime.now(); # to get time of now
dt_now_str= "今は" + dt.datetime.strftime(dt_now,'%H時%M分') + "です。"


if value!=0: #to read the value of a GPIO
GPIO.output(led_pin,GPIO.HIGH) #turn on led
time.sleep(2) #delay 2ms


else:
GPIO.output(led_pin,GPIO.LOW) #turn off led
time.sleep(2)


if GPIO.input(led_pin)==GPIO.HIGH:

subprocess.call("./custom_jtalk.sh " + dt_now_str,shell=True)

if dt_now > dt.datetime(dt_now.year,dt_now.month,dt_now.day,7,0,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,7,30,0,0) :
subprocess.call(CMD1,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,7,30,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,7,45,0,0) :
subprocess.call(CMD2,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,7,45,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,7,50,0,0) :
subprocess.call(CMD3,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,16,0,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,17,00,0,0) :
subprocess.call(CMD4,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,17,0,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,18,00,0,0) :
subprocess.call(CMD5,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,18,00,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,19,0,0,0) :
subprocess.call(CMD6,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,19,0,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,19,30,0,0) :
subprocess.call(CMD7,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,19,30,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,21,30,0,0) :
subprocess.call(CMD8,shell=True)
elif dt_now >= dt.datetime(dt_now.year,dt_now.month,dt_now.day,21,30,0,0) \
and dt_now < dt.datetime(dt_now.year,dt_now.month,dt_now.day,22,40,0,0) :
subprocess.call(CMD9,shell=True)
else:

print "out of range"
time.sleep(2)


init()
main()
GPIO.cleanup()



貼り付けたら、Ctrl+X、続いて y そのあとにEnterを押して実行ファイルを保存してください。
一応これで準備は整いました。


動かしてみる

では、実際に動かしてみましょう。

$ sudo python nichan_supporter.py

ーーーーーーーが出てきたら成功です。センサーに手を近づけて、しゃべらせてみてください。
exescreen.png


なお、今回使用したラズパイと部品はAmazonで購入させていただいたものです。


あ、ちなみにチャレンジ中にエラーなどでできないことがあればコメントください。そんなに頻繁に見ていないこともありますが、見たら必ずお返事しますので!

本日も最後まで読んでいただき、ありがとうございました。


ブログランキングに参加しています。
もしよろしければ応援よろしくお願いします。
ブログランキング・にほんブログ村へにほんブログ村



posted by naek at 13:38 | Comment(0) | TrackBack(0) | パソコン

2018年09月17日

Raspberry PiとPythonで生活を改善してみるパート1

本日は、夏休みの工作にも使えそうな「Raspberry Pi X Pythonでしゃべるラズパイ」がテーマです。



以前、工作好きの息子のためにRaspberry Pi(ラズパイ)を購入しました。購入当時は楽しそうにScratchとかを楽しんでいたのですが、最近はまた別の工作にはまり放置されていたため、何か作ったろと思ってプログラミングすることにしました。

Scratchはコードを書かず、ブロックを組み合わせるようにいろいろ作れるんで面白いのですが、やっぱり自由自在にいろんなことができないこともあり、ラズパイにRaspbianというOSをインストールしたときに一緒にインストールしておいたPython(パイソン)を使うことにしました。

で、とりあえずRaspberry Piと一緒に購入した、「Raspberry Pi Starter Kit」に入っていた「人感センサー」を使って、ラズパイの前を通りかかった時になんかしゃべらせてみることにしました。購入したStarter Kitはこちらです。

※こちらのキットはラズパイに使えるいろんな部品が(ブレッドボードとか温湿度センサーとか気圧センサーとか。購入時期によって入っている部品が変わるかもしれないので、詳細は購入時に商品ページの詳細から確認してください。)入っているので、とりあえず何か作ってみたいなという人におすすめです。

毎日の声掛けを自動化してみることにした

何を作るか考えたんですが、今私の生活の中で一番時間食ってるのは、「子どもへの声掛け」。

うちの工作好きの兄ちゃんはいつもぼやーとしているので、朝は朝ごはん食べなさいから始まり、
着替え終わった??
時間割合わせてんの!?
トイレ行った??
お弁当入れた? など・・・・

これらを毎日、一時間の間に何度も同じことを言わねばならず、忙しい朝だけでも結構な時間を食っています。チェックリストなどを用意しても、どうしても身につかず、結局私がロボットのように毎日言い続けています。

これらの声掛けはだいたい時間が決まっているのですが、私も仕事があるので忙しいから、時々時間がずれたり忘れたりします。

そうすっと、

「もう間に合わへんやん!!(泣)」

てなって、私も子どもも非常なストレスにさらされるわけで...

これを解決できる何かを作ればいいのでは!!

ということで、

Raspberry Piの前を通りかかると、その時間にやらねばならないことをしゃべる、『兄ちゃんサポーター』


を作ることにしました。

で、長い前置きはここまでで、本題に行きましょう。

手順は次の通り。
  1. 人感センサーを配線する
  2. Pythonでプログラミングする
  3. 動かしてみる


※Raspberry PiのOS、Raspbianのインストール等、基本的な設定は終わっているという前提で書きます。細かいところがわからない場合はコメントしてください。
人感センサーを配線する

配線は、キットを販売されているOSOYOさんのページを参考に配線しました。

配線はOSOYOさんのページのが断然見やすいですが、一応写真を載せときます。
20180708_082939.jpg




では、次からはラズパイでコマンドを打っていきますが、ちょっと長くなりそうなので、続きは次回(Raspberry PiとPythonで生活を改善してみるパート2)に持ち越します。



本日も最後まで読んでいただき、ありがとうございました。


ブログランキングに参加しています。
もしよろしければ応援よろしくお願いします。
ブログランキング・にほんブログ村へにほんブログ村



posted by naek at 12:45 | Comment(0) | TrackBack(0) | パソコン

2018年04月15日

空中に浮くBluetoothスピーカー Mars by crazybaby 2個使って2.1ch仕様にする(Double-up)

マニュアル情報のみで申し訳ないのですが。。。

MARSの記事(URL:http://fanblogs.jp/itcontents/archive/145/0)を以前書きましたが、やまTさんにコメントいただきまして、このMARSを2台使って2.1ch仕様にするための手順がわかりにくそうだったので追記しておきます!

以下、マニュアルを日本語に訳したものです。

2台のMars CraftをそれぞれMars CraftAMars CraftBとします
  1. Mars CraftAの電源をONにします。次にMars CraftBの電源をONにします。
  2. CraftAのボタンを長押しします。3つのライトバーが光ったらボタンを離します。<br/>CraftBのボタンを長押しします。4つのライトバーが光ったらボタンを離して、2つのCraftがペアリングされるまで待ちます。
  3. 2台のCraftのペアリングが成功すると、各Craftの周囲のLEDインディケータが光ります。
  4. CraftAのボタンを1秒ほど長押しして、ライトバーが光ったら手を離します。
  5. crazybabyアプリを開き、画面のインストラクションに従って、スマートフォン端末とMARSをbluetooth接続します。
  6. オーディオキューで接続が成功したことを確認します。
  7. crazybabyアプリでDouble-up/Stereoモードを選択します。





本日も最後まで読んでいただき、ありがとうございました。


ブログランキングに参加しています。
もしよろしければ応援よろしくお願いします。
ブログランキング・にほんブログ村へにほんブログ村



posted by naek at 11:40 | Comment(0) | TrackBack(0) | その他
×

この広告は30日以上新しい記事の更新がないブログに表示されております。