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のブートメッセージを貼り付けておきます。
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が主流になるかもしれません。
posted by boochow at 19:43| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする

2017年04月02日

ESP32用のブレークアウトボード「E32-BreadPlus」

esp32bb1.jpg

先日ESP32-DevKitCを購入しましたが、実はその前にESP32モジュール単体も購入していました。

モジュールのほうはパーツケースの肥やし(泣)かなあと思っていたのですが、たまたまスイッチサイエンスさんでT字型のブレークアウトボードを見つけました。

ESP-WROOM-32 ブレッドボード開発基板 「E32-BreadPlus」(基板のみ) - スイッチサイエンス

ESP8266やRaspberry Piも同様なT字型の変換基板を見かけます。ブレッドボード上を広く使えるのがメリットです。
で、このボードですが、開発元のIndoor Corgi Elec.さんのページを訪問したところ、ブログで紹介するなら無料でボードをいただけるキャンペーンを開催中ということでしたので、ありがたく1枚送っていただきました。

ボードの表面です。
esp32bb2.jpg


ボードの裏面です。
GNDや3.3Vのパターンは太くなっています。
esp32bb3.jpg


モジュールはこんな感じでカプトンテープで固定してからハンダ付けしました。

esp32bb4.jpg


あとは抵抗2本、タクタイルスイッチ2個、コンデンサ1個とピンヘッダをつけて完成です。

とりあえず組み立ててみましたが、電源やUSBシリアルも必要ですので、火入れ・動作確認はまた別途やることにします。
posted by boochow at 17:00| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする

2017年03月16日

ESP32-DevKitC

esp32.jpg

秋月電子の前を通ったら、ESP-32の開発ボードが売られているのが目に留まり、買ってみました。

ESP32−DevKitC ESP−WROOM−32開発ボード: 無線、高周波関連商品 秋月電子通商 電子部品 ネット通販

なんと、たまたま発売日だったようです。
モジュール単体が700円なので、ボードで1480円というのは安いですね。
USBシリアルがオンボードで載っているので、便利そうです。
esp32-2.jpg

このモジュール、電力食いらしいですし、パワフルすぎて扱いに困る感じもしますが、おいおい試してみたいと思います。

とりあえず、ArduinoでのLチカまでは確認してみました。
ツール類のインストール方法はこちらにあります。

GitHub - espressif/arduino-esp32: Arduino core for the ESP32

私はWindows7で試しましたので、Arduino IDE 1.8.1、Gitをインストールしました。
ESP32用の開発ツールはArduinoのボードマネージャを使わずにダウンロードする手順になっています。
Gitで基本ツールをクローンした後、さらに「Get」コマンドを実行すると必要なファイルがダウンロードされます。
(手順は上記リンクを確認)

他に、USBシリアルのドライバのインストールが必要でした。

USB - UART ブリッジ VCP ドライバ|Silicon Labs

シリアルポートを選択し、ボードはボードメニューから「ESP32 Dev Module」を選択します。

スケッチ例→ESP32→AnalogOut→LEDCSoftwareFadeを試してみました。
LEDはGPIO5に接続します。
esp32-3.jpg

写真では抵抗入りLEDを使っていますので、I/Oピンに直結しています。
Arduinoのダウンロードボタンを押すだけで普通にスケッチが書き込まれ、実行されました。
使い勝手は通常のArduinoボードと全く同じです。
posted by boochow at 08:44| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする

2015年12月21日

ESP8266でPNGデコーダを実装してみた(4)

世間はすっかりクリスマス&スターウォーズに染まっていますね。
今週も週末は慌しく過ぎました。
今年は年末年始の休みも一週間しかなく、欲求不満が溜まりそうです。

今日は、PNGデコーダの実装に透過色を追加しました。

透過色は、「tRNS」チャンクで定義します。
中身は色ごとのアルファ値ですが、色の表現自体がカラーモードによって異なりますので、tRNSチャンクの中身もカラーモードによって異なります。
今回実装したのはインデックスカラーモードでの透過色だけです。
RGBモードでも、tRNSチャンクで色ごとにアルファ値を設定することができますが、まだ実装していません。

透過色の指定は圧縮・伸張とは関係が無く、描画時の処理がメインです。
デコーダライブラリではtRNSチャンクのデータの保持と参照を行います。
それを解釈して描画するのはデコーダライブラリを利用する側の仕事です。
今回はArduino上で描画する都合上、アルファ値の解釈は透明(0)・不透明(255)の2種類のみ行いました。

PNGに透過色を指定するツールとして、TweakPNGというツールを使いました。

【レビュー】PNG画像を解析して詳細なフォーマット情報を取得・表示するツール「TweakPNG」 - 窓の杜

このツールでPNGファイルを読み込み、tRNSチャンクを追加すると、透過色を指定することができます。

透過色ありPNGを表示させてみた様子が以下の動画です。
透過色対応させる場合は、高速なpushColorが使えませんので、少し遅くなりますが、透過色ピクセルを描画していないので見かけ上はそれほど遅くはなっていません。



この動画では、市松模様を表示してから、透過有りのPNGを表示させています。
市松模様を動画圧縮しているせいで、かなりひどい画質になっていますが・・・。
posted by boochow at 02:14| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする

2015年12月14日

ESP8266でPNGデコーダを実装してみた(3)


この週末はあまり時間が取れなかったのですが、このところ作っているPNGデコーダを、1bit/2bit/4bitのインデックスカラーに対応させてみました。

動画の通り、インデックスカラーはそれなりに高速に表示できます。
動画では、1bitの画像は表示させている画面がノイズのように見えますが、実は以前プチコン3号で作成した迷路の画像です。

このデコーダーの開発は、もっぱらVisual Studio上で行い、最後にArduino IDEで描画部分だけ追加しています。
やはり、少しプログラムが複雑になってくると、変数の状態を観察しながらステップ実行できる環境は欠かせないですね。
posted by boochow at 01:34| Comment(3) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする
人気記事