macsbug

Just another WordPress.com site

Archive for the ‘ESP8266’ Category

TFT display for Raspberry pi with ESP32

leave a comment »

3.5 ” 480×320 SPI TFT RPi touch Display を ESP32 で動かす方法。   2017.08.12

費用は  2265円 です。( RPi Display + ESP32 MiniKit + 接続基板 )
他には D1 mini Lite = 1775円。D1 mini = 1985円。D1 mini Pro = 2285円 です。
ディスプレー の価格は 1266円 で 2.4 inch 320×240 TFT より少々高いです。

ラズベリーパイ用 TFT ディスプレー:
_ 画素数が多く多彩な表示ができます。基板、タッチセンサー、TFT部が
_ きちんと固定されケースに収めやすい構造です。ラズパイは 本体と
_ ディスプレー用に綺麗な RPi Acrylic Case (294円) が販売されています。


RPi Display 仕様:
_ 表示方式: TFT LCD
_ サイズ: 3.5 inch。8.5cm x 5.5cm x 1.7cm
_ 画素数: 480 x 320 ( HVGA )
_ 電源 : 5Vdc ( 3.3V Regulator 内蔵)
_ タッチ: Touch Screen Controller XPT2046
_ タッチペン: 8.7cm
_ 接続: SPI ( MOSI, SCLK, CS, DC, RST, MISO )
_ SPI 周波数: 20MHz ( TFT下の配線構造の為 )
_ ドライバーIC: ILI9486  ( 480 x 320 )
_ SPI 詳細: SPI信号を 74HC04, 74HC4040, 74HC4094, 74HC4094
_      でパラレル信号に変換しています。


準備:費用 2265円。RPi Display + ESP32 MiniKit + 基板 + コネクター

No  Nomen  Link   Price
1  3.5 ” 480×320 SPI TFT Raspberry Pi  ebay ( $11.43 )  1250円
2  ESP32 Minikit  ACELEX Store($7.13)   785円
2  ESP32 Minikit ( 送付内容調査中 )  Advanced Teck($7.08)   779円
3  WEMOS D1 Mini Lite  WEMOS CC Store($3.53)   389円
3  WEMOS D1 Mini  WEMOS CC Store($4.53)   499円
3  WEMOS D1 Mini Pro  WEMOS CC Store($7.26)   799円
4  ユニバーサル基板:72 x 47mm:1個  秋月電子通商   120円
5  ピンヘッダー:2×13:1個  秋月電子通商    50円
6  ピンヘッダー:2×20:1個  秋月電子通商    50円
 —————————————-  ————————-   ——
7  TFT ライブラリー  Bodmer:TFT_eSPI

海外の価格:円レートと販売店で変化します。ESP32 Minikit は 23社が販売
_     しており 日々価格が変化します。最安の業者を探しましょう。
TFT の種類と注意:
_ 幾つかの種類があります。SPI接続のものを使用します。
_ 3.5 inch RPi Display V3.0 と書かれた物が最新版です。
_ V3.0 と記載されていなくとも ICと配線は同一の物があり動作します。
_ コネクターは 26PIN ( 2 x 13 ) です。
_ 基板上のICが 74HC04,74HC4040,74HC4094,74HC4094 なら使用できます。
_ KeDei 製は 異なるICで構成されており そのままでは使用できません。
_ KeDei 製を使用する時は IC交換により高速で動きますが 改修は面倒です。


基板裏:左上から 74HC04, 74HC4040, 74HC4094, 74HC4094
ピン配置:Raspberry Pi ( Rev.2 ) と同等。



配線:配線は7本のみです。コネクターの向きは 上記写真と同じです。

 RPi Display  GND  CS  SCK  RST  MOSI  DC  5V
 RPi Display 25 24 23 22 19 18 2
 ESP32 GPIO  GND 5 18 RST 23 13 5V


TFT ライブラリー:Bodmer:TFT_eSPI。作成された Bodmer 氏に感謝致します。
_ TFT RPi touch Display のドライバーIC は ILI9486 (480 x 320) です。
_ TFT_eSPI が対応する ドライバーは ILI9486。ILI9341 (320 x 240),
_ ST7735(128 x 128 or 128 x 160), ILI9163(128 x 160), S6D02A1 も
_ 可能です。さらに 高速化も実施されています。

設定:「User_Setup.h」
_ ドライバー、GPIOピン、フォント、SPI周波数の設定は「User_Setup.h」
_ で行います。エデッターで編集し 保存して使用します。
_ この記述方法は メインのスケッチでGPIOピンの設定が不要で便利です。
_ これによりサンプルは変更する事無く直ぐ動作します。
_ 例:ESP32 MiniKit

#define RPI_ILI9486_DRIVER

#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS    5
#define TFT_DC   13
#define TFT_RST  -1

#define LOAD_GLCD
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF

#define SPI_FREQUENCY  20000000

サンプルスケッチ:examples「480 x 320 」は以下があり 即動作します。

 Cellular_Automata  Demo_3D_cube  Flash_Bitmap
 Free_Font_Demo  Graph_2  TFT_Char_times
 TFT_Ellipse  TFT_flash_jpg  TFT_graphicstest_one_lib
 TFT_Meter_4 TFT_Meters  TFT_Padding_demo
 TFT_Print_Test  TFT_Rainbow480  TFT_ring_meter
 TFT_String_Align  UTFT_Demo_480x320

 


ライブラリーの速度:TFT_eSPI は Adafruit や 他の ライブラリーより速いです。
_ Raytracing による比較:
_ ESP32 DEVKIT V1 + 320×240 SPI TFT Display  + Adafruit は 14 sec 。
_  Raytracing with ESP32
_ ESP32 MiniKit + 320 x 240 TFT SPI Display + TFT_eSPI は   6 sec 。
_ ESP32 MiniKit + 480 x 320 TFT SPI Display + TFT_eSPI は 11 sec 。
_ ESP32 VSPI(or HSPI)接続と TFT_eSPI ライブラリーによる効果です。


画像処理メモ:
マックで image.c 作成方法:Wine APP + ImageConverter565.exe で作ります。
Bodmer:JPEGDecoder を使用します。
QVGA:320 x 240
HVGA:480 x 320


ラズパイ用ケース:
BME280 センサーを接続し RPi Acrylic Case に収めました。
ESP32にBME280を接続し 温度、湿度、気圧 を Ring で表示しました。
USB 5V 消費電力:178mA


参考:
ILITEK:ILI9486:Application Notes
RPI Display 配線図:sainsmartschematicV2
Arduino FORUM:TFT_eSPIのハードとソフト、高速化等の情報。
_ New graphics library for NodeMCU (ESP8266) and SPI based TFT displays
Bodmer:TFT_eSPI:ライブラリーの説明と開発の経緯。
wdim0 :esp8266 with KeDei lcd module:KeDei LCD module の改修方法。
YouTube:ESP8266 with hacked 3.5″ KeDei LCD module (SPI, CLK 40 MHz)
_    SPI を 40MHz で高速動作させる改修方法。
YouTube:ESP8266 with hacked 3.5″ KeDei LCD module (SPI, CLK 20 MHz)
_    SPI 20MHz の場合 。


感想:
1.  念願の 3.5 inch 480 x 320 を ESP32 ( ESP8266 ) で使用する事ができました。
_  ESPでの 5 inch と 7 inch は 動作情報がありますが 公開されていません。
2.  480 x 320 TFT + Arduino DUE  で 32ch(Arinc 429) Logic Analyzer
_ を製作した事例があります。以下は  24bit を縦に表示したものです。

