2017年10月22日日曜日

温湿計付きWiFi時計を作ってみた

お久しぶりです.
気づいたら2ヶ月経ってました.中々の忙しさでした.
しかし何もやっていなかったわけではなく,ESP-WROOM-02を
使って温湿計付きWiFi時計を作っていました.今回ようやく形に
なったのでメモに残したいと思います.

概観はこんな感じ.



温度センサ,LCD,7セグメントLEDを搭載しています.
回路はまじめに設計するのが面倒だったので
ユニバーサル基盤に全部載せしました.

使用したモジュールは以下のとおり
赤色LEDディスプレイ7セグメントLED
128*160 TFT液晶ディスプレイモジュール
BME280 大気圧センサ 温湿度センサー
ESP-WROOM-02ピッチ変換済みモジュール
16x8LEDマトリクスドライバーモジュール

回路図は作ってませんが,ESP-WROOM-02はピンに余裕がないので
工夫が必要です.現在の割り当ては

4,5  ->  I2C(7seg,BMP280)
15->LCDバックライト制御
0->画面切り替えスイッチ
12,13,14,16->SPI(LCD)

となっています.ピン0,15は使用するのはよくないとされていますが,
私の使い方では問題ありませんでした.

また,バックライト制御は内部でGNDがLED-とつながっているのか
カソード側で制御できませんでした.そのためこのサイトで紹介されている
アノード側での制御を試したところ,うまく動作できました.

動作の様子です.




趣味で電子工作を始めて2年ぐらい,初めて実用的なものを
製作した気がします笑.

長くなりそうなのでソフトは次回にしようと思います.
それではまた.


2017年8月23日水曜日

7セグメントLEDを使ってみる

どうもcaketetuです.

あると何かと便利そうな7セグメントLEDを購入してみたので
ちょっと使ってみました.

使ったのはこれ.10個も入っています.


ピンアサインはネットに落ちてました.



とりあえずLPC1114で動作確認.
カソード側に手持ちの510オーム抵抗をはさんでいます.


ストップウォッチを製作してみました.
ポート間で電流が違うのか,ちょっと見づらいです.


使用プログラム



ちょっとした時計を作ってみたいと思います.
ESP-WROOM-02でntpサーバにアクセスして時刻を自動的に取得します.
ライブラリはコチラ.zipファイルをArduinoIDEの
librariesフォルダにコピーします.

取得したデータをi2c経由でLPCに送信し,7セグメントLED
に時刻を表示させてみます.
前に製作したお遊び基盤を使用します.
予想外に使い勝手がいいですねコレ.


動作の様子.
時間はあっていますが,やっぱりちょっと見づらいですね.


使用したプログラム
ESP-WROOM-02:ntp_cliant




改善点はあれ,簡単な時計ができそうですね.
せっかくESP-WROOM-02を買ったので,
ちょっと高機能LED時計を作るのもアリですね.
もうちょっと遊んでから具体的に作るものを決めたいと思います.

2017年8月13日日曜日

Rasoberry Pi minidlnaを使ってPS4からアクセス

どうもcake tetuです.

先日PS4を購入しました.
PS4のメディアプレーヤーがなかなか使いやすそうだったので
Raspbery piにminidlnaをインストールしメディアサーバーにしてみます.

実は我が家には一応ファイルサーバーがあります.



画像からわかる通り初代Raspberry piを使用しています.
そのため,速度はかなり遅いです.
まあ自宅内でファイルの受け渡しぐらいしか使用してないので
あまり気にしませんが.

こいつにminidlnaをインストールします.
コチラを参考にさせて頂きました.

とりあえずテストということで公開フォルダはHDD上ではなくは
/home/pi上にしました.

PS4からアクセス!!



キターー!! 



適当な動画を再生してみます.
PS4のメディアプレーヤーはコントローラ―で操作しやすく,
とても扱いやすいです.これはなかなか便利.
そして,データベースを勝手に作ってくれるので,探す手間が省けます.
データベースは60sで更新になっていますが,サービスの再起動

$sudo service minidlna restart

で更新してくれる模様.


関係ない話ですが,Raspberry piでファイルサーバーは省エネで良いです.
しかし,LANが100base-TなのとUSB2.0しかないのでとても遅い.
本当は小型PCなんかでサーバを作りたいですが,金が…
金が貯まるまで頑張れ初代RaspPi.

2017年8月9日水曜日

