Program Resource

開発者向け各種コード、アルゴリズム、リソース情報ライブラリ もしくはねふぁの覚え書き

販売に向け色々調整中。

はじめに / 免責事項

個人の趣味の延長で、あったら便利なモジュールを他の人にも活用頂くべく、少量ハンドメイドで作成・販売しております。いわゆる同人ハードと言うタイプのものです。

手作業で作成していますので、事前に動作チェックをしていますがもしかしたら初期不良品があるかもしれません。その場合は返品交換させて頂きます。ハンドメイド品ですので、品質面から趣味の用途向けで業務用にはお勧めしません。

使用の前に仕様を十分理解頂きご使用下さい。本モジュールを使用した結果いかなる損害等が発生した場合においても、当方は一切の責任を負いません。

概要

ESP32ベースで開発した、Arduino UNOやNano等ATMega328系のマイコン開発に役立つツールです。以下の機能があります。

  • Bootloaderの書き込み/修復
  • Fuse機能
    • 設定確認
    • 設定(bootloader有無、read only、クリア)
  • Arduino as ISP (USB経由でのavrdude)
  • WiFi経由でのavrdude
  • メモリに保存したhexファイルの書き込み
  • EEPROM
    • 読み取りと表示(HEX/ASCII表示)
    • データのメモリへの保存
    • クリア
    • メモリに保存したEEPROMデータの書き込み
    • メモリに保存したEEPROMデータの表示
  • シリアルモニター
    • テキスト表示
    • 簡易グラフ表示
    • データのメモリへの保存
  • メモリに保存したテキストファイルの表示
  • WiFi接続
    • APモード、STAモード
    • NTPサーバー同期(ファイルのタイムスタンプ用)
    • スマホからのWiFi接続先設定
  • HTTPサーバー機能(スマホやPCのブラウザからアクセス)
    • メモリ内のファイル一覧
    • メモリ内のファイルダウンロード
    • メモリへのファイルアップロード
    • メモリ内のファイル削除
  • シリアルインターフェイス

bootloaderの設定や書き込み、メモリに保存したスケッチのhexファイルの書き込み、EEPROMのデータチェック、シリアルモニターと便利な機能が満載です。

メモリ内のファイルをスマホからWiFi経由で取り出したり、スマホからメモリにファイルを入れる事が出来ますのでEEPROMのデータを吸い出したりシリアルモニターのログを保存してスマホへ転送、メールで送付と言った事も可能です(APモードならスマホとツールが直接繋がります)。PC等とUSBで接続し、シリアルもしくは専用ツール(最後のシリアルインターフェイス参照)でファイルの書き込みや読み出しも可能です。

ツールのUSBから対象側への電源供給か、対象から電源供給を受けて動作する事が出来ます。

ツールのソース(公開準備中)を修正し、シリアルモニターやEEPROMのデータを独自に見易く表示したり、EEPROMのデータを書き込む度に変える事でマイコン毎に連番IDをEEPROMに書き込むと言った用途も考えられます。

※大人の事情により現在microSDからESP32の内蔵メモリにストレージを変更しています。

同梱品

下記セットで構成されています。

  • 本体
  • 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になります。

接続

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コネクタ―のピンは以下の配置になっています。

起動

ツールに電源スイッチはありませんので、電源供給すると起動します。

電源が入った後何度も再起動がかかる様な症状が出る場合は電力が足りていない可能性があります。その場合は別の電源供給を使うか、ツールの電力消費を抑えると起動する様になるかもしれません。

ツールの電力消費は以下の方法で抑える事が出来ます。

  • WiFi機能をオフにする(WiFiはかなり電力消費します)
  • CPUのクロック数を落とす

ツールの電源オン時、ボタンを押しながら起動する事で以下の動作になります。ボタンを押しながら通電するか、ボタンを押しながら裏面のENボタンを押して再起動します。

  • 上を押しながら起動:WiFi接続先設定をクリア
  • 下を押しながら起動:WiFiオフ
  • モードを押しながら起動:CPUを160MHzで動作

基本操作

ツールのボタンは下図の割り当てになっています。

モードボタンを押すと以下のモードを切り替えます(最後に来るとループ)

  • ファイル操作
  • Bootloader/Fuse操作
  • USB / WiFi ISP
  • シリアルモニター
  • EEPROM操作
  • ファイルサーバー
  • 設定