3.  ラズパイでの これ以上の画素はHDMI接続になりESPではできません。
4.  TFT_eSPI library を使いこなすには 設定の「User_Setup.h」を理解
_ すると解りやすいです。命令表は Keywords.txt に書かれています。
5.  少し大きいですが 手に収まる事と 480 x 320 の大きい画素数という
_  利点があり 多彩な表示が出来るかと思います。
6.  サンプルの「Cellular_Automata」はライフゲームです。ライフゲームに
_ 興味があり、早々に楽しんでいます。

7.  TFT LCD Display 価格調査:
_ ebay の 3.5inch 480×320 は 1266円。
_ 国内は 以下の様に 幾つも購入できる 高価格です。
_ aitendo:3.5 inch 480×320 は 3500円。
_ スイッチサイエンス:3.5 ” は無く 2.2″ 320×240 3499円。
_  2.8″ 320×240 4903円。2.8″ 320×240 6307円。
_ 秋月電子通商:2.8″ 320×240 5130円。
_ 千石電商  :2.8″ 320×240 4200円。
_ 日本アマゾン:3.5inch 480×320 は 幾つかの業者があり
_  Kuman=2280円, Elegoo=2300円, Elecrow=2499円,
_  cocopar=2999円。


Written by macsbug

8月 12, 2017 at 11:16 am

カテゴリー: ESP32, ESP8266

1.3inch SH1106 OLED Display in X-32

leave a comment »

1.3inch 128×64 I2C SH1106 OLED Display を X-32 で動かしました。2017.07.09


構成:
画像(上) :X-Battery shiled :表と裏
画像(中左):X-32 -a WiFi and Bluetooth Development Board:ESP32
画像(中右):X-8266(Tiny NodeMCU):ESP8266
画像(下) :X-OLED ( 1.3 IIC Tiny OLED ) :表と裏


 

販売:

No  Nomen  Link  Price $    価格
1 X-OLED (1.3 IIC Tiny OLED)  Travis Lin store:本家  $   7.00
1 X-8266 (Tiny NodeMCU)  Travis Lin store:本家  $   7.00
1 X-Battery Shield  Travis Lin store:本家  $   5.00
1 X-ESP8266 Total  Travis Lin store:本家  $ 19.00  2114円
2 X-8266 ESP-WROOM-02 Kit  Lily GO:コピー販売  $ 14.69  1635円
 –  ——————————–  ——————————  ——–  ——-
3 X-OLED (1.3 IIC Tiny OLED)  Travis Lin store:本家  $   7.00
3 X-32 – Development Board  Travis Lin store:本家  $   9.00
3 X-Battery Shield  Travis Lin store:本家  $   5.00
3 X-ESP32 Total  Travis Lin store:本家  $ 21.00  2337円
4 X-32 ESP-WROOM-32 Kit  Lily GO:コピー販売  $ 17.60  1959円
 –  ——————————–  ——————————  ——–  ——-

X-Project Starter Kit ( ESP8266 & ESP32 ):Kit で以下のものが含まれます。
_ X-8266 X1, X-32 X1, X-OLED X1, X-Relay X1, X-Battery X1, X-2812b X1,
_ X-Ring X1, X-dual X1, X-prototype X1, X-Relay X1, X-DHT11 X1, X-Buzzer X1


SH1106 ライブラリー:
ライブラリーは squix78 / esp8266-oled-ssd1306 を使用します。
_ esp8266-oled-ssd1306 は これまで SSD1306 用でしたが 新たに SH1106 がサポートされました。
_ 例:SSD1306 display(0x3c, D3, D5); を SH1106 display(0x3c, D3, D5); と記載すると動作します。


利点:
1. 小型である。
2. バッテリーシールド で バッテリー駆動 ができる。

欠点:
1. 上下のピン間隔は半ピッチサイズで ユニバーサル基板は使用できない。
2. GPIO は9ピンしか出ていない。 A0, GPIO 0, 2, 4, 5, 12, 13, 14, 15 。
_  ESP8266 の GPIO数の少ない欠点を克服するESP32の能力を引き出していない。
_  ESP32の強みである VSPI, HSPI, Analog input, Touch を活用できない。
_  例として SPI Color OLED は接続できず使用できない。
_  部品費不要で 全てのピンを配置するだけで解決できるが実施されていない。
3. OLED が特殊である事と 部品入手が限られる。これまでのOLEDより不便。
4. X-Battery Sheeld:バッテリーには電源スイッチが必要です。電源スイッチの
_  場所は Battery から TP5410 で 5V 変換した後にあります。この為に 電源
_  スイッチオフでも 5V は発生しており バッテリーを消耗する事になります。
_  お粗末な設計です。


感想:
小型:
_ 重要な要素で 優れていますが 他の要素は 詰めが甘く 極めて不便です。
OLED:
_ 普及している 交換可能な 0.96″ 128×64 I2C OLED を採用すれば良いだけです。
_ 特段 性能向上や低価格になる訳でもなく SH1106 を採用した意味が不明。
_ レイアウトやスケッチに時間を取られます。壊れた場合は交換困難です。
_ 色は白で味家の無い表示です。他のOLEDそうですが青よりも白は低価格です。

基板ピッチ:半ピッチサイズ。
_ これは意識的な設計の結果で 使用者は不便の最悪状態。
_ 手間な基板で使用用途が限られますので 調査範囲に収めて  このボードは
_ 今後しない事になると思います。

Dongsen Technology
ESP8266 PacketMonitor

1秒ごとに送信されるWi-Fiパケットの数とチャネル数を示します。

Written by macsbug

7月 10, 2017 at 4:50 pm

カテゴリー: ESP32, ESP8266

18650 Battery Capacity

leave a comment »

18650 バッテリー は どの製品を購入すべきか。           2017.05.25

WeMos LOLIN32 や Pocket 8266 は バッテリー接続機能と充電機能があります。
18650 バッテリーを使用すると 持ち運びが便利になります。
バッテリーは 偽物も多いらしく 購入時の判断の為に 友人のA氏と調査しました。
日本製 で 充電繰り返し回数の多い製品は 性能よく経済的です。

容量:Momiji > SAMSUNG > SANYO の順で SAMSUNG が健闘しています。
充放電回数:表記はSANYO ( 約1000回 ) しかない。
_ Momiji はどうも中国製の模様。国内の販売会社でのメーカー保証で元はUltraFire関係のようです。
信頼性:SANYOは 容量こそ少ないが信用できそうです。
安全性:リチウムイオンバッテリーは 発熱や火災の危険があります。
_   安全回路が入ったバッテリーが望ましいと思います。
販売:
_ SANYO UR18650A 2250mAh:4個 2400円。充放電回数:1000回:ロワジャパン。お薦め。
_ Momiji BRC 18650 3000mAh:4個 2190円。充放電回数表記無し: 長さ 65mm。アマゾン。
_ Momiji BRC 18650 3000mAh:4個 2390円。充放電回数表記無し: 長さ 68mm。アマゾン。
_  プロテクト機構(保護回路)付でバッテリーを過充電から守る。注意:長さ 68mm。
メモ:2000mAh とは、1/5の400mAで放電させて5時間使えると言う意味です。


