NullなNuma

自由気ままに何か書く

Wacomのペンタブを分解してみた

この記事はMCCアドベントカレンダー2018の9日目の記事です。
adventar.org
昨日はUm6ra1による3層複素ニューラルネットの逆伝搬を導出 - √gでした

最近の秋葉原

最近秋葉原の杉元ガレージが解体されてしまいました
ジャンクを販売するところが減って秋葉原は電気街というよりはメイドとフードの街に変わりつつあると感じています

ジャンクペンタブ

最終セールでワコムのペンタブが千円で売られていたので買ってみました
もともとペンタブの構造に興味がああり分解してみたかったののでちょうどよかったです

まずは動作確認

まあまずは分解する前に動くか見てみました
接続しても電源が入らず何も反応がなかったので予想通りでした
よく見てみるとワイヤレスキットであるリチウムイオンバッテリーとレシーバーがセットされていて家にあるペンタブにつけたら動いたのですでに十分な収穫!

ペンタブはWacom PTH-651でIntuos Pro mediumです
操作方法は電磁ペンだけでなくタッチによる操作も可能なモデルです
それぞれ「電磁誘導方式」と「静電結合方式」という方式
そんなことはどうでもよくて本題である分解をします

Let's 分解

まずは外見

ネジは4箇所で、そのうち2箇所はゴム足で隠れていました
外周はいたるところに爪があり分解するときに何本か折りました…
f:id:nullnuma:20181207104614j:plain
f:id:nullnuma:20181207104618j:plain
f:id:nullnuma:20181207104622j:plain

基板とご対面
背面にはシールドのようなものと表には予想通りXYに張り巡らされたアンテナ部分が出てきました
あとはルネサスマイコンだったりロジックICですね
f:id:nullnuma:20181207105810j:plain
f:id:nullnuma:20181207105905j:plain
f:id:nullnuma:20181207105906j:plain
f:id:nullnuma:20181207105940j:plain

メインボードのIC周辺
f:id:nullnuma:20181207110335j:plain
f:id:nullnuma:20181207110347j:plain
f:id:nullnuma:20181207110358j:plain
メインボード載ってるIC類はこんなかんじです
マイコン
R5F36CA6NFB(ルネサス社製)
https://www.marutsu.co.jp/contents/shop/marutsu/datasheet/R5F36.pdf
WACOM W8007 1407KP201(ワコム社製?)*
アナログマルチプレクサ
NLAS4051(オン・セミコンダクター社製)
https://www.onsemi.jp/PowerSolutions/document/NLAS4051-D.PDF

f:id:nullnuma:20181211085421j:plain


静電結合方式のタッチパネルの部分はこんな感じで操作エリアのすぐ下に這わせてありました
f:id:nullnuma:20181207110244j:plain
タッチパネル用の基板
f:id:nullnuma:20181207110542j:plain

それぞれの配線を追ってみてブロック図っぽいのを描いてみました
アンテナ配線はそのうち追ってみたい
f:id:nullnuma:20181207110958p:plain

最後に

ところでminiUSBコネクタを触ったところポロッと落ちてしまいました
f:id:nullnuma:20181207110702j:plain
別のペンタブで充電したリチウムイオンバッテリーとレシーバーをつけて動かしたところ問題なく動きました…
単純にminiUSBコネクタがもげてしまったことが故障の原因のようです
そのうちはんだ付けし直してペンタブとして使おうかなと考えています

anemos-poi in 農工祭

私が通っている大学の学祭があったのでそこでanemos-poiの展示を行いました
(土曜メインでの展示になってしまいましたが…)

私はマイクロコンピュータクラブ(MCC)に所属しています
そこのスペースで興味持っていただけた方に説明をしました
(Maker Faire Tokyo 2018と農工祭での紹介スライドの再構成版)


また一緒に開発しているメンバーがジャグリングサークル @jugに所属しているので土曜の夜にそこでanemos-poiを使ったパフォーマンスも行いました
去年と違って短い表示部ですが十分模様が見えました
f:id:nullnuma:20181111220128j:plain
f:id:nullnuma:20181111220132j:plain
f:id:nullnuma:20181111220138j:plain
f:id:nullnuma:20181111220144j:plain

