Wi-Fi温度計の例のArduino + ESP8266、ゼロから

パート1. ESP8266の準備



なぜこの記事ですか? ハブには、さまざまな構成でのESPの使用に関する多くの記事が既にありますが、何らかの理由で、すべてがどのように接続され、フラッシュされ、プログラムされるかについての詳細はありません。 「ESP、2本の指のバッテリー、DHT22を箱に入れて時計を振ると、温度計の準備ができました!」 その結果、奇妙なことになります。すでにESPを使用している人は、これまでに行われたことに異常は見られず、学びたい人はどこから始めればよいか理解できません。 そのため、ESPの接続方法とフラッシュ方法、Arduinoと外部世界との接続方法、およびESPが遭遇した問題について詳細な記事を書くことにしました。 私はAliexpressへのリンクを提供しますが、これは価格の順序とコンポーネントの外観を表すためだけです。



そのため、2つのマイクロコントローラー、7つの異なるセンサー、5つの電源、DHT22温度センサー、あらゆる種類と色の多数のワイヤー、および無数の抵抗、コンデンサー、ダイオードがありました。 温度計にこれがすべて必要だったわけではありませんが、すでにマイクロエレクトロニクスに従事し始めている場合は、止めるのが難しくなります。







栄養



ESP8266の動作には、3.3 Vの電圧と少なくとも300 mAの電流が必要です。 残念ながら、Arduino UnoはFT232RLなどのUSB-UARTアダプター(プログラマー)を提供できないため、このような電流を提供できません-制限は約50mAです。 そのため、別の食事を用意する必要があります。 また、Arduinoも3.3Vで動作して、「ESPのRXモジュールの出力に5ボルトの信号を印加したのに、なぜプラスチックの匂いがするのか」などの問題を回避する方が良いでしょう。



3つの解決策があります。



1.既製の3.3V 電源を購入します。



2. 5Vから3.3Vに低下する電圧レギュレータを備え既製のモジュールを購入します。 おそらくこれが最も便利なオプションです。



3. AMS1117コントローラと1つの22uFタンタルコンデンサから自分でモジュールを組み立てます。



私はしばしば3.3Vを必要とするため、3番目の項目を選択しました。欲張りで、電源に直接レギュレータを組み込むのが好きです。



AMS1117では、すべてが簡単です。テキストを入力すると、脚の電圧が左から右に向かって増加します:0(Gnd)、3.3V(Vout)、5V(Vin)。

ゼロと出力の間には、22mkFのタンタルコンデンサが必要です(したがって、指示に従って 、電解コンデンサを入れるとどうなりますか-私はチェックしませんでした)。 タンタルSMDコンデンサに加えてストリップ。 そのような野barさを絶対に意図していないSMDコンポーネントの少し巨大なはんだ付け:



画像







必ず出力電圧を確認してください。 3.3Vを大幅に下回る場合(たとえば、1.17V)、はんだ付け後にレギュレータを冷却し、接点を確認します。 コンデンサを22uF以上に配置すると、マルチメーターはより高い電圧を示す可能性があります。



なぜAMS1117なのか? 広く使用されています。 Arduino Unoでさえ、ほぼすべての場所で見つけることができます。原則として、AMS1117-5.0がかかります。

サイズや価格が似ているもの、さらに使いやすいものを知っている場合は、書いてください。



重要なポイント。 理由はわかりませんが、AMS1117は接続の品質について非常に不機嫌です。 連絡先は信頼できるものでなければなりません。 より良い-はんだ付け。 それ以外の場合、テストでは3.3Vを生成しますが、負荷がかかっても何も生成しません。



ESP8266の接続



モデル07を選択した理由は、干渉、機械的ストレスに対する保護、およびラジエーターとして機能する優れた金属スクリーンを備えているためです。 後者は、焦げたモジュールと単純に加熱されたモジュールの違いを提供します。 さらに、外部アンテナ用のジャックがあります。



チップを起動するには、10kΩの抵抗を介してVCCとCH_Pを接続する必要があります。 これが当てはまらない場合は、1〜20kOhmの範囲のいずれかで十分です。 さらに、特にモデル07では、GPIO15(GNDに最も近いもの)が「地上」にある必要があります(これは、接続が他方にあるため、写真では見えません)。