I2C接続顔モジュール製作 ソフト編

前回の続きです.

ブロック図はこんな感じ



配線はゴチャゴチャですが,意外とシンプル.
Ver.2を作るときは一枚にまとめたいです.

プログラムはこんな感じです.
前回はJuliusを使用しておりましたが,今回は
音声認識もdocomo apiに任せることにしました.
それに伴い,pyaudioで録音し送信する形を取っております.

参考にさせて頂きました.
http://qiita.com/kinpira/items/75513eaab6eed19da9a3

全体のフローは以下のとおり

  1. ボタン入力待ち
  2. マイクからデータ取得
  3. ボタンが離されるまで待つ
  4. 3を音声認識apiに送信.返答を受け取る.
  5. 4を雑談対話apiに送信.返答を受け取る.
  6. 5を発音
  7. 5の内容によって何かしらのアクション
GPIOにLEDとボタンを接続し,キーボードレスで
会話することができます.ここではLED点灯
のときボタンを押すとLEDが消灯します.
ボタンを押している間,録音が可能となっております.
ボタンの前はenterキーにしてました.

さらに顔モジュールと連動させるようにしました.
アクションはaction.pyにまとめられています.
適当なテキストを渡すと特定の単語を抽出し
マトリクスLEDを変化させます.
とりあえず思いつく限りの単語を登録しました.

動作の様子です.



全プログラムをもう一度まとめておきます.





2017年8月8日火曜日

I2C接続顔モジュール製作 色々進化?

お久しぶりです.
大学が夏休みに入り,すっかりゲーム・バイトに明け暮れております.
まあ大学生らしいといえばらしいですが.

そんな中,i2c顔モジュールが前回から大きく進化しましたので
メモを残します.



なんか下部がやたらでかくなっております.



まず前方にプッシュスイッチとLEDを配置しました.
コレでいちいちリモートしなくともある程度はRpiを操作できます.



そして側面にスピーカーを配置.これで電源に接続しちょっと待つだけで
raspiと会話することができます.



内部の様子はなかなかカオスです.最近の省スペースPCでも
もっとすっきりしています.



構成はこんな感じ.制御ユニットとアンプの電源用に
モバイルバッテリを搭載しました.
フロントパネルに無理やり電源スイッチを引き出したため
配線が多くなってしまいました.

今回は100均パーツを多く使用しました.
なので結構簡単に作ることができます.



ダイソー(300円)モバイルバッテリ.
本来の用途では力不足ですが,電子工作との親和性は高そう.
ネットを見る限り簡単に改造できそうで,今後も使って行きたいです.



すっかりタッパーでケースを作るのにはまりました.
100均のタッパー売り場に行くとワクワクします.



ダイソーのアンプ.数年前に買ったものです.ちなみにスピーカ
もダイソーです.基盤を抜き出し,電源を付け替えて使用しています.
音質はギリ許せる程度です.モバイルバッテリに接続するとノイズが
減ったのか若干改善しました.



動いている動画です.



ちなみに,ソフト面もだいぶ変わり,juliusからdocomo_apiに変更,
ボタン入力待ち,マトリクスLEDとの連動などを追加しています.
詳しいプログラムはまた次回で.














2017年7月17日月曜日

PlayStation4を買った話

どうもcaketetuです.
電子工作とはまったく関係ないですが,PS4を買った話.

amazonで購入しました.



開封の儀~
ちなみに奮発してproを買いました.



とりあえず起動.
最初に買ったゲームはFF12のリメイクです.
ps2版をやったことがありますが,システムが超面白くてオススメです.



ゲームに明け暮れずブログも大学生活も頑張りましょう笑




2017年7月13日木曜日

過去記事修正中

どうもcaketetuです.

スマホでブログを見ていたらレイアウトが乱れていることと
動画が再生されないことに気づきました.
現在,過去記事を修正しています.

一回PCにOSを入れなおしたので過去から発掘しなければ・・・

I2C接続顔モジュール製作 ソフト編

どうもcake tetuです.
この記事の続きです.

前回までにi2c経由で2軸サーボとマトリクスLEDを制御することができました.
今回はweb経由で操作できるようにしたいと思います.

ちなみにwebプログラミングに関する知識は全くといっていいほど
ありません.現在勉強中です.
今回コチラを参考にさせて頂きました.

webサーバにはlighttpdを使用します.
lighttpdのインストール
% sudo apt-get install lighttpd