画面上部の表示は以下の通りです

画面左上:現在のモード
画面右上:時刻・WiFi接続時アンテナ

WiFiでインターネットに接続している場合、NTPサーバーとの通信が正常に行われると時刻が表示されます。

ファイル操作

メモリ内のファイルを表示します。ファイルの出し入れは後述のWiFi経由かシリアル経由で可能です。

上下ボタンでファイルを選択し、決定ボタンで操作を行います。出来る操作はファイルの種類によって異なります。削除はどのファイルでも可能です。

テキストファイル(シリアルログ)

txtファイルは中身を見る事が出来ます(最大4096行)。横方向のスクロールは出来ません。表示中決定/切替ボタンを押すと行の折り返しの有無を切り替える事が出来ます。

hexファイル

スケッチをコンパイルしたhexファイルをICSP接続しているArduinoに書き込みます。hexファイルの作成手順は下記サイトを参考に。

ファイルを選択してBurnを選ぶと書き込みます。

eepファイル

EEPROMの機能でEEPROMのデータをメモリに保存すると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経由は不安定で読み書き失敗する事があります。その場合、何度かリトライすると成功する場合もあります。

シリアルモニター

簡易シリアルモニター機能としてテキスト表示、グラフ表示、ファイル保存が可能です。記録・表示時はシリアルをUSB側へパススルーもしますので、ツール経由でPCからシリアルデバッグも可能です。

本体左側にあるシリアルピンか、10pinコネクタにあるシリアル用ピンを使います。サンハヤトのサンハヤト スルホール用テストワイヤ TTW-200を使うとピン穴に線を簡易固定出来るので便利です。

接続は受信のみのため、GNDとRX(相手側はTX)でOKです。レベルシフト回路が入っていますので、相手側の電圧を気にする必要はありません。PCからツール経由でシリアルデバッグを行い、PC側からシリアルデータを送る場合はTXピンも繋いでおきます。View Text / View Graph / Save to fileでシリアルを記録・表示している時はターゲットのシリアル通信をUSB側にパススルーします。USB側は11520bps固定です。

Baud Rate:ボードレート設定、9600 / 38400 / 78800 / 115200
Log time:行頭に時間を記録します(ツールが起動してからの起動時間、ミリ秒)

Port設定でSerial2とIO12/14を選択出来ますが、ESP32のSoftwareSerialは性能が悪い為現在IO12/14の使用は実験的に入れているだけで使い物になりません。

View Text

シリアルモニターの内容を簡易テキスト表示します。履歴や横方向のスクロール機能はありません。決定/切替ボタンを押すとテキスト折り返し(改行)表示を切り替えます。

メモリに保存しつつ表示する事が出来ます。

View Graph

シリアルモニターの数値を簡易グラフ表示します。1行受信毎に数値化してグラフ表示します。グラフは中央が0でモニター開始からの最大値が表示内に入る様自動的に範囲調整します。右上に現在のグラフの最大値が表示されます。

メモリに保存しつつ表示する事が出来ます。

Save to file

シリアルモニターの内容をテキストファイルとしてメモリに保存します。記録中は画面上部に「REC」の表示が出ます。再度Save to fileを選択するか、別のモードに切り替えようとすると記録終了確認が出ます。

保存したテキストのログファイルはファイルモードから内容を確認する事が出来ます。

EEPROM操作

1024バイトのEEPROMのデータの取得・表示・書き込み・クリアが出来ます。

Read EEPROM

EEPROMのデータを読み込み表示します。決定/切替ボタンを押すとHEX表示とASCII表示を切り替えます。

Save EEPROM

EEPROMのデータをバイナリでメモリ内に保存します。ファイルモードで保存したファイルの内容を確認したり、EEPROMに書き戻したり出来ます。

Clear EEPROM

EEPROMを0でクリアします。

ファイルサーバー

この画面表示時、シリアル経由のファイルサーバーとして動作します(シリアル経由の詳細は後述)。決定ボタンを押すとWebサーバー開始し、再度ボタンを押すと停止します。

簡易Webサーバーとして動作時、WiFi経由でメモリ内のファイルをダウンロード/削除したり、メモリにファイルをアップロードできます。

Webサーバー動作時URLのQRコードを表示しますので、スマホ等とネットワーク的に接続されていればQRコードからページを開く事が出来ます。

