謎のICが載ったType-Cリポ充電基板でポケットオシロを電池仕様に!

じゃんくはっく
じゃんくはっく

ポケットオシロをType-C充電仕様にしたよ!

おもちゃみたいなオシロスコープね!

ぴー
ぴー
じゃんくはっく
じゃんくはっく

おもちゃ感がいいでしょ! でも、結構使えるヤツなのよ。

さて、今回はこの前、アリエクでポチった1枚あたり45円のリポ充電基板が届いたので早速使ってみました。基板はこんな感じです。

リチウムポリマー充放電保護基板

リポ充電基盤のType-C版が出てたんでポチった!

https://junkhack.gpl.jp/2021/02/20/type-c/

この前、買ったんですが結構届くのが速かったですね。写真のように繋がった状態で送られてきますので、手で折って分離します。基板が薄いので簡単に分離できます。

これのマイクロUSB版はだいぶ昔に以下で紹介しています。

5V 18650 リチウムバッテリー充電モジュール

投稿日: 2015年5月10日

このメインICはTP4056だったはずですが、今回の基板には型番・LN4056っていう刻印があります。

これ、スペックシートが出てきませんね。これは、まぁTP4056の互換チップなんだと思います。多分作っているのはここ。

上海南麟电子股份有限公司
Shanghai Nanlin Electronics Co.、Ltd

http://www.natlinear.com/

南麟っていうのが愛称ですかね。中国のサイトを深く潜ればPDFもあるとは思いますが、これ以上追わず。工作したいので。近い型番だと、以下にPDFがあります。

南麟PDF

http://www.natlinear.com/uploadfiles/2014/LN/

工作終わってから、気になって探しました。結果、以下にありました。

LN4056H

http://www.icdemi.com/viewManual.aspx?p=LN4056H.pdf

製品概要を和訳すると以下です。

USBインターフェースと互換性のある1.0Aリニアバッテリー管理チップ

■製品概要
LN4056Hは、定電流/定電圧で単セル充電式リチウム電池を充電できる充電器回路部品です。このデバイスは内部にパワートランジスタを備えており、アプリケーションで外部電流検出抵抗やブロッキングダイオードを必要としません。 LN4056Hは、周辺機器をほとんど必要とせず、USBバスの技術仕様に準拠しているため、ポータブルアプリケーションに非常に適しています。
熱変調​​回路は、デバイスの消費電力が比較的高い場合、または周囲温度が比較的高い場合に、チップ温度を安全な範囲内に制御できます。内部固定定電圧充電電圧は4.2Vで、外部抵抗で調整することもできます。充電電流は外部抵抗によって設定されます。入力電圧(ACアダプターまたはUSB電源)の電源を切ると、LN4056Hは自動的に低電力スリープモードになり、バッテリーの消費電流は0.1μA未満になります。バッテリ電圧が入力電圧よりも高い場合、内蔵パワーMOSFETは自動的にオフになります。その他の機能には、低入力電圧ラッチ、自動再充電、バッテリー温度監視、および充電ステータス/充電終了ステータス表示が含まれます。 LN4056Hは、イネーブルピンを介して充電をオフにすることができ、オフ状態のチップの静的消費電力は20uA未満です。チップには、バッテリ逆接続保護があります。
LN4056Hは、熱的に強化された8ピンスモールアウトラインパッケージESOP8を採用しています。

Local:pdf

バッテリーに繋がずUSBを接続すると?

基板に電池を繋がないと、青色LEDが常時点灯して赤色LEDが不規則に点滅して光ります。この挙動はTP4056と同じですね。

詳しく検査はしていませんが、仕様は同じと思うので組み込んでみることにします。

ポケットオシロをType-C版に変更

DSO Shellというポケットオシロですが、リポ電池仕様に変更してつかっていました。これは、USBからリチウムポリマー電池に充電するユニット(青い小さな基板)と、5Vから9Vに昇圧するDCDCコンバーター(写真の黒いやつ)が入っています。

以前、使っていた、マイクロUSB仕様の充電するユニットを今回のType-C仕様に交換します。まずは古いの取り払う作業をしたのですが、グルーガンで固定していただけですが、かなり強力に付いていました。写真は、古いのを取って新しいのに交換済みの状態です。

ちょうど、電池も寿命で充電できなくなっていたので両方とも交換しました。バッテリーに繋いだ状態だと、赤色LEDだけ光って充電されます。そして、充電が完了すると青色LEDだけが光ります。

黒い基板は、DSO Shellの電源電圧は9Vなので5Vを昇圧する基板ですが、これは交換せず使い回しします。

上が古い基板で、下が今回のです。大きさは同じですね。基板の厚みは今回のType-Cのが薄かったです。コストカットでしょうか。まぁ、でも薄いほうが組込しやすいので、問題ないですけどね。

この電池でポケットオシロはどのくらい動く?

このリポ電池は250mahです。満充電でどのくらい動くのでしょうか。あまり気にしたことがないので、確認してみます。満充電した状態から、動かしっぱなしにしてどのくらい電池が持つのか? 電源ON・・・・

今の所10分くらい経過していますが、まだ動いていますね。この電池もアリエクでポチったやつです。5年くらい前に買って、まだ数個残っています。

250mahのかわいいLipo到着

リンク

さらに10分経過しましたが、まだ動いていますね。・・・・さらに5分経過。結構もちますね! さらに5分したところで画面が点滅しました。およそ30分っていう感じですね。これだけ持てば十分です。この状態から満充電までは25分くらいでした。

まとめ

今回、なんとなくわかったのは以下となります。

