2017年09月18日

ESP32にMicroPythonをインストール

esp32-micropython.png

三連休の「やってみた」をもう一つ。
(といっても自分用に使うことができた休日は今日だけなのですが)

これまた入手はしたけれど、使い道が無くて遊んでいた、ESP32-DevKit Cです。

ESP32用MicroPythonをビルドしてインストールするまでを懇切丁寧に解説した以下の記事を見つけ、その通りにやってみました。
こちらも大変親切な解説記事になっています。

ESP32でmicropython - いっぺーちゃんの いろいろやってみよ〜

以前インストールしたDebianではうまく動かなかったので、Ubuntuをインストールするところから始めましたが、それでも3時間くらいで片付きました。

注意点を挙げると、ESP32用MicroPythonのベースディレクトリは現時点では

"micropython-esp32/esp32"

ではなく

"micropython-esp32/ports/esp32"

になっています。
また、micropython-esp32のほかに、micropython-libのリポジトリが必要です(シンボリックリンクが張られているため)。
git clone https://github.com/micropython/micropython-lib.git --recursive


MicroPythonのブートメッセージを貼り付けておきます。
ets Jun 8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun 8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0010,len:4
load:0x3fff0014,len:4248
load:0x40078000,len:0
ho 12 tail 0 room 4
load:0x40078000,len:10648
entry 0x4007a56c
I (1605) cpu_start: Pro cpu up.
I (1605) cpu_start: Single core mode
I (1608) heap_init: Initializing. RAM available for dynamic allocation:
I (1643) heap_init: At 3FFAE2A0 len 00001D60 (7 KiB): DRAM
I (1700) heap_init: At 3FFD4150 len 0000BEB0 (47 KiB): DRAM
I (1757) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM
I (1817) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1877) heap_init: At 4008F3A8 len 00010C58 (67 KiB): IRAM
I (1935) cpu_start: Pro cpu start user code
I (2095) cpu_start: Starting scheduler on PRO CPU.
OSError: [Errno 2] ENOENT
MicroPython v1.9.2-272-g0d183d7 on 2017-09-18; ESP32 module with ESP32
Type "help()" for more information.
>>>


ESP32のSRAMは520KBのはずですが、ブートメッセージにあるIRAM、DRAMというのは何なのか、調べてみると以下のページに情報がありました。
IRAMはInstruction RAM、DRAMはData RAMだそうです。

In total, there's 516K of memory. Of these:
- 32K is used for flash cache on CPU0
- If enabled, 32K is used for flash cache on CPU1
- 8K+16K are used by the ROM
- If BT is enabled, 64K is used by BT ROM

ESP32 Free Heap - Page 3 - ESP32 Forum

ESP8266よりは余裕がありますが、それでも画像を扱うにはちょっと苦しいメモリ容量かもしれません。

ちなみに、私は20年くらい前からRubyを使っており、Pythonは使ってこなかったのですが、最近は機械学習の影響もあってか、すっかりPythonが広まってきたように思います。
また、AdafruitがCircuitPythonを採用したのも最近気になった動きです。

Make: Japan | AdafruitがCircuitPythonへ移行

今はまだ非力ですが、今後はマイコンの世界も32bit MCU + Pythonが主流になるかもしれません。
ラベル:MicroPython
posted by boochow at 19:43| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする

STM32専用の開発環境 STM32CubeMX + SW4STM32を試してみた

F401RE.jpg

昨年、スイッチサイエンスさんからNUCLEO-F401REというmbedが使えるボードを購入したのですが、あまり使い道も思いつかず、放置していました。
(単に安かったので買ってみたというのが正直なところです。)

mbedはコンセプトは良いですし、ボードもArduino系よりも強力なものが多いところは頼もしいと思うのですが、開発環境もシステム自体もmbedOS5になってガラリと変わってしまいましたし、手軽さ加減が若干中途半端というか、敷居が高いように思います。

というところに、下記の記事を見かけて面白そうだったので、mbedではない開発環境を試してみることにしました。

CubeMXでLチカ ≫ DSP空挺団

