2017年4月16日日曜日

Ubuntu 17.04 Mouse Aceleration メモ


Ubuntuを17.04にアップしたらマウスの設定が多分デフォルトに戻されてしまったようで、システム設定のGUIからの変更もできなくなった。

ArcLinuxのドキュメントの下の方の「マウスのアクセラレーションの無効化」を参考にして、"AccelSpeed"の値を適当に選んだ。

Ubuntuの場合このファイルは、/usr/share/X11/xorg.conf.d 内に新規に作る。
90-mouse.confとして保存し、Xを再起動。
解決したが、この方法が正当なのかは不明。

2017年2月24日金曜日

ESP-WROOM-02、MIDI over WiFi FOOT SWITCH


ルーパーを使ってみたくなり、iPod Touchがあるので試しにLoopyを使ってみようと思いフットスイッチを探してみた。iOS用としてはIK MultimediaのBlue Boardが最適だけど、たかがフットスイッチなのにちょっと高価と思ったので作る。

実現方法として、iOSのスイッチコントロール、over USB、over BLE、over WiFiを検討、現状はWiFiが良さそうと判断。そうこうしているうちに発売になったESP-WROOM-32ならば、BLEがいけそうだ、こちらの方が理想的。ESP-WROOM-02、元旦に注文したらなんと3日に届いた。

 

ケース

 

SilkRoad FS-103
 


















樹脂製のケースにモーメンタリスイッチを使えば大きさの制限とかなくて簡単だけどそれらしいのを探してSilkRoadのFP-103というのを発見、980円で購入。

分解してケーブルと基板を外す。

回路

電源部
本体


 

ESP-WROOM-02は起動時に結構な電流が必要なようで(500mA位必要みたいなことがどれかのデータシートにあった)、いろいろ検討してみたが電池1個では起動は難しそうなので単4電池2個とした。

当然昇圧の必要があり、500mAだとすると少々足りないかもしれないEMH-7601を使ってみた。

スイッチはフォトリフレクタITR8307を使った。IF=20mAでの条件はあるが電池動作のためにGPIOを使って周期的にスイッチオンを検出するようにしたいのでGPIOの規格12mA以下にしたいのだけど目安にするための、IFに対してのライトカレントのグラフがない。

仕方がないのでカットアンドトライで。

PCB


1段目
2段目

















 


かなりスペースがきついので2階建て。電池の位置がちょっと狭かったのとESP-WROOM-02のプルアップ、ITR8307のフットプリントを間違えてしまったが作りなおすのが面倒なので切り貼りで対応。

KiCadのESP-WROOM-02ライブラリは、以下を利用させていただいた。

https://github.com/jdunmire/kicad-ESP8266

ファームウェア

初めての ESP-WROOM-02、最初はArduno IDEを使ったけどPlatformIOが良さそうなのでこちらに切り替え。ESP-WROOM-02はライブラリが整ってるのでかなり簡単。

ESP8266開発用以外に必要なライブラリは、

https://github.com/lathoub/Arduino-AppleMidi-Library

PlatformIO(Atomエディタ)のTerminalから、

pio lib install AppleMIDI

とコマンドを入力してインストール。すごい、便利。

レイテンシを考えるとアクセスポイントにしたほうがよいけどESP-WROOM-02のことをよく解ってないのでとりあえずステーションモードで。DNSを使うとどうも接続に時間がかかるし他の機器の接続がおかしくなったりしたのでスタティックアドレスにした。

ある程度うまく行ったところでOTAアップデートが出来るようにコードを加えた。

ホスト名は、WiFiで設定してもArdinoOTAの設定時に上書きされるようなのでこちらで設定。
ESP8266の理解、ライブラリの理解が足りずサンプルコードの切り貼りがほとんどでスイッチのオンオフ検出も大雑把なので必要がない部分、適切でない部分があると思う。


Loopyで動作確認


1. 左下のアイコンをタップ


2. 設定をタップ


3. コントロールインプットをタップ


4. ネットワークを有...をタップ


5. esp-fsをチェック


6. 右矢印でビンディング設定


7. ビンディングを追加


8. アクションを変更


9. トラック・アクションをタップ


10. 録音切り替えをタップ