謎のICが載っていたが、おそらく互換チップ
・追加調査で、これは上海南麟电子股份有限公司のLN4056H
・USBから充電したら赤く点灯し、満充電で青く点灯。問題なく動作した
・詳細にチェックしていないので気が向いたら確認してみよう

あとがき

やっぱりType-Cの充電はいいですね。最近ケーブルがType-Cばっかりになっているんで、マイクロUSBだとケーブル探さないといけないときがあります。それに、上下どっちに刺してもいいので楽ですよね。Type-C万歳です。

あと、チップの出どころがわかりスペックシートがあってよかったです。リチウムポリマー電池に充電するので、仕様が不明なICだとなんだか気持ち悪いですよね。南麟という会社は、今まで知らなかったのですが上海に2004年にできた比較的新しいチップ製造メーカーのようです。ISO9001:2008も取得していて、電源管理チップが専門のようです。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

メールを送ってみる

XIAOでMacのスクリーンショット専用USBキーを作るDIY

じゃんくはっく
じゃんくはっく

スクショの専用キーがほしい!

Macだと、シフト+コマンド+3とかの?

ぴー
ぴー
じゃんくはっく
じゃんくはっく

Mac標準だとそうだけど、Skitchっていうスクショツール使ってるからシフト+コマンド+5だね。

いろんな需要があると思うからカスタマイズできるといいね

ぴー
ぴー

今回のDIYは、ちょっと実用的なものを作ろうかと思います

最近、はまっている小さくて安いArduino互換機、XIAOを使ってカスタマイズできるキーボードを作ろうと思います! 冒頭でも少し触れましたが、MacのスクショアプリでSkitchっていうツール使っているんですが、このスクショのショート専用のキーボードを作ろうかと。ショートカットは、シフト+コマンド+5ですが、3つもボタンを押さないといけないので、1ボタンだと助かります。

その後、Skitchの編集メニューから「画像をコピー」でクリップボードに入れてWordPressのローカルアプリに貼り付けるのが、一連の動きです。このショートカットがシフト+コマンド+C です。

構想では、この2つのボタンが専用であるといいなと。キャンセルしたいときにESCキーがあると便利かもしれませんね。

使えるUSBライブラリは?

TinyUSB Mouse and Keyboard library

https://github.com/cyborg5/TinyUSB_Mouse_and_Keyboard/

このライブラリは、Chris Youngさんが統合したTinyUSBです。以下で紹介されています。

Mouse and Keyboard Control Using TinyUSB and BLE

examplesを試したのですが、記述がわかりやすいし使いやすそうだったのでこれでやってみることにします。他にも、Seeedの紹介ページにAdafruitのライブラリを使った例がありますが、examplesを見た限りでは使いにくそうでしたのでこちらはパスです。

Seeeduino XIAOをUSBデバイス(TinyUSB)として使う

ライブラリを入れる

マスターのZIPをArduinoIDEから入れて、例題をやってみます。

ZIP : TinyUSB_Mouse_and_Keyboard

URL

Arduino IDEからライブラリをいれるのは、以下からです。

ZIPのライブラリを入れると、以下のように同じところから見えていると思います。

提供されたライブラリは、Macだと以下に入るようです。直接ここに入れてもOKです。

/Users/USERNAME/Documents/Arduino/libraries/

ちなみに、ArduinoIDE組込(デフォルトの)は以下です。

/Applications/Arduino.app/Contents/Java/libraries/

XIAOのボード関連は以下にあります。

/Users/USERNAME/Library/Arduino15/packages/Seeeduino/

ライブラリとか、PGのディレクトリ以下に格納しておいたほうが後からわかりやすいかもしれません。数年後、また動かそうとすると環境変わっていたりしますからね。その場合は、includeをダブルクオートで囲って記載すればカレントディレクリ(現在のディレクトリのこと)を参照します。

#include "TinyUSB_Mouse_and_Keyboard.h"

サンプルを動かしてみる

Macユーザーで、Launchpad のショートカットをF5にしていれば動作します。

$ git clone https://github.com/take-i/XIAO-USB-example.git
$ cd XIAO-USB-example/xiao_usb1/
$ open xiao_usb1.ino 

XIAOに書き込んで、見てください。ブラウザが起動して JunkHackのページが見えていれば成功です。

サンプル例では、Launchpadが開き、コマンドFで検索、英字モードに切り替えてterminalをタイプしてターミナルを開きます。ターミナルからはURLをオープンしています。macの場合、コマンドの修飾キーは以下のようにKEY_LEFT_GUIが相当します。WindowsだとWINキーです。

  // New terminal windows
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.write('n');
  Keyboard.releaseAll();

Keyboard.pressは、押しっぱなし状態になるのでKeyboard.releaseAll()でリリースします。delayを入れないと、速すぎて期待する動作にならないので適当に調整します。

4ボタンの専用キーボードを作る!

さて、サンプルはうまく動いたので実際にボタンをつけて日常的に使える状態にします。こんなコードにしました。

https://github.com/take-i/XIAO-USB-example/tree/master/ss-key

Pin接続は、A7 , A8 , A9 , A10 とGNDの5つです。なお、このPGは同時にボタンを押した時の考慮はしていませんのでご注意を。クリティカルなボタンの場合は、何かキーが押されている場合は違うキーの処理に入らないようにする必要があります。

筐体に組み込む!

3Dプリンターとメカニカルスイッチで作るのが面倒だったので、適当なジャンク品のキーボードを漁ってきました。

15年くらい前の無線キーボードです。エンターキーが無くなっているのは、子供に剥がされたからです。それ以来、使っていませんでしたがここに来て約に立ちそうです。

このタイプのキーボードはノートPCと同じで、キーボードの下はフィルムのメンブレンスイッチになっています。これにジャンパー配線するのは厳しいので、端っこのパーツを使うことにしました。

