自作楽器用音源モジュール作成(6)

部品間の配線と動作確認まで行った。

f:id:tohkaf:20151213231356j:plain

一発で動いて我ながら珍しい。

f:id:tohkaf:20151213231549j:plain

側方にMIDI端子と同じピンを出しているのでMIDIケーブル無しでも使用できるようにした。同時にSWDも出しているのでフタを開けずにPSoCの読み書きができる。

f:id:tohkaf:20151213231737p:plain

次はハードウェア検証をソフトで行っていく。

部品リワークについて

以前失敗した詰み基板の改版を作ることにした。

そこで部品を追加で買い直すか、取り外して使うか迷った結果、ヒートガンを買うことにした。部品代で十分買える。

以前研究室の先生が興味本位で買ってきて使いやすかった。

f:id:tohkaf:20151213192226j:plain

動作確認に以前作った基板についているAVRマイコンを外した

f:id:tohkaf:20151213192344j:plain

ものすごく宣伝記事になってしまった。

余談だがモールド封止されたLSIに実装等の熱ストレスをかけた時に破壊に至るモードは

  1. パッケージ内で水蒸気爆発 -> ボンディングワイヤ断線、チップ割れ
  2. 急激な温度変化と熱膨張係数の差 -> チップ割れ、剥離、ボールクラック

等が上げられる。かける熱ストレスには十分注意されたい。

自作楽器用音源モジュール作成(5)

f:id:tohkaf:20151213165002j:plain

筐体加工を行った。電動ドライバで穴を開けてニブラーで四角くするかテーパリーマで拡張して全て作った。

現物合わせで全部やったのでやっつけ感がすごい。

f:id:tohkaf:20151213165051j:plain

裏面。UARTは3系等あって2系統は外部入力で1系統はWifi経由で受け取る。

f:id:tohkaf:20151213165239j:plain

短いネジやらナットを切らしていて途中からスペーサーでやる羽目に。

黒い箱に青いディスプレイだからか意外と見た目が綺麗なのでまぁ良しとする。多分こういう適当なところがダメなんだと思う。

次はケーブル作って動作確認をする。

TLP521経由でMIDIが正しく受信できない

f:id:tohkaf:20151213025253p:plain

コレクタに5V、エミッタにプルダウン抵抗を設けて抵抗に掛かる電圧が信号になっている。

フォトカプラの出力負荷が大きすぎてまともな信号になっていなかった。

http://akizukidenshi.com/download/TLP521-1.pdf

100kΩ

f:id:tohkaf:20151213023817p:plain

状態遷移が全く追いついていない。

150Ω

f:id:tohkaf:20151213023850p:plain

状態遷移時間は少しなまってるように見えるけどまぁ十分。


高速にしたければカレントミラーで引いてやったりするのが良さそうだが今回は31kHz程度なのでこれで十分。

Xilinx SDKでプロジェクトがビルド出来ない

コードを書いても.elfが生成されない、おそらくビルドできていない。調べてみるとパス中にカッコやスペースがあるとダメという話に行き着いた。

Make: Interrupt/Exception caught (code=0xc0000fd, addr=0x4227d3)

http://japan.xilinx.com/support/answers/43293.html

どうやら問題は配置パスではなく環境変数に同名のファイルを持つディレクトリがあることらしい。つまり全く別物のmakeが走っていたらしい。

Vivadoの起動時にpathを無効化してから起動することで対策できた。

//C:\Xilinx\Vivado\2015.4\bin\vivado_launch.bat
path
set path = ""

vivado.bat

自作楽器用音源モジュール作成(4)

Androidアプリの開発環境周辺で滞ってしまったので、ESP-WROOM-02のファームと半田付けを進めた。

Wifi-Serial Bridge

クエリはどうでもいいので受けたデータをそのまま数値変換してシリアルに流すモジュールにした。

#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>

/* Set these to your desired credentials. */
const char *ssid = "Wifi-Serial Bridge";
const char *password = "password";

ESP8266WebServer server(80);

/* Just a little test message.  Go to http://192.168.4.1 in a web browser
 * connected to this access point to see it.
 */

void handleRoot() {
  uint8_t argc = server.args();
  for(uint8_t i = 0 ; i < argc ; ++i){
    String data = server.arg(i);
    uint8_t num = 0x0;
    for(uint8_t i = 0 ; i < data.length() && i < 0xff ; ++i){
      char c = data.charAt(i);
      if('0' <= c && c <= '9')      num = (num << 4) | (c - '0');
      else if('A' <= c && c <= 'F') num = (num << 4) | (c - 'A' + 0xa);
      else if('a' <= c && c <= 'f') num = (num << 4) | (c - 'a' + 0xa);
      else {
        server.send(200, "text/html", "NG");
        return;
      }
      if(i & 0x1) {
        //Serial.print(num, HEX);
        Serial.write(num);
        num = 0x0;
      }
    }
  }
	server.send(200, "text/html", "OK");
}

void setup() {
	delay(1000);
	Serial.begin(115200);
	Serial.println();
	//Serial.print("Configuring access point...");

	WiFi.softAP(ssid, password);

	IPAddress myIP = WiFi.softAPIP();
	//Serial.print("AP IP address: ");
	//Serial.println(myIP);
	server.on("/", handleRoot);
	server.begin();
	//Serial.println("HTTP server started");
}

void loop() {
	server.handleClient();
}

前回のソースから大した変更はなし。ひとまずこれで動ける。

はんだづけ

f:id:tohkaf:20151210005433p:plain

自分用のPSoC4の基板は、他基板との接続(I2C)とシフトレジスタの接続(SPI)にそれぞれSCBを割いているのでUART TX/RXを適当な場所にジャンパした。

あいにくI2CはSDAがTX、SCLがRXなのでピンソケットの実装のみでOKだった。

f:id:tohkaf:20151210005555j:plain

固定穴のない基板をケースに入れられないのでSparkFunのVS1053bモジュールをフリップしてマウントする中間基板も作った。MIDI受信用にフォトカプラTLP521とかコントラスト用抵抗も用意した。

f:id:tohkaf:20151210005838j:plain


あとはボタンと、ケースに取り付ける部品の配線ではんだづけ作業は終わりそうだ。

CY8CKIT-042-BLEを使う(CySmart導入)

先日注文していた

www.cypress.com

が届いたので試食。ちなみにCypressのワークショップに参加すると普通にもらえるみたい。

Find Me Target

ボード自体はArduinoピンコンパチとKitProgが乗っているだけなので、サンプルのFindMeを書き込み

CySmart

KitGuideの3.6項にあるが付属のドングルのファームを最新にしないと動作しない。

f:id:tohkaf:20151209025611p:plain

初期状態では使えない。

f:id:tohkaf:20151209025730p:plain

042BLEのホームページ下にもhexファイルが置いてある(2015年12月9日現在のもの)

f:id:tohkaf:20151209025624p:plain

PSoC Programmarで書き込み

f:id:tohkaf:20151209025633p:plain

無事に認識して詳細表示とAlertLevelの書き換えでLED表示の切り替えが確認できた。他のサンプルも試すことにする。