11. フットスイッチを踏む


12. MIDIメッセージ(ここではA2On)を選択し
ビンディングを保存をタップ


13. ホーム画面でフットスイッチを踏んで
録音開始


2015年7月12日日曜日

RT-200KI ひかり電話で、ソフトフォンYate VoIP Clientを使う。

随分と長期にひかり電話の機能なんて全く考えてもみなかった。

ネットを検索してみるとiPod TouchはAGEphoneで簡単にソフトフォンができることがわかった。持ってるのはマイクがないモデルだし(マイクあった。ないのなんてないのか。)電力を食いそうなのでどうしたものかと。

ふと、PC(Ubuntu VividVernet)で電話が取れたら便利だなと思っていろいろ試してみたら、Yate VoIP Clientがうまくいったのでメモ。古い古いRT-200KI以外でもうまくいくのかは不明。

まず、RT-200KIにYate Clientを登録。RT-200KIにログインし電話設定。IP端末1はiPodにしたのでIP端末2へ。、

内線番号4を有効にして、IP端末2の設定はディフォルトのままでパスワードだけ変更。


次にYateのアカウントを設定。下は設定後なのでEditになっているけどAddでもWizardでも同様。


「Username」に内線番号、「Authentication username」にRT-200KIのユーザー名を入力。ネット情報から「Regiteration interval」は3600以上との情報を得た。「Server」はもちろんRT-200KIのIPアドレス。

OKでRT-200KIに登録される。「Accounts」ダイアログの「Status」がグリーンの「online」になり、RT-200KI側のステータスは「登録済み」になる。


ここからが大変だった。

ダイヤルしても繋がらない、トライしているようだがすぐ切れる、繋がる以前の模様。iPodは問題ないので内線電話を試してみる。

すると、呼び出し音がなって取ることができ、受ける方は問題ない。外線からかかってきても呼び出し音がなるので受けることはできる。

Yateにデバッグウィンドウがあるのでログをとってみるが内容が理解できない。Yateのドキュメントを参照する。よくドキュメントされていることで膨大な内容。SIPなんて詳しくないのでネットを巡って基本的なことを学ぶ。

で、またデバッグ内容をiPodからの接続とかの時と比べてたりして見なおしてみる。すると、クライアントエラーがあることがわかった。

iPodからの接続のときは、

m=audio 4000 RTP/AVP 0
a=rtpmap:0 PCMU/8000

とあり、SIPのメッセージは「100 Trying」に続いて「180 Ringing」になっている。

ところが、Yateから発信すると、

m=audio 20224 RTP/AVP 0 8 3 11 98 97 102 103 104 105 106 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:11 L16/8000
a=rtpmap:98 iLBC/8000
a=fmtp:98 mode=20
a=rtpmap:97 iLBC/8000
a=fmtp:97 mode=30
a=rtpmap:102 SPEEX/8000
a=rtpmap:103 SPEEX/16000
a=rtpmap:104 SPEEX/32000
a=rtpmap:105 iSAC/16000
a=rtpmap:106 iSAC/32000
a=rtpmap:101 telephone-event/8000

となっていて選択肢がいっぱいある感じで、「100 Trying」に続いて「488 Not Acceptable Here」となって、どうもこれがエラーらしいことがわかった。

iPodのようになればよいのかなと推測して、Yateのドキュメントを眺め、/etc/yateに沢山あるconfファイルからそれらしいもの、「ysipchan.conf」にあるセクション、[codecs]の内容を変更してみた。設定を変更するのにこの方法が正しいのかは分からない、クライアント設定のみ、

[codecs]で、default=enableがコメントアウトされているがdefaultのディフォルトはenableのようで、これをdisableにすると全部使えなくなって、これはこれでうまくいかない。

よくわからないけど取り敢えず、mulawとalawをenableにして保存し、Yateからの発信を試すと・・・うまくいった!!!

内線4(Ubuntu PC)から内線3(iPod Touch)に接続した状態。外線は時報を試した。


ただし現在マイクが用意出来ていないので送出時の音質の問題が残っているかもしれない。後々試そう。

Ubuntuには他にも、Linphone、SFLphone、QuteCom、Ekiga、Twinkleがあるが全部登録できず、vividでは動かないのもあった。設定項目からするとできそうなものがあるがなにか使い方に問題があるのかもしれない。

