現在2022年10月~11月頃の販売開始で準備中です。
ツールのスケッチや回路図も情報整理後公開予定です。
事情により仕様を変更して調整中です。
English instruction available here.
はじめに / 免責事項
個人の趣味の延長で、あったら便利なモジュールを他の人にも活用頂くべく、少量ハンドメイドで作成・販売しております。いわゆる同人ハードと言うタイプのものです。
手作業で作成していますので、事前に動作チェックをしていますがもしかしたら初期不良品があるかもしれません。その場合は返品交換させて頂きます。ハンドメイド品ですので、品質面から趣味の用途向けで業務用にはお勧めしません。
使用の前に仕様を十分理解頂きご使用下さい。本モジュールを使用した結果いかなる損害等が発生した場合においても、当方は一切の責任を負いません。
概要
ESP32ベースで開発した、Arduino UNOやNano等ATMega328系のマイコン開発に役立つツールです。以下の機能があります。
- Bootloaderの書き込み/修復
- Fuse機能
- 設定確認
- 設定(bootloader有無、read only、クリア)
- Arduino as ISP (USB経由でのavrdude)
- WiFi経由でのavrdude
- microSDに保存したhexファイルの書き込み
- EEPROM
- 読み取りと表示(HEX/ASCII表示)
- データのmicroSDへの保存
- クリア
- microSDに保存したEEPROMデータの書き込み
- microSDに保存したEEPROMデータの表示
- シリアルモニター
- テキスト表示
- 簡易グラフ表示
- データのmicroSDへの保存
- microSDに保存したテキストファイルの表示
- WiFi接続
- APモード、STAモード
- NTPサーバー同期(ファイルのタイムスタンプ用)
- スマホからのWiFi接続先設定
- HTTPサーバー機能(スマホやPCのブラウザからアクセス)
- microSD内のファイル一覧
- microSD内のファイルダウンロード
- microSDへのファイルアップロード
- microSD内のファイル削除
bootloaderの設定や書き込み、microSDに保存したスケッチのhexファイルの書き込み、EEPROMのデータチェック、シリアルモニターと便利な機能が満載です。
microSDのファイルをスマホからWiFi経由で取り出したり、スマホからmicroSDにファイルを入れる事が出来ますのでEEPROMのデータを吸い出したりシリアルモニターのログを保存してスマホへ転送、メールで送付と言った事も可能です(APモードならスマホとツールが直接繋がります)。
ツールのUSBから対象側への電源供給か、対象から電源供給を受けて動作する事が出来ます。
ツールのソース(公開準備中)を修正し、シリアルモニターやEEPROMのデータを独自に見易く表示したり、EEPROMのデータを書き込む度に変える事でマイコン毎に連番IDをEEPROMに書き込むと言った用途も考えられます。
同梱品
下記セットで構成されています。
- 本体
- 6cm 6pinフラットケーブル
- 10cm 6pinフラットケーブル
- 10cm 10pinフラットケーブル
- ICSPピンコネクタ(6pinメスコネクタ)
- 汎用ピンコネクタ
ICSP用の6ピンメスコネクタは足を好きな長さに切って半田付けして下さい。
フラットケーブルのコネクターは黒い爪を上に持ち上げると開きます。
準備
接続する前に電源出力切り替えと電圧のスイッチを確認します。5Vにした状態で3.3V駆動のマイコンと接続するとマイコンが壊れる可能性がありますので接続の際は電圧が正しく選択されているか確認して下さい。
電源はツールに接続したUSBもしくはBatt入力をマイコン側に供給するか、マイコン側から供給を受けてツールを動かすか、それぞれ電源を独立した状態で使用する方法があります。
電源周りを簡単に表すと下図の様になっています。VOUTを切り替えると接続先マイコンの電源とツール内部の電源が繋がります。VOUTを切ると電源は共有されません。
切替を5VにするとツールのUSB 5VもしくはBattと直通になります。3.3VにするとUSB 5VかBattを3.3Vに降圧したものが出力されます。マイコン側が3.3Vでツール側で利用する場合もこの設定にします。
誤って切替を3.3Vにした状態でマイコン側から5Vを供給した際にツールが壊れない様に、ツール内部の3.3V生成は2段階の降圧にしています。
ツールのUSB口そばにあるBATTピンはUSBの5V/GNDと繋がっています。このピンに5V供給しても動作します。ツールは3.3Vで動作しますので、3.7Vのリポバッテリーを利用する事も可能ですが、この場合マイコン側出力の5V側も3.7Vになります。
microSDをスロットに差し込みます。大容量には対応していませんので、2~8GB程度のFAT / FAT32のmicroSDを準備して下さい。microSDは無くてもツールを使う事は出来ます。
接続
Bootloaderやスケッチのhexファイルの書き込み、Fuseの読み書き、EEPROMの読み書きを行う場合はICSPで接続します。ICSPに使用するピンはArduino UNOの場合D11~D13ピンのMOSI / MISO / SCKを使用しますので、これらのピンに何かが繋がっている場合上手く動作しない場合があります。
ツール裏面の横にあるフラットケーブルコネクターにケーブルを繋ぎ、反対側にICSP用の6Pコネクターを繋ぎます。コネクターはどちらからでもケーブルを伸ばせる様、両側にフラットケーブルのコネクターが付いています。
6Pコネクターにピン名が書かれていますので、向きと位置に注意してICSPコネクタ―に挿します。Arduino UNOの場合GND / MOSI / VCC側が外側、Arduino Nanoの場合内側になります。
10Pコネクター側もICSPの配線 + RX/TXのシリアルの配線が付いており、こちらを使う事も可能です。
コネクタ―の配線は下図の様になっています(ピン説明は接続相手のピン)
シリアルモニター機能を使う場合は10Pコネクターのシリアル線を使うか、ツール左側のピンと接続します。シリアルデータの受信はRX / GNDの2本のみ(相手側はTX)接続していればOKです(電源共有の場合VCCも接続)。
汎用10pinコネクタ―のピンは以下の配置になっています。
起動
ツールに電源スイッチはありませんので、電源供給すると起動します。
電源が入った後何度も再起動がかかる様な症状が出る場合は電力が足りていない可能性があります。その場合は別の電源供給を使うか、ツールの電力消費を抑えると起動する様になるかもしれません。
ツールの電力消費は以下の方法で抑える事が出来ます。
- microSDカードを抜く(使わない場合)
- WiFi機能をオフにする(WiFiはかなり電力消費します)
- CPUのクロック数を落とす
ツールの電源オン時、ボタンを押しながら起動する事で以下の動作になります。ボタンを押しながら通電するか、ボタンを押しながら裏面のENボタンを押して再起動します。
- 上を押しながら起動:WiFi接続先設定をクリア
- 下を押しながら起動:WiFiオフ
- モードを押しながら起動:CPUを160MHzで動作
基本操作
ツールのボタンは下図の割り当てになっています。
モードボタンを押すと以下のモードを切り替えます(最後に来るとループ)
- ファイル操作
- Bootloader/Fuse操作
- USB / WiFi ISP
- シリアルモニター
- EEPROM操作
- Webサーバー
- 設定
画面上部の表示は以下の通りです
画面左上:現在のモード
画面右上:時刻・WiFi接続時アンテナ
WiFiでインターネットに接続している場合、NTPサーバーとの通信が正常に行われると時刻が表示されます。
ファイル操作
microSD内のファイルを表示します。
上下ボタンでファイルを選択し、決定ボタンで操作を行います。出来る操作はファイルの種類によって異なります。削除はどのファイルでも可能です。
テキストファイル(シリアルログ)
txtファイルは中身を見る事が出来ます(最大4096行)。横方向のスクロールは出来ません。表示中決定/切替ボタンを押すと行の折り返しの有無を切り替える事が出来ます。
hexファイル
スケッチをコンパイルしたhexファイルをICSP接続しているArduinoに書き込みます。hexファイルの作成手順は下記サイトを参考に。
ファイルを選択してBurnを選ぶと書き込みます。
eepファイル
EEPROMの機能でEEPROMのデータをmicroSDに保存するとeepの拡張子で保存します(バイナリをそのまま保存)。Viewを選択すると内容表示、Burnを選択すると接続しているArduinoに書き込みます。
表示は決定/切替ボタンでHEX表示とテキスト表示を切り替えられます。
Bootloader/Fuse操作
Fuseの設定やbootloaderの書き込みを行います。Fuseの変更やbootloaderの書き込みは書かれているスケッチをクリアしますのでご注意下さい。
Read Fuse
現在のFuse設定をチェックします。KはLock、LはLow、HはHigh、EはExtended。
Fuse Bootloader
Bootloaderを使う様に設定します。
Fuse no Bootloader
Bootloader無しに設定します。Bootloaderが無いスケッチをマイコンに書き込む事で、bootloader無しで動作する様になりbootloaderの起動時間を短縮する事が出来ます。ただし、bootloaderがなくなるため通常の手段ではスケッチの書き込みが出来なくなります。
Fuse read protect
マイコン内のデータを読み取り保護します。
Optifix bootloader
Optifixのブートローダーを書き込みます。
Clear Chip
チップのデータをクリアします。
USB / WiFi ISP
ArduinoをISPとして利用するArduino as ISPの機能です。USB経由もしくはWiFi経由でavrdudeを使用できます。
決定ボタンを押すとUSBモードで動作します。後は対象のマイコンとICSPで接続し、Arduino as ISPと同じ様に使用します。
USBモードに設定していない状態ではいつでもWiFi設定してあればWiFi経由でavrdudeが利用可能です(ただし不安定)。ただし、標準のavrdudeはエラーが発生したり不安定のため改造版を下記で公開しています。
WiFi経由は不安定で読み書き失敗する事があります。その場合、何度かリトライすると成功する場合もあります。
シリアルモニター
簡易シリアルモニター機能としてテキスト表示、グラフ表示、ファイル保存が可能です。
本体左側にあるシリアルピンか、10pinコネクタにあるシリアル用ピンを使います。サンハヤトのサンハヤト スルホール用テストワイヤ TTW-200を使うとピン穴に線を簡易固定出来るので便利です。
接続は受信のみのため、GNDとRX(相手側はTX)でOKです。レベルシフト回路が入っていますので、相手側の電圧を気にする必要はありません。
Baud Rate:ボードレート設定、9600 / 38400 / 78800 / 115200
Log time:行頭に時間を記録します(ツールが起動してからの起動時間、ミリ秒)
Port設定でSerial2とIO12/14を選択出来ますが、ESP32のSoftwareSerialは性能が悪い為現在IO12/14の使用は実験的に入れているだけで使い物になりません。
View Text
シリアルモニターの内容を簡易テキスト表示します。履歴や横方向のスクロール機能はありません。決定/切替ボタンを押すとテキスト折り返し(改行)表示を切り替えます。
microSDに保存しつつ表示する事が出来ます。
View Graph
シリアルモニターの数値を簡易グラフ表示します。1行受信毎に数値化してグラフ表示します。グラフは中央が0でモニター開始からの最大値が表示内に入る様自動的に範囲調整します。右上に現在のグラフの最大値が表示されます。
microSDに保存しつつ表示する事が出来ます。
Save to file
シリアルモニターの内容をテキストファイルとしてmicroSDに保存します。記録中は画面上部に「REC」の表示が出ます。再度Save to fileを選択するか、別のモードに切り替えようとすると記録終了確認が出ます。
保存したテキストのログファイルはファイルモードから内容を確認する事が出来ます。
EEPROM操作
1024バイトのEEPROMのデータの取得・表示・書き込み・クリアが出来ます。
Read EEPROM
EEPROMのデータを読み込み表示します。決定/切替ボタンを押すとHEX表示とASCII表示を切り替えます。
Save EEPROM
EEPROMのデータをバイナリでmicroSD内に保存します。ファイルモードで保存したファイルの内容を確認したり、EEPROMに書き戻したり出来ます。
Clear EEPROM
EEPROMを0でクリアします。
Webサーバー
簡易Webサーバーとして動作し、microSD内のファイルをダウンロード/削除したり、microSDにファイルをアップロードできます。決定ボタンを押すとWebサーバー開始し、再度ボタンを押すと停止します。
Webサーバー動作時URLのQRコードを表示しますので、スマホ等とネットワーク的に接続されていればQRコードからページを開く事が出来ます。
ブラウザでアクセスするとファイルリストが表示されます。ファイル名をクリックするとダウンロード、Deleteボタンで削除。ファイルを選択してUploadするとファイルをmicroSD内に転送出来ます。
設定
WiFi関係の設定を行います。
WiFi Mode
WiFiのモードを切り替えます。無線LAN環境がある場合StationモードにするとWiFi Connectionの設定でアクセスポイントに接続し、インターネットに繋がればNTPサーバーと時刻同期します。
無線LAN環境が無い時にAPモードにしておくとツールがアクセスポイントとして動作し、1対1でスマホ等と接続出来ます。APモード時アクセスポイント名は「ESP_AVRISP_XXXX」、パスワードは「ESP_PASS_XXXX」に設定されます(最後のXXXXは端末固有の値が入ります)。
ツールが電力不足で起動しない場合はOffにしておくと電力消費を抑える事が出来ます。
WiFi Connection
WiFi接続の設定を行います。設定はスマホと直接接続(ツールがAPモード)し、ブラウザから行います。
決定ボタンを押すとWiFi設定モードに入りAPモードとして動作します。QRコードが表示されるので、QRコードで接続設定を行うか、ESP_AVRISP_XXXXのアクセスポイントと接続します。パスワードはESP_PASS_XXXX(最後のXXXXは端末固有でSSIDと共通)。
Android端末の場合OSのバージョンにもよりますがWiFi設定の上部にスキャンアイコンがあるのでここをタップするとQRコード読み取りになります。
接続すると自動的にブラウザが立ち上がります。立ち上がらない場合は手動でブラウザを起動し、http://192.168.4.1 を開きます。
Configurationをクリックすると接続先のアクセスポイント設定が開きます。
自動検出されたSSIDをタップするか、手動でSSIDを入力、パスワードと必要に応じIPアドレス設定を入力(DHCPの場合0.0.0.0)してSaveをクリックします。
これでツールのWiFi接続先が設定されます。
Timezone
タイムゾーンを設定します。インターネットに接続しNTPサーバーと同期された場合microSDのファイル作成時にタイムスタンプとして日時が使われます。
使用ライブラリ
本ツールのソフトは以下のライブラリを使用・ベース・参考にしています。ありがとうございます。
- Arduino as ISP(Arduino IDE標準サンプル)
- optifix.pde Jan 2011 by Bill Westfield (“WestfW”)
- AVR In-System Programming over WiFi for ESP8266
https://github.com/lbernstone/ESP_AVRISP - QRcode
https://github.com/ricmoo/QRCode - ESP File Upload
https://github.com/G6EJD/ESP32-8266-File-Upload - u8g2
https://github.com/olikraus/u8g2 - ESP WiFimanager
https://github.com/khoih-prog/ESP_WiFiManager - SdFat
https://github.com/greiman/SdFat
This post is also available in: 英語