V4220Mを試しに使ってみた
今回はV4220MのAD/DAコンバーターの評価もどき基板を作ってみました
akizukidenshi.com
はじめに
このICの特徴としては24bitで入出力が単体でできるのと差動で入出力ができることです
回路設計
もともとV1000というエフェクター用ICの入出力としてcoolaudioでは取り扱ってるらしくそのエフェクターICであるV1000のリファレンスにアプリケーションノートが載っていました
そこでV4220Mの部分だけ抜粋しミキサーの部分を抜いて作成します
今回もKiCadで設計しました
一応信号を外部に入出力する端子やハードウェア設定するためのDIPスイッチなど多めにつけました
ミス…
基板の主なミスとしては
ピンヘッダの電源入力のシルクが逆(致命的…)
DCジャックのフットプリントが裏表逆
ICのロジック電圧を変化できるようにし忘れた
の3つです
動作に影響はほぼしないのでそのまま続けます
ArduinoでTM1640を使ってみた
3ヶ月ほど前に秋月で取り扱いが始まったTM1640という7セグメントLED用のドライバICをArduinoで使ってみた
7セグメント用LEDドライバーIC(最大16個) TM1640: 半導体 秋月電子通商-電子部品・ネット通販
TM1640
マイコンからデータを書き込んでやれば自動でダイナミック点灯してくれる便利なICです
7セグメントLED(ドット含めて8セグメント)を最大16個まで制御することができます
構造上アノードコモンでもカソードコモンでもどちらでも問題なさそうです
ドットマトリクスLED
今回は結線が面倒なので7セグメントLEDではなくドットマトリクスLEDを点灯させることにしました
ドットマトリクスLEDのピンアサインがバラバラに配置されていて結構面倒でした
結線は大して複雑ではなくSEGxはアノード、GRIDxはカソードに接続するだけであとはマイコンにクロックとデータの入力を接続するだけで終わります
ライブラリ
TM1640の制御ライブラリは一応あることはあるのですがTM1638の派生としてあって7セグメントLEDに特化したものだったのでドットマトリクスでも制御できるように作りました
クロックもデータも何もないときはHIGHにしておき送信するときは一度データをLOWに落としてからクロックに合わせてアドレスや表示データを送信します
最初そこに気づかなかったため1時間ぐらい光らねえなあと悩んでしまいました
あと一部のドットを光らせようと一列だけの書き換え時になぜかほかの列のドットまで光る現象が見られました
よくわからないので全て書き換えることで誤魔化しました
光らせた
とりあえず顔っぽいのを配列で用意して表示してみました
かわいい(*´∇`*)
8x8のドットマトリクスLEDなので8x16の場合や一応7セグメントLEDのも書いて動くとは思いますが動作確認はしてません…
サンプルコード
そのうちどっかに上げたいと思いますがとりあえず面倒なので以下に記載
MyTM1640.hとMyTM1640.cppを以下のサンプルコードの保存場所に追加してあげると動きます
#define CLKPIN 7 #define DATPIN 8 #include "MyTM1640.h" MyTM1640 dots(CLKPIN,DATPIN,7); void setup() { Serial.begin(115200); dots.clear(); } int i = 0; void loop() { dots.setDot(i%8,(i%64)/8,(i<64)?1:0); dots.show(); i=(i+1)%128; }
MyTM1640.h
#ifndef MyTM1640_h #define MyTM1640_h #include "Arduino.h" class MyTM1640 { public: MyTM1640(byte PIN_DAT, byte PIN_CLK, byte brightness); virtual void setBrightness(int brightness); virtual int getBrightness(); //Dot Matrix LED virtual void setDot(byte x, byte y, byte dot); virtual void setLine(byte x, byte line); //7Segment LED virtual void setNum(int num,int x); virtual void show(); virtual void clear(); private: virtual void send(byte data); virtual void sendData(byte addr, byte data); virtual void sendCmd(byte cmd); byte _pin_dat; byte _pin_clk; byte brightness; byte data[16]; byte font[16] = { 0b00111111,//0 0b00000110,//1 0b01011011,//2 0b01001111,//3 0b01100110,//4 0b01101101,//5 0b01111101,//6 0b00100111,//7 0b01111111,//8 0b01101111,//9 0b01110111,//a 0b01111100,//b 0b00111001,//c 0b01011110,//d 0b01111001,//e 0b01110001 //f }; }; #endif
MyTM1640.cpp
#include "MyTM1640.h" #include "Arduino.h" MyTM1640::MyTM1640(byte PIN_CLK, byte PIN_DAT, byte brightness) { this->_pin_dat = PIN_DAT; this->_pin_clk = PIN_CLK; this->brightness = brightness; pinMode(PIN_CLK, OUTPUT); pinMode(PIN_DAT, OUTPUT); digitalWrite(PIN_CLK, HIGH); digitalWrite(PIN_DAT, HIGH); sendCmd(0x40); sendCmd(0x8f); clear(); }; void MyTM1640::setBrightness(int brightness) { sendCmd(0x88 | min(7, brightness)); } int MyTM1640::getBrightness(){ return min(7, brightness); } void MyTM1640::setDot(byte x, byte y, byte dot) { if ((0x1 & dot) == 1) { data[x] |= 0x1 << y; } else { data[x] &= ~(0x1 << y); } } void MyTM1640::setLine(byte x, byte line) { data[x] = (byte)line; } void MyTM1640::show() { sendCmd(0x40); digitalWrite(_pin_dat, LOW); send(0xC0); for (int i = 0; i < 16; i++) { send(data[i]); } digitalWrite(_pin_dat, HIGH); } void MyTM1640::setNum(int num,int x) { MyTM1640::setLine((byte)num,MyTM1640::font[x]); } void MyTM1640::send(byte data) { for (int i = 0; i < 8; i++) { digitalWrite(_pin_clk, LOW); digitalWrite(_pin_dat, data & 1 ? HIGH : LOW); data >>= 1; digitalWrite(_pin_clk, HIGH); } } void MyTM1640::sendCmd(byte data) { digitalWrite(_pin_dat, LOW); send(data); digitalWrite(_pin_dat, HIGH); } void MyTM1640::clear() { sendCmd(0x40); digitalWrite(_pin_dat, LOW); send(0xC0); for (int i = 0; i < 16; i++) { send(0x00); } digitalWrite(_pin_dat, HIGH); } void MyTM1640::sendData(byte addr, byte data) { //Fixed Mode sendCmd(0x44); digitalWrite(_pin_dat, LOW); send(0xc0 | addr); send(data); digitalWrite(_pin_dat, HIGH); }
追記
2018/08/24
7セグメントLEDで表示させてみたところフォントのビットの上下が逆だったのと関数名setCharはどう考えても数値をセットしてたのでsetNumに修正しました
種類にもよるかもしれないが最高輝度で光らせていると電流不足か何かで落ちた…
MacBook Proからの給電なのでその影響かも?
Maker Faire Tokyo 2018
今年のMaker Faire Tokyo 2018ではTech Tech Boxとして出展側で行くことになりました
anemos-poiを知ってもらうということで実演を交えつつ展示を行いました
展示はこんな感じ
1代目から現在作成していた4代目まで並べて見てもらいました
初日は手に持って左右にふるだけの展示にしていましたがやはり良さが伝わりづらいということで2日目は安全に配慮して振り回して展示していました
名刺は200枚ほど用意したのですがほぼすべて配ることができました
MFT2018 2日目始まりました!
— Tech Tech Box (@techtechbox) 2018年8月5日
H-8-10でanemos-poiを展示しています. 是非来てください.#MFTokyo2018 pic.twitter.com/v6PVx3UR5J
ポイを知らなかった人から製品として販売されているグラフィックポイを使用しているという方まで様々な方の意見を聞くことができてとてもよい機会となりました
実際に見てもらってその感想を聞けることはとても新鮮味がありよかったです
お話の中ではやはり「製品化はどうなんですか?」と聞いてくださる方が多くいらっしゃってとても嬉しかったのですが、外装やバッテリーに苦戦していて早急な改善を行い製品化まで持っていければなと考えています
ただ量産を行うにあたっても基板の実装などなかなか大変なところもあるので難しいですね…
最後に
実際に見に来てくださった方々本当にありがとうございます
グラフィックポイ製作(6)
中身は一応完成したので今回は外装です
外装の素材はアクリルパイプを使います
表示部から電源部、バッテリーもすべてパイプの中に入れます
バッテリーについては普通のリポバッテリーはたいてい四角い形なので相性が悪いと考え、18650サイズのものを使いました
外形24mm厚さ2mmのアクリルパイプの中に18650を突っ込んでプラグを出して接着します
蓋はレーザー加工機を使って丸く切りました
とても便利!
一応完成!
ただしanemos-poi本体の装着部分は外形28mm厚さ2mmのアクリルパイプを使ったのでぴったりすぎて入りません
バッテリー外装を削りました…
結構削らなきゃいけなかったので疲れました
表示部分はスイッチの部分だけ穴を開けて突っ込むだけです
そのままだとタクトスイッチが平たいので押せないためビーズを入れてグルーガンで止めてみました
なんかよさげ
こんな感じで外装は完成しました
ただし振り回すための付け根の部分のうまい方法が思いつかないので保留中
思いつき次第作りたいと思います
明日明後日の4,5日はMFT2018で展示するので見に来てください!
Tech Tech Box | Maker Faire Tokyo 2018 | Make: Japan
グラフィックポイ製作 (0)
グラフィックポイ製作 (1)
グラフィックポイ製作 (2)
グラフィックポイ製作 (3)
グラフィックポイ製作 (4)
グラフィックポイ製作 (5)
グラフィックポイ製作 (6)
グラフィックポイ製作 (7)
グラフィックポイ製作(5)
大学の授業であまり手をつけられなかったため
前回の更新からめちゃくちゃ空いてしまいました
まずはじめに
Maker Faire Tokyo 2018に出展することになりました
makezine.jp
時間があればぜひ見に来てください
データ作成ソフトウェア
グラフィックポイに使うデータは独自形式で用意することにしました
(後日余裕があれば形式について書きたいと思います)
そのため専用のエディタが必要になります
ソフトウェアは以下の2種類あります
- 画像データ作成
- タイムラインデータ作成
(タイムラインは画像の表示順)
今回はどちらもWebアプリという形にしました
画像データ作成
ドット絵のエディタ風に作ります
全体像はこのような感じです
画像サイズを指定したあとドット絵を描くためのカラーパレットとスポイトを使ってドット絵を描きます
他のソフトウェアで描いたものを取り込むための画像ファイルの読み込み機能もあります
またあとで使用するため名前をつけて保存することや保存した画像をロードする機能もつけ最低限必要なものは用意できました
タイムラインデータ作成
タイムラインのデータを作成できるツールです
先程作成した画像データを選択して回す方向によって表示の向きが変わるのでその順序をしていできるようにし現状では3段階で表示速度を切り替えることができます
最後に名前を上部のフォームに入力してセーブを押すことで画像、タイムラインデータが入ったファイルを保存できます
アップロード
グラフィックポイがWi-FiのAPとして立ち上がるのでそこにアクセスしてアップロードできるようにします
まとめ
最低限必要なツールは作成することができたのでグラフィックポイの外装と制御プログラムを書くことが今後の予定です
Maker Faireで出展するため今週末には形にしなければならないので急ピッチで作業を進める予定です
グラフィックポイ製作 (0)
グラフィックポイ製作 (1)
グラフィックポイ製作 (2)
グラフィックポイ製作 (3)
グラフィックポイ製作 (4)
グラフィックポイ製作 (5)
グラフィックポイ製作 (6)
グラフィックポイ製作 (7)
Macbook Proの足
現在メインで使用しているラップトップはMacbook Pro late2013で購入から4年半ほど経過した。
流石にこれだけ使っているといろいろガタが来ているところがある。
バッテリーであったり、液晶パネルのヒンジ…
そして最近壊れたのが背面のゴム足である
前々から隙間が空いてきていたためそろそろかなと身構えていたがいざ取れると悲しいものである。
AppleStoreに修理に出すと背面のパネルごと交換らしくいいお値段がするのでその方法はパス…
昔の型であれば安く正規品が手に入るらしいが…
MacBook Pro:下部ケースのゴム足交換の在宅自己交換修理 (DIY) 手順 - Apple サポート
AmazonやAliexpressでゴム足を調べて付け替えてもいいが、型番があっているかなど調べるのが面倒であったため適当なゴム足をつけることにした。
秋月電子通商で取扱のあった3M製のバンポンをつけてみました。
3M製なのでそれなりに強い接着テープだと思います。
(2018/07/29現在取り扱いがない?…)
以前のゴム足よりは出っ張っているがまあ悪くない感じになりました。
1週間ほど使ってみましたがめちゃくちゃ強く接着されていてリュックサックに入れるときに引っかかって取れたりするかと思っていましたが全くそのようなこともなく驚きました
8個で120円なのでコスパもよく満足です。
(以前のゴム足より出っ張っているので少し放熱効果も期待できるかも?...)
レーザー加工機製作(8) 外装の製作
とりあえず動くようにはなったので
まともな外装を作ります
材質
本当は鉄板で作るのがベストなのでしょうが
鉄板だと高いのはいいとして
重くて運べなくなるのが辛いので
今回は2.5mmのMDF板を使います
ネットで注文しました
MDF 2.5 x 920 x 1830mm3枚を購入するとともに
カットもお願いしました
板とカットはトータル1800円ぐらい
送料が3000円で高かったです…
取り付ける
全部の側面にMDFを貼り付けて
電装部品なども取り付け直しました
XY軸につながる配線はケーブルキャリアに
まとめて散らからないようにしました
XY軸のステッピングモーターに配線と
消炎用のエアーチューブを通しましたが
ギリギリで入りきりました
マグネットを取り付けて開閉できるようにしています
エアーの取入口と電源のインレット
とりあえず完成
外装はまともな形になりました!
実際に動かしたところ
今日のレーザー加工機の進捗 pic.twitter.com/zeGdHCYL0W
— ぬまー (@nullnuma) 2018年5月3日
ダイソーで買った5.5mmのMDF板を切断してみた
Inkscapeで書いた文字を刻印してみた
エンドスイッチ用の治具も作ってみた
まとめ
簡単に好きな形にすぐきれるというのは
とても便利だと感じました
今後の予定は調整がまだ甘いので詰めるのと
今使ってるソフトウェアでは機能が不十分だと感じたので
他のソフトウェアも試してみたいと思います