といっても、とりあえずは上記のページの通りにインストールしてLチカを動かしてみただけです。
この記事は大変親切な記事だと思います。

私の場合は使うボードが異なるのと、開発機のOSがWindows7だという点が違いますが、ほぼこの通りにやればうまくいきました。
差分は、NUCLEO-F401REではLEDのピンがPA5になりますので、LEDの点滅の部分のコードも以下のようになります。
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);

cubemx.png

あと、一点引っかかったのがコードを実際にボードで実行する部分で、上記の記事では
SW4STM32のメニューバーからRun->Run As->Ac6 STM32 C/C++ Applicationを実行します。

CubeMXでLチカ ≫ DSP空挺団

とありましたが、最初の1度だけは、以下のようにする必要がありました。
書き込みに関しては最初だけ左側のプロジェクトツリーからプロジェクトを左クリックし Debug as -> Ac6 STM32 C/C++ Applicationを選ぶ必要があります。

System workbench for STM32 (2) - 電子工作専科


まだ機能がよく分かっていませんが、デバッグはmbedやArduinoよりも機能が充実しているように思われます。
posted by boochow at 18:10| Comment(0) | stm32 | このブログの読者になる | 更新情報をチェックする

2017年09月14日

αJuno-2の電解コンデンサを交換

ajuno-electrolytic-capacitor.jpg
先日IR3R05を取り替えて復活させたαJuno-2ですが、電源の電解コンデンサが心配だったので交換しました。
3つある大容量の電解コンデンサの1つが、ケースが割れて液漏れしているように見えました。
漏れ出た液は、すでに乾燥してキャラメルみたいになっています。
electrolytic-capacitor1.jpg

今回も「はんだシュッ太郎」のお世話になりました。これ本当に便利です。
液漏れしていると思われる整流用の大型の電解コンデンサ3つを外しました。
electrolytic-capacitor2.jpg

外したコンデンサは、1000μF/35Vが2つと、3300μF/25Vが1つです。
交換用のコンデンサは、オーディオ用のMUSEシリーズにしてみました。
1000μFは耐圧35Vが無かったので、50V品を使用しました。
1000μF、3300μF共に、元のコンデンサよりも背が高くなっています。
electrolytic-capacitor3.jpg

MUSE 1000μFが元の電解コンの3300μFと同じ背丈で、MUSE 3300μFはさらに高いので、一応頭がつっかえないか確認してから取り付けました。
思ったより余裕がありました。
electrolytic-capacitor4.jpg

ついでに、メインボードのほうの電源周りの電解コンデンサもMUSEに交換してみました。
交換したのは2箇所です。

1つ目はおそらくデジタル回路側の電源用と思われるC26です。
electrolytic-capacitor-main1.png

electrolytic-capacitor5.jpg

electrolytic-capacitor6.jpg


もう1つは、HPFの切り替えを行っている4052の電源に入っているC8です。
もしかして音質に影響あるかな?と思い・・・。

electrolytic-capacitor-main2.png

electrolytic-capacitor7.jpg

C8はキーボードの下に隠れる形になりますので、寝かせ気味にして取り付けました。
electrolytic-capacitor8.jpg


音質は変わったか?というと、多分変わってはいないと思います。
とはいえ電源部の電解コンの交換は安心のために必要でしたが。

音質については、本格的にやるならアナログの音声信号のラインに入っているカップリングコンデンサをコーラスモジュールも含めてすべて交換するということも考えられますが、ちょっと大変そうですね。
特に、メインボードはコンデンサの背が高くなると、組み立て時に問題がでるかもしれません。
posted by boochow at 00:10| Comment(0) | Synthesizer | このブログの読者になる | 更新情報をチェックする

2017年09月10日

αJunoのVCF/VCAチップを交換

replace0.jpg

実験用にと思って入手してあったαJuno-2のジャンク2台を使って、VCF/VCAチップのIR3R05を交換して正常品を1台製作しました。

2台とも、調べてみると6つの音源のうち1つだけがおかしいことが判りました。

1台目は、1つの音源だけ、波形の上半分(+の領域)が出力されません。
上の写真のように、鋸波を鳴らすと富士山のように頂上が消失した波形になります。
波形の片側だけクリップしたような感じです。

