macsbug

Just another WordPress.com site

Archive for 12月 2016

Raytracing with ESP32

with 2 comments

ESP32 で レイトレーシング を試しました。         2016.12.27
ESP32 の 速度は どの位でしょうか?
ESP32 DEVKIT V1 と 2.4 inch 320×240 TFT SPI Display を使用しました。

結論:速度は ESP8266 160MHz の 2.5倍です。価格は ESP8266 の6倍です。
条件:「SPI接続」と「Adafruit_ILI9341.h」(速度が遅い) を使用。



.
抽画速度の比較。ESP32 は 14sec。ESP8266 160MHz は 33secです。


.
準備:
1. ESP32 DEVKIT V1:1720円 。 その後2800円台と非常に高いです。
_  メモ:ESP32 DEVKIT と NANO32 の 購入時は 電波が出ない状態になっています。
2. 2.4 inch 320×240 TFT Display:1125円 。
3. スケッチ: TFT22_raytracecbm80amiga氏に感謝。
_  スケッチの変更:GPIOの端子番号を接続したTFT の端子と合わせます。
_          #ifdef ESP8266 , #endif は不要ですので削除してください。

// CS,DC,SDI,SCK,RESET,SDO  // ESP32 Dev Module
Adafruit_ILI9341 display = Adafruit_ILI9341(13,14,27,26,12,25);

.
参考:YouTube
Raytracing on ESP8266 and ILI9341 LCD display ESP8266:今回の参考場所
Arduino raytracer rendering on 8 bit micro : Arduino 10min
Raytracing on Arduino and STM32 – speed comparison:Arduino vs STM32
Generic STM32 vs Arduino Pro Mini/Nano speed :STM32 vs Arduino


.
測定結果の数値:
条件:「SPI接続」と「Adafruit_ILI9341.h」(速度が遅い) を使用。
_   Raytracing は 1 Passを使用。

Type    sec
    ESP32      @ 160MHz  13
    ESP8266  @ 160MHz  33
    ESP8266  @  80MHz  65
    STM32     @  72MHz  52
    ATMEGA328         @ 16MHz  293
    Arduino Pro Mini  @ 16MHz  293

追記:2016.12.30 Arduino IDE ESP32 を Update 。
_  14sec が 13sec にアップ。ESP8266 160MHz との対比は 2.3 から 2.5倍
_  boards.txt に記載されている nano32.build.f_cpu=160000000L は
_  nano32.build.f_cpu=240000000L に変更されました。
.


表示を変える方法:球の個数や位置、素材等を変えられます。追記:2016.12.30
raytracer.h

 
#define NUM_SPHERES 4    // 球の個数
static const float spheres[] PROGMEM = {
// center, radius, material // center : 球の位置
  5,15,8,  5,  0,
 -6,12,4,  3,  0,
  1,10,2,  2,  1,
  0, 9,5,  1,  2
};

.
追記:2017.1.4: STM32F7 Raytracing が 0.62sec を達成し世界一最速です。
このサイトへの訪問者 clemente氏は、このRayTracing を STM32F7 を使用し
_ C++ と C に置き換えたとの事。そしてその速度は 320×240 で 0.62sec と
_ いう驚異的な結果が出ています。素晴らしいですね。是非 以下のサイト
_ をご覧ください。clementeさん ありがとうございました。
The Embedded Notes Blog:RayTracing per ESP32 e STM32F7!

YouTube:STM32F7 RayTracing:この速度を是非ご覧ください。
_ 一瞬で終わります。素晴らしいです。


.
感想:
ESP8266 を始めた理由:Arduino は速度遅くメモリーが少ない為 始めました。
_ Arduino Pro mini に対し 21倍、ESP8266 160MHz に対し 2.4倍でした。
_ この点では ESP8266 を選択した意味がありました。
_ ESP8266 に対し ESP32 は 少し 速くなり少々満足。でも160MHzしかない。
_ そして ESP32 の価格は ESP8266 の6倍で使用する価値は無くなりますね。
.
費用対効果:ESP32 は 2016年12月現在 2800円台です。 ESP8266は $5
_  という触れ込みから始まりましたが ESP32 は非常に高い価格です。
_  ebayやAliexpress を見ると一時的に安くなる業者もありますが
_  その後 並べた様に 高い価格になっています。これは価格を操作している
_  様にも見えます。
.
ラズパイと2.2 inch 320×240 TFT Display:ラズパイではSPI接続でビデオを
_ 表示する事が出来ています。
_ Learn on the fly:Quickly test an IL9341 2.2 inch 2.2″ SPI TFT display
.
条件:今回のスケッチは cbm80amiga氏の記事を使用した物です。これは
_ Arduino や STM32 でも比較できるハードとライブラリーという条件です。
_ 方法は「SPI接続」で ライブラリーは「Adafruit_ILI9341.h」を使用して
_ います。SPI接続である事と 速度がかなり遅いAdafruitのライブラリーを
_ 使用しています。 ESP32は SPI以外に HSPI、VSPI端子がある事や
_ DMA parallel 方式があり速度の向上が期待されます。
_ Espressifのアナウンスに「C.3D Game on ESP32」と言う項目があり
_ 「DMA via the parallel mode of the I2S controller」を使用するとの事。


広告

Written by macsbug

12月 27, 2016 at 2:30 am

カテゴリー: ESP32, ESP8266

2.4 Inch TFT Display For ESP32

leave a comment »

ESP32 で TFT Display を使用する方法。              2016.12.17
ディスプレー は 2.4 inch 240×320 SPI TFT LCD ILI9341 を使用し
ESP32DEVKIT V1NANO32 を使用しました。

費用は 3337円です。( ESP32ボードD1 mini  の約5倍です )

2016.04.16 に ESP8266 + 2.4 inch TFT Display の記事を記載しました。
ESP8266と同じ内容ですが ESP32とライブラリーの動作を試しました。
ライブラリーとスケッチは Adafruit ILI9341 graphicstest です。


