2016年12月12日月曜日

Bluetooth カスタムキーボードを作ろう ~構想編~

きぐふぁん2の製造は順調に進んでいます。
アメリカから取り寄せたファンが、想像以上にスペックが高くて満足な品物だったので、こいつに変更でターンエンド。
前に買ったファンが余剰分で赤字になるので、次のターン(1月)は墓地に強制送還が確定しています。







さて、タイトルから「共晶ハンダもGクリヤも固まらねえうちにテメェは一体何をやってんだ!!」と自分に疑問を投げかけている身ではありますが、これが平常運転と割り切って、次に進みます。


僕が設計とかモデリングしているときは、デスクの奥側にキーボードを押しやって、手前にペンタブを持ってくる配置でやっています。
まぁ、ズボラというかなんというか、ペンタブを弄ってるところからなるべく手を動かしたくない、ペンを持ち替えたくないという感情が湧くわけです。
アプリケーションごとにショートカットを登録して、左手で使える小さなカスタムキーボードがあったらいいなGoogle先生ということで探してみると、「Trickey」という、手軽にカスタムできちゃうキーボードがあって、すでに製品化されていました。東京大学発。必要なキーだけを装備するカスタムキーボードのTrickeyがKickstarterキャンペーン中(TechCrunchの記事)


写真を見る限りでは、本体側のシステムモジュールと、EEPROMか何かのROMが内蔵されたキースイッチモジュールとに構成されているように思われます。
それほど難しい技術が使われているようにも感じられないので、似たようなもので自作は可能なんじゃないかなと判断しました。

ただ、個人がここまで手の込んだものを作るのはさすがに敷居が高いので、配置が固定の拡張キー基板を一つの部品として、それをマイコンを積んだメインのモジュールに差して使うという構成なら、できなくなさそうです。
制御用のマイコンにADCがあれば、キースイッチのほかにもスライドパッドのようなアナログ値を扱うものも乗っけられるので、応用の範囲が広がります。

さらに、Bluetoothキーボードとすれば、Bluetoothが乗っているモノならどんなものでもつながります。PC/Macはもとより、Raspberry Piだっていけます。専用ドライバがいらないので、ユーザーの負担も開発者の負担も減ります。何より無線はカッコイイのです。
VolumioをPCやスマホから操作するのもいい加減ダルくなってきました。赤外線じゃないちょっとかっこいいリモコンが作れるかもしれません。


今決まっていること

・Bluetoothカスタムキーボードを作る
・NiMH電池内蔵式、USB充電対応。古くなったNiMH電池は交換可能
・キー部分が着脱可能、スライドパッドも可。
・PCからキーマップの設定が可能
・キー部分が名刺サイズに収まること

こんな感じでしょうか。1月いっぱいまできぐふぁん2の製造があるので、動き出すとしたら2月以降になりそうです。

2016年12月4日日曜日

きぐふぁんの構成図面

きぐふぁん2の図面

外見



上から 吸気側

斜め上から

横から

斜め下 排気側

構成







2016年11月30日水曜日

Raspberry PiのGPIOヘッダ交換

ラズパイ単体で何かしようとするときにGPIO端子がピンヘッダであることに不便に感じていたので、ピンヘッダを引っこ抜いてソケットに交換してみました。
ピンヘッダは出てるものの、そこから線を引っ張ってくる方法っていうのが面倒に感じていたので、ブレッドボードなんかの配線が直接挿せるようにしてみました。
隣にブレッドボードを配置すれば簡単に回路が組めて便利かな~という簡単な考えです。

まずはB+ではお試し。う~む、悪くない。


しかしながら、シングルコアでいろいろさせるには、テスト環境として少々不安が残ります。
後先考えずにコネクタ引っこ抜きまくってるのも要因ではありますが…。

ともかく、ピンヘッダが簡単に引っこ抜けることが分かったので、引き続きRaspberry Pi 2にも同じ処置を施します。ネットワークオーディオを作った時の固定板をもう一回出力して、今度はブレッドボードを貼り付けます。
すると、ちょっとしたものを作りたいorテストしたいときに重宝しそうなボードキットが完成。



これは便利かもしれない。が、気づくの遅すぎた… 