こっちは基盤があって、なんとかなりそうです。キーボード筐体をグラインダーで切断し、左側部分を使うことにしました。こんな感じ。

配線はこんな感じ。XIAOは小さいので、ほんと助かります。

黒い線がGNDで、それ以外はボタンからのプリント基板の配線からジャンパー線を出して使っています。

こんな感じで、無線キーボードの上に置いてあります。

右側からESC、スクショ、スクショのコピー、https://www.canva.com/ を開く の4機能を持たせてあります。今もこの記事を書いているときにこのボタンを使っていますが、かなり便利ですね! canvaを割り当てているのは、ブログ記事のサムネイルをいつもここで作るからです。今回はこんな感じかな?

Macからはこんな感じで認識されています。

キーボードの修飾キーにも、出ていますね

MacのKeycodeを確認

※追記
MacだとどんなKeycodeがタイプされるのか確認しておきたかったので、macosで動作するキーロガーのソースを少し修正してDecで数字を出すように改修したものが以下にあります。

Mac OS X Keylogger

https://github.com/take-i/keylogger-macos

オリジナルは、アトランタのアプリ開発者、ケーシー・スカボローさんが作ったものです。簡単に使い方を記載しておきます。

$ sudo touch /var/log/keystroke.log
$ sudo chmod 644 /var/log/keystroke.log
$ git clone https://github.com/take-i/keylogger-macos.git && cd keylogger-macos/
$ make
$ sudo ./keylogger

ログは以下のパスに数字で出力されます。

$ tail -f /var/log/keystroke.log

たとえば、Macのキーボード配列の場合、F3キーはMission Controlのキーとなり、Keycodeは、160となります。F3の場合は99です。純正キーボードの場合は、以下のようにキーボード設定に「F1、F2などのキー標準のファンクションキーとして使用」のチェックボックスがでます。社外キーボードの場合、これはでないようです。

DIYキーボードをUSB接続したとき、macのキーボードだと認識させてMission Controlのコードとして認識させるようにする方法を模索したのですが、ちょっとよくわかりませんでした。また、いつか再チャレンジしたときに覚書として書いておきます。

まとめ

今回、なんとなくわかった・わからなかったのは以下となります。