.
SANYO UR18650A 2250mAh と Momiji BRC 18650 3000mA を比較:
_ 測定方法:500mA 流し 満充電から 3.0V になる電圧と時間を記録。
_ 計測の終了は3.0V, 公称値の場合 2.5Vですので計測値は少なめに表示されます。
_ ただし 充電繰り返し回数は 測定していません。
_ Momiji、SANYO は ほぼメーカーの表示が信用出来そうです。
_ 容量はMomijiが最高ですが、SANYOは電池の内部抵抗が低く性能が良い。
_ セル情報:Litium Ion UR18659A
_ 日本セルと中国セル:ロワジャパン 記載:SANYO UR18650A 2250mAh 。
_  日本セルは中国セルに比べ、充電可能回数は 約2倍。
_  日本セル:500~1000回以上。中国セル:300回程度。


.
8種類のバッテリー比較:
測定方法:1A(短時間測定の為) 流し 満充電から 3.0V になる電圧と時間。
_ 計測終了は3.0V, 公称値は 2.5Vですので計測値は少なめに表示されます。
結果:表示値と測定値は ほぼ一致 と 異なる物があります。
_ メーカー製(SAMSUNG, SANYO, SONY) は 表示値と測定値が ほぼ一致。
_  Momiji は 恐らく 日本製ではない Ultra Fire 製かと思われます。
_ ebay の TR18650 9900mA, TR18650 5800mA は 600mAhで表示と異なります。
_ aitendo の BRC18650 UltraFire 3000mA は 1016mAhで表示と異なります。


.
3種類のバッテリー比較:


.
重量で比較: 重さで良品を判別する。
_ Li – ion バッテリの資料では 重量は 44g と記載されています。
_ 重さで おおよその 判断材料になり 軽い物は容量がありません。
_ 中国製(ebay) の TR18650_9900mAh と TR18650_5800mAh は 30.7g

YouTube:How to know fake 18650 batteries?:どのように偽物を見分けるか? 重さで解る。


.
mAh 電流容量を比較:表示値と実測値
_ Momiji は 日本製では無い様ですが 表示値に対し 95% です。
_ SANYO は 日本製で 表示値に対し 99% でほぼ一致しています。
_ BRC UltraFire 3000 は aitendo で 表示値の 33% しかありません。
_   aitendo の物は偽物と判断します。


.
1Aの負荷で 3Vになるまでの時間 を比較:


.
付属品: WeMos LOLIN32 用 バッテリー接続コネクターワイヤー:1個13円。
_ JST 2.0 2-pin connector plug Male & Female。20個 268円。
_ 輸送期間=21日。aitendo はケーブルコネクターのみで 1個100円。
_ 沢山有ると 気楽に電子工作ができます。


.
モバイルバッテリーの容量表示:
_ 例として 5000mAh と表示がありますが USBの出力は 5Vで5000mAhと思いがちですが
_ 5000mAh は 内部のバッテリーの容量で 3.7V 5000mAh。
_ よって、実際には 5V出力は70%になってしまいます。嘘ではないが紛らわしい表現です。


.
計測機材:
_ USB電圧ロガー EL-USB-3 8400円。秋月電子通商。
_ 自作 半自動充電放電ダミーロード。

LM317-DMY-LOAD 半自動充電放電回路図:2017-05-26:Rev 02


.
参考:
気の迷い:Li-ion 18650 放電テスト 2009
気の迷い:海外Li-ion充電器を比べてみた


.
超低価格バッテリー:205円。
_ WeMos Lolin32=866円。Battery=205円。総計 1071円。
_ 秋葉原の怪しい中古屋にある LE-B01 600mAh 199円 と ebay の JST 2.0 PH 2
_ コネクタープラグ 6円 で 合計 205円 の構成が可能。これは中国の格安コピー屋
_ でも無理だろう。


.
感想:
危険性:リチウム イオン バッテリは 安全回路がないと危険です。
_ 充電時の過充電防止回路やアクシデントでショートした場合の
_ 発熱や火災をどうするかです。電源状態を管理し対応を図る必要が
_ あると思っています。一部の製品で安全回路が入っている物がある
_ と聞いています。価格は高くなりますが 安全は大事です。

mAh 電流容量:mAh の意味と測定方法。
_ Ah は電力表示ではありません。「5時間率」です。
_ 2000mAhの電池は、2000mAを流して1時間使えると思っていたのですが
_ メーカーの計測では、その電池を5時間放電させてその容量を積算。
_ そのため 1Aの放電では 本来の表示容量より 80%~90% になるようです。
_ 2000mAhの電池の場合、1/5 の 400mA で放電させて5時間使えるとの意味です。

注意:aitendo BRC18650 UltraFire 3000mAh:2個900円
_ 中味は 表示の3分の1で 価格も高く買わない方がお得です。

注意:aitendo の モバイルバッテリーキット [K-6C2U1L-NS]: 950円
_ バッテリーの長さが 68mm の Momiji BRC 18650 3000mAh は このケースには
_ 入りません。中国では 370 円で この 改訂版 がでておりバネが長く余裕があります。
_ aitendo では 設計ミスのゴミを販売しています。

他のバッテリー製品:
_ SAMSUNG, Sony は 性能が良く感心します。

格安バッテリー:如何に安く作るか。ただし要注意。
_ リチウムバッテリーは ショートで焼損し火災を起こしますので注意が必要です。
_ ノートパソコンの中古バッテリーパックを分解して使用するのも良いかと思います。
_ 今回のグラフには載せていませんが 中古でも性能の良い物がありました。
_ 秋葉原の中古やで探すと1パック(6個) が300〜500円であります。
_ 分解の手間はありますが 1個10円程度になりますね。
_ それで 時々 秋葉原 中古屋散歩 をしています。

測定:時間がかかります。
_ 500mA を流して 6〜8時間。1A では その半分くらいです。
_ 容量測定装置として 362円 の Battery Capacity Meter Discharge Tester があります。

友人の協力:
_ 友人でハイスキルの A氏 に測定装置製作や測定に多大な時間を割いて頂きました。
_ ここに感謝の意を評します。

電池の長さ:momiji の プロテクト機構(保護回路)付は 長さが 68mmです。
_ 充電器によっては 電池の長さが長い為に 充電器に入らない場合があります。

Written by macsbug

5月 25, 2017 at 11:45 am

カテゴリー: ESP32, ESP8266, Make

Pocket 8266 D1 mini WIFI Module

with 4 comments

ポケットサイズの ESP8266 ボードです。                2017.05.10
ポケット( Pocket ) と言う意味が解る 大きさと感覚。

価格:854円 ( $7.50 )。 販売:Aliespress Lily GO 輸送期間 10日。

品名:Wemos esp-wroom-02 Pocket 8266 D1 mini WIFI Module — ESP8266+18650 Battery



.
仕様:
1. ESP8266 ( ESP-WROOM-02 with TELEC ) は NodeMCUと同等。
2. シリアル変換:CP2102。
3. AUTO PROGRAM回路。
4. USER LED : GPIO 16 ( D0 )
5. Analog Input ( AD ):分割抵抗内蔵 ( AD = 220K – ADC – 100K = GND)。
_ 
6. SLEEP MODE の為の SOLDER端子あり。
7. スイッチ:3.3V電源のオン・オフ。
_ LDO( 3.3V 出力:ASM1117 3.3) の入力に スイッチが接続されています。
_ オン:バッテリーで駆動します。
_ オフ:USBから充電ができます。
_ オフ:バッテリーから TP5410 5V boost output に 5V が常に出力。
8. 動作と充電は 同時に可能。
9. 18650 充電回路・5V昇圧回路:TP5410 を使用しています。
_ 充電電流:500mA 。
_ 過充電保護、過放電保護 内蔵。
_ LED : 赤 = 充電中、緑 = フル充電。
_ 3000mA 18650 バッテリーで 17時間以上稼働可能。
10. 注意:バッテリーを逆方向にすると 充電チップ( TP5410 ) が破壊されます。
_  TP5410 は Aliexpress 「TP5410 SOP8 integrated circuit」 で 1個 $1.08 です。
_  この製品には 18650 バッテリーは含まれていません。
11. サイズ:21cm x 18cm x 5cm。


