So-net無料ブログ作成

DCC/MM2シールドR5Dを半田付けする [DCC/MM2シールド]

 なんか、半田付けの記事ばかりのような気がしますが、MP3の表面実装でなかなかだったので、心機一転、今度はYaasan様と物々交換したDCC/MM2シールドR5Dを半田付けしました。こちらは2.54mmピッチなので楽勝と思って適当にやったら大変なことになりました・・・。
 の前に、交換していただいたのは、基板とターミナルブロックでDSCore(書き込み済み)が無い・・・。ヒューズビットとやらも書き込まないといけないらしい。昔、ArduinoでHexファイルは書けますよと言われたような記憶が・・・。
 ということで、まずはデコーダ開発ボードとSmileWriterでATMega328PにDSCoreファームを書き込むため、avrdudeを一生懸命いじりました。なかなか動きませんでしたが、日も暮れたころにやっと書き込めました。途中AtmelStudio入れてみたりとかやってみましたが、書き込めないし・・・。
 参考にしたページは、
(1)ArduinoISPを汎用AVRライタとして使う(2)
(2)Arduinoにスケッチをコンパイルせずに書き込む
で、(1)のページのコマンドを参考にさせていただきつつ、(2)のバッチファイルを流用しています。
出来上がったバッチファイルが以下です。(ソースそのまま)

@echo off
setlocal

rem 書き込み対象の種類 m328p
set ARDUINO_TARGET="m328p"

rem 引数の存在チェック
if "%1" == "" goto usage
if "%2" == "" goto usage

rem write COM3 DSGatewayR217_ATMEGA328P.hex

rem 書き込み指示

rem プログラム
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -Uflash:w:"%2":i

rem Fuseビット書きこみ
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m -U efuse:w:0x07:m

rem Fuseビット読み込み
".\hardware\tools\avr\bin\avrdude" -C.\hardware/tools/avr/etc/avrdude.conf -c avrisp -p %ARDUINO_TARGET% -P%1 -b19200 -D -U lfuse:r:con:h -U hfuse:r:con:h -U efuse:r:con:h

goto :EOF
:usage
echo Usage: %0 port hex_file

上記を、write.batという名前でセーブします。(メモ帳を開いて、上のソースを貼り付けて、write.batというファイル名で保存します。拡張子を見えない設定にしているとこっそりwite.bat.txtとかになって、全くコマンドプロンプトから使えないです)
 バッチの説明を(適当に)しますと、%1のシリアルを開いて、%2のHexファイルを書き込むのですが、
 まず、プログラムの書き込みをします。
 次に、Fuseビットの書き込みをします。
 最後にFuseビットの読み込みをしてます。別に確認はしておりませんので、目視でビットが正しいことを確認してください。
 そして、上記バッチファイルはhexファイル(今回は、DSGatewayR217_ATMEGA328P.hex)と一緒にArduinoIDEのルートフォルダ(私だと”C:\Program Files (x86)\Arduino”)に置きます。Win10だからなのか「管理者じゃないとダメ」とか怒られますが、管理者なのでかまわずに続けます。

で、コマンドプロンプトを起動して、ArduinoIDEのルートフォルダ(私なら”C:\Program Files (x86)\Arduino”)フォルダをカレントフォルダにします。以下の命令と一緒です。

CD C:\Program Files (x86)\Arduino

とコマンドを打ってEnterを押せば移動できます。
ここで、

write COM3 DSGatewayR217_ATMEGA328P.hex

と打って、Enterを押せば、めでたくATMega328PにDSCoreが書き込まれます。
なお”COM3”はSmileWriterのCOM番号に合わせてください。COM9以降はエラーが立つかもです。その場合は、"\\.\COM10"のように指定する必要があります。(確かWindowsの仕様です)
re_DSC00483.jpg
で、めでたくDSCore R217が書き込めました。
 次に適当にDCC/MM2シールドを組み立てたらやらかしてしまいました。まずはCN5 ISPのテストピンを上下逆につけてしまいました。仕方ないので半田をいっぱい盛って、6ピンとも半田ごてに当たりつつ融けている状態で引き抜いて、つけなおしました。ピンは半田で汚くなっているので長い部分は切ってしまいました。(もう重ねられない)
 そして、電源を入れたらPowerLEDすらつきません。でも、DCCデコーダは動きます。つまりステータスLEDを三つとも逆にはんだ付けしてました。全部つけなおしたら、一部基板のパターンははがれて断線しました。
