TRS MIDI

TRS MIDIと呼ばれる規格が最近よく利用されるようになりました。従来のMIDI端子(DIN)は大きいため小型デバイスなどでは、実装できませんでした。ミニプラグでこれを実装したものがTRS-MIDIになります。
ところが、この規格が統一されていなかったため、市場で混乱が起きています。フットペダル等でも極性が逆でメーカが違うと接続できないものがありますが、MIDIケーブルという簡単なものであるため、Amazonなどで楽器で使えないものまで出回り、私も間違えて購入してしまいました。(純正ケーブルは1本2000円超えと高価なため、みんな非純正を欲しがります。)
Type A と Bがあるらしいのですが、メーカがどちらか明記しない場合もあります。
私の持っている機材では、KORG NTS-1は Type-A、Arturia MicrofreakがType-Bのようでした。
MMAが定めた規格はType-Aのようです。
上記間違えて購入してもどちらだからいいや、と思っていましたが、A,Bどちらも使えないものが出回っているので注意が必要です。(楽器用としていてかなり悪質だと思います。)
純正をこのような高価で販売するメーカにも、憤りを感じます。
そこで、これに抵抗する気持ちもあり、自宅にある部品でTRS MIDIを作ってみました。(安価なものを手にいれるまでの仮使用目的。)

https://www.midi.org/midi-articles/trs-specification-adopted-and-released

MicrofreakはType-Bですが、MIDI IN/OUT用でケーブル2本が製品に同梱されています。とても良心的です!これなら規格がなんであろうと問題ありません。今回作ったのは、Type-Aです。これでKORG,BOSS製品の動作確認できました。

VCV Rack

VCVRackというアナログ音源モジュールをシミュレーションするツールに、論理回路をわかりやすく制御するモジュールを見つけたので試してみました。
(完全に私の備忘録です)

https://vcvrack.com/manual/FAQ

There is no official meaning of the name “VCV”, but some users have suggested “Virtual Control Voltage” or “Voltage Controlled Virtualization”. These are good guesses, but “VCV” was chosen simply because it is easy to remember and type. VCV Rack is the full name of our flagship software product.

アナログシンセサイザは当然ながらアナログ回路の電圧でコントロールされますが、音楽を表現するため発音のタイミングなどをクロックパルスで表現されます。この部分は考え方はデジタルのため論理演算が使われることがあります。SubmarineというブランドのDO-105というモジュールがAND,OR,XOR,NOTだけでなくフリップフロップにも対応しているため、とても興味深いです。(ただハードウェアモジュールでここまでのものはないと思われます)

フリップフロップについて

https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AA%E3%83%83%E3%83%97%E3%83%95%E3%83%AD%E3%83%83%E3%83%97

ここではD-FlipFlop(上),RS-FlipFlop(下)について、試してみました。回路図や言葉で説明するのがわかりにくいので動画を作ってみました。(音声はなし)

上下オシロスコープとも、一番上は基本クロックです。また一番下は、ボタンになります。下のオシロスコープは二つのボタンを表示しています。
コンピュータのしくみを改めて学ぶ気持ちになりました。

Kastle Drum

Bastl Instrument という会社のKastle Drumという製品をテストしてみました。
なせ急にこのような製品をもちだしたかというと、前回作ったDA Converterがとても役にたったからです。
この製品、とてもユニークな製品で、このような小型でありながら、モジュラーシンセでありバリエーション(倍音)豊かな音を発します。
ところが目的の音、目的のリズムを作り出すことがかなり難しく、その挙動を少しでも理解すべく外部から電圧を提供して一つ一つ機能を確認していきました。偶然性を楽しむものでもあるので、厳格に使えなくてもいいのですが、正常なのか異常なのかも際どい部分(バグっていてもわからない)を感じるので、その用途にこのGPIO5V出力ができるArduinoがベストでした。(アナログノイズによる不安定というのもあると思いますが・・)
まだわからないことばかりですが、電子工作でつくるノイズアート的な製品の一つとしてこういうのも面白いかもしれません。(オープンソースになっている)

DA Converter

電子工作のマイブームがまたやってきました。そのため久しぶりの更新です。
最近購入したKORG社のVolca Modularがきっかけです。
ブレッドボードにジャンプワイアで回路を作るようなフィーリングで、モジュラーシンセの音を作っていくものです。なかなか画期的だと思います。

Volca Modular + M5 Stack

こちらの記事でも書いたのですが、M5StackのDACで外部から操作しています。
もっとモジュレーションソースが欲しいのですが、そのたびにM5Stackを購入していては高いので、Arduino NanoとDAコンバータチップを使ってブレッドボード上に作ってみました。