Yate ClientはUIもクールだと思う。

2015年4月15日水曜日

本の整理中・・・銚子電鉄デキ5


銚子電鉄のホームページには「デキ3」とある。なぜに「デキ5」になったんだろう・・・



2014年7月26日土曜日

OpenGL VBO


前のビューワーは、OpenGLといってもGPUパワーを使ってなかったので遅いのは当然だった。

なので、Vertex Buffer Objectを使うように書き直すと、OpenGLになった。1.4でも行けるのはありがたい、Pythonでできるのも嬉しい。




3Dは難しいな、マウスで思い通りに移動しないな、LinuxCNCのAXIS風にできたらいいな。

2014年7月20日日曜日

G Code Viewer using Cairo、OpenGL


Matplotlibはほんとに素晴らしいんだけど、今や非力な所有ノートPC(T5600)ではファイルが大きくなるほど移動、拡大などが遅い。OpenGLのバックエンドが使えるようになれば良いが、i945GMのバージョン1.4はサポートされるはずがない。

で、必要とする機能は限られているので、Cairoを使ったものと、OpenGLを使ったもので表示部を作ってみたが、マウスポインタを中心に拡大するのは結構大変で、上手く行くまで相当な手間がかかり、つぎはぎだらけのコードとなってしまった。

こんな感じ、


データは、pcb-gcodeで作った、約28000行のG Code。

PythonのpyOpenGLを使ってGtk+3と共存できたのでこちらもやってみた。


Cairo版で悩みに悩んだのと、当然きちんと作られているOpenGLのおかげもあって比較的簡単に。

しかし、OpenGLと言っても図形の描画以外はアクセラレーションの恩恵を受けていないはずで、ちょっと早い(システムモニターで見てCPU負荷が軽い)程度、pyOpenGL自体も遅いとのことだしほとんどの影響はPythonの速度だろうか。

高速じゃないけど遅くはない・・・くらいかな。

(アップロードした動画が荒いのはなぜ?)

2014年3月4日火曜日

Code Configuration Plugin

久々にPICを使おうかと思いMPLABXを最新版にしてMicrochipのページを見ている時に、このプラグインがあることを知った。


使ってみるとなかなか良い。

Device Resourcesから必要なものをProject Resourcesに追加しそれぞれの設定をしてGenerate Codeボタンを押すと、


という感じでファイルが生成される。

 PICは12F1822、サーボはかなり昔のFutaba製。残念ながらCapacitive Sensingは用意されていないが、CPSCON0、CPSCON1の2個のレジスタ設定とタイマー0、1のコード自動生成、判定コードを追加すれば良いので大して手間はかからない。ディバグ用にesuartを使ったがprintfを使うのもチェックボックス1つですごく簡単。Cファイル、ヘッダーファイルをみれば使用できる関数も簡単に理解できる。

試したものは、ラジコン用のサーボをトグル動作させるスイッチ的なもので、タッチ入力用にCapacitive Sensing、サーボの制御にPWM、サーボの電源オンオフにGPIOを使うというプログラムを作ってみたが、データシートを見ながらのレジスタ値の設定から開放される。大変ありがたい。

Capacitive Sensingは、AN1103にあるパーセンテージ判定を使用、PWMは、周期を15ms、ニュートラル位置を1.5msとしてタッチでトグル動作させて±に変化させるために使用、GPIOは、サーボの動作時のみ電源を供給するために使用。

ボタンは、薄い透明プラスチックと粘着アルミテープの間に字を書いた紙を挟んだもののアルミ側をブレッドボートの入力ピンの上に載せた。タッチしていない時の容量成分はブレッドボードを含む入力ピンとグランド間で決まっているかなと思う。

動作の様子。


2014年2月4日火曜日

Arduino Pro Mini Clone (続)


質問を契機にふと思った。

購入したものには最初からAREFとRESET間にキャパシタはなかった。思い出してみるとebayに出品されているものの中に、これが取り付けられていたものを見た記憶がある。関係ないが、「動かない」とお断りつきで出品されていたものもあった。