2016年11月28日月曜日

写真 きぐめがね



昔Twitterにアップした画像だけども。こちらにも置いておきます。


開発コンセプトというか、設定をづらづらと。

・構造的に無理がないこと。
・ヘッドのラインをつぶさないこと。

人間の眼鏡でいうところのブリッジと鼻当ての部分をクリップのような構造にして、マズルの頭を挟んで装着します。磁石で固定しようと思ったけども、吸引力が思いのほか弱くて断念。

何度か試作してこの形に落ち着きました。まぁ…センスがないのは…目をつぶってやってください…。

こればっかやっとらんで、本体つくらんとね。

2016年11月25日金曜日

きぐふぁん2 ファン到着





40cm角厚さ10mmでDC5V駆動のファン、26個が無事到着。
Amazonでポチリティからわずか一日とスピード配達。

下の写真は一台袋から出して撮っていますが、箱を開けてほぼこのままの状態です。
そこのほうにプチプチもスポンジも何もなし。それほど精密でもないからいいのかなぁ…

Amazonレビューによると当たり外れがあるようなので、全数検査をする予定です。
その中でパスできなかったものの予備として必要数20に対して6個追加で注文しています。


きぐふぁん2についてメモ

今回買ったファンと同じ仕様で価格が倍近くするものを使って、加湿器の湿気に晒して何時間で壊れるのかを確かめてみました。超音波式の加湿器だったこともあって、水の中のミネラルがファン基板上に付着。一晩でお釈迦になりました。当たり前といえば当たり前なんだけどね…。 

どっちみち過酷な環境で使って壊れてしまうのであれば、交換前提で安いファンを使っていくほうが安く済むんじゃないか、という考えです。

基板のほうは部品全部頼んだし、あとは作るだけ。

2016年11月15日火曜日

きぐふぁん2 製造と販売について

きぐるみ用換気ファン2 についていろいろと考えていることを書き込んでいきます。
まだ構想段階のものも含まれていますので、途中で内容が変更になったり削除されることもありますが、
このように考えているくらいの気持ちで見てくださると幸いです。

今回は、製造と販売方法について書いてみます。

製造について

●製造のポリシー


一つの型番に対して製造するのは基本一度きりだと思ってください。俗にいうワンオフ品ってやつです。
需要が見込まれれば引き続き製造するかもしれない、程度に思っていてください。

こうやってものを作って売るのは初めてなので、今回はあんまり需要はないだろうな~ぐらいに考えています。今後どうするかはまた改めて…

●製造方法について


実装を業者さんに頼むと製品価格に跳ね返ってくるので、基本手作業で行います。
小さい部品が非常にもどかしいズレ方をしてるかもしれませんので、そこはご容赦ください。
ちなみに、使用するハンダは共晶ハンダ(鉛入り)です。一企業であれば環境のことを考えて鉛フリーハンダで実装とするところなのでしょうが、趣味である以上そこまで過剰に投資する必要はないと考えています。


●防湿・防錆処理について


きぐふぁん2は特に湿気や塩分の多い場所で使われることが想定されますので、基板に防湿・防錆剤を塗布してから組み立てます。ただ、あくまでも基板の腐食や劣化の可能性を低くするor遅らせる程度のものであって、100%防ぐものではないことをご承知ください。

なお、防湿・防錆処理に使用する薬剤は、サンハヤトのハヤコート MarkIIです。


販売ついて

●製品の販売形態


完成品キットとしての販売を行う予定です。
きぐヘッドに追加工を自分で行って、あとは組み込むだけの状態で販売します。
あと、回路図と書き込まれているプログラムのバイナリを公開しますので、好きに遊んでやってください。

ただ、どんな損害やトラブルが起きても自己責任としますので、その点ご承知ください。
ここのあたりは次回に回します。


●販売手段


販売手段は以下の3つを予定しています。

・各種イベントにサークル出展にて販売
・オフ会などで手渡し
・通信販売

当方、関東圏に住んでおりますので、関東圏でのイベントやオフ会での販売からスタートします。
遠くにお住まいの方には大変申し訳ありませんが、今しばらくお待ちください。  
「通販してけろ!」という声も聞きますので通販での販売も検討しています。…通販どえらい難しそうなんだけど…何をどーしたらいいんだっ!


