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

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

$ touch /var/log/keystroke.log
$ 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
      D13D13
      D12D12
      D11D11
      D10RST
      +5V+5V
      GNDGND

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

      さて、書き込みましょうか! 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 Pins10
        アナログ I/O ピン11
        フラッシュメモリ256 KB
        SRAM32KB
        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 MemorySRAMEEPROMクロックスピード大きさ価格
        Arduino Nano v3ATmega3285V226832KB2KB1KB16MHz45 mm x 18 mm$45.90
        Seeeduino NanoATmega3285V226832KB2KB1KB16MHz45 mm x 18 mm$6.90
        Arduino MicroATmega32u45V2071232KB2.5KB1KB16MHz48 mm x 18 mm$24.90
        Arduino Pro MiniATmega3285V / 3.3V146632KB2KB1KB8 /16MHz33 mm x 18 mm$9.95
        Trinket M0ATSAMD213.3V523256KB32KB48MHz27mm x 15.3 mm$8.95
        Seeeduino XIAO
        ATSAMD21
        3.3V111011256KB32KB48MHz23.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 の転売などそういうのは本来の商売ではない、長く商売をやっていくためにはもっと違う視点を持つべきだというのが「薄利広商」という言葉の真意なのではと思います。

          著者にメッセージ

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

            ダストクーラーをDIY修理。冷却面側の加工でダストボックス内部は約10℃で安定!

            この2日くらい激アツですね! 夏〜って感じの日差しで部屋の中にいても暑い!
            さて、今回は先日から続いているTOTOダストクーラーの修理で、冷却面側の加工を施すことにしました。

            写真_-_Google_フォト

            上の写真は、もともとのペルチェ素子が付いていたアルミブロックですが、4cm四方の汎用ペルチェ素子の接地面積が少ないので、この飛び出たアルミ部分を削り、銅を貼り付けることにします。

            スクリーンショット_2020_08_11_21_33

            銅板は、これまたJunkな iMac G5があるのでこの中から取り出します。マザーボードの裏側には3mm厚の銅板があります。

            スクリーンショット_2020_08_11_21_36

            まずは、これをヒートシンク大に切り取り、アルミブロックにねじ止めします。

            IMG_20200808_205658_8

            銅板なんで、ハンドツールで切ってみましたが、かなり切り取るのに時間がかかりました。やっぱり、金属加工やるならバンドソーが欲しいですね。

            スクリーンショット_2020_08_11_21_40

            アルミブロックの余分な部分は、グラインダーで削り取り、オイルストーンで平面出し。

            スクリーンショット_2020_08_11_21_41

            完全に平面出すのは疲れたので、このあたりで妥協です。平面が出せるベルトサンダーがほしいですね。タップを切って、銅板を固定します。

            スクリーンショット_2020_08_11_21_42

            銅板固定にさほどトルクは必要なにので、プラスティックのアンカーに皿ネジを固定する方法にしました。銅板2枚には、銅グリスを塗っておきました。コパスリップっていうグリスですが熱伝導用としてではなく、これは錆びやすいボルトを経年しても取りやすくするもので、焼きつきやすいプラグとか、マフラーのネジとかに使ったりするものです。ティッシュに含ませてグリース部分を落とし、なるべく固形状にして塗っておきました。普通のCPUグリスでもいいんですが、なんとなく銅なので良いかなと。

            IMG_20200809_173132_5

            で、ダストボックスの穴を開けて、銅のヒートパイプを中に貫通させておきました。クリアランスがなかったので、ケースは少し削ってあります。これで完全にペルチェ素子は全面が金属に接地します。

            空白_Skitch_キャンバス

            ヒートパイプを中に貫通させたのは、まぁ、多少は冷却速度が速くなるかもくらいですがあわよくば、このあたりが凍結しないかなと思って加工してみました。

            スクリーンショット_2020_08_11_21_54

            隙間部分には、シリコンシーラントを充填し保冷。CPUグリスで、ペルチェ素子を2つ重ねてつけます。黒いのは最初からあったスポンジ材です。

            ペルチェ素子は、つける前に温度を測定しておきました。個体差があるようで、5枚のうち一番冷えるものを選別しておきました。

            IMG_20200809_172727_3

            外気温、31度くらいで2段のペルチェ素子表面温度は、−8度で安定しました。(銅ヒートシンク、空冷)

            IMG_20200811_021135_8

            背面のケースは熱がこもるので、取っ払いむき出し状態です。2、3時間くらい経過すると室温27度くらいで、ダストボックス内部は約10℃で安定していました。

            もともとの純正ユニットでどのくらい冷えるのかは不明ですが、冷蔵庫と同じ温度ならまぁOKでしょう。水もいい感じで冷えていました。

            冷却側をシーリングして、保冷し、銅ヒートパイプを中まで貫通させましたが、さほど効果はなかったようです。前回、ざっくり仮付した状態でも11℃くらいでした。アルミブロックに接触させず、銅を結露する状態で中まで貫通させたほうが中は冷えたのかもしれません。または、水冷にしてラジエターで発熱側をもっと冷やすとかすれば、もう少し下がるのかもしれません。やりたいことはいろいろあるんですが、今回は実用温度まで達したのでこれで終了にします。夏場ですが、冬とかどのくらいまで下がるんでしょうかね。気が向いたらレポートしてみます。

            これで、いつ壊れても汎用の1枚200円のペルチェ素子で修理できますのでこれからずっと使えそうです。どのくらい壊れずに使えるか楽しみですね。