ブラウザでアクセスするとファイルリストが表示されます。ファイル名をクリックするとダウンロード、Deleteボタンで削除。ファイルを選択してUploadするとファイルをメモリ内に転送出来ます。

設定

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サーバーと同期された場合、シリアルログ作成時に1行目にタイムスタンプとして日時が記録されます。

シリアルインターフェイス

PCとUSBで接続する事で、PCとシリアル通信でファイルのやり取りをする事が出来ます。通常のESP32のマイコンとして使う事も可能です(ツールのファームウェアの書き換え等)。

USBシリアルとして認識しますので、CH340のドライバーを必要に応じインストールして下さい。通信速度は115200bpsです。改行コードはLFで使用します。

helpと入力するとコマンドのヘルプ表示します。ファイルサーバー以外ではモード切替のみ可能です。ICSPモードでUSBモード有効時のみシリアルコマンドは使えません。

-----
message
Commands: 
help  : this message
mode #: change mode
 0: Files
 1: Bloader/Fuse
 2: USB ICSP
 3: Serial log
 4: EEPROM
 5: File Server
 6: Config

シリアル経由でのファイル操作を行う場合、mode 5 と入力してファイルサーバーモードにします。

ファイルサーバーモードではメモリ内のファイルリストやファイルのダウンロード、削除、アップロードが可能です。ESP32内のSPIFFSメモリ領域ですので、使えるサイズは1~3MB程度です。

-----
message
Commands:
 help  : this message
 exit  : switch to file list screen
 mode  : switch mode
 list  : list file in storage
 down #: get file data, filename[\n]datasize[\n]data
 del # : delete file
 up    : upload file, up[\n]filename[\n]datasize[\n]data
 
 # is index shown with list
 reply starts with -----[\n] ends with [\n\n]

ファイルサーバーモードではファイルのリスト、削除、ダウンロード、アップロードが出来ます。mode 0とexitは同じ動作で本体をファイル画面に戻します。

シリアルコマンドの応答は以下の形式で返ります。

-----\n
(種類)\n
(情報)\n
\n
\n

ハイフン5つと改行に続いて種類(message、error、ok、file、list、mode)、データの順に返ります。

listと入力するとメモリ内のファイルリストとメモリ空き状況を表示します。

-----
list
1:/eeprom_002.eep  SIZE: 1024
2:/eeprom_003.eep  SIZE: 1024
3:/memo.txt  SIZE: 797
4:/optiboot.hex  SIZE: 1464
5:/single.hex  SIZE: 6211
6:/withboot.hex  SIZE: 7488
7:/qrcode.txt  SIZE: 31392
8:/eeprom_001.eep  SIZE: 1024
8 file(s) / 1345kb total / 52kb used / 1293kb free

ファイルは連番、ファイル名、ファイルサイズです。ファイルの連番はファイルを削除する際等にこの番号を指定します。上記例で del 5 と入力するとsingle.hexを削除できます。

ファイルをダウンロードする場合、down 3 の様に入力します。file、ファイル名、ファイルサイズに続いてファイルデータが返ります。

-----
file
memo.txt
797
(以下ファイルデータ)

ファイルをアップロードする場合、PC側から下記形式でファイルデータを送信します。

up\n
ファイル名\n
ファイルサイズ\n
ファイルデータ

シリアル経由でのファイルやりとりを簡単にするためのWindows用ツール準備しています。簡易的な物でエラー処理も最低限しか入れていません。

Visual Studio 2019用のソースも入れています。同等機能のC#バージョンは以下。

実行し、右上のCOMポートを選択して接続ボタンを押すとモード切替とファイルリスト取得が自動的に行われます。

左側のファイルリストからファイルを選択してダウンロードを押すか、ファイル名をダブルクリックするとデータ受信し保存ダイアログが表示されます。ファイル選択して削除ボタンを押すとファイル削除します。

アップロードボタンを押してファイル選択するか、ファイルをウィンドウにドラッグ&ドロップするとファイルを送信します。一度に送信できるファイルは一つのみです。連続してドラッグすると狂いますので、1つ完了してから次のファイルをドラッグして下さい。

使用ライブラリ

本ツールのソフトは以下のライブラリを使用・ベース・参考にしています。ありがとうございます。

Print Friendly, PDF & Email