ESP32 esp-idf eclipse CentOS7 build error

CentOS7 で、esp-idf プロジェクトを eclipseでビルドしようとすると、エラーになりました。

esp-idf の eclipse (CentOS7) へのインストールは、下記手順で行いました。
https://docs.espressif.com/projects/esp-idf/en/latest/get-started/eclipse-setup.html

試しに、esp/esp-idf/examples/bluetooth/a2dp_sink を
eclipse にインポートしてビルドすると下記エラーになります。
なんで、またエラーになるの? と言う気持ちですが、

aptx-encode aptx-decode のプログラムサンプル

aptx-decode のプログラムサンプルを探していましたが、
libopenaptx が公開れていました。

https://github.com/pali/libopenaptx

aptx,aptx-hd の Encode は公開されているようですが、Decode のほうは、
どうやら、LDAC と同じく 非公開で、研究のための使用に限定されるような記述も何処かで、見かけたので注意が必要ですが。

This is Open Source implementation of Audio Processing Technology codec (aptX)
derived from ffmpeg 4.0 project and licensed under LGPLv2.1+.
ともあるので、どちらが正しいのかわかりません。

仕方がないので、おんちゃんは勉強のつもりでダウンロードして、CentOS7 Eclipseでビルドしてみました。

ESP32 esp-idf Bluetooth I2s Audio Examples

ESP32 esp-idf の examples の中に、Bluetooth のA2DP(Advanced Audio Distribution Profile:高度オーディオ配信プロファイル) を
使ったサンプルがあるので、それを試してみました。

 esp-idf>examples>bluetooth>a2dp_sink
上記、意味合いは、a2dp の受信側 の意味のよう。

概要は、上記リンク先のページに説明がありますが、
Bluetooth のデバイスとして、オーディオストリームを受信して、外付けの I2sコーデック (PCM5102等) か、内臓のDACに出力するとの事です。

其処の所の設定は、make menuconfig で出来ました。
例により、下記手順で、 
1. esp-idf/examples/bluetoooth/a2dp_sink  のディレクトリーを、自分の作業ディレクトリーへコピー
2. MSYS2 MinGW 32-bit ターミナルを起動して、上記の自分の作業ディレクトリーへ移動
$make menuconfig
   Serial flasher config --> Default serial poort = COMX に変更
   A2DP Examples Configuration --> ここで、外付け I2s,内臓 DACの指定、ピンの指定をする。
   exit
$make -j4
$make flash

3. スマホのBlutooth で接続して、音楽を流す。

後は、Eclipse にインポートして、プログラムを勉強します。

ESP32 esp-idf Eclipse でサンプルプログラムの確認。

ESP32 esp-idf Eclipse での開発環境ができたので、
WiFi Http Client のサンプルを、eclipse で試してみました。

プログラムは、git で入手した、esp-idf/examples 下に一杯あります。
取り敢えず、今回は、下記サンプルにしてみました。

esp-idf/examples/protocols/https_request (git hub のソース)

概要は、Wi-Fi クライアントで、ローカルのWi-Fi ルータに接続して、
インターネット上に公開せれているWebサーバーの HTML をダウンロードして、結果を、USB Serial で接続している、
PCのターミナルに表示する判りやすいサンプルプログラムです。

大雑把な手順は、
1. esp-idf/examples/protocols/https_request  のディレクトリーを、自分の作業ディレクトリーへコピー
2. MSYS2 MinGW 32-bit ターミナルを起動して、上記の自分の作業ディレクトリーへ移動
$make menuconfig
    ->  serial flash coonfig --> Default serial poort = COMX に変更
   exit
$make
3.Eclipse でプロジェクをインポート

ESP32 esp-idf Eclipse (Windows10+MSYS2) でのビルドエラー

ESP32 esp-idf を Eclipse (Windows10+MSYS2) 環境で出来るようにしてみました。

参考は、本家サイトの下記ページをしました。
https://docs.espressif.com/projects/esp-idf/en/latest/get-started/eclipse-setup.html

おんちゃんは、MSYS2(MinGW32) と esp-idf を別々にインストールしました。
先ず、 hello_world を MinGW32 でビルドできることを確認してから、
eclipse(eclipse-cpp-oxygen-2-win32) にインポートしました。

インポートの手順も、上記ページを参考にして行って、
プロジェクトのビルドを行いました。

ですが、一応コンパイルは通るのですが、最後の ELF を吐きだすリンクの所で
エラーになります。

 

アマゾンの最低の対応に、呆れました。

今日、アマゾンで、USB変換アダプターを注文したところ、本来欲しかった商品が他に出ていたので、こちらを改めて注文したいと思ったので、

注文してから、30分もしないうちに、先の注文のキャンセル依頼をしたのですが、キャンセルできないとの返事でした。

注文してから、直ぐにキャンセルしたので、商品の発送にも乗っていないのに、
出来ないのは、余りにも不親切か、利益に走っている会社ではないのか。

トップの人間の人間性が見て取れるのは、情けないばかり。

ESP32 gysfdmaxb Server Viwer CGI