re_DSC00484.jpg
 で、まあ、DCC部分はちゃんとやっと動くようになりました。(S88は未確認)
 DCC/MM2シールドR5DはS88のRJ45端子が付いているので、これでいくつか自動運転をやってみたいと思っています。が、今日は力尽きました。



なごでんの日記様のMP3サウンドユニットV2をはんだ付けする(動作確認はまだ)

 (3/5追記)組み立て方が間違っておりますので、下記記事を組み立て時の参考にするのはお避け下さい。
 ラスカル様から評価用にいただいていたMP3サウンドユニットV2を組み立てました。これは難易度高いです。説明書を見ながら3時間ちょっとかかりました。
 SmileDecoder部分とMP3部分に分かれているので、まずはSmileDecoder部分から。
re_DSC00477.jpg
 に、ATMega328とセラロックを半田付けします。
re_DSC00478.jpg
 この状態でSmileWriterを使って、ブートローダーが書き込めることを確認します。OKでした。(私は12個作ると2個ぐらいは失敗するので、ヒヤヒヤでした。)
 1608の抵抗のランドパターンが小さくて難しいです。逆にBD6231は取り付けやすかったです。
 次にMP3部分。
re_DSC00480.jpg
 一応、何から付けるかを考えて、まずIC関連をすべて付けてから抵抗やコンデンサを付けました。
 LT1933周りが密集して難しかったです。C6?10uF難しかったです。
 で、とりあえず、はんだ付け完成。
re_DSC00481.jpg
re_DSC00482.jpg
 ・・・ここで、動作確認して動かないと心が折れそうなので、動作確認はまた今度にしました。
 

DSmainR5 WifiOptionを試す その4 [DSmainR5]

 今日までにElecrowから「発送しました」メールが来ないかなあと待ってましたが、来ませんでした。春節明けで忙しかったのでしょうか?ということで、今週末に、S88の実験はできなさそうです。
 それで、題名のWifiOptionの続きの話ですが、今回は、2月中旬に秋月で買ってきたESP-WROOM-02です。ATコマンドを送ったら、下記のものが返ってました。これは、Flashに入っている単なるプログラムなのかファームなのかよくわかっていませんが、去年の8月のものです。(これより新しいのがあるかどうかすらわからない)
ATコマンド.png
 ATコマンドは以下の記事を見ながら確認しました。
+DEVICE PLUS
第33回 Arduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(Wifi通信テスト編)
そして、Arduinoのプログラムを入れるのは、
第34回 Arduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(Arduino利用編)
を参考に入れています。
なお、この基板はUART側にスイッチを入れて電源を入れるとプログラムを書き込めて、Flash側にして電源を入れると、動作モードになるようです。

また、フォルダをUploadするとき(DesktopStationのWebアプリのHTMLフォルダごと入れるとき)は、
・ArduinoのIDEのシリアルモニタを切る。
・ESP-WROOM-02の電源を切る。
・スイッチをUART側にする
・電源を入れる
・ArduinoIDEのツール→ESP8266SketchDataUploadを選んでDataフォルダ内のHTMLファイルをコピーします。
・ArduinoIDEの下のほうのメッセージがSPIFFS Image Uploading Imagesと表示されて
・メッセージがSPIFFS Image UploadedとなったらUploadが終了しています。
・ESP^WROOM-02の電源を切って、スイッチをFlash側にして
・電源を入れる
と、通常動作します。
スケッチを入れるときの設定は下記の通りにしています。
ESP-WROOM-02設定.png
 他のページと違うところは、FlashとCPUのクロックを倍にしているところでしょうか?
 そして、今回は、前回の問題点を取っていくようにしていますがもちろんいくつかはそのままです。