そのため、フィルタをかけた音色でも妙な高域成分が残ってしまいます。
もちろん音量もこの音源だけ下がってしまいます。

2台目は、1つの音源がまったく音が出ません。音色によってはアタックなどのプツッという音だけが聞こえるので、VCA部分は正常だがそれ以前が異常なのだと思われました。

信号を追ってみると、IR3R05への入力までは正しく信号が来ており、さらに調べると1段目のフィルタの出力(以前の記事のC2)までは正常ですがC3以降は音が出力されていませんでした。

というわけで、2台ともIR3R05のチップ故障のようでした。
Juno-106に比べるとαJunoは故障しにくい、ともっぱらの評価なのですが、それでもこのVCF/VCAチップは比較的故障しやすいパーツのようです。


2台目のほうがIR3R05以外の部分の状態は良かったので、1台目のジャンクからIR3R05を一つはずして2台目の音の出ないIR3R05と交換することにしました。

プリント基板からのパーツ取り外しは面倒なものですが、今回は強い味方を導入しました。
その名も「はんだシュッ太郎」です。
hsk-300.jpg


ポンプ式のはんだ吸い取り器ですが、はんだごてと一体化しており、はんだを溶かしながら吸い取ることができます。
通常のはんだごてと違い、コテ先がストローのようになっています。
これでハンダを溶かしながらチューッと吸い取るわけですね。
hsk-300-2.jpg

実際に使うときは、図のようにリード線にコテの穴をかぶせるように当てて、リード線の周囲からはんだを吸い取ります。
hsk-300-3.png

これは実に強力です。
チップはごく簡単に外せました。
4000円以上する高い工具なので悩みましたが、時間の節約および部品や基板のダメージ軽減を考えると、買ってよかったと思いました。
replace1.jpg

交換後はきちんと6音出るようになりました。
ちなみにαJunoの動作品はオークションで1万円程度で入手できるので、最初から動作品を買うほうがお得です。
posted by boochow at 19:14| Comment(0) | Synthesizer | このブログの読者になる | 更新情報をチェックする

2017年09月06日

αJunoのVCF/VCA(3)

input.png

IR3R05には、波形を観測できるポイントがC1〜C4およびLOADの計5つあります。

・C1:一段目のフィルタのBPF出力
・C2:一段目のフィルタのLPF出力
・C3:二段目のフィルタのBPF出力
・C4:二段目のフィルタのLPF出力
・LOAD:V-I変換の直前の信号

二段目のフィルタの入力は一段目のフィルタのLPF出力のようです。
また、最終的な出力信号は電流出力になるため、基板上では直接観測できませんが、電圧変化の波形はLOAD端子で観測できます。

Analog Discoveryのオシロ機能で、C1とC2の信号を観測してみました。
入力信号(IR3R05の1番ピン)は冒頭の画像の矩形波です。
電圧はPeak-to-Peakで10mV程度と低くなっています。
回路図を見ても、12KΩと100Ωで分圧していますのでこんなものでしょう。

フィルタの周波数を全開から絞っていくと、C1(BPF)の出力は以下のように変化しました。
レゾナンスは最小に設定しています。

まず、周波数が最大のときはほとんどHPFのようになっており、立ち上がりと立下りの成分だけが残っています。
bpf1.png

ここから周波数を下げていくにつれ、高域成分は弱まって低域成分が増えていきます。
bpf2.png
bpf3.png
bpf4.png

最後まで絞りきった状態でも、若干の信号は残っています。
bpf5.png


同様に、フィルタを全開から絞っていったときのLPFの出力は以下のようになります。
こちらはおなじみのものだと思います。
なおLPFとBPFは別個に測定したので、上の図と時間軸は一致していません。

lpf1.png
lpf2.png
lpf3.png
lpf4.png
lpf5.png


LPFを絞りきった状態では、信号はほぼ完全に消えています。
posted by boochow at 14:13| Comment(0) | Synthesizer | このブログの読者になる | 更新情報をチェックする
人気記事