これがあるとADCに影響がある程度と深く考えなかったが、よく考えてみると、もし同じように間違えたPCBパターンのものならば、DTRによるオートリセットが上手く行かない可能性がある。どちらのキャパシタも同じ0.1uFである可能性が高い。

同じボードを使用する際は、ここにキャパシタ(赤枠の位置)付いていたら、取り外すか、若干はんだ付けテクニックを要するが、緑枠の位置にずらして付け直す必要がある。


2014年2月2日日曜日

Python CNC GCode Sender


何となく形が見えてきた、現在のGUIはこんな感じ。


Matplotlibでの描画が重いのでチューニング中。まだまだかな。

2013年12月22日日曜日

G-Code-Sender


Grbl、OSはUbuntu13.10前提で、GTK+3のGUIをGladeとPythonを使ってG-Code-Senderを作成。

こんな感じ。


Python、試行錯誤しながらのプログラミングにも最高。エディターはKomodo Edit 8.5、素晴らしい。Anjuta、Geanyも素晴らしいが不安定なことがある。

GUIに統一性がないとか、細かいところはのちのち、やるか・・・?

2013年11月23日土曜日

Open Source Circuit Boards at Home

この彼のやっていること、オートレベリング、基板の固定、両面基板の作成など手作り感満載のCNCですべてできている、大したもの。


Firmware


ファームウエアは、TeacupがよさそうだったのでAtmega328でいけると思い安っいArduinoを選んだが、試してみるとどうも高機能を望むとMerlinがいいよう。328ではだめっぽい、644以上なら間違いなく、Gen7のハード構成がよい感じ。

コントローラソフトは、CNCGcodeControllerがAutoleveingがついててよいけど、ファームはMerlinが標準みたい。Teacupでもいけるかも。ファームがGrblなら、Universal Gcode Senderがよさそう。Grbl Controllerは、リードバック位置のアップデートがスムーズじゃない。

Universal Gcode SenderはLook&FeelがNimbusでクロスプラットホームのためにはいいんだろうど、Ubuntuだと見た目がちょっと悲しいことになる。Pythonで探してみたがよさそうなのが見つけられない。

といことでちょっと書いてみよかと思い、まずは、OpenGLで3Dぐりぐりより楽そうな、2DのしょぼいGcodeビューアーを書いてみた。


すばらしいモジュール群のおかげで120行ほどで出来上がる。matplotlibはすごく便利。カラフルなのは色指定を指定なためで意図的ではないが綺麗なのでこのまま。いまだ道半ば。ヘルプを求めてHPにいくと開発者の方が若くして癌起因の合併症で亡くなられたらしい。寄付をしようと思ったが日本からはできないようだ。ご冥福をお祈りしたい。

2013年11月18日月曜日

GDN


GDNってなんだろうと一瞬考えたがGNDで間違いない。





多分中国製、変になるのは日本語だけじゃないんだ。

2013年11月16日土曜日

Arduino Pro Mini Clone


3Dプリンタが大はやり、が、部屋の中でプラスチックを溶かすのは嫌だなと思っていた。たまたまebayでExtruder用の部品が結構簡単に入手できるようになってきていることを知って、どんなもんかとRepRapを覗いてみると、RepRapでもPCBを作っている。やはりメジャー、関わっている人数が違うのか随分進んでいるよう。これを使わせて頂ければRPiでPCからでもUSBでCNCを制御できる、と試してみることに。

まずは、Arduinoが一番手っ取り早そうなのでebayをチェック。チップを購入して作るよりちょっと罪悪感があるがクローンの方が安く、あまり考えずに端子がたくさんあって安いのがいいやと購入。

到着したものがこれ。なんのことはない共通の端子がいっぱいなだけ。



よく見ると他の出品写真には載っている上の列の右から2番めのコンデンサがない。

いちおうArduino Pro MIniとあったが、Deek-Robotというものの更に派生品なのか回路図もなんにもないので何かと思って接続を確認すると、ResetとAREFの間に接続されている。

といことは、無いのが正解ではないか、余計な端子があるおかげでAREFがAtmega328
から離れたところまで引き回されてコンデンサを通してResetに繋がる。すなおに考えればADCの精度が悪くなるような気がするが。