・STAモードでmDNSが使えない。→×:今回も使えないままです。192.168.2.100というところにアクセスしています。
・APモードは少々不安定。→×:今回も使えないままです。まずSTAモードで試すので、やっていません。
・STAモードでファイル転送が遅い→○WebServerクラスを改造して使って、gz圧縮とStream転送機能を使って、10秒ぐらいで操作画面が送れるようになりました。
・CallBackを使用してソースを美しくする。→WebServerクラスのヘッダのWaitを
以下のように変更しました。(なんでこのパラメータ可変じゃないんだろう?)
----------------
#define HTTP_MAX_DATA_WAIT 50 //ms to wait for the client to send the request
#define HTTP_MAX_CLOSE_WAIT 100 //ms to wait for the client to close the connection
----------------
もともとはそれぞれ1000,2000です。 Loopのところのserver.handleClient();で2秒に一回程度しか返信を返してくれないので、WebアプリのGetStatus(1秒間隔に要求)にすら半分しか返してくれません・・・。
もしかしたら上記のうち、どちらかのWaitだけを短くするのでも良いかもですが、試してません。
 ESP8266関連のライブラリのPC内格納場所ですが、ネットからインストールしたのですが、
「ファイル」-「環境設定」のダイアログで下のほうに
「以下のファイルを直接編集すれば、より多くの設定を行うことができます」の下の
リンクをクリックすると出てくるフォルダのPackagesフォルダの下あたりにあります。
なんで、こんなところにあるんだろう。
・SPIFFSが長いファイル名だと、エラーになって読めない。→×実験の結果、Stringで渡すのに32文字しか認識していないことが分かりました。(ファイルのリストなどで確認したところ)
\css\images\ui-bg_flat_0_aaaaaa_40x100.pngなどのファイルは名前が長すぎて、見つからずに送信できません。
 なので、フォルダ名も含めてWEBアプリのファイル名は32byte以下になるとうれしいなあと思います。(そのままコピーできるので)
 DesktopStationなりすましモードを作る→○それなりのものは作成しました。DesktopStationのコマンドを解析するのに、Yaasan様のDSGateway_dccスケッチ内の
boolean parse()
boolean dispatch()
辺りをそのままコピペして、命令を解析して、それをESP-WROOM-02内の構造体
--------------------------
struct Locomotive
{
unsigned int Address;
unsigned int Speed;
unsigned int SpeedStep;
unsigned long Function;
unsigned int Direction;
long SurviveCount;
};

struct DesktopStation
{
unsigned int Power;
struct Locomotive Loco[10];
unsigned int Acc[40];
};
DesktopStation DS;
--------------------------
にそのまま入れてやって、後はGetStatus(WebアプリがDesktopStationに状況を聞く命令)が来た時に、
--------------------------
POWER_ON,
LOC,49159,1,0,180,0
LOC,49155,1,0,180,0
LOC,49156,1,0,180,0
ACC,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
--------------------------
と状況を教えてあげます。
ただし、現在Versionは094fベースなので、レイアウトには対応していません。
(多分ファイル名の長さ的にもそのままでは無理そう)
あと、一番重要なところで、現状のものはデバッグ用にいっぱいシリアル通信しているため、おそらくDSmainR5に繋いでも動かないと思います。必要なものだけシリアルに載せる必要があり、それはまた追々やって行こうかと思います。
 ソースを見るとわかりますが、結構ボリュームありますが、まだまだESP-WROOM-02的には問題なく入るようです。つまりもっとデラックスなものが作れそうです。
 参考ソースはこちらです。
 あとは、mDNS、APモード、AP設定できるようにする、説明ぐらいやったら終わろうかと思います。
(いつになるんでしょう)


DSmainR5 WifiOptionを試す その3 [DSmainR5]

 続いて、WifiOption基板を組み立てました。まずは生基板状態。
re_DSC00471.jpg
 12月に一度確認して、アンテナ部分の下に配線があったので、まずはそこをリューターで削りました。
 削る前
re_DSC00472.jpg
 削った後
