電子デバイスとモジュール間のワイヤレス通信は、モノのインターネットの世界に「適合」させるために非常に重要です。HTTPプロトコルとHTML言語により、世界中のどこにでもWeb経由でデータを転送できるようになりました。ArduinoでWi-Fiを使用するいくつかのプロジェクトについてはすでに説明しました。はじめに、それらをご覧ください。
- ArduinoとESP8266WiFiモジュールを使用した電子メールの送信
- Arduinoを使用したWiFi制御ロボット
- ArduinoとWi-Fiを使用したRGBLEDの制御
このチュートリアルでは、ArduinoとWi-Fiモジュールを使用してデータをWebに送信するプログラムを構築しています。このために、最初にグローバルサーバーまたはローカルサーバーのいずれかのIPアドレスが必要です。ここでは、簡単でデモンストレーションの目的で、ローカルサーバーを使用しています。
必要なコンポーネント:
- Arduino UNO
- ESP8266Wi-Fiモジュール
- USBケーブル
- 接続線
- ラップトップ
- 電源
Wi-FiモジュールESP8266:
回路接続:
「ArduinoからWebへのポストデータ」の回路図を以下に示します。主にArduinoとESP8266Wi-Fiモジュールが必要 です。ESP8266のVccピンとGNDピンは3.3Vに直接接続され、ArduinoのGNDとCH_PDも3.3Vに接続されています。ESP8266のTxピンとRxピンは、Arduinoのピン2と3に直接接続されています。ソフトウェアシリアルライブラリは、Arduinoのピン2と3でシリアル通信を可能にするために使用されます。ESP8266Wi-FiモジュールのArduinoへのインターフェースについてはすでに詳しく説明しました。
ここでソフトウェアシリアルライブラリを使用することにより、ピン2と3でのシリアル通信を許可し、それぞれRxとTxにしました。デフォルトでは、Arduinoのピン0と1がシリアル通信に使用されますが、SoftwareSerialライブラリを使用することで、Arduinoの他のデジタルピンでのシリアル通信を許可できます。
注:シリアルモニターでESP8266の応答を監視するには、ArduinoIDEのシリアルモニターを開いてください。
作業説明:
まず、ネットワーク接続のためにWi-FiモジュールをWi-Fiルーターに接続する必要があります。次に、ローカルサーバーを構成し、データをWebに送信して、最後に接続を閉じます。このプロセスとコマンドは、以下の手順で説明されています。
1.まず、 AT コマンドを送信してWi-Fiモジュールをテストする必要があります。これにより、 OK を含む応答が返されます。
2.この後、コマンド AT + CWMODE = mode_id を使用してモードを選択する必要があります。モードID = 3を使用しました。モードID:
1 =ステーションモード(クライアント)
2 = APモード(ホスト)
3 = AP +ステーションモード(はい、ESP8266にはデュアルモードがあります!)
3. ESP8266はデフォルトで以前に利用可能なWi-Fiネットワークに自動接続されているため、コマンド AT + CWQAP を使用して、以前に接続されたWi-FiネットワークからWi-Fiモジュールを切断する必要があります。
4.その後、ユーザーは AT + RST コマンドを使用してモジュールをリセットできます。このステップはオプションです。
5.次に、指定されたコマンドを使用してESP8266をWi-Fiルーターに接続する必要があります
6.次に、指定されたコマンドを使用してIPアドレスを取得します。
IPアドレスを返します。
7. AT + CIPMUX = 1 を使用してマルチプレックスモードを有効にします(複数接続の場合は1、単一接続の場合は0)。
8. AT + CIPSERVER = 1、port_no (ポートは80の場合があります)を使用して、ESP8266をサーバーとして構成します。これでWi-Fiの準備が整いました。ここで、「1」はサーバーの作成に使用され、「0」はサーバーの削除に使用されます。
9.これで、指定されたコマンドを使用して、ユーザーはローカルで作成されたサーバーにデータを送信できます。
Id = ID番号 送信接続の
長さ=データの最大長は2kbです
10. IDと長さをサーバーに送信した後、次のようなデータを送信する必要があります: Serial.println( "[email protected]");
11.データを送信した後、指定されたコマンドで接続を閉じる必要があります。
これで、データがローカルサーバーに送信されました。
12.次に、WebブラウザのアドレスバーにIPアドレスを入力し、Enterキーを押します。これで、ユーザーは送信されたデータをWebページで見ることができます。
完全なプロセスについては、以下のビデオを確認してください。
プログラミングの手順:
1. PIN 2および3でのシリアル通信を可能にするSoftwareSerialライブラリを含め、いくつかの変数と文字列を宣言します。
#include
2.この後、目的のタスクを実行するためのいくつかの関数を定義する必要があります。
設定() 関数、我々としてESP8266ための作り付けのシリアルUART通信初期化 client.begin(9600)。 9600のボーレートで。
void setup(){Serial.begin(9600); client.begin(9600); wifi_init(); Serial.println( "システムレディ.."); }
3. wifi_init() 関数では、リセット、モードの設定、ルーターへの接続、接続の構成などのコマンドを送信して、wifiモジュールを初期化します。これらのコマンドについても、上記の説明の部分で説明しました。
void wifi_init(){connect_wifi( "AT"、100); connect_wifi( "AT + CWMODE = 3"、100); connect_wifi( "AT + CWQAP"、100); connect_wifi( "AT + RST"、5000);……………….。
4. connect_wifi() 関数では、コマンドデータをESP8266に送信してから、ESP8266Wi-Fiモジュールからの応答を読み取ります。
void connect_wifi(String cmd、int t){int temp = 0、i = 0; while(1){Serial.println(cmd);……………….。
5. sendwebdata() 関数は、ローカルサーバーまたはWebページにデータを送信するために使用されます。
void sendwebdata(String webPage){int ii = 0; while(1){unsigned int l = webPage.length(); Serial.print( "AT + CIPSEND = 0、"); client.print( "AT + CIPSEND = 0、");……………….。
6. void send() 関数は、 sendwebdata() 関数にデータ文字列を送信するために使用されます。それはさらにウェブページに送られます。
void Send(){webpage = "
サーキットダイジェストへようこそ
"; sendwebdata(webpage); webpage = name; webpage + = dat;…………………..。7. get_ip() 関数は、ローカルで作成されたサーバーのIPアドレスを取得するために使用されます。
8. void loop() 関数では、ページを更新するための命令をユーザーに送信し、サーバーが接続されているかどうかを確認します。ユーザーがウェブページを更新またはリクエストすると、データは同じIPアドレスに自動的に送信されます。
void loop(){k = 0; Serial.println( "ページを更新してください"); while(k <1000)…………….。
このプロセスを使用して、ArduinoからWebページまで、室温と湿度、時計の時刻、GPS座標、心拍数などのデータを表示できます。