circuit
2021年08月03日
Adafruit ItsyBitsy nRF52840 Express の欠陥品を直しました
前の記事にて欠陥品を引き当ててしまったことを書きましたが、パーツの購入とはんだ付けをして動作確認まで行いました。
Adafruit ItsyBitsy nRF52840 Express 欠陥品
もう一度載せておきますが、こんな感じにダイオードがついていませんでした。
哀しいですね。
ダイオードの購入
ということでダイオードの購入ですが、まずはスペックから。
Adafruit ItsyBitsy nRF52840 Express のdownload にある回路図よりBAT ピン周りの回路図を抜粋すると次のようになっています。
付いていなかったダイオードはD3 にあたるのでMBR120 ということがわかります。
これは回路図の記号からも分かることですが、ショットキーバリアダイオードでVrが20[V],Ioが1[A]のものです。
製品も分かったことなのでさて購入ということになるのですが、調べたところDigi-Key あたりからくらいしか買えないんじゃないかってくらい見当たらないのと、完全に送料を考えると高すぎます。
そこで、AliExpress で探してみると案の定いい感じに売っているのを発見しました。20個入りで送料含めて359円だったのでそれを購入しました。ただまあ、気になった点は配送予定期間が30-50日となっていたことですが、すでに1ヶ月ほどこの問題に悩まされていたので気長に待つことにしました。
到着
気長に待つことにしていましたが、だいたい2週間ほどで到着。
リールを切って袋に入れて、Aliexpress からの製品でよくあるプチプチの袋に梱包されていました。
日本の電子部品屋さんも見習ってほしいですね。ほんのちょっとのパーツを買うだけなのに送料が500円とかかかるのやめて欲しいです。郵便を使ってほしいです。
ちなみにですが、一応個数を数えたところ21個入っていました。多い分には問題がないですが相変わらず適当ですね。
実装
ということで実装したあとの写真がこちら。
こてにはんだを乗せて、ピンセットでパーツを抑えつつはんだ付けです。普通ですね。 手付けなので若干盛りがアレな感じですが、はんだ付けそこまでうまくないので仕方がないです。
確認
ボード上のLED の色を変えながら点灯させるプログラムを入れて確認したところうまく点きました。
めでたしめでたしです。これでようやくバッテリー接続のbluetooth 左手デバイスの作成の続きができそうです。
ちなみに
さいごの確認に載せたアニメーションGIF ですが、ちょっと5MB以下に抑えるために試行錯誤したのでその時の設定を残しておきます。
ソースの動画はiPhone 11 Pro にて撮影したもので3840x2160pix で撮影した2秒の動画(mov)ファイルでAdobe Premiere Pro にてアニメーションGIF に変換しました。
変換設定は出力ファイルをアニメーションGIF に設定し、640x360pix のサイズ、画質を25まで落としフレームレートは10フレームにしました。
見られればいいかなくらいのものになってしまいましたが、LED が点いているのかが分かるのでまあいいかなということで。
2021年07月30日
Adafruit ItsyBitsy nRF52840 Express で欠陥品を引きました
それなりに安価に使えるArduino 互換のAdafruit ItsyBitsy nRF52840 Express を購入したところ、欠陥品を引いてしまいました。
そもそもの問題
上記リンクの製品ですが、BAT ピンを使うことでリチウムイオン電池などを繋いで電源の供給をすることもできる製品ですが、そこにバッテリーやAC/DC で作った5[V]などを流しても特に反応しませんでした。
とりあえず意味が分からないときはフォーラムに投げてみるのが一番なのでそこで質問などしても中の人の返答でも的を射ず、あわやこのまま解決しないかと思いました。
お友達で同じボードを持っている人に試しにBAT ピンを使ってもらったところ問題なく動いたので、回路図を見つつ実際のボードを確かめてみることにしました。
欠陥画像
ということで、ボードを確認したところこんな感じでした。
画像内の上部13番ピンの下にAdafruit! と書いてあるところの下にダイオードのマークはあれど実装されていませんでした。
目視での検品はしていないので完全に見落としていましたが、かなり辛い気持ちになりました。
ちなみにその時は同じところ(マルツを通してDigiKey の製品を購入)から5つくらいボードを買っていましたが、他のはどうやら大丈夫だったようです。
まとめ
目視で適当でも良いからパーツが実装されていないかどうかは確認したほうが良いです。
ちなみに問題が発覚してからこの未実装のダイオードがあることを発見するまでだいたい1ヶ月かかってます。
ボードを信じてはいけないのと、同じボードは最低でも2つは購入しておいて比較できるようにしておいた方が身のためですね。お金があればですが……
2021年04月16日
SPI接続のスマートウォッチ用ディスプレイをnRF52840 Express で動かす
Aliexpress で見つけたスマートウォッチ用のディスプレイをAdafruit ItsyBitsy nRF52840 Express にて動かす方法です。
Evernote にいろいろと調べてやり方などをメモしていますが、Blog に書くのもたまには良いかと思って書いていきます。
前提
Adafruit ItsyBitsy nRF52840 Express を使うために必要な設定はここでは触れませんので、適宜インストールなどを行ってください。
使用するディスプレイ
Aliexpress で見つけたスマートウォッチ用のディスプレイです。外観は下記のようなものとなっています。
SPI 接続で使える状態のものなのでお手軽に使うことができます。
このディスプレイはコントローラーにGC9A01 を使っておりそれに対応したライブラリを使うと楽に操作が行えるでしょう。 入力電圧については3.3V をそのまま接続できるため、下記ボードの3.3V を配線しました。
Adafruit ItsyBitsy nRF52840 Express で使うにあたって
Arduino IDE やその他の方法でライブラリのインストールを行います。
今回使うライブラリはArduino GFX Graphics library です。
もし、ライブラリマネージャーからインストールする場合には下記のライブラリを検索してください。
Adafruit にもAdafruit GFX Library がありますが、Arduino の方がソースコードが分かりやすかったためこちらを使うことになりました。とはいってもソースコードをたどるとAdafruit のライブラリを参考にしていたりそこにたどり着くのですが……
各ピンの接続
Adafruit ItsyBitsy nRF52840 Express | ディスプレイ(GC9A01) |
---|---|
GND | GND |
3V | VCC |
SCK(4) | SCL |
MOSI(3) | SDA |
空いているIO(RESとして使う) | RES |
空いているIO(DCとして使う) | DC |
空いているIO(CSとして使う) | CS |
空いているIO | BLK |
BLK はバックライトのオンオフのためのピンとなっています。面倒なときは解放状態でも問題ありません。
今回はCS を7ピンに、DC を10ピンにRES を9ピンにそれぞれ繋ぎました。
ソースコード
下記のソースコードはArduino GFX Graphics library を入れると一緒に手に入るサンプルコードのHelloWorld を今回の接続に合わせて変えたものです。
出力フォントについては今回は触れません。詳しく知りたい方はArduino_GFX クラスにあるsetFont まわりを調べてください。
/*******************************************************************************
* Start of Arduino_GFX setting
******************************************************************************/
#include <Arduino_GFX_Library.h>
// Definition for GPIO.
#define TFT_CS 7
#define TFT_DC 10
#define TFT_RST 9
// #define TFT_BL 6
// General hardware SPI
Arduino_DataBus *bus = new Arduino_HWSPI(TFT_DC, TFT_CS);
// GC9A01 IPS LCD 240x240
Arduino_GC9A01 *gfx = new Arduino_GC9A01(bus, TFT_RST, 0 /* rotation */, true /* IPS */);
/*******************************************************************************
* End of Arduino_GFX setting
******************************************************************************/
void setup(void)
{
gfx->begin();
gfx->fillScreen(BLACK);
#ifdef TFT_BL
pinMode(TFT_BL, OUTPUT);
digitalWrite(TFT_BL, HIGH);
#endif
gfx->setCursor(10, 10);
gfx->setTextColor(RED);
gfx->println("Hello World!");
delay(5000); // 5 seconds
}
void loop()
{
gfx->setCursor(random(gfx->width()), random(gfx->height()));
gfx->setTextColor(random(0xffff));
gfx->setTextSize(random(9) /* x scale */, random(9) /* y scale */, random(3) /* pixel_margin */);
gfx->println("Hello World!");
delay(1000); // 1 second
}
表示されるもの
こんな感じに表示されます。サンプル通りです。
続きを読む