今回の反省を生かして新たなプロトタイプを製作する予定です
今度こそ販売に向けた製品化を考えていきたいです

グラフィックポイ製作(7)

前回に引き続き外装の製作をしました

外装

ポイなので振り回すための紐をつける部分を作りました
リベットピン?で固定してはずれないようにしましたが取り外しに手間がかかるので他の方法を検討中です
バージョン1
f:id:nullnuma:20181030094651j:plain
f:id:nullnuma:20181030094656j:plain
バージョン2
f:id:nullnuma:20181031205809j:plain

LED,制御部分
f:id:nullnuma:20181030100131j:plain
f:id:nullnuma:20181030100138j:plain

18650バッテリーケース

アクリルパイプに18650を入れていましたが、製作がとても大変なのでCADで設計し3Dプリンターで印刷しました
f:id:nullnuma:20181030094656j:plain
f:id:nullnuma:20181030094701j:plain
コード部分が長くなってしまったので少し改良しました
f:id:nullnuma:20181031205803j:plain

スイッチ部

前回はタクトスイッチが短かったため押しづらくなっていたので改良をしました
知り合いから安く譲ってもらったCNCで基板を削ってみた
とりあえず作れるので便利です
f:id:nullnuma:20181030095050j:plain
f:id:nullnuma:20181030095256j:plain

製造

学祭のパフォーマンスで1人2台で2人演じるということなので計4本制作しました
やはりLEDをつけていくのが大変でした
いまだにはんだペーストをきれいに塗ることができないので頑張りたいところです…
f:id:nullnuma:20181030100255j:plain

テスト

リハーサルで試す機会があったのでやってみました
f:id:nullnuma:20181030100823j:plain
f:id:nullnuma:20181030100830j:plain
一部ソフトウェア面で不十分なところが見受けられたので要改善です
11/10(土)に農工大の学祭で展示する予定なのでよければ見に来てください


グラフィックポイ製作 (0)
グラフィックポイ製作 (1)
グラフィックポイ製作 (2)
グラフィックポイ製作 (3)
グラフィックポイ製作 (4)
グラフィックポイ製作 (5)
グラフィックポイ製作 (6)
グラフィックポイ製作 (7)

ダヴィンチnanoを買って使ってみた

3,4年前から3Dプリンターを自作するべくアルミフレームやリニアシャフト等を組み合わせて一応完成までは到達していたのですがいかんせんパーツをMDF板や木材も使用し手作業で加工していたため調整がうまく行かず精度が出なかったため自作は諦め既成品を買うことにしました

3Dプリンター選び

検討した製品としては

  • CoLiDo D1315 Plus

  • BIQU-Magician

の3製品です
ダヴィンチはXYステージで他2つはデルタ方式になります
デルタ方式だとステージが円なので正方形を印刷しようとすると極端に狭くなってしまう点が気になりました
ダヴィンチは比較的有名であるXYZプリンティングの製品であり信頼がありますがフィラメントが専用品オンリーになってしまうためその点が残念です
また、オートキャリブレーションができるかいう点ではBIQU-Magicianとダヴィンチが対応していました

結論としてはXYステージとオートキャリブレーションということでダヴィンチnanoを購入しました

開梱

ちゃんとした製品なだけあって梱包もしっかりできていて梱包材も外しやすかったです
幅と奥行は小さめですが高さはフィラメント用のチューブが出ているので高めです
f:id:nullnuma:20181003215405j:plain
f:id:nullnuma:20181003215410j:plain
f:id:nullnuma:20181003215407j:plain

開梱の動画も出ているのでとてもわかりやすいです
support.xyzfamily.com

プリント!

早速プリントするため制御ソフトウェアをダウンロードしますが説明書に書かれていたURLは404を吐いてしまいだめでした
ググればすぐ出てくるので指定されていたXYZ makerをダウンロードしインストール!
インストールが終わりフィラメントをロードしようとしましたが肝心の3Dプリンターの設定項目が全くありませんでした…
説明書
f:id:nullnuma:20180913175217p:plain
実際の画面(Winでも同様でした)
f:id:nullnuma:20180913175214p:plain