.
レイアウト:


.
動作確認:良品確認の方法。  追記:2017.05.20
1. USB接続だけでも、バッテリだけでも、両方でも 動きます。
2. 購入時は電波が出ています。
_  
3. Arduino IDE ボード選択:Generic ESP8266 Module
4. Arduino IDE ボーレートを 74880 bbs にし シリアルコンソールを見ます。
_   シリアルコンソールに以下の起動メッセージが出ます。

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1264, room 16 
tail 0
chksum 0x42
csum 0x42
~ld

5. Lチカを試す。WeMos の字の上にある 青色のLED ( GPIO 16 ) を点滅させます。
_  自動的に起動しない場合は、WeMos文字の左にある RST スイッチを押します。
_  このスイッチはリセットスイッチです。
_  以下は Lチカのスケッチです。

void setup() {
  pinMode(16, OUTPUT);
}
void loop() {
  digitalWrite( 16, HIGH );
  delay(25);
  digitalWrite( 16, LOW  );
  delay(250);
}

.
実装例:
コネクターと OLED の取り付け。ハンダ付け16ヶ所、配線4本。
_ コネクターは 秋月電子通商の低メスダブルピンソケット 1個80円 x 2。
_ 18650 バッテリーは 偽物に注意と 価格が高めの為 じっくりお探し下さい。
_ 基板の四隅にある穴は 支柱やネジの固定に便利です。
_  注意:右下の穴は チップコンデンサーが近接している為に 要注意です。
_     ナットやネジでコンデンサーが取れない様に工夫してください。
_     最悪 コンデンサーが取れた場合、左の2つのコンデンサーと平行に
_     付いていますので 無くとも動くはずです。



.
充電回路と 5V昇圧回路:
_ TP5410 が使用されており 充電と 5Vdc昇圧回路 が含まれた IC です。
_ TP5410:1A lithium battery charging 5V / 1A boost control
_ 充電電流:500mA 。
_ 5V 出力:1A。PROG RESISTOR = 0.68K 1000mA。
_ WeMos D1 mini Battery Shield V1.1. と同じ TP5410。 回路図 は 勉強になります。
_ 出力電圧:5Vdc。5Vdcの後にスイッチが接続されています。
_ スイッチの位置に関係なくこの回路は常に動作しバッテリーから 5V が作られています。
_ この時の 消費電流は 10μA 程度です。


.
回路図:
_ 配線図無き為 概略ですが、電源とバッテリーチャージと昇圧回路 を示します。
_ TP5410, pin 1, OUT は 5.0Vdc です。


.
資料:
WemosD1 Battery Shield:ソーラーバッテリーの実例があり参考になります。

18650 バッテリー :
_ 3000mAh 以上の表示は 偽物と聞いていますので購入時に注意してください。
_ ロワジャパン18650 セル情報によると 日本セルは中国セルに比べ、充電可能回数は 約2倍。
_ 日本セル:500~1000回以上。中国セル:300回程度 と書かれています。
_ リチウムイオン電池:CGR18650CG 製品安全データシート
_ 瀧/TAKI’s Blog:あきばおーで売ってる18650ケース+18650電池付き

バッテリー購入情報:バッテリーの状況を把握している人に聞きました。
_ 3000mAh 以上は 偽物である。重量は軽い。
_ 例:ロワジャパンで販売している SANYO製品は 1個 2250mAh です。
_ mAh の表示内容を 測定してみると 表示より少ないものがあります。
_ アマゾン:Momiji 高容量充電電池 18650リチウムイオン電池 が良さそう。
_ ロワジャパン:18650 で検索:18650 SANYO製は日本製のメーカー(SANYO)品で良い。
_ aitendo:UltraFire BRC 18650 3000mAh 2個 900円は 測定の結果 実質容量は半分
_  との報告がありダメです。秋葉原の他店の UltraFire も調査した所 表示と容量が
_   合っていません。セルの物理的構造から 3000mA 以上はありえません。
_ 以下、秋葉原中古品売り場:300〜500円。良さそうな物を分解して使用する。
_ 富士通の電池パックとソニーのにVAIOの中味:パナソニック製 CGR18650GC。
_ HP NOTEの電池パック:SANYO製 UR18650FM。


.
18650 性能比較(定性):
_ 友人のA氏が バッテリー性能の測定をしました。感謝!
_ 簡単な計測ですが公称値2200mAhの中古品と比較して中国製は半分以下でした。
_ 満充電時に1Aに調整し 記録開始から3.00Vを切るまでの時間を測定しました。

1:日本製パナソニック (富士通のPCの中古品):グラフ 赤色
_ CGR18650CG-2200 (1422) 237分 3時間57分
_ 13:05:18, 4.20V 〜 17:02:18, 2.95V

2:中国製 aitendo で購入(一応新品):グラフ 青色
_ UltraFire-3000 (585) 97.5分 1時間37分
_ 11:09:48, 4.15V 〜 12:47:18, 2.95V


.
メモ:
_ 購入時の WiFi の名前は 「AI-THINKER_F86194」です。
_ 販売店:Aliexpress:以下の3社です。
_ Lily GO:$7.50
_ FACE-TO-FACE Electronic:$7.29
_ Seatechnolgy Store:$7.50
_  この3社はスイッチサイエンスの設計ミスの ESPr Developer rev2 のコピー品を
_  販売している怪しい雰囲気もあり これを日本人が購入したりとかもありますが
_  内容と低価格が急激に充実してきました。


.
感想:
1. バッテリー付きと充電機能で 電源を気にする必要は無い 安心感。
_ 手の平に入る大きさと ポケットにピッタリ入るサイズ。
_ 手に持つと この感覚の重要さに気がつきました。

2. スイッチ:バッテリー接続できる WeMos LOLIN32 に スイッチは付いていません。
_ このスイッチが無いとバッテリーが入りっぱなしになります。

3. 18650 の充電器にもなります。

4. aitendo のバッテリーは 中味スカスカで価格が高く ヒドイですね。
_ 他、秋葉原各店にある 18650 の 表示の大きい物は同様と思われます。

Written by macsbug

5月 10, 2017 at 3:17 pm

カテゴリー: ESP8266

Try ESP8285

leave a comment »

ESP8285 WeMos D1 mini Lite を試しました。         2017.03.24

WeMos D1 mini Lite は ESP8285 を搭載し 価格は $3 です。
ESP8285 は 1MBのフラッシュメモリを搭載(内蔵)した ESP8266 です。
( D1 mini V2.x : 外部4MB Flash,  D1 mini Pro plus : 外部16MB Flash )


.
購入:WeMos Electronic から WeMos D1 mini Lite が販売されています。
価格:$3.00 ( 335円 ), 送料=$1.76
輸送期間:9日。

Noduino ESP8285 mini WiFi module と言う 超小型のモジュールがあります。
価格:Aliexpress で 1個 $9 です。