http://zattouka.net/GarageHouse/micon/circuit/D_A.htm
http://www.pwv.co.jp/~take/TakeWiki/index.php?arduino%2FDAC%E3%82%92%E8%A9%A6%E3%81%99

SPIインターフェイスをもつMCP4922を使った事例がわかりやすく書かれていた、上記の記事を参考にさせていただきました。

アナログ出力部分にLEDを接続しました。

だんだん明るくなり、最大の明るさになったら消灯、を繰り返します。
PWMでないことを確認するためにオシロスコープでも確かめました。

もともと、モジュラーシンセにPWMで電圧が変化させたものを入れて、おかしな音がなってから、ArduinoのDACについて詳しく調べるようになりました。

PWMについてはこちらでテスト。

Pulse Width Modulation

次は、チャンネル数を増やしたいと思っています。

Jetson Nano

最近はRaspberryPiばかりでしたが、ひさしぶりに新しいハードを購入しました。
NVIDIAのJetson Nanoです。(B01)
NVIDIAということでGPUがクローズアップされた構成になっており、AI、3Dグラフィックどちらも来い、といった内容になっています。
開発環境、サンプルも充実していて、ネットにも情報が多くあり、開発がしやすい環境になっています。
RaspberryPiで使っていた、カメラ、電源、モニタなどそのまま繋ぎかえるだけで使えることもありがたいです。
実際には電源はACにも対応しているので、安定動作のためこちらを使っています。冷却ファンは必要になる時だけ別売のものを上ののせる形で使っています。

大きさはRaspi(右)の二倍弱くらいです。
まずは下記サイトにある物体認識をやってみました。
https://github.com/dusty-nv/jetson-inference/tree/master/examples/detectnet-camera

認識が非常に速いことに驚きました。また表示されるまでの遅延もあまり感じません。
GPUの威力は見せつけられた感じです。

しばらくはこれにのめり込みそうです。

Servo Test

久しぶりの投稿になってしまいました。
ちょっとやりたいことがあったので、今回サーボのテストをしてみました。

ESP8266 WiFi


この投稿以来ほったらかしにしていた、ESP8266を使うことと、サーボを二つ使うこと、そして圧電スピーカで音階を鳴らすことを目的としています。

参考 : 圧電スピーカでメロディを鳴らす
http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/Melody/Melody2.htm

参考 : NodeMCUのPIN配置
https://www.pinterest.jp/pin/263460646929874640/

サーボは5V必要のようですが、このボードには5Vがないので3.3Vに接続しています。(ご注意ください)
接続はサーボの赤が電源、黄がPIN、茶がGNDになります。(つなぎ変えているので色はかわっています。白はPIN)

ドレミと音を鳴らした後、サーボ1,2が交互に45度、90度の位置に回転します。

やっぱりサーボは面白いです。

あと、書き込み時に以下のエラーがよくでます。
espcomm_upload_mem failed

ESP8266, ESP-WROOM-02, ESPr Developer トラブルシューティングまとめ


このサイトを参考に解決しましたが、リセットの方法がよくわからなかったので、FLASHとRSTの同時押しをしています。しかしうまくいくときといかないときがあります。プログラムが動いているとだめみたいですが、音はデバッグでも役に立ちますね。

IR Remote

赤外線通信の解析をするために、Arduino Nanoで回路を作ってみました。
(デバッグ用にボタンとLEDも追加)

参考: http://decode.red/ed/archives/315

単純な赤外線のオン・オフの時間を計測するプログラムです。
シリアルモニタに出力します。

結果はマイクロ秒で表示されます。

これをもとに解析をすすめたいと思います。

FPGA MAX10 (3)

前回に引き続いて、MAX10のテストをしました。
今回は、以下ボード回路図を参考にI/Oのテストをしてみました。

https://service.macnica.co.jp/library/121809
https://service.macnica.co.jp/article_files/121809/max10_board_revb1p04__1.pdf

PB0とPB1を押すことで、違うLED(0-7)のパターンを点灯します。
PBもLEDも0と1が逆になっており、ちょっと戸惑いました。

コンパイルまでの操作は、(1)のときと同じです。
[Tools]->[Programmer]を起動して、[Edit]->[Add File]でsofファイルを選択します。
その後、(2)のときと同様、ハードウェア設定して、USBブラスターで転送します。

Pin Plannerでは、PB(PushButton)を2つ、LEDを8つを登録します。(今回はClockは使っていませんが、一応登録)


PB0を押したとき

PB1を押したとき