re_DSC00473.jpg
 そして、部品を実装しました。Bluetoothチップは3面はんだ付けしないといけないのですが、ESP-WROOM-02は2面だけなので、少し楽な気がします。
 re_DSC00474.jpg
 写真を撮っていませんが、裏面にチップ抵抗が2個あります。
 レギュレータのNJU7223を買い忘れたので、以前の基板から取って付けました。(後で問題になります・・・)
 完成です。ちゃんとPowerLEDも光るし、ATコマンドも受け付けてくれました。
re_DSC00475.jpg
 で、今回は、DesktopStationなりすまし機器とするため、機器状態をWebアプリに返すソフトを一生懸命作っていたのですが、約一日でパワーLEDが点かなくなりました。基板を触ってみるとレギュレータが異常発熱しています。やけどしそうです。ということで、BluetoothOptionで実績のある(というかストックのあった)TA48033Sヒートシンク付きに付け替えました。容量も1Aだし、大丈夫でしょう。(NJU7223は500mA)で、今のところ大丈夫です。
re_DSC00476.jpg
 NJU7223が壊れた理由は不明ですが、複数考えられます。
・他の基板から剥がして付けたので、加熱したことによる劣化
・PCのUSBにはそれ以外にELECOMのモバイルルータもつけていたので(2.4W→5V,0.48A)のでPCからのUSB給電が不安定で壊れた?
・入力、出力に電解コンデンサの0.1uF付けるようにデータシートに書いてあるのに1uFのセラコンを付けてしまったこと?(とある技術屋の日々様の記事
・500mAじゃ足りなかった?
 さて、なんでしょう。
 で、これをやりながら気づいたことは、このごろ電車を触っていない・・・ということでした。
 ソフト制作の話については次回。 

DSmainR5 BluetoothOptionを試す [DSmainR5]

 Yaasan様のDSmainR5用のBluetoothOptionを組み立てました。
 どこにも製作説明ページが無いような気がします。電気屋の毎日Blogの該当ページの写真を見ながら組み立てました。通信チップRN-42-I/RM(1800円)ですが、WifiのESP-WROOM-02の価格(600円ぐらい)を考えるとすごい高い気もします。
 DSmainR5に接続しました。私のは2月1日出荷分ではないので、外付けです。ケーブルは4極のステレオミニプラグケーブルです。
re_DSC00470.jpg
 STS(たぶんStatus)のLEDが付きませんが、後は問題なく普通のCOMとして通信できました。これで、DSmainR5がPCから遠くにあっても問題ありません。デバッグ効率が上がります。
 私はWindows10で使用しており、ペアリングの時に、「パスコードはこれであっているか?」と聞かれて、「はい」と答えて、「違います」と言われること何回か、のあと、ペアリングできました。なんだったんでしょう。
 あとは、あやのすけ様のBlogによく登場するaitendoが気になっていて、行ってみました。開店が13時のため、近くのTamTamで時間をつぶしました。aitendoの店員さんは本当に女の人でした。中国の人っぽかったですが。中国通販っぽいものがいっぱい売っており、また今度行ってみようと思いました。

S88 基板 フル装備(14ポート)の検討 その3 [S88]

 微妙に題名を16ポートから14ポートに変更しました。
 S88基板(6ポート)ですが、基板の在庫がありませんが、購入したいという方がおられましたので、Elecrowに注文しました。何も問題なければおそらく再来週の始めあたりに届くかと思います。
 あとは、昨年頼んだ東京駅100周年スイカがついに届きました。確か当日の朝6時前ぐらいに起きて、どのくらい並んでいるかTwitterの検索をしたら、悲鳴みたいなツイッターがいっぱいで絶対買えなさそうだと思ったのと、その日はとても寒かったので、買いに行くのをやめた記憶があります。スイカ見て思ったのが2014年って何年前だ?
re_DSC00469.jpg
 S88ですが、前回Lチカまで行いました。
 そして、今回、次にAnalogReadを試しました。参考にしたのは、
可変抵抗のツマミを回してLEDの明るさを可変します(2/2)
のアナログを読む部分(unsigned int adconv())あたりです。
 入出力のビットで16F1939用に適当に直して、可変抵抗で5Vを分圧したものをRB3(AN9)から入力して、ある値以上でLEDが点くよう、RC3に出力するソースを書いて実験したら、それっぽく動いていました。(シリアルをつないでいないので、実際の値アナログ値は見ていません)。ソースはこちら
re_DSC00466.jpg
 次は、S88 Load部分とS88 CLK部分をもらってDataIn、DataOutするS88の転送部分の製作ですが、割り込みが必要です。PICについて説明したページや、割り込みの説明をいくつかななめ読みして、以下のページを参考に状態遷移割り込みをRB6,RB7で利用することにしました。
 「PS2キーボードを接続してみます」
 PS2キーボードもS88もクロックをもらって、それに合わせてデータを返すタイプなので、まあ、原理は似たようなものです(多分)。Yaasan様がやっているプレステの電車でGoコントローラもきっとシリアル転送なんだろうなあと思いながら、中を確認したことはありません。
 S88の信号の説明はDigitalNahn様のページにありますが、ドイツ語なので、本文はよくわかりません。まあ、図だけ見ると英語に見えるので、PSがLoadでClkがCLKなんだろうぐらいな感じです。
 今回はPICのRB6にCLK、RB7にLoadをつなげて、状態変化割り込みを使用して、信号をDSmainR4に送信してみました。なぜDSmainR5じゃないのかと言ったら、R4は6pinのS88端子が出ていて、デバッグに使いやすいからです。理由はそれだけです。
 re_DSC00467.jpg
 すると、動作が変でした。具体的には、1~14に出てこなければいけないS88の各信号が2~15に出ています。いろいろとあてずっぽうの対策を繰り返した後に、ATMega328Pの時は16MHzのクロックをつないでいたのに、今回は8MHzにしているのを思い出して(クロックは低いほうが消費電力が低いようですし)、16MHzにしたらうまくいきました。S88基板の中で、PS信号の立ち上がりが来たら内部バッファクリアと転送データのセットを行うのですが、その後速いものでは20us後に最初のClkの立ち上がりが来ますが、どうやらバッファクリア、セットが間に合っていないようで、2クロック目から転送していたため、ずれたようです。
 バッファクリアと転送セットはもっと速くやる方法もありますが、現在は、見やすい方法で書いているため遅いです。コマンドステーションによってはそのうちここが問題になるかもです。
 あとは、LED点灯→アナログ値読み込み→LED消灯→アナログ値読み込み→差分計算→バッファに入れておく、という一連の動きが必要です。
 こちらは、S88(6ポート)版ではLEDのドライブを1信号だけ使用して、トランジスタをスイッチに使用して6ポート同時に光らせていました。しかし、今回は消費電力の削減と部品点数の削減を目指しているので、1個ずつ順次点灯させながら、アナログ値を読むのを14ポート分繰り返すという、以前よりもわかりやすい方法に変えました。LEDのドライブをPICに任せているので、フォトデテクターのLED光が弱くなっていたらやだなあとは思っています。
 で、なんだかんだやって、とりあえず1ポートだけはなんとなく動くことを確認できたのですが、1ポートの状態ですでに以下の写真のようになっており、14ポートをブレッドボードで作る気になりませんでした。
re_DSC00468.jpg
 まだ、確認していない項目が、
・複数ポートでの確認
・電車の検出
・S88のデイジーチェーン時の動き(Data In側)
と盛り沢山ですが、一度基板を作って試してみようと思いました。
PS→Clk間の時間によってはビットもずれそうですし。
で、とりあえず引いた回路図です。
PCDetector14_k0.PNG
 今回は奮発して、10cm*10cmの基板で作ることにして、以下がアートワークです。毎度のことながらここの線を引っ張るのがパズルのように楽しくって気づいたら夜中の2時半でした。
基板.png
 で、S88基板を頼むついでに頼みました。
 なお、今回のソースはこちらです。
 基本的な原理や機能はATMEGA328Pで作るのと一緒なのですが、PICのソースなので、入出力関係の宣言が少々多くなっていて、見にくいかと思います。
 あと、あやのすけ様のコメントでPICの書き込みの件がありましたが、いろいろなページを見るとPicKit3での書き込みはVPPには12V?ぐらいがかかるようです。ATMega328Pのように書き込むと、周辺回路(具体的にはData_Inにつながっている部分)が壊れそうです。

S88 基板 フル装備(16ポート)の検討 その2 [S88]

 S88 フル装備(16ポート)と言いましたが、14ポートとかになりそうです。ちょっとPICのことについて勉強を始めています。まず、何も考えずに秋月電子に行って、A/Dが多そうな40PinのPicを三種類買ってきました。ATMEGA328Pのスペックに比べ、なんか安いような気がして少々タガが外れてしまいました。
 買ったのは、
16F887-I/P
16F1939-I/P
18F4550-I/P
 887と1939はA/Dが14chついています。現在はまだ「捕らぬ狸の皮算用」ですが、直繋ぎすれば14PortのS88が完成しそうです。4550はUSBにつなげられるとか書いてあったのでつなげたらいいなあとよく考えずに買っています。
 家についてから、まじめにネットでPICのことを勉強し始めて(ネットサーフィンしているだけ)、なんか、PICはシリーズごとに違って、違いをちゃんと理解しないとさっぱり動かない的なことが書いてあり、これは少々怖いかもと思いました。
 Nucky様のデコーダにプログラムを書き込むために、すでにマイクロチップのIDEはインストールしてありますので、あとは、どうにかプログラムを書いて、実験あるのみです。
 ネットをななめ読みすると、Cで書くプログラムは、ArduinoにはなくATMega328Pの機能を使う時と使い方が似てそうなことが分かりました。(よくわからんPortのBitをいっぱいいじればよさそう。Main文が一回呼び出されるだけなので、Setup,Loopと来るArduinoよりもCプログラムとしては、まんまですねという感じ)
 で、デバイスは、16F1939を使うことに決めました(今日のところは)。理由は簡単で、きむ茶工房ガレージハウス様のページが分かりやすかったからです。あと、データシートも日本語があったし。
 きむ茶工房様のPICの動かせ方入門ページから16F1938のことが詳しく書いてあります。16F1938と今回買った16F1939はポート数が違うだけで似たような動きらしいです。
 今回のマイコンの機能としては現在のATMega328Pのものの原理をほぼそのまま使用する予定ですので、ATMega328P→PIC16F1939で
(1)A/D変換機能・・・ATMega 10bit *6ch →PIC 10bit*14ch
(2)S88通信(シリアル転送)・・・ATMega 割り込み2つ→PIC 割り込み2つ 使用する
(3) LED点灯・・・ATMega トランジスタを使用して6ch同時ドライブ→PIC マイコンのドライブ能力だけで1chずつドライブ、
というつもりです。
 でも、まずはIDE(MPLAB X IDE v3.20)にXC8 V1.36のコンパイラーを入れてLチカからやってみました。
 実験風景は以下。
 re_DSC00465.jpg
 LEDの光らせ方(端子のH,Lの設定の方法)とDelayの使い方はわかりました。
 ソースは、こちらを参考にしています。
 次はLEDをナイトライダーさせたり、A/Dの入力を試したりかなあと思います。
 そして、割り込みを使ったシリアル転送を試します。
 つまり、まだまだ先は長そうです。


 

DSmainR5 WifiOptionを試す その2 [DSmainR5]

 いちおう動きますがいろいろと条件付きです。
 いくつか不満点/不具合があります。
(1)STAモードでmDNSが使えない(10秒に一回ぐらいの割で再起動がかかる)ため、愛称によるアクセスができなく、192.168.2.100のように直接アドレスを打ってアクセスしなければいけないが、DHCPで値が変わることがあり不便。というかPCから今IPが何かを確認しなければ使えない。
→ライブラリのバグを誰かがとってくれないと使い物にならない。
 一応、AccessPointをUIでブラウザから設定するツールはライブラリで出ており、IoTラボ様で紹介されている。(試してない)。
(2)APモード(アクセスポイントになるモード)になれば、ある意味愛称(SSIDとパスワード)だけでアクセスできる。こちらの実験をしてみたが、APモード時のサーバーはSTAモード時のサーバーに比べ不安定で、大きなファイルを送ろうとすると、すぐにだんまりして使えない。(わたしのソフトが悪いかもだが)
(3)STAモードでつなげると、ファイル転送自体はちゃんと行えるが、前回書いたように全部で500KbほどDesktopStationWeb用のファイルを落としてこなければいけないが、30~50秒かかる。また、この間の電車の制御はできなくなる。(ファイル転送にすべての力をつぎ込んでいるため)
→これについては、.gzでHTML、JS、CSSファイルを圧縮して送るのに変更したのと、ボード設定のFlash Frequencyを40MHz→80MHzにして、CPU Frequency を 80MH→160MHzにしたら、数秒程度にまで速くなった。PNGファイルはパスとファイル名が長すぎるようで、ファイルが見つからないといわれる。このダウンロード中に電車の制御ができないのは変わらないが。

 一応、現状のファイルはこちらです。SSIDとPasswordは自分の環境に合わせないと動きません。子供と二人で動かした感じでは、ときどき、パケットが詰まるようで、ESP-WROOM-02がだんまりしたり、再起動したりします。
 Webから受けた命令はスルーでシリアルに流します。この時、Web側にDSmainR5の現状パラメータを返すようなのですが、そこは作っていません。
 回路図は以下です。
sch_dsmainR5_wifi.PNG
 ESP8266のライブラリはGitHubのところにあります。
 それ以外の参考ページは以下です。
ESP-WROOM-02開発ボードのページ
電子工作と介護と生活と・・・
 環境は、StableVersionの2.0.0を使用しています。
 FFS(FlashFileSystem)についてだが、参考ページは以下です。
Flash File System(FFS)について
ESP-WROOM-02 リファレンス
FFSシステムのアップロードの説明

https://github.com/esp8266/Arduino
からのStable Ver2.0.0のリンクのFileSystemのリンク
http://esp8266.github.io/Arduino/versions/2.0.0/doc/filesystem.html
で、
https://github.com/esp8266/arduino-esp8266fs-plugin/releases/download/0.1.3/ESP8266FS-0.1.3.zip
を使うと、Stable VerでもFFSのUpLoadができました。

HTTPの通信を確認するために
HTTPの仕組み
・サンプルの美しいところ。
WIFI-TNGとESP-WROOM-02で始めるWIFI Arduino
・gz圧縮の説明でわかりやすいところ
ウェブサイトをgzip圧縮で高速化する

ソフトの使い方ですが、まず、環境を整えます。
(1)ESP8266のライブラリとFFSでESP8266内にファイルを送れるよう設定します。
(2)スケッチのSSIDとPasswordを自分のAP(アクセスポイント)の設定に合わせます。(私はなぜか家のWifiルーターにはつなげられず、独立したネットワークをモバイルルーター(ELECOM WRH-300WH2)で作ってそこで実験しました)
(3)ESP8266の設定は下記のようにしました。ただし、その後スピードアップのため、Flash Frequencyを40MHz→80MHzにして、CPU Frequency を 80MH→160MHzにしています。COMは各自の設定で変わるかと思います。
設定.png
(4)ツール→ESP8266 Sketch Data Uploadを使って、スケッチフォルダのDataフォルダ内のDesktopStationのHTMLをESP8266内に格納します。これはDesktopStationのBin->WebAppフォルダの構造そのままで、そのうちHTML,CSS,JSは転送速度を上げるためgzip圧縮したものです。
(5)普通にスケッチをコンパイルしてESP8266にプログラムを入れます。
(6)APにつながったかどうかはESP8266のLEDかシリアルモニタで確認できます。
LEDの見方ですが、リセット直後は消灯しています。APにつながると点灯します。
(7)シリアルの通信から接続IPを確認してください。数回やると、大体どんな値になるかは見当がつくかと思います。
(7)ブラウザから接続IPに繋いでください。10秒~30秒ほどでDesktopStationのWebAppの画面になるかと思います。
(8)HTMLなどのダウンロード命令が来ると、ファイル転送を始めます。この間はLEDは消灯します。終わったら点灯します。この間はスピード切り替えなどの命令は一切受け付けませんので、事故に注意してください。
(9)スピード切り替えやファンクションなど来ると30msだけLEDは消灯します。消灯しないときはすでにESP8266がフリーズしています。
 ファンクションや速度指令を連打したり、複数ブラウザから連打すると、LEDが付きっぱなしになってフリーズしたり、暗く点灯して(多分よくわからないPWMがついている)だんまりしたり、数秒間ネットから消えて再起動したりします。だんまりした場合はリセットボタンを押すか、電源線をOnOffするかが必要です。
 個人ベースで優しい心で使うのであれば、まあ、それなりに使えるかなあとは思います。(複数台接続でボタン連打と、ページの再読み込みをすると、レスポンス、再起動、だんまりなど悲しいことが起きるので)。環境のインストールはそれなりにややこしいと思います。(Verによって書いてあることが違うので、参考にしているWebページの記述が現在も必ず正しいわけでもないため)

 まだやるなら、
・現在のスケッチのloopにすべて書いている構造をやめて、CallBackに変更して美しくする。
・AP選択を付ける。
・DesktopStationと同じように現状値をWebAppに返してあげる。
 ぐらいでしょうか?

DSmainR5 WifiOptionを試す。 [DSmainR5]

 S88のフル装備と言っていましたが、そちらは進んでいません。(何個か40PinのPicだけ買ってきて放置中)。
 今週は水曜日はルミネThe吉本にお笑いを見に行きました。ノンスタイル目当てでしたが、中川家の新幹線のトイレの音も面白かったです。土曜日はシルクドソレイユのトーテムというサーカスを見に行きました。緑色のショッカーみたいな人たちがすごいアクロバットなサーカスをしていて、楽しめました。どちらも椅子がいまいちでお尻が痛くなりましたが。
 あとは、日曜日には横浜鉄道模型フェスタに一人で行きましたが、こちらは特に見るものはありませんでした。(ジオラマはすべて昨年の夏に松屋で使われていたもののように見えました)
 で、先週ですが、年末にYaasan様から評価を頼まれていたWifiOptionを試していたのですが、Blogに書かれているようにすごい不安定でした。ESP-WROOM-02のアンテナ部分の下の基板にパターンが一部通っていましたので、それが不安定の原因でしょうか?と一応返信はしました。
 その後、Webなどを見ると、サンプルスケッチが落ちまくっていたが、mDNS関連を消したら、安定したという話があり、そこらをコメントアウトしたらYaasan様のソースも一気に安定しました。まあ、これで、愛称?でアクセスできなくなるんでしょうか?(私はネット関連はさっぱりでわかりません)
 このWifiが入ったマイコンはArduinoとして使えて、さらに、4MByteもの広大なROMを持ちながら500円ぐらいという、なにかとてつもなくコストパフォーマンスの良いスペックです。
 ということで、一枚、基板を買ってDSmainR5でIoTだと思いながら実験していました。
re_DSC00461.jpg
 左に見えるのがブレッドボードに挿したESP-WROOM-02開発ボードで、左上に無線ポータブルルーター、真ん中にDSmainR5とスマホを重ねています。
 本日は詳細は省きますが、ESP-WROOM-02開発ボードを買ってきて、FFSというFlashにファイルを格納するやり方を使って、WebServerのように動かして、PCレスで、ESP-WROOM-02へアクセスすることでDesktopStationのWeb版を呼び出し、DSmainR5をスマホから操作できました。(ルータは出張時にホテルに無線LANが無い時に使うWRH-300WH2を使用)。
 動画は以下。

 動画を見返してわかったことは、DSMainR5の上にスマホを載せて運転するって(本体で操作できるので)意味がないんじゃないのか?ということでした。
 ソフトの作り方が原因の可能性もありますが、ファイルの転送がすごい遅いです。DesktopStationのWEB版は500KBほどありますが、30秒~1分程度眺めていないと表示されませんでした。
 まるまる一週間やって、微妙に不安定な感じです。ソースや詳細についてはおいおい説明します。