circuit

2021年08月03日

Adafruit ItsyBitsy nRF52840 Express の欠陥品を直しました

前の記事にて欠陥品を引き当ててしまったことを書きましたが、パーツの購入とはんだ付けをして動作確認まで行いました。

Adafruit ItsyBitsy nRF52840 Express 欠陥品

もう一度載せておきますが、こんな感じにダイオードがついていませんでした。


20210729_1


哀しいですね。

ダイオードの購入

ということでダイオードの購入ですが、まずはスペックから。

Adafruit ItsyBitsy nRF52840 Express のdownload にある回路図よりBAT ピン周りの回路図を抜粋すると次のようになっています。


20210802_1


付いていなかったダイオードはD3 にあたるのでMBR120 ということがわかります。
これは回路図の記号からも分かることですが、ショットキーバリアダイオードでVrが20[V],Ioが1[A]のものです。
製品も分かったことなのでさて購入ということになるのですが、調べたところDigi-Key あたりからくらいしか買えないんじゃないかってくらい見当たらないのと、完全に送料を考えると高すぎます。

そこで、AliExpress で探してみると案の定いい感じに売っているのを発見しました。20個入りで送料含めて359円だったのでそれを購入しました。ただまあ、気になった点は配送予定期間が30-50日となっていたことですが、すでに1ヶ月ほどこの問題に悩まされていたので気長に待つことにしました。

到着

気長に待つことにしていましたが、だいたい2週間ほどで到着。


20210802_2


リールを切って袋に入れて、Aliexpress からの製品でよくあるプチプチの袋に梱包されていました。
日本の電子部品屋さんも見習ってほしいですね。ほんのちょっとのパーツを買うだけなのに送料が500円とかかかるのやめて欲しいです。郵便を使ってほしいです。

ちなみにですが、一応個数を数えたところ21個入っていました。多い分には問題がないですが相変わらず適当ですね。

実装

ということで実装したあとの写真がこちら。


20210802_3


こてにはんだを乗せて、ピンセットでパーツを抑えつつはんだ付けです。普通ですね。 手付けなので若干盛りがアレな感じですが、はんだ付けそこまでうまくないので仕方がないです。

確認

ボード上のLED の色を変えながら点灯させるプログラムを入れて確認したところうまく点きました。


20210802_4


めでたしめでたしです。これでようやくバッテリー接続のbluetooth 左手デバイスの作成の続きができそうです。

ちなみに

さいごの確認に載せたアニメーションGIF ですが、ちょっと5MB以下に抑えるために試行錯誤したのでその時の設定を残しておきます。

ソースの動画はiPhone 11 Pro にて撮影したもので3840x2160pix で撮影した2秒の動画(mov)ファイルでAdobe Premiere Pro にてアニメーションGIF に変換しました。 変換設定は出力ファイルをアニメーションGIF に設定し、640x360pix のサイズ、画質を25まで落としフレームレートは10フレームにしました。
見られればいいかなくらいのものになってしまいましたが、LED が点いているのかが分かるのでまあいいかなということで。



rabbitcats at 16:30|PermalinkComments(0)

2021年07月30日

Adafruit ItsyBitsy nRF52840 Express で欠陥品を引きました

それなりに安価に使えるArduino 互換のAdafruit ItsyBitsy nRF52840 Express を購入したところ、欠陥品を引いてしまいました。

そもそもの問題

上記リンクの製品ですが、BAT ピンを使うことでリチウムイオン電池などを繋いで電源の供給をすることもできる製品ですが、そこにバッテリーやAC/DC で作った5[V]などを流しても特に反応しませんでした。
とりあえず意味が分からないときはフォーラムに投げてみるのが一番なのでそこで質問などしても中の人の返答でも的を射ず、あわやこのまま解決しないかと思いました。

お友達で同じボードを持っている人に試しにBAT ピンを使ってもらったところ問題なく動いたので、回路図を見つつ実際のボードを確かめてみることにしました。

欠陥画像

ということで、ボードを確認したところこんな感じでした。


20210729_1


画像内の上部13番ピンの下にAdafruit! と書いてあるところの下にダイオードのマークはあれど実装されていませんでした。
目視での検品はしていないので完全に見落としていましたが、かなり辛い気持ちになりました。 ちなみにその時は同じところ(マルツを通してDigiKey の製品を購入)から5つくらいボードを買っていましたが、他のはどうやら大丈夫だったようです。

まとめ

目視で適当でも良いからパーツが実装されていないかどうかは確認したほうが良いです。
ちなみに問題が発覚してからこの未実装のダイオードがあることを発見するまでだいたい1ヶ月かかってます。
ボードを信じてはいけないのと、同じボードは最低でも2つは購入しておいて比較できるようにしておいた方が身のためですね。お金があればですが……



rabbitcats at 11:00|PermalinkComments(0)

2021年04月16日

SPI接続のスマートウォッチ用ディスプレイをnRF52840 Express で動かす

Aliexpress で見つけたスマートウォッチ用のディスプレイをAdafruit ItsyBitsy nRF52840 Express にて動かす方法です。

Evernote にいろいろと調べてやり方などをメモしていますが、Blog に書くのもたまには良いかと思って書いていきます。

前提

Adafruit ItsyBitsy nRF52840 Express を使うために必要な設定はここでは触れませんので、適宜インストールなどを行ってください。

使用するディスプレイ

Aliexpress で見つけたスマートウォッチ用のディスプレイです。外観は下記のようなものとなっています。
SPI 接続で使える状態のものなのでお手軽に使うことができます。

20210412_1



このディスプレイはコントローラーにGC9A01 を使っておりそれに対応したライブラリを使うと楽に操作が行えるでしょう。 入力電圧については3.3V をそのまま接続できるため、下記ボードの3.3V を配線しました。

Adafruit ItsyBitsy nRF52840 Express で使うにあたって

Arduino IDE やその他の方法でライブラリのインストールを行います。
今回使うライブラリはArduino GFX Graphics library です。
もし、ライブラリマネージャーからインストールする場合には下記のライブラリを検索してください。


20210412_2



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 }

表示されるもの


20210412_3



こんな感じに表示されます。サンプル通りです。

続きを読む

rabbitcats at 18:00|PermalinkComments(0)