.
DEVKIT V1 ( with TELEC ):ESP32 Development Board。

NANO32 ( without TELEC )
Font Converter (squix : Daniel Eichhor) による文字は奇麗です。

Adafruit の フォント表示。”Group” の文字は 5倍してギザギザです。


ESP32の速度:ESP8266 の 2.2 倍高速です。
_ 条件は 同じ回路 及び 同じスケッチ(Adafruit ILI9341 graphicstest
_ で速度を比較。ただし ESP8266 は 周波数は160MHz にする事と
_ Wdt Error を出す為に 多数の yield(); を入れています。
_ ESP32=37.8sec, ESP8266=84.2msec。


.
準備:
費用=3337円 ( without Touch Panel ):
費用=4497円 ( with      Touch Panel ): 価格は円レートで変動します。
販売業者によっては価格を上げる所があり都度 最低価格を探します。

No.  Nomen  Link  Price  Memo
1  ESP32: DEVKIT V1  ebay 1742円  1個
 2a  2.4 inch TFT Display  ebay   811円  1個
 2b  2.4 inch TFT Display + Touch  ebay  1125円  タッチ機能あり
3  Breadboard  ebay   483円  10個 483円
4  Breadboard Jumpre Cable  ebay   301円  1箱 140 pcs
 ———- ライブラリ———-
5  Adafruit_GFX  GFX  microbuilder氏に感謝
6  Adafruit_ILI9341  ILI9341  ladyada氏に感謝
———-   フォント ———-
7  Font Converter  squix  Daniel Eichhor氏に感謝
—– ESP32 開 発 環 境 —–
8  espressif/arduino-esp32  esp32  espressif TEAMに感謝
9  Setting Up ESP-IDF  Toolchain   Mac OS用

02a:Touch Panel 無し:タッチパネル不要の場合。
02b:Touch Panel 有り:タッチパネル必要の場合。

ライブラリーと ESP32 対応:defined(ESP32) の記述。
Adafruit_ILI9341 は「defined(ESP32)」が追加され ESP32 で動作します。
ESP8266 の SPIの記述 は ESP32では使用出来ない様です。


.
配線:TFT基板の画像は裏側で 「配線表」は表側からの並びです。
_  TFTの端子と ESP32のGPIO端子が 最短で直結できる配置にしました。

TFT Display 裏側 端子名。

  TFT    基板表側 配線表
SDO LED SCK SDI DC RESET CS GND VCC

メモ:RESET は 3V3 へ接続でも可能です。


.
DEVKIT V1 配線:ミニブレッドボードを4連結。配線8本。

  DEVKIT  GPIO   ,    TFT    基板表側 配線表
GPIO D26 D27 D14 D12 D13 GND  VIN 3V3  3V3
TFT SCK SDI DC RESET CS GND LED  VCC



メモ:GPIO端子は D25表示(例) ですが スケッチでは  25 を記載します。


.
NANO32 配線:ミニブレッドボードを3連結。配線8本。

  NANO32  GPIO   ,    TFT    基板表側 配線表
GPIO 12 13 00 9 10 11  GND 3V3  3V3
TFT SCK SDI DC RESET CS GND LED  VCC



メモ:GPIO : 9=SD2, 10=SD3, 11=CMD(SCS). RESET=3V3 でも可能。


スケッチ:
Adafruit の Graphics Test の GPIOは 以下の様に設定します。
GPIO 端子は 全ての端子を設定します。CS, DC のみの設定は動きません。

DEVKIT V1

//                                      CS,DC,SDI,SCK,RESET,SDO);
Adafruit_ILI9341 tft = Adafruit_ILI9341(13,14, 27, 26,   12, 25);

NANO32

//                                      CS,DC,SDI,SCK,RESET,SDO);
Adafruit_ILI9341 tft = Adafruit_ILI9341(10, 0, 13, 12,    9, 14);

部品:ディスプレーは ebayで購入します。
_ 以下の条件にあったディスプレーは国内には無く 又 類似品の価格は約4倍
_ 程高い為に ebayで購入します。
_ 条件:240×320、3.3V、2.4″、SPI、TFT、ILI9341、Touch Panel、SD Slot。
_ 他の部品も国内は高いです。 例:ミニブレッドボードは 国内で 1個130円 や
_  216円(送料を含まない価格)ですが ebayは 1個49円です。

フォント:Adafruit_ILI9341 + Adafruit_GFX ではフォントを拡大するとギザ
_ ギザになります。奇麗なフォントを使用する方法は  Font Converter
_  ( Daniel Eichhor氏 ) を使用しフォントを作成します。
_  例:Library version は Adafruit GFX Font を選択し Roboto_plain_18.h を
_    作成します。それを自分のスケッチフォルダーの中に入れます。
_    スケッチでは #include “Roboto_plain_18.h” と宣言し
_    tft.setFont(&Roboto_18); tft.println(“Hello World,”); で表示します。

メモ:
_ DEVKIT  :購入時は電波は出力しない設定になっています。
_ NANO32:購入時は電波は出力しない設定になっています。
_      このままの状態で使用すると TELEC は不要になります。


.
参考:
Watch the ESP32 board:Arduino IDE へ ESP32 の開発環境を再構築する。
ESP32 with TELEC will be released.:初めての ESP32。


.
感想:
1. 費用:ESP32 の価格が高い為に 高額です。WeMos D1 mini の約5倍です。
_  今回の表示程度ならば WeMos D1 mini  (365円)で充分です。
_  さらに安価な ESP32 や TFT を探すのもポイントと思います。Daniel Eichhor
_  氏は この辺を丁寧に探しています。

2. TFT ライブラリー:squix : Daniel Eichhor のライブラリーは 高速性と表示の
_  奇麗さで最高峰ですが SSD1306 用である事と ESP8266 内部を使用している
_  為 現時点では ESP32 ではエラーがでて使用できません。
_  Adafruitのライブラリーは かなり遅いです。3D Cube のスケッチは 遅くて
_  使い物になりません。速度に見合った使い方になり ライブラリー次第で
_  高速抽画ができると思っています。
_  ESP8266 は 周波数を160MHzにしないと Wdt Reset の発生は大きくなります。
_  さらに Wdt Reset を軽減する為に yield(); を入れますが これは なんだと
_  思うくらいの妙な記述で ESP8266のバグではないかと 思うくらいです。
_  ESP32 では この yield(); の記述は不要になり 使用するとエラーがでます。

3. ESPRESSIFの戦略:ESP32 の1つに GAME を目標に DMA +パラレル方式を
_  掲げています。現在  ESP-WROVER-KIT 開発ボードを製作し SPI 方式で
_   安価な TFT を動かしています。ただし SPI方式では これ以上のピクセル数
_   は難しく パラレル方式が期待されます。Arduinoでは既に完成されています。

4. 大きさ:DEVKIT と NANO32 は大きく ブレッドボードを使用する時に少々
_  勝手が違います。ブレッドボードは試験用で使用時はケースに入れますので
_  取り付け基板が必要になるかと思います。それにしても WeMos D1 mini より
_  も かなり大きなケースになりそうです。

5. TFT 接続基板:2.4 inch TFT 基板と D1 mini を接続する基板があると 容易
_  に作る事ができます。そこで Daniel Eichhor氏は TFTと D1 mini pro の
_  接続基板を作られました。TFT + 接続基板+ D1 mini proをハンダ付けし
_  て直ぐ出来る素晴らしい方法です。
_  これを基に私は 接続基板を使用せず  VCC=3V3, GND=GND, CS=D7,
_  RESET=D6, DC=D5, SDI=D0 を直付けし GND=D8, SCK=D2 を2本の
_  ワイヤ−配線で作りました。これで基板を作る手間が不要な事や厚さを
_  薄くする事が出来ます。ただし少し上側にスペースが必要になる事と
_  タッチセンスの配線は省略しています。
_          
_  


 

Written by macsbug

12月 16, 2016 at 10:46 pm

カテゴリー: ESP32, ESP8266

ESP32 Development Board with TELEC Memorial photograph

leave a comment »

ESP32 Development Board 到着記念写真。             2016.12.12

ESP-WROOM-32 ,  211-161007

DOIT/SmartArduino 「ESP32 Development Board with TELEC」
注文先:AliExpress の Store:iHardware $21.05
輸送機間:12月3日に注文し12日に届く速さ。

DEVKIT V1 と書かれています。


ESP32 Development Board :ブレッドボードは 2つ必要。I2C は離れている(黄と緑)。
NANO32:3V3 以外は I2C OLED を直付けできる。
nodeMCU ESP8266:I2C OLED を直付けできる。

.
USB 5V の消費電流:
ESP32 Development Board with TELEC:80mA
NANO32:70mA
.
3D Cube Demo Report :2016.12.13 版 arduino-esp32 開発環境。
_ ESP32 Development Board:時間を於くと停止する。
_ NANO32:時間を於くと停止する。初回の開発環境は正常に動作し続ける。
_ nodeMCU ESP8266:正常に動作し続ける。
2016.12.14 に I2C の Rev があり UPDATE 後6時間モニターしOK。2016.12.14

その後 15日の朝も動作中を確認。arduino-esp32 ではこの間に3回の Rev あり。
開発メンバーの方々 ご苦労様でした。
その後 継続して I2C の Revision が続けられています。
.
いわゆるTELECとは:高速無線LAN情報局より抜粋。
特定無線設備(無線LANや携帯電話などの電波通信機器)の基準認証制度のことを、
俗にTELECといいます。昔、登録証明機関が財団法人テレコムエンジニアリング
センター(TELEC)のみであったことからそう呼ばれています。認証番号
(証明番号)はTELEC番号などと呼ばれます。
.
TELEC 211-161007:211 は 登録番号で登録証明機関の
Bay Area Compliance Laboratories Corp です。登録外国適合性評価機関
最新のリストは平成28年08月31日で12月現在まだ リストには掲載されていません。


 

Written by macsbug

12月 12, 2016 at 2:59 pm

カテゴリー: ESP32, ESP8266

Watch the ESP32 board

leave a comment »

2016年12月現在の ESP32 Development Boards の一覧表です。     2016.12.09

最新情報:2016.12.22
質問:技適対応の ESP-WROOM-32 with TELEC(モジュール) は 販売されているか?
答え:この記事投稿前から現在まで何処にも販売されていません。

質問:最低価格の技適対応 ESP32は?
答え:2016.12.22:
_ ebay:最低価格 $11.39 は Contact付きです。他 21日は販売業者無し。
_ ebay:3つの業者が出てきました。価格が変動しています。
_ ebay:EUR 14.59, USD 18.99, USD 23.99。
_ Aliexpress:販売されています。価格は $24.85 〜28.99 です。

この経緯から何かが操作されているように見えます。


12月現在の espressif / arduino-esp32 によると ESP32 開発環境 の Arduino IDE には
7つのボードが設定されています。
boards.txt の build.f_cpu は 160MHz から 240000000L (240MHz) になりました。
WeMos の ESP32 版 LoLin32 が期待される中で 設定にはあるものの まだ未販売です。

WeMos LoLin32:
_ Blink Community の hutje氏が 11月5日 に
_ WeMos is currently working on the WeMos LoLin32! と答えています。
_ 16日 github.com/espressif/arduino-esp32 に “WEMOS LoLin32” が追加されました。


追記:2017.04.21 WeMos Lolin32:2017.04.20 販売開始

Nomen Shop Cost $ Picture
WeMos LoLin32 WeMos 6.90
+
Tax 1.76
Widora-Air Taobao 7
ESP32
Development Board
with TELEC
ebay
with contact
11.39
ESP32-Bit Taobao 11.6  
AnalogLamb
ESP32
Development
Board
AnalogLamb 12.50  
Noduino
Quantum
Taobao 13.25
ESP32
Development Board
with TELEC
ebay EUR
14.59
Widora-Air AliExpress 15
Espressif
ESP32-DevKitC
(“Core Board”)
Adafruit 15
Espressif
ESP32
Core Board
Olimex 17
Watterott
ESP-WROOM32
-Breakout
Watterott Electronics 17.95
Ai-Thinker
NodeMCU-32S
Banggood 18
ESP32
Development Board
with TELEC
ebay 18.99
PyCom
WiPy 2.0
pycom 19.95  
AnalogLamb
Maple ESP32
AnalogLamb 20
SparkFun
ESP32 Thing
SparkFun 20
Gravitech/
MakerAsia
Nano32
Gravitech US 20
ESP32
Development Board
with TELEC
Banggood 21.12
SparkFun
ESP32 Thing
Digi-Key 21.25
ESP32-Bit ebay 21.42
Ai-Thinker
NodeMCU-32S
AliExpress 22  
DOIT/
SmartArduino
ESP32 DevKit
with TELEC
SmartArduino 22.87
DOIT/
SmartArduino
ESP32 DevKit
with TELEC
AliExpress 23.36
ESP32
Development Board
with TELEC
ebay 23.99
Official DOIT
ESP32
Development Board
AliExpress 24.00
Ayarafun/
LamLoei
Node32S
Gravitech Thai 24.75
Gravitech/
MakerAsia
Nano32
Gytron 24.75
Gravitech/
MakerAsia
Nano32
Gravitech Thai 24.75
ESP32
DEvelopment
Board
tindle 24.95
PyCom  LoPy pycom 29.95
PyCom  SiPy pycom 35.95

メモ:
1. ESP32 (ESP-32S, ESP-WROOM-32) の チップのピン数は 38 pin。
2. ESP32-Bit で使用されている ESP32 の チップのピン数は 30 pin。
3. ボードのピン数は 38 か40 pin。最小ピン数は 28 pin。
4. ESP-WROOM-32 with TELEC チップの単体販売はされていません。


余談:
以下は WeMos の LoLin ですが ESP8266 版で ESP32版 ではありません。
WeMos LoLin V3 NodeMcu Lua WIFI Development Board


ESP32-DevKitC:espressif 公開の ESP32 ピン配置。 espressif / arduino-esp32  doc


.
Nano32 ピン配置(自作)。

ESP32 SoC Packegae Identifier Explained

ESP32 Demo Board V2

ESP-WROVER-KIT
ESP-WROOM-32 with TELEC + 3.2″ 320×240 TFT SPI ILI9341 (Z320IT010)


開発環境の構築:arduino-esp32 の更新による再構築。
新しい arduino-esp32 の Installation : Instructions for Mac の指示通りに
_ ターミナルで実施しましたが arduino-esp32.git でエラーがでました。
_ この辺のレベルになると 私は どうしたらいいか解りません。
.
_ 以下の手順で使用できる様にしました。
_ 1. ダウンロードZIP をダウンロードし フォルダー名を esp32 に変更。
_ 2. 新しいフォルダー hardware と espressif を作り フォルダーは
_    hardware / espressif / esp32 という階層にします。
_ 3. esp32 の中の tools には xtensa-esp32-elf (マック用) を入れます。
_    ESP-IDF Getting Started Guide:2Page:2. Getting Started
_     2.2.1. Downloading the Toolchain:MacOS です。
_    又は「ESP32 Beginning」を参照してください。
_ 4. hardware フォルダーを user / document / Arduino の中に入れます。
_ これで 新しい開発環境でボードが表示され実施できます。

2016.12.25 追記:ターミナルで arduino-esp32 の Installation ができました。
出来なかった理由は git や他のものがインストールされていない為です。
手順は省きますが 幾つかの入っていない物をインストールしました。
結果 arduino-esp32 の Installation の指示通りにインストールできました。


追加された機能:analogRead が増えました。これは嬉しいです。
_ これまで ESP8266は 1個のアナログ入力しかありませんでしたが 16個
_ にもなりました。A0〜A19 までの動作を試して動きました。
_ これでアナログ分野も自由に複数使用できる事になり ホットしました。
_  DAC1, DAC2 ( variants / nano32 / pins_arduino.h に記載) も使用できる
_ ようで 興味津々です。

Things that work:

  • pinMode
  • digitalRead/digitalWrite
  • attachInterrupt/detachInterrupt
  • analogRead/touchRead/touchAttachInterrupt
  • ledcWrite/sdWrite/dacWrite
  • Serial (global Serial is attached to pins 1 and 3 by default,
    there are another 2 serials that you can attach to any pin)
  • SPI (global SPI is attached to VSPI pins by default and
    HSPI can be attached to any pins)
  • Wire (global Wire is attached to pins 21 and 22 by default and
    there is another I2C bus that you can attach to any pins)
  • WiFi (about 99% the same as ESP8266)

状況把握:
espressif / arduino-esp32 の Commits に現状の問題点と対応が
書かれています。


I2Cライブラリが動作しない:解決方法。
_ 常に最新版を使用する事で解決できます。この記事の記載時には動きませんでしたが
_ その後 再度ダウンロードし動く様になりました。


感想:
新しい開発環境の設定がいまいち解らない。何故 arduino-esp32.git でエラーがでるのだろうか。
今回の方法で Lチカは動くが OLED 接続での動作はしない。、、これは後に解決する。
.
espressif / arduino-esp32 於ける comment は 12月12現在で 108 の comment がある。
まだ開発途上なので 動かない物が多いようで 1つ1つ動作を確認し動かない物は保留した方が
いいようだ。ESP8266 で優秀なライブラリーはESP8266 の内部を熟知して高速化した物もあり
ESP32 ではエラーがでて使用できない。


 

Written by macsbug

12月 9, 2016 at 10:48 am

カテゴリー: ESP32, ESP8266

Try IMU with MPU6500 and ESP8266

leave a comment »

MPU6500 と ESP8266 で IMU を試してみました。                2016.12.08
IMU : inertial measurement unit :慣性計測装置。

画面で グリグリ回してみたい という発想です。
ワイヤレス方式 の費用は 1306円。USB 有線方式は 848円 です。


.
準備:費用=1306円   : 円レートで価格が変動します。

No.  Nomen  Link  Price(円)  Memo
01  MPU6500  MPU6500  172  2個344円
02  WeMos D1 mini  D1 Mini  382  1個
03  ESP-WROOM-02 TELEC  ESP8266 TELEC  458  1個
04  BATTERY NP-70  秋葉ガレージ中古品     250  4個1000円
05  スイッチ  Latch 7x7mm Push sw           8  20個152円
05  ショットキーダイオード  RSX101VA-30:秋月           9  20個180円
06  0.3mm厚基板Dタイプ  0.3mm厚基板:秋月        10  1個60円
07  ピンソケット8P  8pin Female socket        15  10個150円
08  低メスシングルピンソケット  ソケット:秋月           1  1個50円
09  L型ピンヘッダ  Single Right Angle Pin           1  3個110円
10  ケース( 3D Printer 自作)  –  –
 ———- スケッチ———-  ————————-  –
11  FreeIMU Processing sketch  FreeIMU_cube.zip  –
12  FreeIMU Arduino sketch  MPU6050_test.zip  –
13  processng Language  processng Language  –

.
ハードの選択:
_ センサーについては「Investigate Degrees Of Freedom」を参照してください。
_ 多くの種類と価格があり 低価格を優先し コストパフォーマンスの高い MPU6500
_ を選択しました。業者によっては MPU6500 を注文すると MPU9250, MPU9255
_ 同等品が来る場合もあります。この場合 Magnetic も使用できる事になります。

.
ソフトの選択:
_ ライブラリーやスケッチは センサーデータの処理がされた FreeIMU   を選択。
_ このスケッチの完成度は高く Mike S の mjs523氏 に感謝致します。
.


.
工作:
1. スイッチとバッテリーコネクタの製作。 部品は6つ。

_ 配線は コネクターピンやピンの余りを使用してハンダ付けします。
_ +BATTERY -> ダイオード -> スイッチ -> +BATT出力(WeMos +5V)
_ バッテリー出力から ショットキーダイオード を経由しスイッチへ配線する。
_ ショットキーダイオードは USB接続の電源からの逆流防止の為です。
_ 重要:ピンソケットの2つは バッテリ接点用ですので バネで接触する様に
_ 上手に折り曲げます。

2. ESP8266 と センサー 組み立て。スルーホール同士を直付けします。
_  ワイヤレス用:WeMos D1 mini with TELEC
_  ( D1 mini ) 3V3 = VCC (MPU6500)
_  ( D1 mini ) D8 = GND(Wire で GND へ配線) = GND (MPU6500)
_  ( D1 mini ) D7 = SCL (MPU6500)
_  ( D1 mini ) D6 = SDA (MPU6500)

_ USBシリアル接続用: WeMos D1 mini Pro と D1 mini ( without TELEC)
_ without TELEC の基板使用時は スケッチで WiFi.mode(WIFI_OFF); にします。
_ この命令で送信電波を停止し TELEC Not Applicable にします。

3. 組み立て。
_  ケース、スイッチ、ESP8266 + MPU6500、バッテリー の用意ができました。
_  ショートが予想される場所は カプトンテープ等で絶縁します。

_  ケースに組み上げます。
_  D1 mini の +5V をスイッチコネクター の +BATTERY出力 に接続します。

.


.
FreeIMU を動かす方法:ESP8266 と Processing のスケッチを記述します。
_ FreeIMU Arduino sketch の MPU6050_test.zip と
_ FreeIMU Processing sketch の FreeIMU_cube.zip  を 追加変更します。

_ USB シリアルについて:(前置き)
_  スケッチの接続は USB シリアルです。例:ESP8266 USB  — Mac(PC)。
_  ESP8266 の USBの名前 を設定すると繋がります。
_  例:myPort = new Serial(this, “/dev/cu.wchusbserialfd1420”, 115200);
_  Processing と ESP8266 のスケッチは 上記の設定をすると動作します。
_  ESP8266 は WiFi.mode(WIFI_OFF); にします。

UDP通信でワイヤレス化する:
_ USBシリアル の部分を WiFi (UDP通信)に 置き換え ワイヤレス にします。
_ これが出来ますと 多種多様なものを 簡単にワイヤレス化 できます。
_ 電波を使用する為 ESP8266 は with TELEC を使用します。

ESP8266 のスケッチの変更と追加MPU6050_test.zip を UDP通信対応にします。
UDP通信は「Communicate ESP8266 and iPad directly with UDP」を参照ください。
仕組みは「UDPの設定」と 「udp.print(data); 」でデーターを送信します。

1. スケッチの先頭に以下を追加します。

#include <ESP8266WiFi.h>              // WiFi
#include <WiFiUDP.h>                  // UDP
static WiFiUDP udp;                   // UDP Object
#define ESP_RX_PORT 7000              // ESP Receiver port
#define ESP_TX_PORT 9000              // ESP Transmit Port
IPAddress ESP_IP;                     // ESP IP 192.168.4.1
IPAddress EXT_IP;                     // ext IP 192.168.4.2
bool sw = LOW;                        // LED switch
String data = "";                     // OUTPUT DATA

2. void setup() の先頭に以下を追加します。

  Serial.begin(115200);                 //
  Wire.begin(D6,D5);                    // SDA, SCL. D6,D7:D1 mini
  pinMode(D4, OUTPUT);                  // BUILTIN_LED monitor
  WiFi.mode(WIFI_AP);                   // AP Mode:direct connection
  WiFi.softAP("MPU6500", "");           // ESP8266:SSID, password
  ESP_IP = WiFi.softAPIP();             // 192.168.4.1 localIP
  udp.begin(ESP_RX_PORT);               // ESP:UDP Rx port=7000

3. その下の while(!Serial.available() は コメントアウトします。
これは USB ケーブルで接続の場合に使用します。

/*
  while(!Serial.available()){
    if(Serial.available()){
      byte hereWeGo = Serial.read();
      if( hereWeGo == 't'){
        break;
      }
    }
  }
  */

4. void sendQuat() の Serial.print(“\n”); の下に以下を追加します。

data = data + "\n";
udp.beginPacket(EXT_IP, ESP_TX_PORT); // Packet transmit
udp.print(data);                      // data   transmit
udp.endPacket();                      // end of transmit
Serial.println(data);                 //
sw = !sw; digitalWrite(D4,sw);        // LED indication
data = "";

5. void serialPrintFloatArr(float * arr, int length) の Serial.print(“,”); の下に追加。

data = data + ",";

6. void serialFloatPrint(float f) の Serial.print(c2);  の下に以下を追加します。

data = data + String(c1) + String(c2);

動作確認:Arduino IDE のシリアルコンソールを開き シリアル出力を見ます。
_ 例:0058723F,000012BC,000004BD,0018A4BE, が出力していれば動作
_ しています。センサーを動かすと このデーターが変化します。

以上で ESP8266 のスケッチは終了です。



Processing スケッチの変更と追加FreeIMU_cube.zip を UDP通信対応にします。
3つ ( UDPライブラリー、UDPポート設定、受信ルーチン) を追加し動作します。
細かな所では エラーがでるか シリアル通信の記述はコメントアウトします。
processing Language は事前に多少 理解しておく必要があります。
記述は Arduino や ESP8266 と似て 解り易く グラフィックが強力です。
使い方では プルダウンメニューの ライブラリーの追加 と フォントの作成は
少し知る必要があります。私のレベルでも出来ましたので大丈夫です。
Processsing からライブラリーやフォントの追加指示があれば 従ってください。
余談ですが Processing は アプリケーションのエクスポート機能があり 単独の
アプリが作れます。

1. スケッチの先頭にライブラリーを追加します。

import hypermedia.net.*;
UDP udp;

2. void setup() の先頭に UDPポートの設定を追加します。

  udp = new UDP( this, 9000 );
  udp.listen( true );

3. 受信の void readQ() ルーチン全体を以下に変更します。

void receive( byte[] data, String ip, int port ) {
  data = subset(data, 0, data.length-2);
  String inputString = new String( data );
  String [] inputStringArr = split(inputString, ",");
  q[0] = decodeFloat(inputStringArr[0]);
  q[1] = decodeFloat(inputStringArr[1]);
  q[2] = decodeFloat(inputStringArr[2]);
  q[3] = decodeFloat(inputStringArr[3]);
}

以上で Processing のスケッチは終了です。


.
他の試して動作したスケッチです:それぞれグリグリ回転します。
シリアル通信の所を削除しUDP通信を追加し直ぐ動きました。
スケッチの出来具合にもよりますが 水平の回転ができないものが多いです。
かなり検討されたものや 3D画像を直ぐ使用できる優れものもあります。

.


.
データーの処理方法:加速度センサーの例
x,y,z 軸の値:をそのまま(ローデーター) 使用し 3D で動かしている物があります。
_ このままでは 量と現実との差が生じる為 受け側での処理が必要です。
.
pitch,roll,yawの値:x,y,z 軸から pitch,roll,yaw を算出し 3D で動かしている物が
_ あります。このままでは 量と現実との差が生じる為に 受け側デの処理が必要
_ です。さらにこれだけでは水平軸の回転は表示できません。
.
FreeIMU:水平軸の回転も可能になっています。動かした大きさも ほぼ同じ量で
_ 表示しています。縦方向は動きませんので Atitudeセンサーが必要になります。
_ これには 10DOF が必要で 気圧センサーの BME180, BMP085(25cm) か
_ MS5611(10cm) を使用する事になります。
_ 値の取得は 16bit hexで 私にはレベルが高く理解できません。
.


.
感想:
画面で グリグリ回してみたい という発想から始め モーションを体験できました。
知識も無く 加速度センサー や 磁気センサーを購入し作られたスケッチをいろいろ
試してみました。表示をどうするでは 素人でも扱い易いグラフィックは Processing
が最適です。その点でも先人が Processing を使用していましたので 助かりました。
殆どが USB 接続によるものですが 事前に ESP8266 による UDP 直接通信の方法を
解説しておきましたので 容易に表示する事が出来ました。
.
加速度センサー:奥が深く感じました。データーを取得して表示するだけでは使用
_ できないと言う事です。KalmanFilter 等のフィルターが必要です。GPSの精度
_ は 50cmですが加速度やジャイロを使用する事により 8cm まで可能と聞いてい
_ ます。
.
スイッチ:小さなケースに入れる場合、スライドスイッチ や トグルスイッチは
_ 押しづらい事やケースに固定が難しい。押しボタンスイッチが最適と判断し
_ ましたが 秋葉原ではこの手のスイッチは入手できず ebay から購入しました。
.
バッテリー:デジカメ用のバッテリーは 平たく四角の為に工作しやすくケースを
_ 薄く作る事が出来ます。ただし 高価で費用に大きく影響します。中古ですが
_ 秋葉原のガレージショップで安く入手しました。充電回路は場所を取る事と
_ 面倒です。古いデジカメの様にバッテリ交換方式にしました。バッテリーは
_ 充電後に 4.2V になり ESP8266 の 3.3V 電源には 直接接続できません。
_ よって D1 mini の場合は 5V 端子へ接続し 基板のLDOで 3.3V に変換されます。
.
消費電流:USB 5V 測定に於いて 約110mA、消費電力は 約5.9AHです。
.
価格:ESP8266 ボードとセンサーの国内の価格は非常に高いです。今回の分野で
_  は 7000円台になるでしょう。これに対し低価格を追求した中では 1306円
_  で出来る事が判明しましたが TELEC代が35%にもなります。
.
混信:モーションセンサーを 多数使用すると これまでに無い事ができます。ただし
_  WiFi を多数動作させると混信の問題が起きてきます。この件は検討課題です。
.


Written by macsbug

12月 8, 2016 at 7:24 am

カテゴリー: ESP8266

CH340 with EI Caption

leave a comment »

Mac OS X EI Caption で CH340 を試してみました。      2016.12.05

CH340 は OS X で使用する時に 認識されません。
「署名のないkernel extensions(kext)を実行できない」事から
始まっている様です。

これまで CH340 について 2回も書きましたが 未完成で申し訳ありません。
妙な内容で 今回も不十分と思われますが 備忘録として書きました。


.
EI Cartion では CH340 は 認識しません。 妙な方法ですが 以下の様にすると
認識して Arduino IDE で書込みが出来ます。

1. 接続しても CH340 は認識されません。例:WeMos D1 mini を接続。

2. WeMos D1 mini の 左上の Reset ボタンを押します。

3. 認識されます。ただし、Reset ボタンを離すと消えます。
_  認識には ほんの少し時間がかかります。このタイミングが重要、、。
_  指先が疲れますが 我慢して しばらく Reset ボタンは 押したままにします。

4. 「ボード情報を取得」を選択します。

5. ボード情報が表示されます。
_  名前は 名無しの権兵衛で 「不明なボード」です。
_  VID は 「1A86」。PID は「7523」 。これが CH340 の値です。
_  そして その下になにか書いてある、、。
_  意味が解りませんが 期待して 素直に 書いてある通りにします。

6. スケッチを書き込んでみます。
_  ここで Reset ボタンを離すのですが タイミングが 難しいです。
_  ボタンが 黄色になって コンパイル終了頃の 書き込む前に離します。
_  Reset ボタン は ESP8266 を停止状態にしますので
_  Reset ボタン を 押した状態では 書き込めません。
_  しかし 離すとマックが「署名が無い」と言ってくる ジレンマ。

7. なんと、いつもの白い字 が出た後に 赤い字 が進んでいます。
_  当たり前の事なのですが 新鮮に嬉しい 感じになります。

8. L チカ等 しっかり動きます。
_  でも もうこの時には USB の名前は 消えています。
_  しかし、変な方法ですね。
.


.
ボード情報:
_ CH340 が 認識されている時は システムリポートの USB情報にでてきます。
_ 5. での 値はこれと同じです。
_ 


.
感想:
たまたま書込みが出来たかの様な方法にも見えたり ハッキング的な方法とも
_ 思えるし 混乱させる記事かも、、。
_ 「ボード情報を取得」は 何をする為の物か 理解していませんが
_ 動いたので良しとします。
.
CH340 の対応策:なにかと問題を起こし 時間を浪費しますので
_ CH340 以外の モジュールを買う事にして 沢山発注しました。
_ サイト訪問者からの「乗り換え」の言葉に背中を押されました。
_ しかし、Arduino でも CH340 の物があり 本当に困っています。
.
疑問:
マックは USB に流れる電流を モニターしている。ハード的には 流れ過ぎた
_ 場合は ポリスイッチが スイッチ動作して 奥の回路の破損を防止する。
_ そのポリスイッチが自分で正常に戻るには時間がかかる。それでマックが
_ 動かなくなってから 数時間待ってください言う話がある訳です。
_ ソフト的にも何かをやっているはず。
.
接続した時に マックが USB ( +D か -D を調べる ) を調べ 不明のデバイスから
_ 信号が流れ 「署名が無い」という事で マックが怒ってカーネルパニックを
_ 起こすのでしょうか。そんな事で 〜気にせずに カーネルパニックを 起こさ
_ ず 通信して欲しいですけどね。
.
何故 Reset ボタンを押した状態でマックは CH340 のシリアルポート名
_ を知るのでしょうか? 恐らく CH340 の中に書いてあるから。
_ ESP8266 を停止しても USBを介して信号が流れているという事でしょうね。
_ つまり CH340 は 外付けクリスタルが動いていれば マックと通信していると
_ 言う事でしょうか?
_ こう考えると ハッキング対策にも見えてきます。

Written by macsbug

12月 5, 2016 at 11:27 am

カテゴリー: Arduino, ESP8266

Investigate Degrees Of Freedom

leave a comment »

ESP8266 で使用できる 加速度関係のセンサー部品を調査しました。 2016.12.04
.
単独のセンサーから統合されたセンサーまで 価格も含め 様々で
Accerelometer, Gyro, Magnetometer, Pressure(Atitude), Temp を調べました。
これにより 安価で多様な モーションセンサー を作る事ができます。


.
ワイヤレス・モーションセンサー装置 予想価格:1010円
_ MPU6500 ( 159円 ) + WeMos D1 mini ( 382円 ) + ESP-WROOM-02 TELEC ( 469円 )

センサー 結論:Cost欄 緑色3点。
安価:159円。MPU6500。スケッチ:FreeIMU

安価+機能 (Accerelometer, Gyro, Magnetometer):453円。MPU-9255

安価+高機能 (Accerelometer, Gyro, Magnetometer, Atitude):453円。GY86
_       ( MPU6050, HMC5883L, MS5611 )

メモ:Nomen の青色は試したモジュール。 2000円以上の製品は割愛しました。


.
D O F : Degrees Of Freedom

 Cost
(yen)
Nomen  IC wire Accere_
lometer
+-(G)
  Gyro
+-(dps)
Magnet
ometer
+-(uT)
,(g)
Pressure
(hpa)
 t
e
m
p
   memo
 159  MPU6500  MPU6500 I2C
SPI
2,4,8,16 250,500
,1000,
,2000
Replace
MPU6050
 172  GY-521  MPU6050 I2C 2,4,8,16 250,500
,1000,
,2000
 6DOF
Caution
C13=0.1μF
 453  MPU-9255 MPU-9255 I2C 2,4,8,16 250,500
,1000,
,2000
 4800 Replace
MPU9150
MPU9250
 588  MPU-9250 MPU-9250 I2C
SPI
2,4,8,16 250,500
,1000,
,2000
 4800  9DOF
 632  GY-91 MPU9250
BMP280
I2C
SPI
2,4,8,16 250,500
,1000,
,2000
 4800 300-
1100
25cm
 10DOF
 643  BMX055 BMX055 I2C 2,4,8,16  1300  9DOF
 687  GY-85 ITG3205
ADX345
HMC5883L
I2C 2,4,8,16 250,500
,1000,
,2000
 4800  9DOF
 827 MPU6050
HMC5883L
BMP180
MPU6050
HMC5883L
BMP180
I2C 2,4,8,16 250,500
,1000,
,2000
 4800 300-
1100
25cm
 10DOF
 850 L3GD20
LSM303D
BMP180
L3GD20
LSM303D
BMP180
I2C
SPI
2,4,8,16 250,500
,2000
 2,4,8,12 300-
1100
25cm
 10DOF
 924  GY-951 ATMEGA328
ITG3205
ADXL345
HMC5883L
I2C 2,4,8,16 250,500
,1000,
,2000
4800  9DOF
 924 L3G420D
LSM303D
BMP180
L3G420D
LSM303D
BMP180
I2C
SPI
2,4,8,16 250,500
,1000,
,2000
 2,4,8,12 300-
1100
25cm
 10DOF
 1124  GY-87 MPU6050
HMC5883L
BMP180
 I2C 2,4,8,16 250,500
,1000,
,2000
 4800 300-
1100
25cm
 10DOF
 1161  GY86 MPU6050
HMC5883L
MS5611
 I2C 2,4,8,16 250,500
,1000,
,2000
 4800 10-
1200
10cm
 10DOF
 1202  GY-52  MPU6050 I2C 2,4,8,16 250,500
,1000,
,2000
 6DOF
 1252  GY80 L3G420D
ADXL345
HMC5883L
BMP085
 I2C 2,4,8,16 250,500
,1000,
,2000
 4800 300-
1100
25cm
 10DOF
 1605  GY-9150 MPU-9150 I2C 2,4,8,16 250,500
,1000,
,2000
 1200  9DOF
 1641 GY-81-3205 ITG3205
HMC5883L
BMA180
BMP085
I2C 2,4,8,16 250,500
,1000,
,2000
0.88,1.3
,1.9,2.5,
4.0,4.7,
5.6,8.1
300-
1100
25cm
 10DOF
 1712  LSDM9DS0 LSDM9DS0 I2C
SPI
2,4,8,16 250,500
,1000,
,2000
 2,4,8,12  9DOF
 1729  GY-953  AHRS SPI row,
pitch,
roll,
yaw
250,500
,1000,
,2000
 9DOF
 2043  GY-86 MPU6050
HMC5883L
MS5611
I2C 2,4,8,16 250,500
,1000,
,2000
0.88,1.3
,1.9,2.5,
4.0,4.7,
5.6,8.1
10-
1200
10cm
 10DOF

.


.
国内価格 比較:結論、国内は高すぎて問題外です。

    Nomen          Type   ebay  SWITCHSCIENCE  aitendo  Strawberry
-linux
 akizuki
 GY521  Acc+Gyro   172円  4992円  –  –  –
 MPU-9250  Acc+Gyro+Mag   588円  –  –  2000円  –
 GY-85  Acc+Gyro+Mag   687円  9367円  –  –  –
 GY-80  Acc+Gyro+Mag  1252円  –  3500円  –  –
 GY-9150  Acc+Gyro+Mag 1605円  2160円  –  2000円  –
 ADXL345  Acc    115  2243円    395円 450円

.
感想:
遊び:3D で グリグリ回してみたい という発想です。
_  この分野の知識ゼロから始めましたので不十分な点もあるかと思います。
.
価格:
_ ebay と 国内価格の差には驚きます。国内の価格では ちょっと作るという
_ 価格ではありません。例として GY521 は 29個 も買える価格です。
_ GY-9150 ( MPU-9150 ) という対策品もありますがそれでも高いです。
.
モーションセンサー入門:Accerelometer, Gyro の2つだけですが
_ MPU6500 159円 で充分遊べます。ライブラリーやスケッチを体験すると
_ スケッチの充実で如何様にも安定し高機能のあるものが作れます。
_ 生データーはノイズやスパイクを含みカクカクした動作にもなります。
_ この為に 信号処理としてフィルターが必要です。
.
ワイヤレス:UDP通信 が便利です。
_ Communicate ESP8266 and iPad directly with UDP で示した方法は
_ 容易で便利です。
.
スケッチとライブラリー:最も重要な事。
_ センサーから 安定した信号の取得を行う事や フィルター機能は
_ 古いセンサーの方が多く 先人の努力により磨かれています。
.
センサーの表示:PC や マックで Processing言語
_ Processing言語 により既に作られた物が便利です。
_ 先人により作られた物があり そのまま使用するか変更や追加をしましょう。
_ Processing は 容易に扱える言語で PC に応じたアプリ化も可能です。

Written by macsbug

12月 4, 2016 at 1:47 am

カテゴリー: ESP8266