Small ESP8285 USB Board


.
Arduino IDE 開発環境の構築:
使用環境:iMac 27 OSX Mountain Lion + Arduino IDE 1.8.0 ( 1.8.1,1.8.2 :2017.03.23 )。

WEMOS Electronics の Get started in Arduino 「Using git version」を参照し
_ ターミナルでインストールします。
_ メモ:Arduino フォルダーの中に hardware フォルダーが無い場合は
_    事前に hardware フォルダーを作成しておきます。

1:例:ユーザー名が imac の場合。
cd Users/imac/Documents/Arduino/hardware
mkdir esp8266com
cd esp8266com
git clone https://github.com/wemos/Arduino_D1.git esp8266

2:
cd esp8266/tools
python get.py

結果:
1:Arduino / hardware フォルダーの中に ESP8266com フォルダーが作成されます。
2:tools フォルダーの中に esptool, mkspiffs, xtemsa-lx106-eif フォルダーが
_ 作成されます。

Arduino IDE:ツール / ボードに WEMOS D1 mini Lite が追加されました。

Arduino IDE:ボード WEMOS D1 mini Lite を選択します。


.
WeMos D1 mini Lite レイアウト:


.
Lチカ動作:
ボード上にある LED は GPIO_2 です。通常のLチカ スケッチで問題なく動作しました。
_ USB 5V 消費電流は 78mA でした。


.
参照:
WIKI:ESP8266(英語)、 ESP8266(日本語)

WIKI :PFS-85 ( ESP8285 )

WIKI:Noduino NODEC

ESPRESSIF:ESP8285 Datasheet version 1.2 Copyright @ 2017

OSAKANA TAROのメモ帳:USBコネクタサイズに収まるESP8285搭載ボード

ESP8266 Community Forum :ESP8285 ENVIROMENTAL SENSOR

tindle:ESP8285 Development Board

Microne : High Speed LDO Regulators:レギュレーター

ROHM:EMH3 dual digital transistor:自動書き込み用トランジスター


.
感想:
WEMOS D1 mini Lite V1.0.0:
_ 2017年3月7日に WEMOS CC Store から販売開始されました。
_ 価格:$3.00 で 送料が$1.76 で 総額 $4.76 です。5個で 1個$4 になります。
_ Aliexpress や ebay では 最近 送料がかかり業者があり総額の計算が必要です。

IOT とサイズ:
_ ESP32 ボードで ADC, DAC 等が可能な高機能化の道が開けてきました。
_ しかし ESP-WROOM-32 Dev Board は サイズが大きく ケースはどうするの
_ と言う感じです。IOT は小型化である事が重要で USB や 電源コンセントには
_ 入りません。この点 ESP8285 は 小型で装置内部に組み込みが可能です。
_ ただし、この ESP8285 は TELEC がなく 難題があります。

Noduino ESP8285 mini WiFi module:
_ Noduino ESP8285 mini WiFi module は 注文中ですので 入手後にトライして
_ みたいと思います。

TELEC:
_ WithOUT TELEC です。私は主に電波を使用しない装置作りが殆どです
_ ので 小型化が必要な装置にと考えています。


 

Written by macsbug

3月 23, 2017 at 6:16 pm

カテゴリー: ESP8266

USB ISOLATOR

leave a comment »

iMac の USB を 保護する為に USB ISOLATOR を使用しています。  2017.03.01
USB ISOLATOR は USB インターフェース を遮断するアダプターです。
電源は 外部電源から供給され 電子工作に集中する事ができます。

通常 USB の最大電流は 500mA で 電子工作で 使用する ESP8266 や ESP32
ESP-WROOM-32 は 消費電流 や 突入電流 が 非常に大きいとの話を聞いています。
場合によっては 接続している iMac の USB が壊れるかも知れません。
基板 中央の16pin IC で iMac 側と ESP 側が完全に遮断され 信号のみが伝わります。
消費電力の大きい ESPの電源は AC アダプター から供給され 安全になります。
技術的な理解はともかく 高価な iMac を壊さない為に使用し安心です。


.
ESP32 ( ESP-WROOM-32 ) の 消費電流 の 調査と分析:
_ 電源の波形解析や詳細な調査をされ対策も記載されている記事があります。
_ 何度も読み直す程の内容があり 多大な努力に驚嘆しています。感謝!!
_ 是非、「ねむいさん」氏 と「mgo-tec」氏 の記事をお読み下さい。
_ その辺の技術書より 遥かに面白く 読み応え充分です。

ねむいさんのぶろぐ:
ESP-WROOM-32を使ってみる2 -そんな電源で本当に大丈夫か-
_ 丁寧な波形測定と解説は見事で改善策のデバイスの選択も素晴らしい。
:
mgo-tec電子工作:
ESP-WROOM-32 ( ESP32 )の消費電流を電流プローブ無しで測定してみました
ESP-WROOM-32 (ESP32) の 電流 測定 その2
_ 前回にも増して波形測定に工夫をされ のめり込む程の内容に驚きます。


.
保護回路:
iMac の USB回路の入力には ポリスイッチ と言う保護素子がついています。
過大な電流が流れると 動作して オープン になり後段の回路を保護します。
記憶能力があり電源を切っても しばらく オープン状態 を保持しています。
この為に 再起動すると動かない場合があり 電源を切り 30分とか1時間後
とかに復帰し 起動が可能になります。

知らずとUSB端子をショートする場合もありますので良いかと思います。
周囲からのノイズ やスパイクを取り除き オーディオには効果があります。

古くは FireWire ポートの話もあります。
RATOC:Macの本体標準 FireWire ポートのご使用に関して


.
購入:条件 は 電源が別 である事。
_ ebay:ADI ADUM4160 USB Isolator:価格:GBP 15.99、2235円。
_ 上記画像の製品は どのくらいの性能があるか評価はしていません。
_ 別電源が無い低価格の物は 使用しない事。
_ 下記の「USB Isolator USB-01」と比べるとかなり見劣りします。

国内販売: 以下の製品が理想的です。この製品は他の回路を圧倒しています。

アナログ回路のおもちゃ箱:USB Isolator USB-01:完成品:6.640円
_ 電源アダプターは 別途 用意されています。
_ 外部電源 (+6VDC) 供給時 は 低雑音LDO の ADP3338 から クリーンな
_ 5V・1Amax.を出力。
_ USBのデータ・ラインには サージ対策 及び ノイズ対策。
_ GNDパターンやレイアウト、部品点数を見ると細かな配慮がされています。
_ メモ:以下の基板のGNDパターンの作り方に注目してください。

日本アマゾンで他の製品を調べると 数万円と高いです。


.
「アナログ回路のおもちゃ箱」:

_ 「アナログ回路のおもちゃ箱」氏の 技術力は 超ハイレベルです。
以下の記事は今回の電源問題やUSBの件で詳細に分析され設計・製作もされています。

アナログ回路のおもちゃ箱:
USB Isolator:PCのUSBポートと接続される周辺機器を絶縁します。

USBコネクターからの電源供給(1):外部からクリーンな電源をDACに供給。

USBコネクターからの電源供給(2):TPS7A4700内蔵USBコネクター。

USB Isolator for Analog Discovery:Analog Discoveryでスペクトラム観測。

突入電流制限可能なHigh Side P-Ch MOSFET Switch:突入電流を抑える実験。

