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 | このブログの読者になる | 更新情報をチェックする

2015年12月09日

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


前回実装したPNGデコーダに、インデックスカラーモードとグレースケールモードの実装を追加してみました。
PNGの画像圧縮・伸長はバイト列が対象なので、カラーモードごとの違いはデコード結果のバイト列をどう解釈するかだけの違いです。

PNGはGIFより遅いなと思っていたのですが、インデックスカラーではそこそこの速度でした。
フルカラーだと1ピクセルあたり3バイトをデコードする必要がありますから、その場合は遅くなるのは当たり前でした。


ところで、先月末にESP8266用Arduinoがメジャーバージョンアップしていました。

esp8266/Arduino ・ GitHub

早速インストールしてみたのですが、なぜかILI9341ドライバが使えなくなっていたため、現在は古いバージョンに戻しています。
HTTPClient libraryが追加されたようなので、気になっているのですが・・・。
posted by boochow at 00:07| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする

2015年11月24日

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

esp826613.jpg

前回、「ESP8266でオンメモリでPNGをデコードするのは難しいかも」と書きましたが、あれこれ考えた結果、ぎりぎり何とかなりそうな見通しが立ったので、この3連休を使って実装してみました。

Deflate圧縮の伸張には、前回紹介した中から「tiny inflate」を選びました。

jibsen / tinf − Bitbucket

PNGファイル自体の扱いは、主に以下を参考にしながら自力で書きました。

apankrat/lpng
PNG画像を自力で読む
Portable Network Graphics (PNG) Specification (Second Edition)

懸念点だったメモリについては、グローバルメモリに32KBのリングバッファと、スキャンライン2本分のバッファを用意しました。
前者はLZ77圧縮の復号、後者は復号後のフィルター処理にどうしても必要となりますが、これだけで
グローバル変数が 72,814バイト (88%) の 動的メモリを使用しており、ローカル変数に 9,106 バイトが残っています。最高は 81,920バイトです

という状態になっており、かなり苦しい感じです。

描画速度もGIFより遅いので、フルカラーが使えるという以外にはあまりメリットは無いかもしれません。
posted by boochow at 02:26| Comment(0) | ESP8266/ESP32 | このブログの読者になる | 更新情報をチェックする
人気記事