8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NefryAdvent Calendar 2017

Day 18

NefryBTのファームウェアを自分用に改造して動かそう

Posted at

昨日は @minwinmin さんで、BLE通信の話 でした。
ESP32のBLE Pheriperalの実装がまだまだ面倒なのでもっと楽になってほしいですね。
ともあれちゃんと使えてて素晴らしいです。

さて今回は、NefryBTのファームウェアを独自に改造する方法をお送りします。

そもそもNefryのファームウェアって?

NefryのファームウェアはGitHubで公開されており、MITライセンスです。
https://github.com/Nefry-Community/arduino-esp32

性能や機能、サンプルプログラムに不満があれば、勝手に直して本家にPullRequest送ることも可能です。

NefryBTの中身はESP32で、そのファームウェアの多くを以下から継承しています。
https://github.com/espressif/arduino-esp32

ですので、ESP32-Arduinoのノウハウは大体使えます。

では、どうやって改造するか見ていきましょう。

ファームウェアを改造する際の準備

ファームウェアの改造手順は以下の通りです。
安全のための手順があり少し長いです。
「ぶっ壊しても消せばいいのでとにかく弄りたい!」のであれば2の手順の後8まで飛ばせます(汗)

  1. ArduinoIDEをダウンロードする
  2. NefryBTのファームウェアをインストールする
  3. ファームウェアのGitリポジトリをForkする
  4. Forkしたリポジトリをcloneする
  5. 使っているファームウェアのバージョンのTagでcheckoutする
  6. 既存のファームウェアのバックアップを取る
  7. .gitディレクトリをコピーする
  8. 改造して使う

ファームウェアのインストール先

Windows
C:\Users\<ユーザ名>\AppData\Local\Arduino15\packages\Nefry(ESP32)\hardware\esp32\<バージョン番号>

MacOSX
~/Library/Arduino15/packages/Nefry(ESP32)/hardware/esp32/<バージョン番号>

原因不明のコンパイルエラーが出た場合は、以下を参照してください。バージョンの階層にゴミフォルダやファイルが存在してもエラーになります。
https://dotstud.io/docs/nefrybt-error-handling-1/

Example:NefryBTの起動画面を変えてみた

本当はもっとNefryBTを台無しにしたりできるのですが、今回は起動画面の変更をしてみましょう。

1. 絵を描く

起動画面は128x64の2諧調モノクロなのでEDGEというドッター御用達の神ツールでカキカキします。
少女終末旅行のED見ながら書きました。ぽっぱっぽっぱっぽぱっぱー

syuumatu_1x4.png

2. XBMに変換する

白黒反転したものを

syuumatu_2.png

Convert Image to XBM でXBMに変換します

3. ファームウェアのロゴを差し替える