ESP32 gysfdmaxb Server (GPS / Wi-Fi Http Server) から受信できる、GPSデータをCGIで受け取って、
Yahoo Map API を使って、ブラウザー上で、MAP 表示できるようにしてみました。
esp32_gps-view-181005-1.jpg

Yahoo MAP APIの使い方に関しては、
http://www.hanemaru.com/itemcolumn/11yolp001.html
を参考にさせて貰いました。ありがとうございました。

Perl Http Client のプログラムは、
http://www.geekpage.jp/programming/perl-network/simple-http-client.php
を参考にさせて貰いました。ありがとうございました。

使い方は、ESP32 gysfdmaxb Server と同じローカルネットワークに繋がった、PC(おんちゃんは、Windows10) に Apache を動作させて、
Apache の /cgi-bin/ ディレクトリー下に、今回の esp32_gps.cgi を設置します。

その後、同じ PC のブラウザーから、今度は、esp32_gps.cgi を実行すれば、OK です。
例 : http://localhost/cgi-bin/esp32_gps.cgi

そうすると、esp32_gps.cgi から、ESP32 gysfdmaxb Server の IP:192.168.1.91 へHTTP Client としてアクセスして、GPSデータを取り込んで、その位置情報を使って、Yahoo Map API を使って、現在位置の地図を、PCのブラウザーに表示します。

ESP32 gysfdmaxb Server (GPS / Wi-Fi Http Server)

ESP32 に、みちびきGPS gysfdmaxb を繋げて、GPS / Wi-FI http サーバーを作ってみました。

仕組みは、http://www.netosa.com/blog/2017/10/esp-wroom-02-wi-fi-lan.html と同じで、
但し、今回は、ESP32 を使っています。

使い方は、ローカルネットワーク上のPCのブラウザーから、ESP32 gysfdmaxb Server の IP:192.168.1.91
をブラウザーから、 http://192.168.1.91 と叩けば表示されます。
ESP32_gysfdmaxb_Server_resp-181005-1.jpg

回路図は、こちらです。
esp32-gysfdmaxb-server_2018.10.6.jpg

OpenCV3.4.2 Dnn Object Detection with TensorFlow Model

OpenCV3.4.2 dnn モジュールを使うと、TensorFlow の学習済みモデルを利用した、
Object Detection AP が簡単に出来ると言う事なので、試してみました。

参考ページは、こちらになります。
TensorFlow Object Detection API

おんちゃんは、入力をWebカメラ、USBカメラにしました。
Model は、MobileNet-SSD v2 / 2018_03_29 を使っています。

使った感想は、検出オブジェクトの重複があるようで、重複を削る所が足りないような気がします。
但し、CPU だけで、結構な速度が出るのは、関心しました。
もしかしたら、 OpenCV の dnn では、TensorFlow Lite の様なモデルの軽量化をしているのかもしれません。
後、Boxの枠ですが、画像ファイルだと大体出来ていますが、動画だと少し変です。おおんちゃんの
プログラムミスかもしれません。

以上です。コッホ!!

注) OpenCV3.4.2 以降を使ってください。古いバージョンだとエラーが出ます。

TensorFlow Lite Object Detection on PC(CentOS7)

公開されている、Object Detection API を TensorFlow Lite で書いてみました。

プログラムのベースは、 object_detection_tutorial.ipynblabel_image.py です。

使ったモデルは、こちらで公開されている、 ssd_mobilenet_v1_coco_2018_01_28 をダウンロードして、
下記ページに従って、
Running on mobile with TensorFlow Lite
ssd_mobilenet_v1_coco_2018_01_28 -> detect.tflite へ変換しました。

因みに、おんちゃんは、 CentOS7 に Python3.5 (IUS版) をインストールして、
その後、 TensorFlow を buzel でソースビルドを行っています。

Tensorflow Lite は、with XLA JIT support=y を指定して、Buzel でのソースビルドが必要です。
当初、Windows10 でCmake で試しみましたが、上記のオプションが指定できないので、
結局、CentOS7 になりました。

実行時の注意点は、vis_util.visualize_boxes_and_labels_on_image_array() のパラメータで
min_score_thresh=0.3 (default=0.5) にして、ボックスの表示を多くしています。
そうすると、ssd_mobilenet_v1_coco でも結構検出しているのが、目で見えるので、楽しいです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アイテム

  • esp32-gysfdmaxb-server_2018.10.6.jpg
  • ESP32_gysfdmaxb_Server_resp-181005-1.jpg
  • esp32_gps-view-181005-1.jpg
  • ESP-WROOM-02-G`PS-2017.10.21-1l.jpg
  • PIC32MX_hid_basic_moouse_bredboard2_2017.10.15.jpg
  • PIC32MX_hid_basic_moouse_bredboard1_2017.10.15.jpg
  • PIC32MX hid_basic_mouse_usart_pps-output-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pps-input-settings_2017_10_14.jpg
  • PIC32MX hid_basic_mouse_usart_pin-table_2017_10_12.jpg
  • PIC32MX hid_basic_mouse_usart_pin-diagram_2017_10_12.jpg

ウェブページ

サイトナビ