・Seeed XIAOは簡単にキーボード・マウスのデバイスが作れる
・スイッチOn,OffタイプであればPinの数分、キーは作れる(最大、11Key)
・ライブラリは、TinyUSB Mouse and Keyboard libraryが使いやすかった
・KeycodeというのがUSBの仕様で決まっているようです(hut1_12v2.pdf
・こっちのUSB仕様書のほうが新しいかな?(hut1_21_0.pdf
・macの場合は、Mac OS X Keylogger を少し手直しすれば番号がわかる
・しかし、USBの仕様書とは違う値が帰る(例:F3は、macだと10進で160または99、USB仕様書では、60)
・PGの定義は、0xC4で10進だと196
ここによれば、0x88以上は、その値から0x88を引いた数(10進だと136)となるようです。つまり、196-136=60 なるほど!PGの定義からは謎がとけました
・しかし、macのkeycodeは違う値を出す。ここがよくわからない
・おそらく、macはkeycodeのマッピングテーブルを持っているのだろう
・または、キーボード種類によってF3はMission ControlになるようOSがマッピングしているのだろう
・keycodeとUSBデバイスのレイアウトの関係はまだ奥が深そうだ
・フィルムのメンブレンスイッチって自作できないかな?
・アルミテープとラミネートフィルムで作れないかな?

あとがき

作ってみて、実際に使ってみたらすごく具合がいいです。USBデバイスをこんなに簡単に作れるとは、驚きですね。いつか、本格的なキーボード作りもしてみたいです。40%キーボードとか小さくて可愛いので使ってみたいんですが、何から手をつけていいのかよくわかりません。あと、薄いMacのキーボードに手が馴染んでしまったのでという理由もあります。

まぁ次キーボード作る機会もあると思うので、その時は自作したいですね。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

メールを送ってみる

XIAOとスマホだけでnode.jsのJohnny-Fiveを動かす最短コースをご案内!

じゃんくはっく
じゃんくはっく

きたきたきたー!

なんか興奮してますね!w

ぴー
ぴー
じゃんくはっく
じゃんくはっく

スマホとXIAOだけでNodeのJohnny-Fiveを動かせるようになったよ!

NodeとかJohnny-Fiveとか何それ?

ぴー
ぴー

はい、ちょっと興奮気味なんですが今日のネタは、

「XIAOとスマホを接続して、それだけでXIAOを制御する!」

ってことがメインテーマです。物理的な接続イメージは図に書くとこんな感じです。node.js実行環境をtermuxに作り、johnny-fiveというnode環境で動作するものをFirmataプロトコルでXIAOとやりとりします。もっと簡単にいえば、

JavaScriptでXIAOを操る ですね。

通常、node.js実行環境はPCに作ったりしますので、物理的な接続イメージは以下のようになるかと思います。

JavaScriptでXIAOのGPIOを操作するのですが、まだこの構成のメリットがよくわかっていませんので、触ってみようと思いました。

物理的に用意するもの

(1) Androidスマホ
(2) Seeed XIAO
(3) ケーブル(Type-C x Type-C)

Androidスマホは手持ちのものでも、余ったものでもOKです。XIAOは3個入りで1800円くらいでアマゾンから購入できます。ケーブルは100円ショップですね。

Androidスマホ の必要アプリ

GoogleStore : Termux

https://play.google.com/store/apps/details?id=com.termux

まず、Androidスマホのアプリを入れておきます。あと、もう一つ有償アプリですが以下を入れておきます。日本円で190円です。

GoogleStore : BT/USB/TCP Bridge Pro

https://play.google.com/store/apps/details?id=masar.bluetoothbridge.pro

これはブリッジアプリで、今回の用途ではXIAOのUSB接続のシリアル通信をTCP上にブリッジする用途で使います。シリアルTCPのブジッジアプリは他にもいろいろありますが、XIAOと接続できた勇逸の神アプリです。

Termuxのセットアップ

アプリを入れたら、パッケージをアップデートしておきます。Termuxのコンソールからタイプするのが面倒なら、PCからSSHして作業するといいかもです。

pkg update
pkg upgrade

以下が今回必要なものです。

pkg install nodejs python clang make openssh -y

手持ちの環境、HUAWEI P20 liteでは以下が入りました。

$ dpkg --list | egrep 'node|python|clang|make|openssh' | cut -b 5-50
clang              11.1.0         aarch64     
make               4.3-1          aarch64     
nodejs             14.15.4-1      aarch64     
openssh            8.4p1-1        aarch64     
python             3.9.2          aarch64     
termux-exec        1:0.8          aarch64 

nodejsはもう14なんですね。速すぎる!ぜんぜんついていけないです。

サンプルソースとインストール

まず、termuxでの操作です。コピペしやすいよう$ は省いておきます。

cd
mkdir j5
cd j5
wget https://github.com/take-i/j5-termux/archive/main.zip

まだ説明も何も書いていませんがそのうち、簡単に書いておきます。

サンプルソース

https://github.com/take-i/j5-termux

サンプルソース解凍しインストール

example にLEDが光るサンプルソースが入っています。

unzip main.zip 
cd j5-termux-main/example/
npm install

IPアドレスを修正

WiFiに接続していると思いますので、termux上でIPを確認しておきます。

ifconfig | grep inet

以下のようなIPv4が出ますので、それをメモしておきます。この場合は、192.168.1.36が自分のスマホのIPですね。

inet 192.168.1.36  netmask 255.255.255.0  broadcast 192.168.1.255

サンプルソースのIPを修正します。portは、あとでブリッジアプリで設定しますので、1024番〜の適当なポートにしておきます。1234でもOKです。

------- example/index.js
::
var options = {
  host: '192.168.1.36',  //host name or IP
  port: 1234  // port
}

XIAOにFirmataをセットアップ

この記事を書いている時はまだ、XIAOはFirmataのコードをビルドするとエラーになりますが、以下を適用すればOKです。そのうち、masterにマージされると思うので、ビルドエラーが出なければOKです。

add seeedunio xiao to boards.h please #475

https://github.com/firmata/arduino/issues/475

具体的には、以下からFirmataをダウンロードします。

firmata/arduino Releases
Arduino-1.0.x-Firmata-2.5.8.zip

https://github.com/firmata/arduino/releases/

先ほどのFixをBoards.hに反映し、ArduinoIDEからインポートします。

スケッチ例>Firmata>StandardFirmata のスケッチをXIAOに書込みます。

エラーなく書き込めたらOKです。

スマホでブリッジアプリを設定

次はスマホで BT/USB/TCP Bridge Pro のアプリを設定します。このアプリはDevceAとBをブリッジしますので画面のように設定します。

XIAOをUSB接続するとアクセス許可がでますのでOKします。「このUSBデバイスをデフォルトにする」はチェックしておいたほうがいいですね。

USBデバイスに接続(USB connect)し、TCP Serverをスタートさせます。2つ上の画像、右側のようになっていればOKです。

起動!

Termuxのindex.jsがある場所で以下のコマンドを実行すると動作します。

node index.js

成功すれば、以下のようにターミナルに表示されているはずです。

Connected to USB2TCP Bridge
IO ready!
1614296838868 Available Firmata  
1614296838874 Connected Firmata  
1614296838882 Repl Initialized  
>> Board connected!

XIAOの青色LEDが光っていれば成功です。写真では青色LEDが光っているタイミングを写せなかったので光っていませんが、チカチカしているはずです。

お疲れ様です。

まとめ

今回、なんとなくわかったのは以下となります。

・Termux上でJ5を使う時は、USBに接続したボードを認識しないので、別アプリでUSBをTCPにブリッジさせて使う
・ブリッジさせるアプリはたくさんあるが、J5からXIAOと通信できたのはこれだけ
・実際に開発するときは、スマホ充電しながらUSB接続しないと電池持ちが。
・J5の使い所がまだよくわかっていないので、例をこなしながらどんなメリットがあるのか体験してみる

あとがき

node.js実行環境をTermuxに作ってそこから有線USB接続したXIAOを操れることがわかりました。まだ、どんなことができるのか、そしてどんなメリットがあるのかまーったく分かっていませんが今後、面白い活用方法などがあれば紹介、DIYしたいなと思います。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

メールを送ってみる

Arduino Nano互換機に書き込めないだと!

じゃんくはっく
じゃんくはっく

5年振りにArduino Nano(互換機)を触ったら書き込みできなーい!

あら、壊れたのかしら?

ぴー
ぴー
じゃんくはっく
じゃんくはっく

「マイコンボードに書き込もうとしましたが、エラーが発生しました。」と出るのよ

アリエクでまた買えば

200円くらいでしょ?

ぴー
ぴー

いやはや、5年も触っていないといろいろ完璧に忘れています。ArduinoNanoという小さなArduino があるんですが、それにLチカでも書き込んで動作確認しようとしたら、書き込めずエラーが出てしまいました。持っているNano互換機はこれです。

JunkHack : arduino hello world! 投稿日: 2015年3月15日
6年くらい前の記事で、$3でアリエクでポチったもの

https://junkhack.gpl.jp/2015/03/15/arduino-hello-world/

今回のエラーログは以下のようになります。

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino1.8.12.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/junkhack/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/cu.wchusbserial14120
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
::(省略)
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

マイコンボードに書き込もうとしましたが、エラーが発生しました。
このページを参考にしてください。
http://www.arduino.cc/en/Guide/Troubleshooting#upload

通信が出来ていないような感じですね。キーワード「avrdude: stk500_recv(): programmer is not responding」でググってみるとブートローダーが壊れたとか、いろいろ出て来て壊れたのかなと。でも、実は違うようです。

プロセッサ:ATmega328P(Old Bootloader)を選べば大丈夫!

Arduino / micro:bit / M5Stick勉強会の電録簿
ボード・アップデートで書き込みエラー

http://www.umek.topaz.ne.jp/mameduino/boardupdate_error/

このサイトによれば、どうやら、ボード設定メニューのプロセッサー種別選択のサブメニューにて「ATmega328P(Old Bootloader)」を選択するだけでいいようです。

はい、ちゃんと書き込めました。どうやら、Nanoの新しいやつは、通信速度が112.5kbps ということで、古いNanoは57.6kbpsということのようです。

ブートローダーを新しくすることもできるようで、もう一台arduinoがあれば以下のように書き込めるようです。

Arduino as ISP and Arduino Bootloaders

https://www.arduino.cc/en/Tutorial/BuiltInExamples/ArduinoISP

また今度やってみようかな。今日はいろいろ違う目的がありますので。

いや、こういうのはわかった時に即実行が良いですね。ブログのネタにもなるし少し休憩後、書き込んでみました。

UnoをISPにしてNanoに書き込みする!

こういうのは全体の流れを把握するのが大事です。大きくは以下と理解。

(1) UnoをISPにして、Nanoに書き込む
  → 手持ちにUnoがあったのですが、それ以外でもOK
(2) まず、UnoにArduinoISPのスケッチを書き込む
  → スケッチ例>11.ArduinoISP>ArduinoISP
    ※書き込んだら、次に配線をしますのでUSBを外します
(3) UnoとNanoを配線する
  → 配線は6本
(4) IDEのツールからブートローダーを書き込む
  → UnoをUSBでPCに接続。その後書き込みます

(1) UnoをISPにして、Nanoに書き込む

ISPとは、インサーキットシリアルプログラマーということで、ICSPとも略されるようですね。基板に繋いだまま内蔵メモリにプログラムを書き込むことを言うようです。今回の例だと、Nanoのブートローダーを書き込むにあたり、UnoをISPにして書き込むわけです! 

(2) まず、UnoにArduinoISPのスケッチを書き込む

アリエクで昔、本物のUnoをポチっていました。裏が白い基板のです。

まずは、ISPのスケッチをIDEから引っ張りだしてきて、Unoに書き込みます。

スケッチ例 > 11.ArduinoISP > ArduinoISP

次に配線しますので、USBを外しておきます。

(3) UnoとNanoを配線する

配線は6本で、こんな感じです。写真ではUSBが接続さていますが書き込みが終わったときに撮ったからです。配線するときは、外してやってくださいね。

ISP UNO 書込ターゲットNANO
D13 D13
D12 D12
D11 D11
D10 RST
+5V +5V
GND GND

実体配線図だとこういうことですね。

さて、書き込みましょうか! USBをUno(ISP)に接続します。

(4) IDEのツールからブートローダーを書き込む

ツールからボート、プロセッサ、シリアルポート、書込装置を程よく選択して「ブートローダを書き込む」でOKです。ログには以下のように流れました。

/Applications/Arduino1.8.12.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino1.8.12.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/cu.usbmodem14111 -b19200 -Uflash:w:/Applications/Arduino1.8.12.app/Contents/Java/hardware/arduino/avr/bootloaders/optiboot/optiboot_atmega328.hex:i -Ulock:w:0x0F:m 

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino1.8.12.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/junkhack/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/cu.usbmodem14111
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: reading input file "0xFD"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFD:
avrdude: load data efuse data from input file 0xFD:
avrdude: input file 0xFD contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDA"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDA:
avrdude: load data hfuse data from input file 0xDA:
avrdude: input file 0xDA contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done.  Thank you.

         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/Applications/Arduino1.8.12.app/Contents/Java/hardware/arduino/avr/bootloaders/optiboot/optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against /Applications/Arduino1.8.12.app/Contents/Java/hardware/arduino/avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: load data flash data from input file /Applications/Arduino1.8.12.app/Contents/Java/hardware/arduino/avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: input file /Applications/Arduino1.8.12.app/Contents/Java/hardware/arduino/avr/bootloaders/optiboot/optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.

新しいブートローダをNanoで確認

今書き込んだNanoの動作確認です。ボード設定メニューのプロセッサー種別選択のサブメニューにて「ATmega328P」を選択します。Old Bootloaderじゃないやつです。

LEDブリンクをNanoに書き込み! 以下がログですが、115200kbpsで通信していますね。

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/Applications/Arduino1.8.12.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/Users/junkhack/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/cu.wchusbserial14120
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "/var/folders/f1/5d6ycdnj6v58mcq9kn4b3ksm0000gn/T/arduino_build_539320/Blink.ino.hex"
avrdude: writing flash (924 bytes):

Writing | ################################################## | 100% 0.48s

avrdude: 924 bytes of flash written
avrdude: verifying flash memory against /var/folders/f1/5d6ycdnj6v58mcq9kn4b3ksm0000gn/T/arduino_build_539320/Blink.ino.hex:
avrdude: load data flash data from input file /var/folders/f1/5d6ycdnj6v58mcq9kn4b3ksm0000gn/T/arduino_build_539320/Blink.ino.hex:
avrdude: input file /var/folders/f1/5d6ycdnj6v58mcq9kn4b3ksm0000gn/T/arduino_build_539320/Blink.ino.hex contains 924 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.45s

avrdude: verifying ...
avrdude: 924 bytes of flash verified

avrdude done.  Thank you.

flash verified が出ていますね。うまくいったようです! ログをよく見てみるとファームウェアバージョンは4.4ということのようです。

Hardware Version: 3
Firmware Version: 4.4

まとめ

今回、なんとなくわかったのは以下となります。

・ブートローダが古ければ、Arduino を書込機器(ISP)にして新しくできる
・古いArduinoなら、プロセッサー種別選択で「ATmega328P(Old Bootloader)」を選択
・違いは、通信速度のようです。それ以外の違いはまだ不明

あとがき

5年も使っていなかったので、扱いが悪くて壊れたのかな? と思っていましたが、対応方法があってよかったです! まさかブートローダが新しくなっていてIDEから古いのを選択しないとダメだとは思っていませんでした。壊れていなくてよかったです。

5年経過しているので、いろいろな環境が変わっていますね。5年前よりいろいろ進化しているので、ハマることもあるかもですが以前より楽しいことができそうな気がします。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

メールを送ってみる

久しぶりに一目惚れしたArudio互換機のSeeeduino XIAO

じゃんくはっく
じゃんくはっく

可愛すぎて一目惚れしました!

ぽっ! きゃー

ぴー
ぴー
じゃんくはっく
じゃんくはっく

・・・いや、ぴーちゃんの事じゃなくて、SeedのXIAOっていうArduio 互換機のことよ。

こんなチビっこいマシンに負けたのか・・・w

ぴー
ぴー

サムネでもわかるとは思いますが、これ全体のフォルムがかわいいんですよね。あと想像よりもちっさいんです。親指くらいの大きさなんですよ。発売は去年の3〜6月ごろだったみたいですが、今頃発見です。

3個入りパッケージで1,750円!

Wiki Seeeduino Xiaoをはじめよう

https://wiki.seeedstudio.com/jp/Seeeduino-XIAO/

Seeedの日本語版のWikiもありますので、大きさなどはそちらでどうぞ。上の写真は3個入りのをアマゾンからゲットしました。3個入りで1800円弱です。1つ600円ってとこですかね。

中身! 想像より、ちっちゃい!親指に乗りますよ。

ESP32と遊んでからだいぶ月日が経ちましたが、大きさはそのくらいです。ブレッドボードに刺さるのでPinつけてすぐ楽しめますね!

まずはボードをじろじろと見る!

Type-Cコネクタが付いていて、端面がスルーホールになっていて面実装も考慮されていますね。このType-Cコネクタは6ピンタイプじゃなくて12ピンです。あと、LEDらしきものが4つ付いています。

金属のカバーで覆われていますので、その中が気になるところですがまずは、PIN番号が表からわかるようにシールを貼っておきました。なかなか気が利いていますね! Seeedさん、このプロダクトをリリースするにあたりいろいろ気合いが入っているようです。

裏面を見ると、SMD実装したときのVIN,GNDがありますね。4つの丸いのは、なんでしょうか?

調べてみると、英語版Wikiによれば、Newバージョンだとこの丸いのが4つあるようです。

Seeed 英語版Wiki:hardware-overview

Wiki

どうやら、SWCLK (PA30) と SWDIO (PA31) のGPIOのようです。

qita : Seeeduino XIAO 背面パッドをGPIOとして使う

https://qiita.com/nanase/items/37ecca24aee8fbd4492e

だいぶ時間が経過しているので、先輩たちがあれこれ情報をあげていてくれて助かりますね。

やっぱり、Type-C が付いているところがうれしいです。接続しやすいですからね!

動作確認

Type-Cケーブル(スマホでいつも使っているやつね)をPCに繋げて、おもむろにXAIOに繋げてみます。ケーブルのほうが重いので、本体が浮きます! 

オレンジ色のLEDがピカピカしてますね!

とりあえずLチカ

Arudio IDEを使って、Lチカでもやってみます。SeeedのWikiにしたがってIDEは仕込みんでおきます。久しぶりすぎて書き方、だいぶ忘れちゃいました。

この2つのブルーLEDは、RX/TXのLEDなんですがIDEからも定義されているので、光らせることができるようです。デジタル出力だけかなと思っていましたが、アナログでもいけるようですね。

//setup()内の処理は最初の一回だけ行われる
void setup() {
  pinMode(PIN_LED2, OUTPUT );//Pinを出力用に設定
  pinMode(PIN_LED3, OUTPUT);
  int led_pw = 255; // 明るさ(通常とは逆) 明るい0 - 255暗い
}

void loop() {
  rx_led2( 2 ); //明るさ調整ステップ
  rest();
  tx_led3( 2 ); //明るさ調整ステップ
  rest();
}

// RXとLED 基盤側の青LED
void rx_led2(int n){
  int led_pw = 255;
  //点滅周期
  for (int i=0;i < 255;i++ ) {
    analogWrite(PIN_LED2, led_pw );
    led_pw = led_pw + n;
    if( led_pw ==   0 ) n =  n;
    if( led_pw == 255 ) n = -n;
    delay( 5 );//だんだん暗くなる速度
  }
//  digitalWrite(PIN_LED2, HIGH ); //通常とは逆 LOW で点灯、HIGH で消灯
analogWrite(PIN_LED2, 255 );// LED Off 上より暗くなる
}

// TXのLED USBコネクタ側の青LED
void tx_led3(int n){
  int led_pw = 255;
  for (int i=0;i < 255;i++ ) {
    analogWrite(PIN_LED3, led_pw );
    led_pw = led_pw + n;
    if( led_pw ==   0 ) n =  n;
    if( led_pw == 255 ) n = -n;
    delay( 5 );
  }
analogWrite(PIN_LED3, 255 );// LED Off
}

void rest() {
    delay( 500 );
}

いろんな値を書き換えて遊んでみてください。

注意点としては、HIGHとLOWが逆なのと、255が暗く、0が明るい状態となるようです。これは仕様なのかバグなのか? Seeedさん、これは修正してほしいです。

XIAOはどんなスペックなのか?

このボード、一目惚れして速攻買ったのでどんなスペックかまだよくわかっていません。改めて、記載してみます。

製品名称 Seeeduino XIAO
マイコン ARM Cortex-M0+ CPU(SAMD21G18) 
動作電圧 3.3V
デジタル I/O ピン 11
PWM Pins 10
アナログ I/O ピン 11
フラッシュメモリ 256 KB
SRAM 32KB
EEPROM
クロックスピード 48 MHz
大きさ 23.5mm x 17.5mm
価格 $4.90

だいぶarduinoから離れていて、このあたり疎いのですがどうやら ATSAMD21は、アーキテクチャーはARM Cortex-M0+ CPU(SAMD21G18) のようです。Arduino Zero・M0 Proっていうボードにも使われているやつみたいですね。SAMD21系のarduinoとか表現されている感じです。または、単にSAMD系Arduinoとか。

ARM CORTEX-M0+

https://www.arm.com/ja/products/silicon-ip-cpu/cortex-m/cortex-m0-plus

メジャーなArduino との比較表です。自分は、Nanoシリーズ互換機か、Pro Miniが好きです。安いからw

ボード マイコン 動作電圧 Digital I/O PWM Analog I/O Flash Memory SRAM EEPROM クロックスピード 大きさ 価格
Arduino Nano v3 ATmega328 5V 22 6 8 32KB 2KB 1KB 16MHz 45 mm x 18 mm $45.90
Seeeduino Nano ATmega328 5V 22 6 8 32KB 2KB 1KB 16MHz 45 mm x 18 mm $6.90
Arduino Micro ATmega32u4 5V 20 7 12 32KB 2.5KB 1KB 16MHz 48 mm x 18 mm $24.90
Arduino Pro Mini ATmega328 5V / 3.3V 14 6 6 32KB 2KB 1KB 8 /16MHz 33 mm x 18 mm $9.95
Trinket M0 ATSAMD21 3.3V 5 2 3 256KB 32KB 48MHz 27mm x 15.3 mm $8.95
Seeeduino XIAO
ATSAMD21
3.3V 11 10 11 256KB 32KB 48MHz 23.5mm x 17.5mm $4.90

NanoやProMiniの互換機は、アリエクで200〜300円くらいなんですが、それと比べると600円は高いかもしれませんが、倍以上のスペックはありますね。

こうして比較してみると、コスパがいいんじゃないでしょうか。まぁ、こんな高スペックは必要ないっていう用途もあるんで使い所次第ですかね。

今後に備え応用例や試したことなどメモ

発売からもうすぐ1年経過するので、どんな応用例があるかリサーチしてみました。また、開発する上で役立ちそうなメモをしておきます。

Seeed:Seeeduino XIAO Resources Roundup. What will be your next project idea made by Seeeduino XIAO?

リンク

まず、オフィシャルのSeeedのブログでいくつか紹介されています。その中から独断と偏見で面白そうなプロジェクトをピックアップ。

MIDIをコントロールできるので、オリジナルコントローラとかセンサー駆動の楽器とか?

サイトでは、違うボードを使っていますがXIAOでも同じことが可能。画像や図形を組み合わせて空中にお好みの絵を投影する装置。

PovRanian 装置

PovRanian (ポブラニアン):画像や図形を組み合わせて空中にお好みの絵を投影する装置

これ作りたいなー!

エアロバイクでストリートビュー進みたい!! (その3)(Seeeduino XIAO化してみた)

ツールのUSB Stack は、 TinyUSBを選択とな。ほほー。

あれこれ調査していると、PlatformIOも対応しているようです。まだ試していませんが、メモしておきます。

開発環境:PlatformIO Seeeduino XIAO

USBホストライブラリSAMD

SeeedのWikiにあるやつですが、リンク先だけメモしておきます。

Seeeduino XIAOをUSBデバイス(TinyUSB)として使う

Seeeduino XIAO の使い方

カムロボの顔用基板を作ってみた [Xiao版]

Seeeduino XIAOを使って二酸化炭素測定する SparkFunライブラリVer

fritzingのパーツ

Seeeduino XIAOのタッチ入力

Seeeduino XIAOのデジタル入力

Seeeduino XIAOのデジタル出力

Arduinoで超音波センサHC-SR04の使い方【距離測定】

ArduinoでOLED

シリアルLED(WS2812B)をArduinoで制御

【Seeeduino XIAO】RS232cから受信した信号をUSB HIDで送信してみる

Seeeduino XIAO でPWM調光のLチカとI2CのLCDを使ってみる

いろいろありますねー。こんなこともできるみたいです。

Seeeduino XIAO マイコンで TOPPERS を始めよう

TOPPERS/R2CAというマルチタスク処理ができる

Seeeduino_XIAOでArduino Keyboard.h互換ライブラリを利用してMicrosoft Teamsミュートキーを作製する

楽しそうなのがいっぱいありますね。

XIAOを組み込んでいるハードウェア作家さんもいましたよ!

XIAO DAP
Seeeduino XIAO をメインコントローラとした、DigitalAudioPlayer

https://sites.google.com/view/chikoidac/home/xiao_dap

まだ販売はされていないとのことですが、販売されたら組み立てKITを買ってみたいです!

まとめ

今回、なんとなくわかったのは以下となります。

・XIAOはコスパ最高でないか!
・Type-Cが良い!
・Arduino IDE 互換で、SAMD21系のarduino
・本家では、Arduino Zero・M0 Proに使われている
・3.3v動作でクロックが速く、フラッシュメモリも多い
・しかしEEPROMがないようです フラッシュメモリに保存する?
・USB関連のプロダクトやシリアル通信系の応用とか相性良さそう
・SMD実装がやりやすい(ので、基板設計して使うのとか良いですね)

あとがき

このボード、本当に小さくて応用次第では面白い組込ができそうだなーと感じています。まずは3つあるので、何か実用的な何かを1、2つ作ってみたいですね。1つは、開発用にしておいて残りは実験的に何か実際に作ってみようと思います。まずは、できそうなことからやってみましょうか!

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

メールを送ってみる

リポ充電基盤のType-C版が出てたんでポチった!

じゃんくはっく
じゃんくはっく

最近また、電子工作熱が出てきたのでアリエク物色!

はいはい、今日は何をポチったんですか?

ぴー
ぴー
じゃんくはっく
じゃんくはっく

ぐぬぬぅ! なぜポチったのがわかるのだ! 

衝撃だったんでしょ?w

ぴー
ぴー

はい! またアリエクでポチってしまいました。

今回は、備忘録として記載。まだ到着していませんが、到着するころには「これなんだっけ?」という事態になることが多発していましたので、ポチッとしたらブログに書いていくことにします。

 副次効果としては、ぽちったら記事を書かないといけなくなるので衝動買い防止にもなるかなと!今日買ったのはこれです。

なんとお値段、送料込みで10個450円です。1個あたり45円と、価格破壊な値段ですね。たぶん、このUSB Type-Cコネクタは6pinだと思いますが、簡単な工作であればこれで十分です。マイクロUSBのタイプもありますが、やっぱり差し込む方向を意識しなくていいType-Cは便利です。今では100円均一でもケーブル売っていますしね。

リポ充電基盤とは?

5V 18650 リチウムバッテリー充電モジュール

投稿日: 2015年5月10日

5年くらい前にも購入していましたが、だいぶ数が少なくなったので追加購入です。この基盤は、リチウム電池を過充電、過放電しないための基盤です。メインチップは、TP4056で保護回路に、DW01A と ML8205A が乗っています。今回購入したのがどんなチップが乗っているかはまだ未調査ですが、まぁ仕様は同じでしょう。

この基盤、ちょっと電子工作して何か試作版を作る際に、リチウム電池とともに組込セットで詰め込むときに重宝します。

例えば、こんな感じで試作版に使っていました。

2

これはESP8266 ESP-12を使った温度・湿度・照度系のIoTデバイスなんですね。

5

ちょっと見えにくいですがマイクロUSBが刺さっている部分にその基盤があります。5Vからリチウム電池に充電し、5Vを放電します。他にも、ポケットオシロスコープを充電持ち運び仕様にしてみたりと。

これの工作の記事は忙しくて書いていませんでしたが中にリポ電池とこの基盤などが入っています。簡単にでも書いておけばよかったなー。ちょっと持ち運んで何か計測したりとか便利でした。

あと、自作基盤にこの充電ボードを乗っけた例もありますね。

DSC00219
ESP8266 BackBoost

この白い基盤は自作基盤でESP8266とバックブースト電源回路などが乗っています。充放電管理基盤は自作だと高くつくのでこんな感じで基盤にリフローして、くっつけて使っていました。

まとめ

今回、なんとなくわかったのは以下となります。

・Type-C版のTP4056充電管理基盤はケーブル接続が便利そう
・以前のマイクロUSB版より安くなっていた
・仕様が変更になっているのか、未調査
・今後、この基盤で工作していこうと思う
・基本的な構造は前のと同じだと思う
・到着したらまた検討してみる

あとがき

 それにしても以前、マイクロUSB版のを購入したときは1個あたり97円だったのに。Type-C版でさらに安くなっています。余分な機能をなくし需要があるものを大量に作って、良いものを広く販売するという基本的な考え方はすごく好きです。反面、検品コストという考え方も日本とは違いますので不良品率はあがります。しかし、入念に検品して全体のコストをあげるより、ある程度の検品品質で不良品が混入すれば交換すれば良いという考え方もあるのも事実のようです。

 薄利広商 という言葉があるようです。中国の文化なのか日本の文化なのか歴史に疎いので良くはわかりませんが、中国の商人の中にはこういう考え方があるんじゃないのかなと思います。意味合い的には、薄利多売と似ていますが、これは少しネガティブなイメージもあります。しかし、薄利広商 というのはあまり聞かない言葉ですが、薄い適切な利益を乗せて広く客に販売することが本来の商売であり、それは社会も良くしていくのだという考えのようです。売り手もどこよりお得にお客に販売するのは、本来気持ちの良いものだと思いますし、お客も安く良いものが入手できたら嬉しい。それは転じて地域もよくしていくのだという思想のようです。

 少し前のマスク買い占め転売、プレステ5 の転売などそういうのは本来の商売ではない、長く商売をやっていくためにはもっと違う視点を持つべきだというのが「薄利広商」という言葉の真意なのではと思います。

著者にメッセージ

間違いのご指摘など、コメントじゃなくて、個人的にやりとりしたい場合はこちらからどうぞ。お返事が遅くなるときもありますが、ご了承を。

メールを送ってみる