USB コネクター と 線の長さ:「アナログ回路のおもちゃ箱」氏の 話では
_ USBケーブルで最も良いのは 一番古い 四角いコネクター との事。
_ 理由は コネクターによって 電流容量 が違うとの事です。
_ USB の線の 太さや 長さ は重要で 太く短い物 を使用する必要があります。
_ Analog Discovery を使用する時は ISOLATOR の件もありますが 10cm 程の
_ 長さで iMac 本体に直接接続すると良いとアドバイスしています。

ESP8266 最強の電源:
_ 氏からは ESP8266の最強の電源 を設計製作、計測する方法を教わりました。
_ 測定方法は 氏のページにもありますが SMA Connector を直付けし最短距離。
_ にする事です。試してみると その通りでした。
_ 


.
感想:
USBケーブル:ESP8266 や ESP32 を接続するには USB ワイヤーは 太く短い
_ ケーブルを使用する事が大切です。例として消費電力が大きい場合は 百均
_ の細いUSBケーブルでは 動作しなくなる事を経験しています。
_ ワイヤーの太さ(抵抗値) が如何に電力に影響があるか解ります。
_ オームの法則:V= I * R で R(抵抗)があり I(電流)が大きいと影響が大です。

USB ISOLATOR: 価格が気になりますが iMac 本体価格よりも安いです。
_ 過去に iMac が再起動しなくなり 3時間とか半日於いて起動すると復帰した
_ 経験があります。原因はいろいろありますが結果的にポリスイッチが動作
_ した為と判断しています。iMac は高価ですから USB 入力端子を壊して
_ 修理すれば マザーボード交換 か 新規購入 しか手だてはありません。
_ それを考慮すると少しは高価でも USB ISOLATOR を接続する方が
_ 20〜30万の費用削減になると思います。

ESP32 ボードの設計:
_ 国内でアダプターボードや開発基板を設計・開発されている時期ですが
_ 「ねむいさん」氏 と「mgo-tec」氏 が示す 技術的検討を充分されて
_ 進めて頂きたいと希望しています。特に GND が如何に重要かですね。
_ 3月現在までの国内販売のアダプターボードを見ると まさかと思う位の
_ 悲惨な設計内容です。
_ 是非、技術力を高め 海外にも販売できる高性能な製品を期待しています。

注目するESP32開発ボード:「魔法の大鍋」ESP-WROOM-32のブレイクアウトボード
_ Make Faire Tokyo等で「超小型ドローン」を展示し各社の開発陣に販売する
_ 程の有名な「魔法の大鍋」氏が microSD付の ESP-WROOM-32の両面実装
_ ブレイクアウトボード を製作中です。氏は多層基板や超小型部品の基板も
_ 製作できるハイレベルの方です。現在 設計変更を含めた前段階で 完成までの
_ ツメの方法を熟知しています。なんと秋月でESPが販売されて直ぐ取りかかっ
_ たとの事でスピード感も素晴らしい方です。


Written by macsbug

3月 1, 2017 at 8:20 am

カテゴリー: Apple, ESP32, ESP8266

Weather meter on iPad

leave a comment »

iPad を気象計にしました。                                                         2017.01.29
構成は ESP8266 + BME280 + iPad Pro + TouchOSC です。


.
費用は 既に ハードをお持ちでしたら TouchOSC アプリのみで 600円 です。
構成は ESP8266(881円) + BME280(442円) + TouchOSC(600円) で総計1923円です。
ESP8266 に接続した BME280 温度、湿度、気圧センサーの値を iPad へ表示します。

左上:緑のLEDは TouchOSC が受信し処理中を示しています。
右上:時刻表示。その左:バッテリー量。その左:表示装置のテストボタン。
左下:スライドバーで ESP8266 に接続している LEDランプの明るさを変えます。
_  下にあるトグルスイッチは 出力を スライドバーか温度に切り換えます。
_  温度の場合は ESP8266 に接続している LED の明るさが温度で変化します。
中央:温度、湿度、気圧は デジタル表示とロータリーのアナログ表示にしました。


.
TouchOSC
iPad や iPhone , Android のタッチインターフェースを利用して トグルスイッチ、
プッシュスイッチ、フェーダー、ロータリーフェーダー、XYパッド、ラベル、LED
などを、様々な大きさで、いくらでも画面に配置し、ESP8266 と連携させ 表示装置
や コントロール装置を 楽しく容易に作る事ができます。
双方向通信: iPad Wifi と ESP8266 Wifi 間で 双方向通信 が可能です。
.
TouchOSC Editor:iPad の画面作りをします。
ご自身のデザインで「世界で1つだけのパネル」が作れます。
画面のデザインは iMac の TouchOSC Editor で行います。( Win, Linux 用もあります)
以下の画面にある部品が用意されておりドラッグ&ドロップで作ります。
「部品配置」と「部品名称」と「動作数値」を入力するのみで「プログラムは不要」。
ESP8266 は今回のサンプルで短時間に作り、デザインに時間をかけると見事なパネル
が出来ます。奇麗な仕上がりは 楽しく美しさが出てきます。
素敵な「上島珈琲」や「スタバ」で 優雅な気分で過ごせます。


.
準備:ESP8266 + BME280 + TouchOSC で 1923円。
1. ESP8266 with TELEC:881 円。
2. BME280センサー:ebay で 442円。
3. LED:必要に応じて装着。D1 mini は 本体に LED が着いています。
4. iPad pro, iPad, iPhone, Androide:既にお持ちの物を使用します。0円。
5. github:CNMAT / OSC:ダウンロードしライブラリーへ入れる。Adrian Freed氏に感謝。
6. iPad アプリ:TouchOSC:600円。
7. TouchOSC Editor:Mac OS X。0円。マックの編集アプリです。上記 TouchOSCに記載。
_  
ESP8266 + BME280 のハードの構成は 以下を参照ください。
macsbug:ESP8266+BME280+OLED+BOX
macsbug:ESP8266 + AE-BME280 + ThingSpeak
macsbug:ESP8266+BME280+IR LED+Air Con+ThigSpeak
macsbug:Environmental Sensor (環境センサー)


.
TouchOSC Editor:
参考:hexler.net:TouchOSC | Editing layouts
_  YouTube:OSC Tutorial #1
iMac TouchOSC Editor で作成した レイアウト は WiFi (LAN経由) で iPad ( Layout, add )
_  へ 即 転送できます。


.

信号の流れ:

①:I2C で計測を要求。 ②:計測。 ③:計測値を I2C で送る。
④:ESP8266でOSC信号に変換する。 ⑤:WiFi UDP で直接通信する。
⑥:OSC:名前から Control interface を選択し 数量表示 又は 文字表示する。

UDP通信: ESP8266 と iPad 間の 直接通信を 行います。
_ macsbug:Communicate ESP8266 and iPad directly with UDP を参照してください。

ライブラリー:

#include <OSCMessage.h>
#include <ESP8266WiFi.h>
#include <WiFiUDP.h>

TouchOSC:受信する方法。
_ 1. OSCMessage mIN
_ 2. udp.parsePacket())>0 で受信。
_ 3. mIN.route ( 部品名, サブルーチン);
_ 4. 部品毎の操作を行う。 トグルスイッチ や LEDの操作方法 を参照の事。

#include <OSCMessage.h> 

OSCMessage mIN;
int size;
if((size = udp.parsePacket())>0){
 while(size--)
  mIN.fill(udp.read());
   if(!mIN.hasError()){
    mIN.route("/1/push1", test);              // ** iPad -> ESP8266 **
    mIN.route("/1/fader", led_fade);          // ** iPad -> ESP8266 **
    mIN.route("/1/toggle",led_temp);          // ** iPad -> ESP8266 **
   } 
} 

