LinuxでMongooseEmbeddedWebServerを使用してESP8266チップ用のネットワークアプリケーションの開発を開始する方法について説明しましょう。私はUbuntuを使用しますが、すべてのものをLinuxディストリビューションに簡単に適合させることができます。
この記事を読み始めてから、Linux、ESP8266、Mongooseについて知っていると思います。短いイントロだけです。
ESP8266
Expressifによって開発されたWiFiが統合された安価なチップ。詳細については、公式サイトをご覧ください。
Mongooseは、Cesantaによって開発された40kB未満のコアを備えた完全なマルチプロトコルライブラリです。 Cesantaサイトでそれに関するモード情報を見つけてください。
Linux
本当に? :-)
ESP8266をコンピューターに接続する
さて、最初に行う必要があるのは、ESP8266チップをコンピューターに接続することです。いくつかの方法でそれを行うことができます。
NodeMCU
NodeMCUモジュールがあり、オンボードUART-USBコンバーターを使用している場合は、モジュールをUSB経由でコンピューターに接続するだけです。キス!
ESPモジュールに内部UART-USBコンバータがない場合は、外部コンバータが必要です。それらはたくさんあります-ただググってください。
Linux(基本的にはほとんど)で動作し、3.3Vピンを備えたものを選択してください。ほとんどのUART-USBコンバーターには3.3Vと5Vの両方のピンがありますが、ESPを5Vピンに接続しないでください。このデバイスは耐電圧性がなく、モジュールが焼損する可能性があります。
次に接続します(ESP->コンバーター):
VCC-> 3.3V
GND-> GND
RX0-> TX (RXではない)
TX0-> RX
CH_PD-> 3.3V
UART-USBコンバーターはないが、3.3VピンのArduinoがある場合は、ESPの接続に簡単に使用できます:
- USB経由でArduinoをコンピューターに接続
- ArduinoのRESETをGNDに接続します。UART-USBモジュールのみが必要なため、ホストプロセッサを無効にする必要があります
- ESPに接続(ESP-> Arduino)
- VCC-> 3.3V
- GND-> GND
- RX0-> RX0 (TXではない)
- TX0-> TX
- CH_PD-> 3.3V
接続に問題がない場合、ESPは新しいttyデバイスとして表示されます。通常、UART-USBコンバーターを介して接続されたNodeMCUとESPは/ dev / ttyUSBx(x =0、1、2など)として表示され、Arduinoのバージョンは/ dev / ttyACMx(x =0、1、2など)として表示されます
コマンドdmesg|を使用できます。 grep usb デバイスを見つけるために。
たとえば、NodeMCUを接続すると、次のように表示されます。
[ 1496.765417] usb 2-3.3: new full-speed USB device number 15 using xhci_hcd
[ 1496.867729] usb 2-3.3: New USB device found, idVendor=10c4, idProduct=ea60
[ 1496.867736] usb 2-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1496.867740] usb 2-3.3: Product: CP2102 USB to UART Bridge Controller
[ 1496.867743] usb 2-3.3: Manufacturer: Silicon Labs
[ 1496.867745] usb 2-3.3: SerialNumber: 4202
[ 1497.900384] usbcore: registered new interface driver usbserial
[ 1497.900423] usbcore: registered new interface driver usbserial_generic
[ 1497.900457] usbserial: USB Serial support registered for generic
[ 1497.903897] usbcore: registered new interface driver cp210x
[ 1497.903989] usbserial: USB Serial support registered for cp210x
[ 1497.904382] usb 2-3.3: cp210x converter now attached to ttyUSB0
ご覧のとおり、NodeMCUは / dev / ttyUSB0として利用できるようになりました。 。
最終チェックとして、任意の端末を使用して新しいデバイスに接続します。 picocomを使用します。軽量端末です。 Ubuntuでは、次のコマンドでインストールできます:
sudo apt install picocom
試してみる:
picocom /dev/ttyUSB0 -b 115200
すべて問題がなければ、「端末の準備ができました」と表示されます。 」をpicocom出力に表示します。
picocomが「アクセス拒否」と表示した場合、これは通常、現在のユーザーがダイヤルアウトのメンバーではないことを意味します。 グループ:Linuxでは、シリアルポートにアクセスするには、ユーザーはこのグループのメンバーである必要があります。
実行:
sudo usermod -aG docker $USER
コマンド、ログアウト、ログインし直して、ESPへの接続を再試行してください。 「アクセスが拒否されました」は削除する必要があります。
ここから最新のマングースリリースをダウンロードします。
Mongooseには、ESP8266およびRTOSSDKの例が付属しています。ここGitHubにあります。
注:ESP8266には2つのバージョンのSDKがあります。 1つ目は非OSで、2つ目はRTOSベースです。この記事では後者を使用します。それらの違いを見つけるには、グーグルで検索するか、公式フォーラムでこの回答を読んでください。
例を作成するには、次の2つのオプションがあります。
- Dockerとすぐに使用できるDockerイメージを使用する
- コンピューターにSDKとツールチェーンをインストールします
Dockerの使用
これはもっと簡単で、私はより良い方法を信じています。 CesantaのDockerイメージには、ESP用のMongooseを構築するために必要なすべてのものが含まれています(Mongooseだけでなく、ESPアプリケーションも含まれます)。そのため、ローカルにインストールする必要はなく、コードを友人や同僚と簡単に共有できるため、ファームウェアを構築してまったく同じ結果を得ることができます。
Dockerインストールガイドはこちらから入手できます。試してみてください。これは本当に簡単です。Linuxにdockerリポジトリを追加し、 aptを使用して通常のプログラムとしてインストールするだけです。 。
dockerをインストールしたら、mongoose / examples / ESP8266_RTOSフォルダーに移動し、 build.shを実行します。
最初のビルドで、Dockerは必要なイメージをダウンロードします。インターネットチャネルによっては、時間がかかる場合があります。ただし、./ binフォルダーでbuild.shが完了すると、2つの.binファイルが見つかります。
それがファームウェアです。あなたはこれをしました!
Dockerが単純すぎる場合、または何らかの理由でローカルにインストールされたツールを使用したい場合は、それも実行できます。
少し難しくて退屈ですが、それほど複雑なことはありません。特に、Cesantaがあなたのためにいくつかのツールを構築し、ソースからそれらを構築する必要がないことを考えると。
仕組みは次のとおりです:
- このリポジトリからESPRTOSSDKのクローンを作成します。サンプルのmakefileは、/ opt / ESP8266_RTOS_SDKフォルダーでそれを検索します。したがって、サンプルをビルドする前に、クローンリポジトリをこのフォルダーに配置するか、そのパスを変更できます(以下を参照)。
- このパブリックフォルダからxtensa-lx106-elf.tar.bz2をダウンロードします。
- xtensa-lx106-elf.tar.bz2ファイルを解凍します。たとえば、/ optフォルダに:
sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C / opt
- PATH変数を変更します。たとえば、ツールチェーンを/ optフォルダーに解凍した場合は、次のコマンドを使用します。
export PATH =/ opt / xtensa-lx106-elf / bin:$ PATH
(また、システムの再起動後も変更を保持するために、このコマンドを.bashrcまたは.profileフォルダーに追加することをお勧めします)
今すぐ実行:
$ export SDK_PATH=/opt/ESP8266_RTOS_SDK # Put your path to SDK here
$ export BIN_PATH=./bin; mkdir ./bin
$ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0
これで、すべてが正しくインストールされていれば、ファームウェアは ./ binにあります。 フォルダ
もう一度やりました!
ESP8266をフラッシュするために利用できるツールはたくさんあります。 esptoolを使用します 。これを使用するには、このリポジトリのクローンを作成し、PATH変数にesptool.pyへのパスを追加します(これはオプションであり、便利です)。
ここで、まだ接続されている場合はpicocomを切断し(ヒント:Ctrl + Aを押し、Ctrl + Dを押して終了します)、実行します:
esptool.py --port /dev/ttyUSB0 --baud 230400 \
write_flash --flash_mode=dio --flash_size=4m \
0x00000 ${BIN_PATH}/eagle.flash.bin \
0x20000 ${BIN_PATH}/eagle.irom0text.bin \
0x7e000 ${SDK_PATH}/bin/esp_init_data_default.bin
重要な注意: モジュールがNodeMCUでない場合は、フラッシュする前にGPIO0を接地する必要があります(GPIO0を接地すると、モジュールがフラッシュモードに切り替わります)。点滅した後、GPIO0をアースから外し、ESPを再起動します。
エラーが発生しなかった場合は、次のような出力が表示されます。
Connecting...
Erasing flash...
Took 0.58s to erase flash block
Wrote 35840 bytes at 0x00000000 in 1.8 seconds (157.5 kbit/s)...
Erasing flash...
Took 2.02s to erase flash block
Wrote 301056 bytes at 0x00020000 in 15.4 seconds (156.7 kbit/s)...
Erasing flash...
Took 0.11s to erase flash block
Wrote 1024 bytes at 0x0007e000 in 0.1 seconds (163.5 kbit/s)...
Leaving…
準備!これで、デバイスがファームウェアでフラッシュされます。
これで、「マングース」WiFiネットワークが表示されるはずです。この例では、APを設定します。パスワード「Mongoose」を使用して接続し、http://192.168.4.1/に移動すると、「Hello、world」グリーティングページが表示されます。
おめでとう! ESP8266でWebサーバーを実行するだけです!
次のステップはあなた次第です。説明した例を出発点として使用できます。
そのuser_main.cを見てください ファイル。 WiFiアクセスポイントを設定し、Webサーバーを起動します。 APモードをステーションモードに簡単に変更して(そしてWiFiネットワークに接続して)、MongooseAPIを使用して必要なものを実装できます。これはMongooseを使用する一般的な方法であるため、別のMongooseの例を使用してプログラムを構築し、ESPデバイスにhttp、tcp、udp、mqttなどの機能を追加できます。
Espressifドキュメント(たとえば、これ)を使用して、ESP8266 WiFiモジュール(WiFiのみではない)をルール化する方法と、Mongooseドキュメントを使用してMongoose機能を検出します。
パンクは死んでいない!