●価格の決定

 

製造ロット毎に決定します。今回は

[1台あたりにかかった部品代]+[100円未満の端数繰り上げ分]

とします。
 今後、作るものによっては、ここに

[わが地元の銘菓ブラックサンダーn個分]

が追加されるかもれません。


内容は薄いけども、今回はここまで。


2016年11月6日日曜日

きぐふぁん2 概要

きぐるみ用換気ファン2 についていろいろと考えていることを書き込んでいきます。
まだ構想段階のものも含まれていますので、途中で内容が変更になったり削除されることもありますが、
このように考えているくらいの気持ちで見てくださると幸いです。

初回の今回は、概要について簡単に説明してみます。

変更履歴
--2016年11月14日 主な仕様を編集

きぐふぁん2って

どういうものかというと、「きぐるみヘッドに組み込める、制御基板付きDCファン」といったところでしょうか。パソコンなどの電気機器用の小さいDCファンに制御基板をのっけて使いやすくしたものです。
通気性が悪く、中の空気がこもり易いきぐるみヘッドの中の空気を強制的に排気するために作りました。

どういう人向けなのか

・ヘッド内の通気性が芳しく無くて蒸し暑い、息をするのが大変
・ヘッド内の通気性を確保して少しでも稼働時間を伸ばしたい

特に、発泡ウレタンでヘッドベースを作っていて、「長く出したいんだけど息苦しくて辛い!」という人に対して有効です。元々こういうタイプのヘッド向けに設計していたので、ウレタンの厚みの20mmにすっぽり収まるようになっています。

その他の作り方に対しては検証がまだできていませんが、埋め込むためのスペースと十分な強度が確保できれば使用は可能と考えられます。




外観


※この画像は一次試作品です。今回作るものとは見かけが若干異なります。
専用制御基板の下に電気機器用40mm角のDCファンを重ねて配置し、ひとつのユニットにしています。
写真にはありませんが、このユニットを囲うようなブラケットが付属します。このブラケットをヘッドベースに装着し、ブラケットにファンユニットをはめ込む形とすることで、取り外しとメンテナンスがしやすい構造とします。


主な仕様


外形寸法:(タテヨコ高さ)40[mm]×40[mm]×20[mm] (高さは突起部を含まず)
重量:約30[g] (まだ正確に測ってない…)
電源電圧:DC4.5V〜5.5[V] USBの5V電源推奨。この電圧範囲なら乾電池も可。
出力電圧:0〜電源電圧 (最大255段階の分解能)
主な機能:PWMチョッパによるファンへの供給電圧の変更、USBモバイルバッテリ使用時の省電力モード無効化(オプション)、独自シリアルバスによるリモート制御(オプション、FW変更が必要)


主な機能

・ファンの回転数コントロール
 外付けのボタン押下操作で回転数を変更します。
 例:(弱→強→弱…) とか (弱→強→切→弱→…) といった具合。

・過電圧保護機能
 DC6.0[V]以上の入力で制御回路の動作がOFFします。

・過電流保護
 400mA以上の電流消費時に動作OFF、一定時間経過後に復旧します。


今回はここまで。

2016年10月26日水曜日

BloggerにSyntaxHighLighterを導入する(1)

忘れないうちにメモ。



ブログに張り付けたプログラムのソースコードを、エディタみたいにいい具合に表示してくれるSyntaxHighlighterというものがあります。

こういうのを

int main(void){

    printf("HELLO WORLD!");

}

こんなふうに表示してくれます。
int main(void){

 printf("HELLO WORLD!");

}




他所様のブログでは、Syntax Highlighter Scripts Generatorでスクリプトを生成して貼り付ける方法が紹介されています。が、2016年10月26日現在でこのジェネレータがうまく動いてくれません。(Generateボタンを押しても何も起きない)

ウーム…Web関係の言語にはめっきり弱いしメンドクサイことを抜きにしてすぐ導入したい!いろいろ探していくとここ(Awesome code syntax highlighting made easy)がいちばんシンプルで分かりやすかったのでここの手順を参考にしました。