TouchOSC:送信する方法。
_ 1. OSCMessage msg ( 部品の名前 );
_ 2. msg.add ( 数値 又は 文字 );
_ 3. UDP 送信。

OSCMessage msg(c);                             // c = name
msg.add(d);                                    // d = value
udp.beginPacket(udp.remoteIP(),txp);           // udp
msg.send(udp);                                 // udp
udp.endPacket();                               // udp end 
msg.empty();                                   // OSC end

トグルスイッチの操作方法:

mIN.route("/1/toggle",led_temp); 

void led_temp(OSCMessage &msg, int addrOffset){  // toggle
  int ledState = (boolean) msg.getFloat(0);      // get state of toggle
  if ( ledState == 1 ){ ind = 1;}                // fader switch on
  if ( ledState == 0 ){ ind = 0;}                // fader switch off
}                                                //

フェーダーの操作方法:

mIN.route("/1/fader", led_fade); 

void led_fade(OSCMessage &msg, int addrOffset){  // fader
  ledValue = msg.getFloat(0);                    // get value of fader
  if (ind == 1){analogWrite(led, ledValue);}     // BUILTIN_LED controll
}                                                //

LEDの操作方法:

led_sw( "/OnOff/led9", "ON");

void led_sw(char led[], String sw){
  float v;
  if ( sw == "ON" ){ v = 1.0 ;}
  if ( sw == "OF" ){ v = 0.0 ;}
  OSCMessage msg(led);
  msg.add(v);
  Udp.beginPacket(Udp.remoteIP(),txp);
  msg.send(Udp);
  Udp.endPacket();
  msg.empty();
}

ESP8266 スケッチ:
上記の様に モジュールを コピー&ペースト すると 短時間に簡単 に出来ます。


.
参考:
1. h e x l e r . n e t | TouchOSC:TouchOSC の 本家です。
2. github:CNMAT / OSC:OSCライブラリーがあります。
3. facebook:TouchOSCでプロジェクションマッピングもできています。
4. TouchOSCとOSCuino:丁寧に説明しているサイト。
5. YouTube:Controlling a dc motor with ESP8266-12E + TouchOSC:リスト未公開。
_  ESP8266 でモーターコントロール:今回の送受信の方法で可能です。
6. YouTube:esp8266 OSC spotlight:リスト未公開。
_  ESP8266 でロボットコントロール:今回の送受信の方法で可能です。
7. YouTube:controlling an Arduino with an iPad:Fader が高速で動き
_  アナログアナライザーが出来ています。
8. fabifiess / NodeMCU_OSC
9. Tuna Knobs
_ 


.
感想:
1. 過去の記事:以下では TouchOSCでの 受信方法が不明で 出来ませんでした。
_  macsbug:ESP8266 for Arduino ことはじめ。
_   ESP8266 で受信方法を公開されているサイトは見つかりませんでした。
_   YouTube:受信し画面表示している例があり可能な事が判明しました。
_   ただし YouTube では リストは公開されていません。
_   最も丁寧に説明されているサイトがありました。TouchOSCとOSCuino
_  この記事を基に 林 伸夫氏が UDP方式変換とOSCを連結し動作が可能になりました。
_  林 伸夫氏に感謝!
2. 表示装置:現在 ESP8266で実現している TFT解像度は 340×240 が限界です。
_   iPad Proなら 2048×2732 の高解像度を電子工作で利用できる訳です。
3. 工作時間:パネルのデザインをするだけで表示装置が完成します。
_  これをHTMLで記述する事は恐らく無理です。
4. メモ:BME280 ライブラリー:
_   BME280_MOD_1022.h と BME280_MOD-1022.h とがあり注意が必要。
_   – が使用され Arduino IDE のバージョンによりエラーが出る時があります。
5. ライブラリー:受信の メッセージ ライブラリーを作り始めました。
_   少し出来て動き始めましたが、これではダメな事に気づきました。
_   ライブラリーは OSCMessage だけでは無く 他の機能も必要です。
_   実際 github:CNMAT / OSCを見ると OSCBundle, OSCData, OSCMatch, OSCTiming 等
_  の機能が必要である事。よって 上記のOSCライブラリを使いこなす事ですね。
6. 事例:ESP8266 に接続している LED を PWM コントロールできる装置、
_   XL4001(387円)。秋月:LEDドライバモジュール (140円) を使用して 部屋
_  のライト等をコントロールする事ができます。
7. UDP直接通信:
_   照明器具をネット経由で操作するものがありますが ふと疑問に思います。
_   「何故 目の前のライトをネット経由で操作する必要があるのか」
_   手で直接操作するか UDPで直接通信すれば良いのではと思っています。
_   温度変化をネット経由でグラフ化できる ThingSpeak も経験してみました
_   が 日常生活では さほどグラフを見る必要性が無い事を体験しています。
8. 美しさ:
_  電子工作の完成品は 見た目 奇麗でない場合が多いですが、表示を iPad や
_  iPhone にして素敵なデザインをすると 見事に奇麗なものが出来ます。
_  機能も大切ですが デザインはそれ以上に大切かと思っています。 


.
TouchOSC のリスト:GitHub を使用していない為、リストアップできません。
以下を参考に「素敵なデザイン」を組み上げてください。
右上の Tx は TouchOSC の送信ランプ、Rx は受信ランプです。
Tx は送信時「緑」に点灯、Rx は受信時「赤」に点灯します。

左上から右下に Control interface の内容を列記します。

LED:led,0,1
Label V:Color=Brown,Text="Temp,,,",Size=32
Push Button:Name=push1,Color=Gray,Value Range=0 To 1
Battery V:Color=Green,Outline,Size=24
Time V:Color=Orange,Outline,Size=24
Label V:Name=disp,Color=Gray,Size=24
fader V:NAme=fader,Color=Brown,Value Range=1023 To 0
Toggle Button:Color=Brown
Rotary V:Name=tr,Color=Red,Value Range=0 to 40
Label V:Text="Temp,,",Color=Brown,Size=32
Label V:Name=t,Color=Red,Text=88,Size=66
Label V:Text="Humi,,",Color=Brown,Size=32
Rotary V:Name=hr,Color=Green,Value Range=20 to 60
Label V:Name=h,Color=Green,Text=88,Size=66
Label V:Text="Pres,,",Color=Brown,Size=32
Rotary V:Name=pr,Color=Blue,Value Range=990 to 1030
Label V:Name=p,Color=Blue,Text=88,Size=66
Label V:Color=red,Text=0,Size=24

.
ESP8266 スケッチ:
1. SSID は各自好みの名前にしてください。
2. ESP8266 に接続する LED のピン番号は 各自の使用GPIOにしてください。
_  int led = BUILTIN_LED;
3. ESP8266 に接続する BME280 のピン番号は 各自の使用GPIOにしてください。
_  Wire.begin(SDA, SCL);
_  5sec 毎に送信します。必要に応じて 初期値の rm = 5000 を変えてください。
4. UDP送受信の PORT 番号は好みの数値に変更可能です。
_  ESP8266 と iPad TouchOSC の outgoing と incoming を合わせてください。
.