cores/esp32/nefry/NefryBTimg.h
#define nefrybt_img_width 128
#define nefrybt_img_height 64
static char nefrybt_img_bits[] = {
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xF1, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0x01, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x03, 
	0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0x9F, 0x7F, 0x38, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xEF, 0x7F, 0xFF, 0xFF, 0xFF, 0xDF, 0x8F, 0xBF, 0xFF, 0x9F, 0xC7, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x0F, 0xE8, 0x7A, 0xFF, 0xFF, 0x61, 0x9F, 
	0xFF, 0x5F, 0x3F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x7F, 0xEF, 0x7A, 
	0xFF, 0x3F, 0x3E, 0xCF, 0xFF, 0xDF, 0xDE, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 
	0x0F, 0x08, 0xE8, 0x7A, 0xFF, 0xC7, 0xDF, 0xD6, 0xFF, 0x9F, 0x9D, 0xE7, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6B, 0x0B, 0x7A, 0xFF, 0xF9, 0xE3, 0xDA, 
	0xFD, 0x6F, 0x58, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x6B, 0xFB, 0x7A, 
	0x7F, 0xFE, 0xFC, 0xDA, 0xFA, 0xEF, 0xE7, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xEF, 0x7A, 0xFF, 0x02, 0xBF, 0x7F, 0xE3, 0x5C, 0xE7, 0xEF, 0xEF, 0x5D, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x1F, 0xFC, 0xAE, 
	0x9F, 0xF7, 0xEF, 0x9D, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xE7, 0xE7, 0xFF, 0xDF, 0x7F, 0x00, 0xF0, 0xBE, 0xFE, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x3B, 0xC0, 0xFF, 0xFF, 0xF3, 0xFF, 0xBE, 
	0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x85, 0xFF, 0xFF, 
	0xFF, 0xBF, 0xFA, 0xDE, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xD1, 0xFE, 0xED, 0xFF, 0xFF, 0x5F, 0xFD, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0xAB, 0xF6, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 
	0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xD5, 0xFF, 0xFF, 
	0xFF, 0xFF, 0x07, 0x08, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1C, 0x04, 0x00, 0xFC, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x3C, 
	0x1C, 0x18, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0x1F, 0x40, 0x7C, 0x3C, 0x38, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x0F, 0x44, 0xFE, 0xFC, 0x70, 0x00, 0xFE, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x02, 0xE6, 0xFE, 
	0xFD, 0xF3, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF9, 0xFF, 0x7F, 
	0xFF, 0x01, 0xF7, 0xFE, 0x01, 0xF0, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0x7F, 0xE7, 0xFF, 0x7F, 0xFF, 0x80, 0xF3, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x1F, 0xFC, 0xFF, 0xFF, 0x00, 0xFC, 0xFF, 
	0xDF, 0xEA, 0x1F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xE3, 0x1F, 
	0x7C, 0xE0, 0xFF, 0xFF, 0x2F, 0xED, 0x1F, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xDF, 0x3F, 0x1E, 0xE0, 0x03, 0xB0, 0xEA, 0xFF, 0xF7, 0xFE, 0x5F, 0xF0, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xC7, 0xF9, 0xFB, 0x3B, 0xC0, 0xFE, 0xFF, 
	0xFF, 0xFF, 0x9F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xF3, 
	0x03, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xF1, 0xFF, 0x0B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xCF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x25, 0xF0, 0xFF, 0xFF, 
	0xFF, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x29, 0x7D, 0xFD, 
	0x25, 0xF0, 0xFF, 0x3F, 0xFC, 0x3F, 0x06, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xDF, 0xEB, 0xFF, 0x75, 0xF0, 0xFF, 0xCF, 0xF9, 0xDF, 0x0F, 0xFE, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x75, 0xF0, 0xFF, 0xF7, 
	0xFB, 0x03, 0xC8, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0x7F, 
	0x43, 0xF0, 0xFF, 0xE7, 0x1F, 0xF8, 0xC3, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0x3F, 0xFF, 0x9F, 0x08, 0x80, 0xFF, 0xD9, 0x23, 0x18, 0x8C, 0xFB, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0xD9, 0x70, 0x40, 0x9E, 
	0x3B, 0xC0, 0x8F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF9, 
	0xDD, 0xE0, 0x83, 0xBF, 0x7B, 0xF0, 0xAF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0x7E, 0xFE, 0x19, 0xE0, 0x03, 0x20, 0x78, 0xF0, 0xA7, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0xFF, 0x1B, 0xE9, 0x83, 0x9F, 
	0x8B, 0xE0, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 
	0x43, 0xE9, 0x83, 0xBF, 0xF3, 0xE0, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xF7, 0xFF, 0x7F, 0xED, 0x07, 0x7F, 0xFB, 0xC1, 0xF7, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x7F, 0xE7, 0x07, 0xFF, 
	0x38, 0xC0, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 
	0xFF, 0xEE, 0x07, 0xE6, 0x89, 0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xEE, 0x07, 0x98, 0xE0, 0x01, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xEE, 0x0F, 0x3C, 
	0xFA, 0x83, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 
	0xFF, 0xEE, 0x0F, 0x7C, 0x1B, 0x80, 0xFE, 0xFF, 0xCF, 0xF9, 0xFF, 0xFF, 
	0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xEC, 0x0F, 0x60, 0xD7, 0x03, 0xFD, 0xFF, 
	0xCF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xED, 0x07, 0xD8, 
	0x16, 0x00, 0xFD, 0xFF, 0x8F, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 
	0xFF, 0xED, 0x18, 0xD8, 0xF6, 0x07, 0xFA, 0xFF, 0x8F, 0xF9, 0x9F, 0xFF, 
	0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x1D, 0x0B, 0xC0, 0xEE, 0x00, 0xFA, 0xFF, 
	0x0F, 0x19, 0x8E, 0xE4, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFD, 0x2B, 0xF0, 
	0x2D, 0x0F, 0xF7, 0xFF, 0x0F, 0x09, 0xCC, 0xF0, 0xFF, 0xFF, 0xEF, 0xFF, 
	0xFF, 0xFD, 0x0B, 0xF0, 0xAD, 0x00, 0xEF, 0xFF, 0x4F, 0xC8, 0xCC, 0xF8, 
	0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF9, 0x77, 0xF0, 0x4D, 0x5E, 0xEE, 0xFF, 
	0x4F, 0x08, 0x84, 0xF4, 0xFC, 0xFF, 0xDF, 0xFF, 0xFF, 0xFB, 0x77, 0xE0, 
	0xDB, 0x5F, 0xDE, 0xFF, 0xCF, 0x08, 0x84, 0x64, 0x44, 0xFC, 0xDF, 0xFF, 
	0xFF, 0xFB, 0x77, 0xE0, 0xDB, 0xFF, 0xDE, 0xFF, 0xCF, 0xC8, 0xCF, 0x2C, 
	0xD6, 0xFE, 0xDF, 0xFF, 0xFF, 0xFB, 0x6F, 0xC6, 0xB7, 0xFF, 0xBF, 0xFF, 
	0xCF, 0x09, 0xCC, 0x1C, 0x87, 0xFE, 0xDF, 0xFF, 0xFF, 0xFB, 0xEF, 0xCE, 
	0xB7, 0xFF, 0xBF, 0xFF, 0xCF, 0x19, 0xCE, 0x8C, 0xB7, 0xFE, 0xDF, 0xFF, 
	0xFF, 0xFB, 0xCF, 0xFC, 0xB7, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 
	0x87, 0xFE, 0xDF, 0xFF, 0xFF, 0xFB, 0xDF, 0xFF, 0x6F, 0xFF, 0x7F, 0xFF, 
	0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFB, 0xDF, 0xFF, 
	0x6F, 0xFF, 0xFF, 0xFE,
};

4. 適当なコードでコンパイルする

なんでもいいのでスケッチをコンパイルして転送します。

DRRu_uSU8AEzZ4a_orig.jpg

はい

おわりに

自分だけのNefryが出来ました。
自分の名前やロゴを入れることでパーソナライズできますね。
流行らせたい!

さて、明日は @tikchiku さんで、Groveセンサーを使ったネタのようです。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?