結論としてはXYZ Printと呼ばれる別ソフトに印刷機能は移動してたようです(?)
それもインストールして無事フィラメントがヘッドから出てきました

今度こそプリント!

XYZ makerでは基本図形のオブジェクトを組み合わせてモデリングすることができるみたいです
とりあえず10x10x10mmの立方体を作りstlファイルで出力
XYZ Printで読み込みプリントしました

完成した立方体のサイズは9.75x10.00x9.75(XxYxZ)でした
まあ十分でしょう

まとめ

開けてすぐ使えることができましたが開発が早すぎてマニュアルが追いついていない点はちょっと困りました
フィラメントが専用品であるためランニングコストは高めですがガンガン使っていきたいと思います

V4220Mを試しに使ってみた

今回はV4220MのAD/DAコンバーターの評価もどき基板を作ってみました
akizukidenshi.com

はじめに

このICの特徴としては24bitで入出力が単体でできるのと差動で入出力ができることです

回路設計

もともとV1000というエフェクター用ICの入出力としてcoolaudioでは取り扱ってるらしくそのエフェクターICであるV1000のリファレンスにアプリケーションノートが載っていました
そこでV4220Mの部分だけ抜粋しミキサーの部分を抜いて作成します
f:id:nullnuma:20180909073632p:plain
今回もKiCadで設計しました
一応信号を外部に入出力する端子やハードウェア設定するためのDIPスイッチなど多めにつけました
f:id:nullnuma:20180909074517p:plain

実装

今回もFusionPCBにお願いして作りました

淡々と部品を実装していきます
SSOP28さえ載せられればあとは簡単な半田付けだけです
オペアンプ周辺の抵抗とコンデンサ類が多くて面倒でした
f:id:nullnuma:20180909074159j:plain
f:id:nullnuma:20180909074206j:plain

ミス…

基板の主なミスとしては
ピンヘッダの電源入力のシルクが逆(致命的…)
DCジャックのフットプリントが裏表逆
ICのロジック電圧を変化できるようにし忘れた
の3つです
動作に影響はほぼしないのでそのまま続けます

動作確認!

5Vの電源入力をすればすぐ動作をはじめました
I2SのDINとDOUTを繋げば問題なく動作します
ロジックアナライザーで波形を見たところそれっぽい波形がちゃんと出力されていました
気になった点としてはICからのアナログ出力に対して大きくホワイトノイズが載ってしまっています
オペアンプの問題かと思ったのですがIC出力からすでに載っているっぽく電源由来の可能性もあります
電池で駆動させてみましたがやはりのっているため基板設計の配線の取り回しが悪かったのかもしれません
この点については少し調べていくつもりです

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時間ぐらい光らねえなあと悩んでしまいました

あと一部のドットを光らせようと一列だけの書き換え時になぜかほかの列のドットまで光る現象が見られました
よくわからないので全て書き換えることで誤魔化しました

光らせた

とりあえず顔っぽいのを配列で用意して表示してみました
f:id:nullnuma:20180812172553j:plain
かわいい(*´∇`*)
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代目まで並べて見てもらいました
f:id:nullnuma:20180806203008j:plain

初日は手に持って左右にふるだけの展示にしていましたがやはり良さが伝わりづらいということで2日目は安全に配慮して振り回して展示していました
名刺は200枚ほど用意したのですがほぼすべて配ることができました

ポイを知らなかった人から製品として販売されているグラフィックポイを使用しているという方まで様々な方の意見を聞くことができてとてもよい機会となりました
実際に見てもらってその感想を聞けることはとても新鮮味がありよかったです
お話の中ではやはり「製品化はどうなんですか?」と聞いてくださる方が多くいらっしゃってとても嬉しかったのですが、外装やバッテリーに苦戦していて早急な改善を行い製品化まで持っていければなと考えています
ただ量産を行うにあたっても基板の実装などなかなか大変なところもあるので難しいですね…

最後に

実際に見に来てくださった方々本当にありがとうございます