- ESP8285の紹介
- ESP開発ボードの回路図
- ESP8285開発ボードの製造
- PCBWayからPCBを注文する
- ESP8285ボードの組み立てとプログラミング
- シンプルなLED点滅スケッチによるテスト
- ESP8285でのWebサーバースケッチのテスト
EspressifのESPコントローラーは、IoTベースの設計で広く普及している選択肢になりつつあります。すでに市場に出回っているESPモジュールや開発ボードには多くの種類があり、その中でNodeMCUが最も人気があります。それとは別に、ESP-12E、ESP01も人気のある選択肢です。ただし、設計をより柔軟でコンパクトにしたい場合は、すぐに利用できるモジュールを直接使用するのではなく、チップレベルから独自のESPモジュールを設計する必要がある可能性があります。この記事では、モジュールを使用せずにESPコントローラー(ESP8285)を直接使用するための回路とPCBを設計する方法を学習します。
このプロジェクトでは、非常に興味深い小さなチップであるESP8285を使用しました。これは、IoT(モノのインターネット)とディープスリープ機能を備えた小さなSoC(システムオンチップ)です。それは彼の兄ESP8266と同じパワーを持っており、ボーナスとして、それは多くのGPIOを備えた内蔵の1MBフラッシュメモリが付属しています。代わりにESP8266を使用することもできますが、この記事で説明する内容のほとんどは同じです。
前回の記事では、例として同じESP8285チップを使用して、2.4GHz用に独自のPCBアンテナを設計する方法を示しました。その記事を読んで、ESP8266 / ESP8285のアンテナ設計について学ぶことができます。
したがって、この記事では、すべての回路がどのように機能するかについて説明し、最後にすべてを説明するビデオがあります。また、ESPモジュール設計のためにPCBWayからPCBボードを設計および注文するための完全な手順についても詳しく説明しました。
ESP8285の紹介
この用途の広いESP8285チップについて知らない場合は、機能リストを使用して簡単に説明します。ESP8285は、1MフラッシュとRAMを内蔵した小さなチップで、ESP8286、ESP-01モジュールと非常によく似ていますが、内部フラッシュメモリにより、はるかにコンパクトで安価になっています。
このチップにはテンシリカのL106ダイアモンド32ビットコアプロセッサが搭載されており、ESP8266にも同じことが言えます。そのため、ESP8266のすべてのコードを変更せずにこのチップに直接フラッシュでき、ESp8266と同じネットワークスタックを備えています。 。
ESP8285は、アンテナスイッチ、RFバラン、パワーアンプ、低ノイズ受信アンプ、フィルター、および電力管理モジュールを統合します。コンパクトな設計により、PCBサイズが最小限に抑えられ、必要な外部回路も最小限に抑えられます。このICについて詳しく知りたい場合は、EspressifSystemsでデバイスのESP8285のデータシートをいつでも確認できます。
ESP開発ボードの回路図
回路は非常に単純で、理解を深めるために分解しました。以下のESP回路図は、回路全体を示しています。8つの機能ブロックがあることがわかるので、それぞれについて説明し、すべてのブロックについて説明します。
ESP8285 SOC:
プロジェクトの中心はESP8285SoCであり、すべてのGPIOとその他の必要な接続がここで定義されています。
パワーフィルター:このICには7つの電源ピンがあります。最初はADCとIOの電源ピンです。それらを一緒に短絡し、47uFのパワーフィルタコンデンサと0.1uFのデカップリングコンデンサを使用して3.3VDC入力をフィルタリングしました。
PIフィルター: PIフィルターはこの設計の最も重要なブロックの1つです。これは、RFアンプとLNAに電力を供給する役割を果たし、内部または外部のノイズがこのセクションを説明する可能性があるためです。そのため、RFセクションは機能しません。 。そのため、LNAセクションのローパスフィルターは非常に重要です。リンクをたどると、PIフィルターの詳細を学ぶことができます。
水晶発振器: 40MHzの水晶発振器はESP8285 SoCのクロックソースとして機能し、データシートで推奨されているように10pFのデカップリングコンデンサが追加されました。
LNAセクション:この回路のもう1つの最も重要なセクションは、LNAセクションです。これは、PCBアンテナがESPの物理ピンに接続される場所です。データシートで推奨されているように、5.6pFのコンデンサが使用されており、マッチング回路として問題なく動作するはずです。しかし、マッチング回路の異議が機能する場合に備えて、アンテナインピーダンスに一致するように値を微調整するために、いつでもいくつかのインダクターを挿入できるかのように、2つのインダクターに2つのプレースホルダーを追加しました。
LNAセクションには、UFLコネクタ付きの2つのPCBジャンパもあります。PCBアンテナはデフォルトで設定されていますが、アプリケーションでもう少し範囲が必要な場合は、PCBジャンパーのはんだを外し、UFLコネクタのジャンパーを短くして、そのように外部アンテナを接続できます。
バッテリー入力コネクター:
上記のように、3種類のバッテリーコネクタを並列に配置しました。1つが見つからなかった場合は、いつでも別のコネクタを配置できるためです。
GPIOヘッダーとプログラミングヘッダー:
GPIOヘッダーはGPIOピンにアクセスするためにあり、プログラミングヘッダーはメインSocをフラッシュするためにあります。
自動リセット回路:
このブロックでは、Arduino IDEのアップロードボタンを押すと、2つのNPNトランジスタMMBT2222Aが自動リセット回路を形成します。Pythonツールが呼び出されます。このPythonツールはESPデバイスのフラッシュツールです。このpiツールはGPIOピンをグランドに保持しながらボードをリセットするようにUARTコンバータに信号を送ります。その後、アップロードと検証のプロセスが始まります。
電源LED、オンボードLED、および分圧器:
電源LED:電源LEDにはPCBジャンパーがあります。このボードをバッテリー駆動のアプリケーションとして使用している場合は、このジャンパーをDEはんだ付けして、かなりの電力を節約できます。
オンボードLED:市場に出回っている多くの開発ボードにはオンボードLEDがあり、このボードも例外ではありません。ICのGPIO16はオンボードLEDに接続されています。それに加えて、0オームの抵抗を設定することで0オームの抵抗のプレースホルダーがあり、GPIO16をリセットに接続しています。ご存知かもしれませんが、これはESPをディープスリープモードにするための非常に重要なステップです。
分圧器:ご存知かもしれませんが、ADCの最大入力電圧は1Vです。したがって、入力の範囲を3.3Vに変更するには、分圧器を使用します。いつでもピンと直列に抵抗を追加して範囲を5Vに変更できるように構成されています。
HT7333 LDO:
LDOまたは低ドロップアウト電圧レギュレーターを使用して、バッテリーからESP8285への電圧を最小限の電力損失で調整します。
HT7333 LDOの最大入力電圧は12Vで、バッテリー電圧を3.3Vに変換するために使用されます。これは、静止電流が非常に低いデバイスであるため、このHT7333LDOを選択しました。4.7uFのデカップリングコンデンサは、LDOを安定させるために使用されます。
プログラミングモードのプッシュボタン:
押しボタンはGPIO0に接続されています。UARTコンバータにRTSまたはDTRピンがない場合は、この押しボタンを使用してGPIO0を手動でグランドに引き下げることができます。
プルアップおよびプルダウン抵抗:
データシートで推奨されているように、プルアップ抵抗とプルダウン抵抗があります。
それ以外に、PCBを設計する際には多くの設計基準とガイドラインが守られました。これについて詳しく知りたい場合は、ESP8266のハードウェア設計ガイドを参照してください。
ESP8285開発ボードの製造
回路図が完成し、PCBのレイアウトに進むことができます。PCBの作成にはEaglePCB設計ソフトウェアを使用しましたが、お好みのソフトウェアでPCBを設計できます。完成したPCBデザインはこんな感じ。
BOMファイルとガーバーファイルは、次のリンクからダウンロードできます。
- ESP8282Dev-Boardガーバーファイル
- ESP8282 Dev-Board BOM
これでデザインの準備ができたので、PCBを使用して製造する時が来ました。これを行うには、以下の手順に従ってください。
PCBWayからPCBを注文する
ステップ1: https : //www.pcbway.com/にアクセスし、初めての場合はサインアップします。次に、[PCBプロトタイプ]タブで、PCBの寸法、層の数、および必要なPCBの数を入力します。
ステップ2: [今すぐ見積もる]ボタンをクリックして続行します。ボードタイプ、レイヤー、PCBの材料、厚さなど、いくつかの追加パラメーターを設定するページが表示されます。これらのほとんどはデフォルトで選択されています。特定のパラメーターを選択する場合は、次を選択できます。それを聞いて。
ご覧のとおり、PCBは黒である必要がありました。そのため、ソルダーマスクの色のセクションで黒を選択しました。
ステップ3:最後のステップは、ガーバーファイルをアップロードして支払いを続行することです。プロセスがスムーズであることを確認するために、PCBWAYは、支払いを続行する前に、ガーバーファイルが有効かどうかを確認します。このようにして、PCBが製造に適していて、コミットされたとおりに到達することを確認できます。
ESP8285ボードの組み立てとプログラミング
数日後、PCBはきちんとしたパッケージボックスに入れられ、PCBの品質はいつものように良好でした。ボードの最上層と最下層を以下に示します。
ボードを受け取った後、すぐにボードのはんだ付けを開始しました。メインCPUのはんだ付けには、熱風はんだ付けステーションと大量のはんだフラックスを使用しました。PCB上の他のコンポーネントは、はんだごてを介してはんだ付けされています。組み立てられたモジュールを以下に示します。
それが完了したら、信頼できるFTDIモジュールを接続して、スケッチ、接続されたピン、および以下に示すボードの画像をアップロードして、ボードをテストしました。
ESP8285開発ボード FTDIモジュール
3.3V- > 3.3V
Tx- > Rx
Rx- > Tx
DTR- > DTR
RST- > RST
GND- > GND
必要な接続がすべて完了したら、 [ ツール] > [ボード] > [汎用ESP8285モジュール] から汎用ESP8285ボードを選択して ArduinoIDEをセットアップしました 。
シンプルなLED点滅スケッチによるテスト
次に、LEDを点滅させてボードをテストします。そのために、次のコードを使用しました。
/ * ESP8285点滅ESP828285モジュールの青色LEDを点滅* / #define LED_PIN 16 //点滅するLEDピンを定義voidsetup(){pinMode(LED_PIN、OUTPUT); // LEDピンを出力として初期化します} //ループ関数は永久に何度も何度も実行されますvoidloop(){digitalWrite(LED_PIN、LOW); // LEDをオンにします(LOWは電圧レベルであることに注意してください)delay(1000); // 2番目のdigitalWrite(LED_PIN、HIGH);を待ちます //電圧をHIGHにすることでLEDをオフにしますdelay(1000); // 2秒間待ちます}
コードは非常に単純です。最初にこのボードのLEDピンを定義し、それはGPIO 16にあります。次に、セットアップセクションでそのピンを出力として設定しました。そして最後に、ループセクションで、1秒の遅延を挟んでピンのオンとオフを切り替えました。
ESP8285でのWebサーバースケッチのテスト
それが正常に機能したら、ESP8266WebServerの例からHelloServerスケッチをテストします。ほとんどのコードはesp8285チップと互換性があるため、ESP8266の例を使用しています。サンプルコードは、このページの下部にもあります。
このコードも非常に単純です。まず、必要なすべてのライブラリを定義する必要があります。
#include
次に、ホットスポットの名前とパスワードを入力する必要があります。
#ifndef STASSID #define STASSID "your-ssid" #define STAPSK "your-password" #endif const char * ssid = STASSID; const char * password = STAPSK;
次に、ESP8266WebServerオブジェクトを定義する必要があります。ここでの例では、サーバー(80)として定義しています。(80)はポート番号です。
次に、LEDのピンを定義する必要があります。私の場合はピン番号16でした。
const int led = 16;
次に、 handleRoot() 関数が定義されます。この関数は、ブラウザからIPアドレスを呼び出すときに呼び出されます。
void handleRoot(){digitalWrite(led、1); server.send(200、 "text / plain"、 "hello from esp8266!"); digitalWrite(led、0); }
次はセットアップ機能です。次のような必要なパラメータをすべて定義する必要があると聞きました。
pinMode(led、OUTPUT); //私たちは、定義した主導出力Serial.begin(115200)などのピンを、// 115200ボーのWiFi.mode(WIFI_STA);でシリアル接続を開始しました。// Wi-FiモードをステーションWiFi.begin(ssid、password);として設定しました。次に、wifi接続Serial.println( "");を開始します。//この行は、追加のスペースを提供しますwhile(WiFi.status()!= WL_CONNECTED){delay(500); Serial.print( "。"); } / * whileループでは、ESPがホットスポットに接続できる接続ステータスをテストしています。ループはブレーキをかけます* / Serial.println( ""); Serial.print( "接続済み"); Serial.println(ssid); Serial.print( "IPアドレス:"); Serial.println(WiFi.localIP());
次に、接続されているSSIDの名前とIPアドレスをシリアルモニターウィンドウに出力します。
server.on( "/"、handleRoot); //サーバーオブジェクトのonメソッドは、ルート関数server.on( "/ inline"、(){server.send(200、 "text / plain"、 "これも同様に機能します");})を処理するために呼び出されます。; //ここでも、/ inlineサンプルserver.begin();のonメソッドを呼び出しました。//次に、beginメソッドを使用してサーバーを起動しますSerial.println( "HTTP server Started"); //そして最後にシリアルモニターにステートメントを出力します。} //セットアップ関数の終了をマークしますvoidloop(void){server.handleClient(); }
ループ関数では、espを適切に操作するために handleClient() メソッドを 呼び出しました 。
これが完了すると、ESP8285ボードはWebサーバーに接続するのに少し時間がかかり、期待どおりに正常に機能し、このプロジェクトの終わりを示しました。
ボードの完全な動作は、以下にリンクされているビデオでも見つけることができます。この記事を楽しんで、そこから何か新しいことを学んだことを願っています。疑問がある場合は、以下のコメントで質問するか、フォーラムを使用して詳細なディスカッションを行うことができます。