設定ファイルは/etc/lighttpd/lighttpd.confです.
fastcgiでpythonを動かしますので,私の設定はこんな感じになりました.

/var/www/htmlにhtmlファイルをおきます.
自分はindexとマウント操作用の2つを作成しました.
このように表示されます.htmlは初めてでしたが結構がんばってデザインしました.



カメラのストリーミングはmjpg-streamerを使用しました.コチラで記事にしています.
htmlへの挿入は
<body onload="createImageLayer();">
<div id="webcam"><noscript><img src="http://IPアドレス:ポート?action=snapshot" /></noscript></div>
</body> 
でいけるようです.
常時起動にはしていませんので(結構CPU食うっぽい)以下コマンドで起動します.
./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640x480 -f 60 -y -n" -o "./output_http.so -p 8081 -w ./www -c test:password" &
カメラが起動しなくともプログラムは動きます.

/var/wwwにpythonプログラムをおきます.
非常に稚拙なプログラムだと思います.もっと勉強しなければ.

ブラウザでip/index.htmlにアクセスすれば表示されます.


これでハードウェアの制御部分はほぼ完成しました.
今回製作したものを用いていろいろ遊んでいきたいと思います.



2017年7月10日月曜日

Rasoberry Pi docomo雑談apiと会話してみる

どうもcaketetuです.

今回はdocomo雑談apiを用いてraspberry pi と会話してみます.
docomo雑談対話api
コチラのサイトを参考にさせて頂きました.

サイトのコードをそのまま動かしてみた結果,
なんか微妙に会話がかみ合っていませんが
何とか成立はしています.
やたらカレーが好きなようです.

juliusとopen Jtalkを用いて会話を試みます.
それぞれのコードはコチラコチラ参考にさせて頂きました.

現在の環境はこんな感じ.


acerのハードオフで買ったスピーカーを接続.型番は不明です.
マトリクスLEDが光っていますが,今回は動きません.

動かした動画
raspberry piは動かないので今回はコンソールだけ.


動作は遅いですが,何とか会話しています.
ちょっと質問が意地悪ですが笑

今回は
音声認識ー>julius
AI->docomo api
出力ー>open Jtalk
の組み合わせを試しましたが,今後いろいろなサービスを
利用し,処理の高速化&精度の向上を目指したいと思います.

需要ないかもですが今回作ってみたみたスクリプト
起動シェルスクリプト 環境に合わせて変更
https://drive.google.com/open?id=0B4sMYcSdF0SFZ011ME5rUnBxU2c
Open Jtalk
https://drive.google.com/open?id=0B4sMYcSdF0SFaENYbmxzR0VYTG8
メインのjuliusプログラム docomo_api_key を環境に合わせて変更
https://drive.google.com/open?id=0B4sMYcSdF0SFaFMzb2ZieS1IcGs
ドコモ雑談API
https://drive.google.com/open?id=0B4sMYcSdF0SFX0ltaGdRcUZMdlE




2017年7月5日水曜日

Rasoberry Pi juliusとopen Jtalkを試してみる

I2C接続顔モジュールの形がほぼ定まってきたので,
なんとかしてRasPiと会話したい.

いろいろ調べた結果,音声認識にJulius,音声合成にopen Jtalkを
使用している例が多かったので,今回はこれらを導入したいと思います.

カメラ・マイクはLOGICOOL ウェブカム HD画質 120万画素 C270
スピーカーは外部電源の取れるものをイヤフォンジャックから出力しています.

・Julius
導入は参考サイトが多くあるので省略します.
ただ一点だけjuliusインストール時に./configureが実行できませんでした.
どうやらautomakeを使うらしい.
以下を実行すると無事makeできました.
$aclocal && libtoolize --force && automake --add-missing && autoreconf

ちょっと試してみます
$cd julius-kits/dictation-kit-v4.3.1-linux

$ALSADEV="plughw:0,0" ~/julius-4.4.2/julius/julius -C ~/julius-kits/dictation-kit-v4.4/main.jconf -C ~/julius-kits/dictation-kit-v4.4/am-gmm.jconf -nostrip


撮影環境が悪くて動画がブレブレです笑
精度がかなり高くて驚きました.

・Open Jtalk
こちらも導入は省略.
適当なテキストファイルを用意しました.

voice.txt
ハロー ラズベリーパイ オープンジェイトーク デモ

ついでにインストールした女性(mei)の声でwavファイルに変換します.
$open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow test.wav voice.txt