もとのパッドを使わずにお隣がグランドなので左にずらして付ければバイパスできるが取り敢えずそのままで。

Blinkで動作確認。


2013年10月12日土曜日


DIY Guitar Interface


iRigもどきを作ってみた。

ネットで情報を探すと2年以上前位が旬であったよう。JFETを使いたかったが記憶の中にあった2SK30がどうしても見つからず、ノイズについて不利だけどBC850を使い、その他全て手持ち、再利用部品で作ることに。ゲインは必要ないので使用するトランジスタはコンデンサマイク用のFETが最適だろうか。4極ジャックはどうにもならずebayのお世話に。後でmeetsに行ったらイヤホンマイクがあった…

まずは、 

Qucksでシミュレーション

  • 回路図。iPod Touchの内部は、DCについて簡易測定。

  • ACシミュレーション。特性はこんなもんかなぁ…


 Eeagleで基板データ作り

  • Eagleの回路図。

  • Ubuntu LinuxCNCシミュレータでGコード確認。


Raspberry Pi LinuxCNCで基板切削

  • 出来上がり。

  • 部品取り付け。

  • 組み立て。

  • 完成。

  • ステレオミニプラグなのはマイク、ヘッドフォン分離ケーブルのマイク入力がステレオジャックのため。



やはりノイズは多い気がするが歪み系は使わないし、レベル調整をうまくやればGarageBandで十分楽しめそう。チューナーはJumpUP XTの方。

2013年10月10日木曜日


FTDI FT800 EVE


これは面白そう。安いマイコンでも高度な表示が実現できる。

オンラインストアで液晶、ケース付き1万円弱位、その他の扱いは、RSコンポーネンツ(日本)では見つからない、Digikey、Mouserあたりだけか。


一般的になるのが楽しみ。

2013年9月30日月曜日

iSSH


ソフト単体を購入するという事は、覚えている中で多分10年以上なかったが、つい最近、iPod Touchを頂くことになり、色々と物色することにした。

取り敢えずGarageBandは躊躇することなく購入し、なんとなく、XサーバとSSHがあればiPod TouchでLinuxCNCをコントロールできるよな、と思って探したところ、あった、iSSH

で、やってみる。


意味があるかどうかは別にして、ちゃんと動いた。

2013年9月23日月曜日

LinuxCNC 2.6.0-pre


どうせなら最新にしたいと思ってkerneldebianイメージとLinuxCNCのビルドをしたが微妙におかしな所があったりしてどうもうまく動かなかった。

で、最近どんな様子かとRaspberry Piのフォーラムを覗いてみると、kinsaさんによるdebファイルがあったので、早速RaspbianをSDにインストールして試してみた。


おお、最新になった。SDが安物なのでちょっと遅いが問題もなさそう。

2013年9月13日金曜日

Pi Case

用途を決められそうまので、そろそろ全体を固定するのケースをなんとかしたい。と、ふと目に入ったのがダイソーで買った仕切り版。Raspberry Piの仮止めをしてみた。でかい、
 

ケースづくりのヒントになりそう。

2013年9月11日水曜日

Backlash


基板の出来があまりに酷いので機構部分の調整をする。

まずは試し切りすると、切削したパターンが斜めにひしゃげる、円のはずが 軌跡がもとに戻らず左斜めってる変な形になっている。

POMのスペーサーと寸切りねじの組み合わせでは、そもそも精度が無い分、結構きつきつでバックラッシュは殆ど無かった。

ホームスイッチの動作確認なんかをしている時、X軸をこれ以上行かない方向に思いっきり動かしたりしたのを含め、スペーサーがいかれてきたらしい。

スペーサーを交換すれば良くなるはずだけど、バラすのは結構大変なので、ebayで、送料込み$10で買った中国製精度0.01mmのダイヤルゲージでバックラッシュの調整をすることにした。

調整の結果、

調整前:調整後

一番小さいパッドは8角だけど、この位がMyマシンの精度限界か。カッターが切れないのも原因・・・かな。

これでいけるんだったら自分でも作れそう、でももう少し良くできたら、と作ったのでこんなものだろう。楽して試作が目標。使った部品の中で一番高価なのは、レコフレーム。 組み立て簡単、購入しやすい、安価。