これを基本にまた次に進みたいと思います。
しかしLEDが明るすぎて目がいたいです (^^;

FPGA MAX10 (2)

このブログの初めに扱って以来、久しぶりとなってしまったMAX10をテストしました。
久しぶりとなってしまったのは、やはりUSB-Blasterなしでは転送が手間だったことが大きかったです。そして今回これを手に入れたので、使ってみました。

参考サイト : http://i8087.hatenablog.com/entry/20160427/1461756898

このサイトにある、LEDの点滅を実際に試してみました。
環境は前回と同じで、手順もUSB-Blasterに書き込むところ以外は同じです。HDLは、Verilogではなく、VHDLをそのまま使わせていただきました。

新しいプロジェクト作成

デバイス設定

VHDL選択

ソース作成

Pin Planner

Start Compilation

ハードウェア設定 – USB-Blaster選択(ドライバーは、Quartusインストールディレクトリにあり)

Startで転送

転送後すぐにLEDが高速で点滅

やはりUSB-Blasterは便利ですね。
今回は動作確認だけですが、次はVerilogで何か作りたいと思います。

ORANGE pico I/O

先日購入したORANGE picoとRaspberry Pi2 との間でGPIO通信をした記録です。
ピコのPORT 1,2とラズパイのGPIO 23,24でon/off(1/0)の送受信のテストをしてみました。

ラズパイ側

echo 23 > /sys/class/gpio/export
echo 24 > /sys/class/gpio/export

echo in > /sys/class/gpio/gpio23/direction
echo out > /sys/class/gpio/gpio24/direction

cat /sys/class/gpio/gpio23/value (受信)

echo 0 > /sys/class/gpio/gpio24/value (送信)
echo 1 > /sys/class/gpio/gpio24/value (送信)

参考:
https://tool-lab.com/make/raspberrypi-startup-24/
https://developer.microsoft.com/en-us/windows/iot/docs/pinmappingsrpi

ピコ側

out 1,0 (送信)
out 1,1 (送信)

ioctrl 2,2
print in(2) (受信)

参考:
http://www.picosoft.co.jp/orange/download/ORANGEpinmap.pdf
https://github.com/fu-sen/ORANGE-BASIC/blob/master/in.txt

データ送受信前には、それぞれその前にポートの設定が必要です。(ピコ側は受信のときのみ)

ESP8266 WiFi

電子工作で離れた場所からコントロールしたいとき、どうしてもWiFiが欲しくなります。
ArduinoのWiFiシールドを探していたところ、このようなモジュールがあることを知りましたが、なんとこれだけでArduinoIDEが使えるようです。
サンプルプロジェクトにあるWebサーバを使って、ブラウザからオンボードのLEDをon/offするテストをしてみました。

書き込み

設定

ブラウザからアクセス

シリアルモニタ

逆ですが、LowでLEDが光ります。
ライブラリのインストールには、
http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json
を環境設定のAdditional Boards Manager URLsに設定します。
(設定したのがしばらく前で参照元をわすれました^^;)

ArduinoIDEは、いろいろとそろっていて便利です。

Autodesk Circuits

Autodeskといえば、AutoCADなどの3Dモデリングアプリケーションを開発している会社ですが、電子回路をWEB上でシミュレーションしてくれるサービスを提供していることを最近知りました。

https://circuits.io/

電子工作を勉強するにあたり、考えた回路をちょっと試してみのにとても役に立ちそうです。
そこで赤色と青色のLEDを交互に点滅させる簡単な回路を試してみました。
Arduinoのプログラムもシミュレーションしてくれます。

抵抗値を下げると明るくなり、下げすぎると以下のように部品が破壊されるような絵になります。

さすがによくできています。
ギャラリーには、 他のユーザが作成した回路を見ることができます。

これを見ているだけで楽しい気分。
本当にすごい!

I2C / Arduino – IchigoJam

IchigoJamがI2C通信をサポートしているということで、これをマスターとしたI2C(アイアイシー:Inter-Integrated Circuit)通信をArduinoとIchigoJam間でやったメモです。

参考 : http://nuneno.cocolog-nifty.com/blog/2015/05/ichigojamarduin.html


環境: Arduino 1.6.12 / Windows 10, IchigoJam Basic 1.2.1

SDA: ArduinoのA4 – IchigoJamのIN3
SCL: ArduinoのA5 – IchigoJamのSCL
2kΩの抵抗がなかったので、1kを二つ直列に。

白: 3.3V
黒: GND
黄: Clock
橙: Data

データ送信
IchigoJam(マスタ) -> Arduino(スレーブ)

IchigoJamから送られた8バイトのデータをArduinoのコンソールで受信を確認。
Rはリターンコード。0で正常終了。

データ受信
IchigoJam(マスタ) <- Arduino(スレーブ)

Arduinoから送られた8バイトのデータをIchigoJamで受信を確認。(1から8までの文字) Rはリターンコード。0で正常終了。 テストでは、2台のIchigoJamを使って同時に実行してみましたが、問題なく独立して通信できました。

Bit Counter / Arduino

ArduinoでビットカウンタをLEDと7セグでつくってみました。
4桁の7セグと、8個のLEDなので普通に作ってしまうと、PINが足らないので、4桁の高速切り替え表示や、シフトレジスタを使うところポイントです。
あと超音波センサで測った距離も表示しようと思いましたが、今回はログ表示にとどめておきたいと思います。

7セグは高速で4桁表示しているので、ディレイなどを使って処理が遅れると表示が乱れてしまいます。このあたり意外と難しいと思いました。

参考:http://osoyoo.com/ja/2014/12/06/arduino-starter-kit/

ここのチュートリアルはとても参考になります。今回はkumanのボードですが、osoyooは他のブログでも使っています。

“95”を表示

シリアルモニタ表示

別の角度から

Arudinoはドキュメントが豊富なので(kumanのキットにはCD-ROMが付属)、パーツの使い方を学ぶのに最適ですね。

FPGA MAX10

最初の投稿は、一番やりたかったFPGA(field-programmable gate array)。

https://ja.wikipedia.org/wiki/FPGA

CQ出版社「MAX10 実験キットで学ぶFPGA&コンピュータ」を購入して、勉強を始めました。
評価ボードは何にするか迷ったのですが、マクニカのWebサイトの記事がわかりやすかったのと、USBシリアルでTeraTermを使って書き込みが可能なのこと、そしてキャンペーン価格だった、ということで Odysseyにしました。(BLEでスマホからプログラムを呼び出せるのも面白い特徴です)

[概要編] MAX® 10 評価キット Odyssey の FPGA に microUSB ポート経由でコンフィギュレーション・データを転送してLチカ!
https://store.macnica.co.jp/library/115105

接続するときのドライバーとTeraTerm設定ファイル
http://www.m-pression.com/ja/solutions/boards/odyssey/odyssey-downloads
SiLabs USB Virtual Serial Port Driver
(Silabs-CDC_Install.zip)
http://www.m-pression.com/documents/10157/cf7a1227-ed65-4f6b-b8c5-0e7c13f356fd

(TERATERM.INI)
http://www.m-pression.com/documents/10157/1beb61af-2f1a-4935-a8f6-fd1ec3f01d07


それから今回、下記の記事に大変お世話になりました。(このサイトのコード、設定値を使わせていただきました)

Impression 製 Odyssey MAX10 評価キットを使ってFPGAをはじめてみる
https://theoriesblog.blogspot.jp/2016/05/impression-odyssey-max10-fpga.html

今回テストしたのは。ボード上のボタンを押すとLEDが光るという基本のLチカですが、ツールの機能が豊富で難しく感じました。
(まだまだほんの一部しか使っていないのですが・・)しかしながらまずは第一歩です。

環境: Quartus Prime ver15.1.1 Build 189(書籍付録DVD) / Windows 10
プロジェクト作成

ソースコードの追加

コンパイルは、[Processing]->[Start Analysis & Elaboration]

[Pin Planner]起動(メニューバーのアイコン)

再度コンパイル(メニューバーのアイコン[Start Compilation])

この時点で下記のようなファイルがoutput_filesフォルダに出力されます。

[Tools]->[Programmer]を起動して、[Edit]->[Add File]で上記.sofファイルを選択します。

.jbcファイルの作成[File]->[Create jAM,JBC,SVF or ISC File …]

.jbcファイルの転送(TeraTermでSiLabasのシリアルポートを選択)

デフォルトで空いている、パーソナリティ07に書き込み

できた!!

ちなみにパーソナリティの確認

何もでてこない模様

BLE通信のiOSアプリで確認

接続できた。パーソナリティも表示。

ADC and Audio Monitor では、音量に応じて、LEDがレベルメータのように光りました。

次はシミュレータとか使ってみたいと思います。

Hello!

IoT、ロボット、AIといったIT界隈の流れの中で、電子工作とローレベルプログラミングの必要性を強く感じるようになりました。
他のブログでもそれぞれ関連する話題について書いてきましたが、このテーマはこのブログで書いていくことにしました。
ということでブログもリニューアルしました。

ラズパイ電子工作
http://decode.red/ed/archives/202

Arduino電子工作
http://decode.red/ed/archives/315

FPGA & GPU/OPENCL
http://decode.red/blog/20150913427/

TAIL RECURSION
http://decode.red/blog/20161022617/

IoT / IchigoJam BASIC
http://decode.red/net/archives/320

IoT / IchigoLatte JavaScript
http://decode.red/net/archives/327

このbitlifeというタイトルのブログは、10年以上前にはじめましたが(初期バージョン)、ここにきてようやくそのタイトルに一番ふさわしいテーマになってきたような気がします。