aplayコマンドで再生します.
$aplay -Dhw:1,0 test.wav



思ったより自然な声です.
個人的にはもっと落ち着いた声がいいななんて.

次回からこれらを用いて具体的なソフトの製作をしたいと思います.

参考にさせていただいたサイト
http://qiita.com/t_oginogin/items/f0ba9d2eb622c05558f4
http://www.pentacreation.com/blog/2016/12/161223.html
http://qiita.com/lutecia16v/items/8d220885082e40ace252



2017年7月3日月曜日

ESP-WROOM-02 お遊び基盤を作ってみた

ちょっと小ネタを少々.

値段あわせで買ったESP-WROOM-02ですが,
お遊びボードを作ってみました.



小さく収まりました.レギュレータが付いており,
12Vまでの入力に対応.こうしてみると自由に使えるピンは少ないですね.



いろいろ繋げてもコンパクトです.
暇なときに遊びたいと思います.

ジャイロセンサ MPU6500を使ってみる

お久しぶりです.
今回は自分がイマイチ使用したことのないジャイロセンサを使ってみます.
使用したのはMPU6500を搭載したコレ amazonで280エンでした。
3軸加速度,3軸角速度の6軸をI2CまたはSPI通信で取得できます.



LPC1114を使ってちょっとZ軸のみ角度を出してみたいと思います.
回路はこんな感じ.今回はSPIで通信しました.


フィルタ等は特に無しですが,ジャイロ側でいろいろ設定できるらしい
ので設定をいろいろ変えて検証します.
データシートからジャイロの設定はレジスタアドレス0x1b(27)で設定
できるっぽい.よって以下の条件で検証してみました.
レジスタ値0x00  ->  レンジ最小
レジスタ値0x98  ->  レンジ最大
レジスタ値0x99  ->  レンジ最大&フィルタ最大?
ローパスフィルタの記述がイマイチ不明ですが,
まあ仮に理解したとしてもいざ実践では実験からうまくいく設定を
見つけるしかないと思われるので,デフォルトと最大値?でどのように
変わるか検証します.
一応データシートの記述部分



静止時の生データ。
意外とレジスタ値0x98が一番良かったです.
サンプリングが早すぎる?と値がブレるのかな?



角度を算出し0-90度で数回動かしました.



一応レジスタ値0x98,0x99が良く取れてます.
まあ実験環境がアレなのであまり信用できませんが.
とりあえずレンジは広げたほうが良さげ?


一応値を取得して角度の算出までできました.
レジスタ値に関しては搭載する機器によって別途検証する必要が
ありそうです.
とりあえず買っただけなんでいつか使います笑

使用したmbedプログラム

2017年6月17日土曜日

I2C接続顔モジュール製作 回路編

I2C顔モジュールの回路と内部ソフトウェアがほぼ確定したので
まとめておこうと思います.

・まず回路





前回のとおりArduinoは不安定だったため,LPC1114を使用しました.
サーボが二つあるので電源は別電源をとるようにしています.
以外にもジャンパを少なく仕上げられました.結構自信作です.
以下回路図です.



・ソフトウェア
LEDドライバはソフトウェアI2C,モジュールへの指示は
ハードI2Cで行います.
ソフトI2Cライブラリはこちらです
さらにシリアル通信でも指示を送ることができます.

また,サーボは割り込みを用いて
少しゆっくり動くようにしました.
プロトコルは前回と同じで,
サーボ動作 -> ’s’+パン角[deg]+チルト角[deg]
LED表示右 -> ’r’+8byte 
LED表示左 -> ’l’+8byte
です.これはI2C,シリアル共通.

以下mbedコードです.
https://drive.google.com/open?id=0B4sMYcSdF0SFVDRvdlJ0WXJzdmM

ただバグが残り,サーボをOFFにする方法が不明です.
無駄な電力を消費するので動いていないときは切りたいのですが・・・






2017年6月13日火曜日

I2C接続顔モジュール製作 Rasoberry Piから接続

前回の記事からさらに作りこみました.
一回の記事に乗せきれないので数回に分けたいと思います.
今回はとりあえず動いた報告から.



概観です.正面から見るとなんとなくきれいにまとまってる
ようには見えます.この記事で製作したケースの上に載せると
いい感じです.ちなみにカメラはまだ起動させていません.



裏から見るとスパゲティ配線となっております.
ここら辺は今後作りこみたいと思います.