// ESP8266 + BME280 + TouchOSC + iPad            // 2017.01.29 macsbug
// BME280 : Temperature,Humidity,Pressure Sensor //
// UDP communication
// ESP8266(ip:192.168.4.1,port:9000) transmit ---|
// ipad   (ip:192.168.4.2,port:9000) receive  <--|
// ipad   (ip:192.168.4.2,port:8000) transmit ---|
// ESP8266(ip:192.168.4.1,port:8000) receive  <--|
#include <BME280_MOD_1022.h>                     // BME280_MOD-1022.h
#include <Wire.h>                                //
#include <OSCMessage.h>                          //
#include <ESP8266WiFi.h>                         //
#include <WiFiUDP.h>                             //
static WiFiUDP udp;                              //
const char *ssid = "a10";                        // SSID
const char *pass = "";                           // password
#define rxp 8000                                 // ESP Rx Port:TouchOSC=outgoing
#define txp 9000                                 // ESP Tx Port:TouchOSC=incoming
IPAddress ESP8266_IP;                            // ESP8266 IP = 192.168.4.1
IPAddress ipad_RX_IP;                            // iPhone  IP = 192.168.4.2
long ta =  -5.3;                                 // temperatue adjust
long ha = +16.7;                                 // humidity   adjust
long pa =  +3.5;                                 // press      adjust
int rt,count,rm = 5000,ind = 0;                  // time count, 5sec
int led = BUILTIN_LED;                           // 15 BUILTIN_LED
float ledValue = 1023;                           // led fader

void setup(){                                    //
  pinMode(led, OUTPUT);                          // GPIO Conttroll
  analogWrite(led, 1023);                        // LED Illuminance OFF
  Serial.begin(115200);Serial.println();         //
  //---------------------------------------------// BME280 setup
  Wire.begin(D6, D7); delay(10);                 // SDA, SCL 12,13
  BME280.readCompensationParams();               // read the NVM param
  BME280.writeOversamplingTemperature(os1x);     // 1x over sampling
  BME280.writeOversamplingHumidity(os1x);        // 1x over sampling
  BME280.writeOversamplingPressure(os1x);        // 1x over sampling
  //---------------------------------------------// WiFi setup
  WiFi.mode(WIFI_AP);                            // AP setup
  WiFi.softAP(ssid, pass);                       //
  ESP8266_IP = WiFi.softAPIP();                  // 192.168.4.1  localIP
  udp.begin(rxp);                                // iPad -> ESP8266 Rx Port
  rt = millis();                                 // save time
}                                                //
 
void loop(){                                     //
  OSCMessage mIN;                                //
  int size;                                      //
  if((size = udp.parsePacket())>0){              //
   while(size--)                                 //
    mIN.fill(udp.read());                        //
     if(!mIN.hasError()){                        //
      mIN.route("/1/push1", test);               // ** iPad -> ESP8266 **
      mIN.route("/1/fader", led_fade);           // ** iPad -> ESP8266 **
      mIN.route("/1/toggle",led_temp);           // ** iPad -> ESP8266 **
     }                                           //
  }                                              //
  count = int( millis() - rt );                  // read time
  if ( count > rm ){                             // time check
    sensor();                                    // ** ESP8266 -> iPad **
    count = 0; rt = millis();                    // reset time
  }                                              //
}                                                // 

void tx(String s, float f, int t ){              // OSCMessage + UDP
  char c[12];                                    // char
  int len = s.length() + 1;                      // string length
  s.toCharArray(c, len);                         // c = string to char 
  OSCMessage msg(c);                             // name
  msg.add(f);                                    // value
  udp.beginPacket(udp.remoteIP(),txp);           // udp
  msg.send(udp);                                 // udp
  udp.endPacket();                               // udp end 
  msg.empty();                                   // OSC end
  if ( t != 0 ){ delay(t);}                      // delay
}                                                //

void txchr(String s, String f, int t ){          // OSCMessage + UDP
  char c[12], d[40];                             // char
  int len = s.length() + 1;                      // string length
  s.toCharArray(c, len);                         // c = string to char 
  len = f.length() + 1;                          // string length
  f.toCharArray(d, len);                         // c = string to char 
  OSCMessage msg(c);                             // name
  msg.add(d);                                    // value
  udp.beginPacket(udp.remoteIP(),txp);           // udp
  msg.send(udp);                                 // udp
  udp.endPacket();                               // udp end 
  msg.empty();                                   // OSC end
  if ( t != 0 ){ delay(t);}                      // delay
}                                                //

void sensor(){                                   //
  //---------------------------------------------// BME280 sensor
  BME280.writeMode(smForced);  delay(50);        // chip goes back to sleep
  while (BME280.isMeasuring()){delay(50);}       // BME280 check
  BME280.readMeasurements();                     // read out the data
  float t = BME280.getTemperature()+ta;          // Temperature
  float h = BME280.getHumidity()   +ha;          // Humidity
  float p = BME280.getPressure()   +pa;          // Pressure 
  int   c = int(millis()/1000);                  // count
  //---------------------------------------------// 
  tx( "/1/led",    1 , 300 );                    // LED ON
  tx( "/1/t",  int(t), 300 );                    // Temperature digital
  tx( "/1/h",  int(h), 300 );                    // Humidity    digital
  tx( "/1/p",  int(p), 300 );                    // Presuure    digital
  tx( "/1/tr",     t , 300 );                    // Temperature roter
  tx( "/1/hr",     h , 300 );                    // Humidity    roter
  tx( "/1/pr",     p , 300 );                    // Presuure    roter
  if (ind==0){analogWrite(led,1023-t*1023/40);}  // temp -> led
  if (ind==1){analogWrite(led,ledValue);}        // temp -> led
  tx( "/1/led",    0 , 300 );                    // LED OFF
  //---------------------------------------------//
}

void test(OSCMessage &msg, int addrOffset){      //
  txchr("/1/disp", "Indicator Test",50);         //
  for(int i=   0;i<=  41;i++){tx("/1/t" ,i,50);} //
  for(int i=  40;i>=   0;i--){tx("/1/t" ,i,50);} //
  for(int i=  20;i<=  60;i++){tx("/1/h" ,i,50);} //
  for(int i=  60;i>=  20;i--){tx("/1/h" ,i,50);} //
  for(int i= 990;i<=1030;i++){tx("/1/p" ,i,50);} //
  for(int i=1030;i>= 990;i--){tx("/1/p" ,i,50);} //
  for(int i=   0;i<=  40;i++){tx("/1/tr",i,50);} //
  for(int i=  40;i>=   0;i--){tx("/1/tr",i,50);} //
  for(int i=  20;i<=  60;i++){tx("/1/hr",i,50);} //
  for(int i=  60;i>=  20;i--){tx("/1/hr",i,50);} //
  for(int i= 990;i<=1030;i++){tx("/1/pr",i,50);} //
  for(int i=1030;i>= 990;i--){tx("/1/pr",i,50);} //
  txchr("/1/disp", "",50);                       //
}                                                //

void led_fade(OSCMessage &msg, int addrOffset){  // fader
  ledValue = msg.getFloat(0);                    // get value of fader
  if (ind == 1){analogWrite(led, ledValue);}     // BUILTIN_LED controll
}                                                //

void led_temp(OSCMessage &msg, int addrOffset){  // toggle
  int ledState = (boolean) msg.getFloat(0);      // get state of toggle
  if ( ledState == 1 ){ ind = 1;}                // fader switch on
  if ( ledState == 0 ){ ind = 0;}                // fader switch off
}                                                //

Written by macsbug

1月 29, 2017 at 1:56 pm

カテゴリー: Apple, ESP8266