次に、USB-UARTアダプターを取り、3.3Vに切り替えて、RXをTXに、TXをRXに、GNDをグランドに接続します(これがないと不安定な伝送になります)。 3.3Vに切り替えられない場合は、最も単純な抵抗分圧器を使用できます 。ESPRXを1kΩ抵抗を介してTXアダプターに接続し、ESP RXを2kΩを介してグランドに接続します。 3.3Vと5Vを接続するには、もっと複雑で信頼性の高い方法たくさんありますが、この場合は可能です。







そして、目的のCOMポートに9600の速度で接続します(デバイスマネージャーで確認できます)。





私はSecureCRTを使用しています。Puttyも大丈夫です。Linuxの愛好家は、何をすべきか、どこで見るべきかをすでに知っています。





(AT + RSTはチップをリロードします)



何も起こらない場合-電源を切ります-とにかく何も起こらない場合-TX / RXの対応を確認し、それらを並べ替えるか、チップにはんだ付けします。



時々、チップは実験中にフリーズし、その後、アダプターを切断する(USBから引き抜くなど)ことを含めて、電源を切る必要があります。



アダプターを使用したトリックがUSBポートをハングさせることがあります。 別のUSBポートを一時的な解決策として使用できますが、通常はコンピューターを再起動することをお勧めします。



これにより、COMポートの番号が変更される場合があります。 Linuxでは、これはudevで解決できます。



テキストの代わりにゴミが来る場合は、速度設定を確認してください。 一部の古いチップは115200で動作します。



チップは最初は熱くなりますが、チップが本当に熱くて温まり続けている場合は、オフにしてすべての接続を確認してください。 そのため、+ 3.3Vがケースに届かないため、5Vがまったく届かないため、アダプタの「グランド」はチップの「グランド」に接続されます。 金属スクリーンを備えたモデルは燃やすのが非常に難しく(不可能はありません)、スクリーンのないモデルについて文句を言い、小さなミスでもチップの寿命の最後になる可能性があると言います。 しかし、私はそれをチェックしませんでした。



ファームウェア



私の選択はNodeMCUです。 彼女はメモリとハードウェアのサポートに問題がありますが、これはコードの単純さとデバッグの容易さによって繰り返し支払われます。



NodeMCUフラッシャーLuaLoaderも必要になります(後者はオプションです。このファームウェアを操作する他のクライアントがあります)。





チップの電源を切ります。 GPIO0をグランドに接続し、チップをオンにします。







何も起こらず、MAC / STA MACフィールドが空の場合、GPIO0が地面にあることを再度確認します。

ファームウェアが起動してもクラッシュした場合-何らかの理由でFT232RLでチップのフラッシュを拒否しましたが、 PL2303HXで576000の速度でフラッシュされました。このバージョンのPL2303HXには3.3Vスイッチがありません。プラスチックケースを開けてワイヤを5Vから3.3Vにはんだ付けする必要があります。5つの出力 (3.3、5、TX、RX、Gnd)のオプションがあります





注:STA MACが変更されました。 私はフラッシャーが間違ってそれを示したと思うが、検証が必要です。



エネルギーと神経を節約するために、既製または半完成バージョンを使用できます。



便利な配線を備えた使い捨てアダプターがあります。

ファームウェアの準備できています

シンプルなキットより複雑 オプションがあります-ESP8266-EVB

既製のUSBアダプタ-NodeMCU開発ボードがあります。 その下では、いくつかのシールドでさえもそうです。



私のように既成のソリューションがあまり好きではない場合、経験は燃焼したコンポーネントの数に正比例すると言われているため、すべてを余裕を持って取っておくことをお勧めします。



コメントからの貴重なリンク:

NodeMCUカスタムビルド

Arduino IDEを使用したESP8266-EVBのプログラミング

タンタルコンデンサの説明。



更新:本文の「プログラマー」を「USB-UARTアダプター」または単に「アダプター」に置き換えました。 私の経験では、「プログラマー」という用語がより頻繁に使用されますが、おそらく「USB-UARTアダプター」の方が正確でしょう。



All Articles