制御基盤を作り変えました.
前回はATmega328PUを使用しましたが,3.3Vでの動作は
少し不安定だったためLPC1114を使用しました.
動作は非常に安定しています.詳細は別記事で.




I2Cを用いてRaspBerryPiと接続.ちょっとがんばって
WEBサーバー経由で操作できるようにしてみました.
サーバ構築やHTMLなどは専門外なので見た目はよくないです.
この辺も今後作りこみたいところ.

2017年6月4日日曜日

Raspberry Piケースを自作してみた

私はRaspberry PIを初代B+と3b+を所持しておりますが,
ケースはひとつも持っていませんでした.
適当な箱に入れていたわけですが,今回ちゃんとしたケースに
入れてあげることにしました.

買うのもアレなので100均グッズで自作してみました.

使ったのはコイツ


ダイソーで買ったタッパーです.サイズがいい感じで加工しやすそうです.
その他高めのM3のスペーサ,低頭ねじ.
使用したツールはハンドドリル,カッター,ドライバーなど.



位置を決め一箇所だけハンドドリルで穴を開けます.
3b+はM3ではないようですが気合でいれました.
一度はめてみてから再度穴の位置を合わせます.
この位置あわせはかなり重要です.






3箇所とめましたが,ガタつくので結局4点止めにしました.


USBやディスプレイ端子の位置を合わせ,印をつけます.
ちょっと大きめにしないとコネクタによっては入らなくなります.

 

がんばってくりぬきます.自分はカッターを使用しましたが,
かなり時間がかかりました.何かいい方法はあるんでしょうか.
一箇所力んで失敗してしまいました・・・



一応完成です.





ついでに初代B+用も作りました.



お手軽ですが,結構気に入ってます.


2017年5月31日水曜日

ESP-WROOM-02を触ってみる

スイッチサイエンスでモータドライバを購入する際,値段合わせで
ESP-WROOM-02を購入してみたのを思い出し,早速テストしてみる
ことにしました.

ESP-WROOM-02は安価なWiFiモジュールです.ArduinoIDEに対応
しているので簡単にネットワークに接続することが可能です.
センサ値をワイヤレスで取得したり,スマホからWiFi経由で操縦できる
ロボットなど結構遊べそう.

購入したのはこちら.開発ボードではなくピッチ変換基盤ですので
外部で回路を構成してやる必要があります.



とりあえず動作させる回路は
3V3   ->  3.3V
GND  ->  GND
EN    ->  10k  ->  3.3V
IO15 ->  10k  ->  GND
IO2   ->  10k  ->  3.3V
IO0   ->  10k-  >  3.3V(boot) or GND(書き込み)
RST   ->  10k-  >  3.3V
TXD   ->  シリアルのRXD
RXD   ->  シリアルのTXD

このほかに後述するLチカのためにIO4にLEDを追加しました.
ちなみに3.3Vは外部からACアダアプタを用いて供給しています.



ArduinoIDEのシリアルモニタで接続します.
"CRおよびLF","115200"を選択します.
以下のように表示されました.

AT+GMR

AT version:0.52.0.0(Jan  7 2016 18:44:24)
SDK version:1.5.1(e67da894)
compile time:Jan  7 2016 19:03:11
OK

接続は成功のようです.少しATコマンドで遊びつつ,今度は
Lチカをやってみます.(ATコマンドはコチラを参考にしました.)

ArduinoIDEボードマネージャーにESP8266ボードをインストールします.
かなり情報があるのでここでは省略します.
自分の環境ではインストールに非常に時間がかかりました.
スケッチの例->ESP8266->BlinkをちょっといじりIO4から出力にします.

#define LED_BUILTIN 4

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); 
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(2000); 
}

IO0をGNDに接続,電源の抜き差しでリセットをかけます.
後は普通にArduinoに書き込むようにします.
ちょっと違った表示が出ましたが,[100%]となり無事書き込めました.
IO0を3.3Vに,もう一度リセットをかけます.

できました!!


特に引っかかることなくLチカできました.
ESP-WROOM-02については空いた時間で遊びつつ,
アイデアが浮かんだらなんか製作したいと思います.
その前にまずはファームの戻し方をメモしなければ.


参考サイト
https://www.mgo-tec.com/esp8266-board-install01-html
http://nonnoise.github.io/ESP-WROOM-02/ATcommand.html
https://tpedia.tech.gr.jp/20160111434/