LoginSignup
2
1

More than 3 years have passed since last update.

wemos注意点

Last updated at Posted at 2018-07-17

概要

wemos d1 r1 の注意点。

ディジタル出力端子

使える端子は,IO0, IO2, IO4, IO5, IO12, IO13, IO14, IO15, IO16 の9本です。
IO2 には LED が接続されています。
HIGH で 3.3V 出力,LOW で 0V 出力です。
ドライブ可能な電流(流出・流入)は1端子あたり 12mA です。

ディジタル入力端子

ディジタル出力と同様に,IO0, IO2, IO4, IO5, IO12, IO13, IO14, IO15, IO16 の9本が使えます。
IO2 には LED が接続され,IO13 は 10kΩ でプルアップ,IO15 は 10kΩ でプルダウンされているため注意が必要です。
INPUT, INPUT_PULLUP が使えますが,IO16 のみ INPUT, INPUT_PULLDOWN_16 のみが使えます。
入力電圧が約 2.5V 以上(3.3V 以下)で HIGH となり,約 0.8V 以下で LOW となります。

アナログ出力端子

いわゆる PWM 出力です。
上述のディジタル入出力端子(9本)のいずれも使用(同時使用)できます。
analogWrite() に与えるデューティー比は,0〜1023 の整数で与えます。
PWM 周波数は約 1kHz(996.8Hz 前後)です。
デューティー比 0 を指定すると PWM モードが解除されます。
analogWriteFreq(4000) とすれば 4kHz になりますが,周波数を高くしすぎると,デューティー比の 0 近くと 1023 近くで挙動がおかしくなるようです。

サーボ制御信号の出力端子

50Hz の PWM 信号です。
上述のディジタル入出力端子(9本)のいずれも使用(同時使用)できます。
パルス幅は 1500µs が中点で,544〜2400µs が可変範囲となっています。

アナログ入力端子

TOUT がアナログ入力端子で,1チャネルのみになります。
analogRead(0) または analogRead(A0) で,10bit の非負整数として電圧を取得できます。
220K + 100K で分圧し、100K側でADCに接続されてます。
測定範囲は 0〜1V です。
入力電圧が飽和(1V 以上)の場合は 1024 が返されるようです。
3.3V * 100k / (100k + 220k) = 1.031V

ウォッチドッグタイマ(WDT)

プログラムが暴走するなどした場合に,自動的にリセットがかかる安全装置で,標準的な Arduino にはない機能です。
プロセッサ内部にタイマーがあり,
(1) loop() の終了・再呼出時,
(2) delay() の実行時,
(3) yield() の実行時にタイマが 0 に戻されますが,タイマが 3s を超えてしまうと,ESP8266 が強制的にリセットされます。
したがって,loop() の内部に while や for などで長時間実行される部分や入力待ちがある場合は注意が必要です。
適宜,delay() や yield() を入れてください。
delay(0) でもオーケーです。
一方,delayMicroseconds() ではリセットされません。

WiFi 関連の機能

WiFi や TCP/IP 関連の機能(HTTP リクエストの処理など)は,WDT リセットと同様に,
(1) loop() の終了・再呼出時,
(2) delay() の実行時,
(3) yield() の実行時に,併せて実行されます。
したがって,WiFi や TCP/IP の応答性を確保するには,プログラム構造を工夫したり,適宜 delay() や yield() を呼び出すようにしてください。

電源電圧 3.3V

プログラミングではなくハードウェア的な注意点ですが,ESP8266の電源電圧および IO の入出力電圧は 3.3V です。
5V 系のデバイスと接続する場合は注意が必要です。
降圧させるなら抵抗器2本による分圧回路,昇圧させるならトランジスタスイッチまたはレベル変換 IC を使うとよいです。
ディジタル出力端子あたり最大 12mA までドライブ(流出・流入)できます。
LED を接続するなら順方向電圧の低いもの(2V 程度のもの)を選び,数百 Ω(1kΩ でもよい)の抵抗器を直列に入れるとよいです。
スイッチ入力等に使うプルアップ抵抗,プルダウン抵抗は 10kΩ でよいです。

ピン

nano GPIO pinの名前 デジタル出力 デジタル入力 割り込み アナログ出力 アナログ入力 備考
D8 GPIO0 IO0 - 起動時に使用
D1 GPIO1 TXD - 書き込みに使用
D9 GPIO2 IO2 - 起動時に使用
D0 GPIO3 RXD - 書き込みに使用
D3 GPIO4 IO4 - -
D4 GPIO5 IO5 - -
D6, D12 GPIO12 IO12 - -
D7, D11 GPIO13 IO13 - -
D5, D13 GPIO14 IO14 - -
D10 GPIO15 IO15 - 起動時に使用
D2 GPIO16 IO16 〇  - - -
A0 A0 TOUT - - - - -

timer

Hardware Timer0 is used by WiFi Functions.
We can use only Timer1. Use of timer instead of Ticker gives advantage of precision timing and You can get timer interrupt in micro seconds.

CPU周波数

ESP8266のCPU周波数は標準で80MHzで、160MHzに変更でき、その方法は system_update_cpu_freq(160);
で160MHzに変更できます。

32ビットRISC CPU: Tensilica Xtensa LX106 running at 80 MHz*
命令RAM 64KiB、データRAM 96KiB
外部QSPIフラッシュメモリ - 512 KiB~4 MiB*(16MiBまでサポート)
IEEE 802.11 b/g/n Wi-Fi
統合された送受信スイッチ、バラン、LNA、パワーアンプ、インピーダンス整合回路
WEPもしくはWPA/WPA2による認証およびオープンネットワーク
16ピンのGPIO
SPI, I²C,
DMA付きのI²S(GPIOとピン共用)
専用のピン上のUARTとGPIO2で有効化できる送信専用UART
10ビットADC 1基

以上。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1