« 2016年3月 | トップページ | 2016年11月 »

2016年10月

2016年10月25日 (火)

ESPr Developer(ESP-WROOM-02開発ボード) 購入

スイッチサイエンスさんの以下の基板を購入しました。

この基板はESP8266とUSBシリアル変換のFT231がのっていてATMEGA CPUのARDUINOと同じようにソフトウェアの開発に使う事ができます。
ARDUINO IDEからプログラムを書き込むときESP8266はA0端子をLOWにしてリセットする必要がありますが、この基板ではFT231のDTRとRTSからA0を制御し自動で書き込み出来るようになっています。
ARDUINO IDEは1.6.5にボートマネージャ"esp8266byESP8266 Community version 1.6.5-947-g39819f0"をインストールして使用しています。

2016年10月22日 (土)

ESP8266のアナログ入力とVCCの電圧測定方法

アナログ入力
ESP8266にはTOUT端子がありこの電圧のADC値を読み取ることができます。
TOUT端子の電圧を測定するためには以下のようにA0をanalogReadすれば読み出せます。

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  int v=analogRead(A0);
  Serial.println("VCC="+String(v/1000.0)+"V");
  delay(1000);
}

読み取り値は10ビットの0から1023の値で、TOUT端子が1Vのとき1000となります。

次にVCCの測定方法

以下のようにADC_MODEをADC_VCCに変更するとVCC電圧を測定できます。この値を1/1000すると電圧値になります。

#include <ESP8266WiFi.h>
ADC_MODE(ADC_VCC)

void setup() {
  Serial.begin(115200);
}

void loop() {
  int v=ESP.getVcc();
  Serial.println("VCC="+String(v/1000.0)+"V");
  delay(1000);
}

TOUTピンは何も接続しないでください。チップ内でVCCを1/4し1Vの基準電圧で測定し、ライブライ内で4倍した結果がESP.getVcc()から返ってきます。

ADC_MODEはマクロで以下のように定義されています。

enum ADCMode {
    ADC_TOUT = 33,
    ADC_TOUT_3V3 = 33,
    ADC_VCC = 255
    ADC_VDD = 255
};

#define ADC_MODE(mode) extern "C" int __get_adc_mode() { return (int) (mode); }

マクロで定義されいる__get_adc_mode()は以下のように使用されている

extern int __wrap_register_chipv6_phy(uint8_t* unused) {
    phy_init_data[107] = __get_adc_mode();
    return __real_register_chipv6_phy(phy_init_data);
}

ADC_VCCとADC_VDDを指定したときVCCの値が返ります。それ以外は1023が返ります。
anaroguRead()もESP.getVcc()も同じADCを使っていて、動作中のモード切り替えは出来ないと思われます。

調査には以下を使いました。

2016年10月 7日 (金)

Windows10完全シャットダウンの設定方法

Windows10のシャットダウンは、次の起動時に高速起動するためスタンバイの機能を使用してシャットダウンするよう、デフォルトで設定されいる。
このため、メモリーの追加やハードディスクの取り外しなどで不具合が発生する。
これまでと同じような方法を完全シャットダウンとか呼ばれている。

以下の方法で設定を解除出来る
画面左下の「スタート」ボタン右クリック
「電源オプション(O)」選択
「電源ボタンの動作の選択する」選択
「現在利用可能ではない設定を変更します」を選択
「高速スタートアップを有効にする(推奨)」のチェックを外す
「変更の保存」ボタンクリック

2016年10月 6日 (木)

ROBOCOPYでフォルダとフォルダの時間のみをコピーする

ROBOCOPYでフォルダとフォルダの時間のみをコピーする

robocopy.exeを使ってディレクトリ構造のみコピーする。

ファイルを暗号化(EFS)するとディレクトリのタイムスタンプが更新される。
ディレクトリのタイムスタンプを変えたくない場合一度フォルダツリーのみを
コピーしてそこにタイムスタンプを覚えておく。
暗号化完了後に保存していたディレクトリツリーを元に戻す。

robocopy src det /S /E /DCOPY:T /XF *

"/S"       サブディレクトリもコピー
"/E"       空のサブディレクトリもコピー
"/DCOPY:T" ディレクトリのタイムスタンプをコピー
"/XF *"    全てのファイルを除外する

« 2016年3月 | トップページ | 2016年11月 »