導入手順は、
1.BloggerのHTMLテンプレートにJavaScriptの定義と実行コードを追加 (大体コピペで済む)
2.ブログ作成時にハイライトしたい部分をタグで囲む (これもコピペで済む)

といった具合。これで動きました。
ただ、ここのをそのままコピペすると、一部言語の定義ファイルが抜けていて「定義ファイルがないよ!」と言われたりします。その辺のいじり方と解説はまた明日…。

2016年10月24日月曜日

Pythonでプログラミング その1

先日組んだ Eclipse + PyDevの開発環境で、早速プログラムを組んでみることにしました。

「waveファイルの音声データをバイナリのファイルとして出力する」アプリケーションが欲しかったので、これにトライしてみることに。

とりあえず、プログラムとして動くためには以下の3つの要素を満足する必要があります。
1.waveファイルを読み込む
2.音声データを配列やリストとして分離する
3.配列のデータをそのままバイナリファイルに書き出す
waveファイルを取り扱うのに便利な「waveモジュール」がありますので、これを使用します。
このモジュールを使うことで、ヘッダ部以外の音声部を直接取り出すことができます。
ソースコードは以下の通り。

# -*- coding: utf-8 -*-

import wave

if __name__ == '__main__':
    
    wavefile = "./input.wav"                   #waveファイルのパスを指定
    wf = wave.open(wavefile,"rb")               #ファイル読み込み
    
    numdata = wf.readframes(wf.getnframes())    #文字列データに変換
        
    bindata = open("output.bin","wb")       #ファイルを開く
    bindata.write(numdata)                  #ファイルに書き出し
    
    bindata.close()                         #ファイルクローズ
    print("Conv Finished.")


現状使うのは8kHzのモノラルだけですのでこれで十分といえば十分です。
あとはGUIでファイルが選べたり、変換の設定がいじれるようにしておけば形としてはしっかりするかな。

そしてSyntaxHighlighterが導入できない……と思ってたらプレビューだと動かないのね…。

2016年10月8日土曜日

Ubuntu16.04+Eclipse + PyDev で Python開発環境構築

Ubuntu16.04を入れたサブマシンも、ようやく2画面にして快適になったので、Pythonの開発環境を構築してじっくり遊んでみることにしました。

かねてから、Windowsマシンに PyScripterというエディタで開発環境を作ったことはあるのですが、このエディタの使い勝手がイマイチしっくりこなくて、ずっと手付かずのままになっていました。

またどうせすぐ忘れてしまうので、Ubuntuで作るEclipse+PyDevでの開発環境構築の方法をメモしておきます。

■はじめに

環境構築に必要なのは、
・Java8 openjdk
・Eclipse
・Python (2.7も3.x系でもOK)
・PyDev (Eclipse用のPythonプラグイン)

インストール時の注意点として、Eclipse、PyDev、JDKそれぞれのバージョンがちぐはぐだと動かないのだとか。
 EclipseにPydev5.2を追加してもPydevが表示されないとき -- Qiita

今回は、
・Eclipse 4.6.1
・openjdk-8
・PyDev 5.2
という構成で構築しました。
ちなみに、Ubuntu Softwareで提供されているEclipseは3.8ですので、すでにインストールされている場合は予め削除しておきましょう。

■JavaとPythonの入手

JavaとPythonはaptで取得できるのでサクッと取得します。
sudo apt-get install openjdk-8-jdk
sudo apt-get install python python3

Eclipseのサイト(http://www.eclipse.org/downloads/?)からEclipseをダウンロードしてきます。展開したアーカイブの中にインストーラが入っていて、どの種類をインストールするのか聞いてくるので、[Eclipse IDE for Java Developers]を選択します。
一番上の項目を選択
Eclipseのセットアップが終わったら、Eclipseを起動して、PyDevを入手します。



■PyDevの入手
Eclipseが起動したら、メニューバーの[Help]から[Install New Software]と進みます。


最上部のテキストボックスにPyDev入手先のURL"http://pydev.org/updates"(2016/11/15現在 http://www.pydev.org/updates)を入力し[Enter]キーを押します。
下の一覧に
・PyDev
・PyDev Mylyn integration (optional)
の2項目が表示されますので、両方にチェックを入れて[Next>]をクリックします。



 次の画面では、新たにインストールするパッケージの一覧が表示されます。そのまま[Next>]をクリックして次に進みます。


Eclipseパブリックライセンスへの同意の確認です。すべての項目に対して[I accept....]にチェックを入れ、[Finish]をクリックして次に進みます。


最後に、証明書の確認を聞いてきますので、表示されているものにチェックを入れ、[OK]をクリックします。


PyDevのインストールが完了すると、Eclipseの再起動を促してきますので、[Yes]で再起動します。


さて、ここまで来れば9割終わったようなもの。
最後に、"pythonインタープリタの登録"を行います。



■Pythonインタープリタの登録
 Eclipseのメニューバーから[Window]→[Preferences]と進んでダイアログを開きます。
左のツリーメニューから、[PyDev]→[Interpreters]→[Python Interpreter]と進んで
右上の[New...]から、Pythonインタープリタを登録します。

[Interpreter Name]と[Interpreter Executable]の2項目に記入する必要があります。
・[Interpreter Name]はインタープリタを区別するための名前です。任意ですので "Python3.5"などわかりやすい名前をつけるといいでしょう。



・[Interpreter Executable]には、Pythonのバイナリファイルのパスを入力します。
python3.5であれば、 "/usr/bin/python3.5" と記入します。


PythonのSYSTEMパスに以下のディレクトリを追加するか聞いてきますので、そのまま[OK]をクリックします。





これで、Pythonインタープリタが登録されました。他のPythonバージョンを登録したい場合は同じ手順で登録していきます。




これでEclipseでPython開発の環境構築作業はおしまいです。

2016年10月6日木曜日

ラズパイとUSB-DACで音楽サーバ

部屋に余っていたラズパイにVolumioを入れて、秋月電子で投げ売りされていたUSBオーディオアンプを繋いで音楽サーバーを作ってみました。

中にはこんな感じ
本体はRaspberry Pi B+。シングルコアののんびりやさん。
音楽サーバーとして動かすのであれば十分な性能でかつ省電力なので一石二鳥です。


USBオーディオアンプは秋月電子のこれです。
http://akizukidenshi.com/catalog/g/gM-02404/

10W+10Wのパワーアンプ内蔵で、24ビット48kHzでの再生能力があり、しかも5V単一電源で駆動。5V単一で動くのでラズパイと合わせて電源が5Vのみにできるのが嬉しいですね。 

ケースは3Dプリンタでテキトーに。基板が固定できりゃいいんです。できりゃ。
 天板の裏側が寂しかったので、これまたそこら辺で転がってたSATAのハードディスクをホットボンドでくっつけておきました。USB-SATAの変換ケーブルが手に入った暁には、ちゃんとした音楽サーバーになることでしょう・・・いつかきっと。


全体像
天板の裏側


当初はユニバーサル基板にI2S-DACを組んでハイレゾ…と思っていたのですが、食指が伸びない&作業時間短縮のためこちらに変更。
元来ユニバーサル基板用に作った穴位置でUSBアンプを固定しなきゃならないので、このような見た目になっています。


----------------------------------

ネットワークプレーヤー専用OS「 Volumio 」について

Raspberry Pi上でネットワークプレーヤーとして動くディストリビューションです。

RaspberryPi上に保存した音楽データの再生、インターネットラジオの再生、
AirPlayでのキャスト再生に対応しています。
Windowsのデバイスキャストでも動作を確認できました。

再生・音量の操作はブラウザ経由で行えますので、LANに繋がっていて、
ブラウザが使える端末ならどれでも操作できます。

microSDカードの空き領域、または外付けのディスクをWindowsのネットワークドライブとして共有してくれるので、RaspberryPi上に音楽データを置きたい場合はここに曲データをコピーすればOK。

iTunesでの音楽再生や、PC上のmp3をそのまま再生したい場合などはキャストの機能が大いに役立つと思います。ただ、DACの仕様なのか、Windowsとのやりとりの問題なのか、Windowsのデバイスキャストでボリュームを操作するとVolumioの音量が極端に小さくなるという現象が出てしまいました。何か方法を探さなきゃな・・・