macsbug

Just another WordPress.com site

Archive for 4月 2016

How to touch operation of the TFT LCD in ESP8266

with 3 comments

240 x 320 SPI TFT LCD の タッチパネルを ESP8266 で使用する方法。                  2016.04.25

タッチパネルの操作が可能になりました。 左は サンプルの「XPTPaint」です。
指やタッチペンで点や線を描く事ができ Clear ボタンを押すと画面がクリヤーされます。

キャリブレーション:左右のカーソルを押すと キャリブレーションの値がでます(右上)

タッチパネルから入力が可能になり多様な電子工作が出来る事になります。(スクリーン=パネル)
タッチパネルの Controll IC は XPT2046 で 今までこのライブラリーがありませんでした。
その中で NailBuster Software Inc. が:  で
解決した記事を掲載しました。この実例を基に 動作確認をした内容を備忘録としました。


準備:
1. ボード:D1 mini with TELEC240 x 320 SPI TFT LCD Touch Panel :1600円。
_  TFT LCDには付属品として小さなタッチペンがついてきます。
_  
_           tp_300_s
2. ライブラリー:ILI9341esp: NailBuster Software Inc に感謝。
3. ライブラリー:adafruit / Adafruit-GFX-Library: Adafruit に感謝。
4. ライブラリー:spapadim/XPT2046: Spiros Papadimitriou 氏に感謝。
5. 部品:LDO:NJM2845DL-33:秋月電子通商。発熱対策が必要な場合。


配線:14本です。
_ ライブラリー ILI9341esp と 2.8″ Touch LCD SPI for esp8266 (nodemcu) に基づき
_ 配線も同様に行いました。ただし、T_CS は 4番から16番へ変更しました。
_ 理由は I2C信号を使用する為に 4番 を I2CのSCL に使用した為です。
_ ライブラリーとの関係もありますので大幅な配線の変更は実施しませんでした。

LED 3.3V 電源:D1 mini のLDO 3.3V の負担を軽くする為 LDO(NJM2845DL-33) で
_  5V から 3.3V を作り TFT LCD の LED電源にします。LDO の GND は SD の
_ 金属部分に半田付けします。金属カバーの変形と樹脂の溶解に注意する事。
_ 熱くなる事はありませんので他の場所でも可能です。
_ 補足:D1 mini の3.3V でも動作しますが U1(RT9013)LDO がかなり熱くなります。
_    U1 は左上の5本足のICです。LEDの電源に5Vを使用してはいけません。

注:端子の変更について:15番、0番は書込みで使用する為 出力信号へ接続しない事。
_ 16番は CS 以外の出力信号は接続しない事。接続すると動かなくなります。

_    

実写の補足:D3(0)(SDA)、D2(4)(SCL) に I2C BME280(温度,湿度,気圧) を接続し
_ 動作しています。電源は USB 又は ワイヤレス給電 が可能です。
_ ワイヤレス給電の場合 コイルが熱を発生する為 センサー等は考慮が必要です。


使用方法:
サンプルは「XPTCalibrate」と「XPTPaint」があります。
初回はタッチパネルのキャリブレーションを行います。

XPTCalibrate:タッチパネルのキャリブレーションをするもので、左上と右下に
_ カーソルがでてきます。カーソルをプッシュすると4つの数値が出てきます。
_ この値がキャリブレーション・データーですのでメモをします。

XPTPaint:キャリブレーション・データーの値を「XPTPaint」の
_ touch.setCalibration(1825, 1771, 280, 260); の中に記載すると正しい位置で
_ 「XPTPaint」が使用できる様になります。

冒頭の各設定は以下の様になります。( touch_CS 16 は 基記事から変更の部分)


#include <SPI.h> 
#include "Adafruit_ILI9341esp.h"
#include "Adafruit_GFX.h"
#include "XPT2046.h"
#define TFT_DC     2
#define TFT_CS    15
#define touch_CS  16
#define touch_IRQ  5
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
XPT2046 touch(touch_CS, touch_IRQ);  


参考:
NailBuster Software Inc.:2.8″ Touch LCD SPI for esp8266 (nodemcu)
3D Print Circuits and Mount for Your Own Arduino Compatibl:320×240 Touchscreen
XPT2046:Arduino library for XPT2046 / ADS7843 touchscreen driver
adafruit / Adafruit GFX Graphics Library / Overview
adafruit-gfx-graphics:using-fonts
adafruit-gfx-graphics:graphics-primitives
adafruit-gfx-graphics:coordinate-system-and-units
adafruit-gfx-graphics:rotating-the-display
2016.04.30 追記:
SMART PLUG:WeMos D1 mini と TFT LCD の豊富な記事がある。
SMART PLUG:Make Meteocons font file for ESP8266 Arduino UTFT library
SMART PLUG:ESP8266 UTFT 320×240 LCD Display Arduino Code
SMART PLUG:ESP8266 240×320 LCD Brain Stroke Index
SMART PLUG:[ESP8266] Display 2.8 inch Touch LCD with WeMos D1 mini board
Pavlův blog :ESP8266 + 2.8“TFT + TOUCH PANEL = ZÁKLAD PRO MALÝ HMI


表示例:BME280 温度、湿度、気圧センサー による表示。USB5Vの消費電流は 190mAです。


感想:
ライブラリーの公開:
Arduino では TFT LCD 表示の為の UTFT ライブラリーが有名です。
その LCD に タッチパネルを使用し入力装置にするものが UTouch です。
しかし ESP8266 が販売されてから このライブラリーはありませんでした。
約1年位でしょうか 先駆者により TFT LCD と TOUCH が使用可能になりました。
これで表示装置をそなえた ESP8266 の最小基本構成ができた訳です。

ESP8266の困難:
GPIOの数が少なくTOUCH PANELも含めた構成は困難でした。
この解決方法は2つの信号を共通で使用する事で実現しています。
結果 GPIOは2個の空きポートができ I2C用に使用できます。

ESP8266の弱点:
GPIO数が少なく パラレルI/Oを使用する大きな解像度は使用できません。
望みがあるのはシリアル信号を使用した 4本線の Nextionです。
NailBusterではかなり苦労した形跡があり 配線変更時は丁寧に調べてください。

SD CARD:
SDは CS,MOSI,MISO,SCKの4本が必要でGPIOの余りが無い為に使用できません。
これが使用できる様になるとデーターの保存や取得、画像の活用が出来ます。
使用できる方法ができましたら素晴らしいですね。

ESP8266の最小基本構成:
これで ESP8266 に TFT LCD と タッチパネル が実現し道具がそろいました。
ソフトでスイッチを作り 物理的なスイッチの購入や工作が不要になります。
価格も1600円で出来る事で 気楽に物作りが出来る条件が整いました。
ESP8266の出現時と比べると 画期的な事です。
更なる低価格の為に WeMos社から TELEC Version が販売される事を期待します。
D1 mini of TELEC Version expects that comes out.


Written by macsbug

4月 25, 2016 at 4:48 am

カテゴリー: ESP8266

Try ESP8266 Adafruit_ILI9341 again

leave a comment »

ESP8266 で TFT LCD を動かす為の Adafruit_ILI9341 を再度 検証しました。   2016.04.20
ILI9341 のライブラリーは 幾つかあり 今回は Adafruit のものです。
ESP8266 用として他のライブラリーもあるようです。


ライブラリーの種類と使い方が混乱していましたので 再度 試しました。
TFT LCD 240 x 320 SPI のコントローラーは ILI9341 を使用しています。
ILI9341 に対するライブラリーが幾つかあり 動作状況もいろいろあります。


サンプル:「graphicstest」の表示。


準備:
ハード:
1. D1 mini with TELEC + TFT LCD 240×320 SPI Module:1600円。
_  
_  
_  尚、この配線は タッチ操作の為に次回1カ所変更になります。
ライブラリー:
1. adafruit / Adafruit_ILI9341:  github.com/adafruit を使用。
2. adafruit / Adafruit-GFX-Library:github.com/adafruit を使用。

サンプル:上記 Adafuruit_ILI9341 の中にある「graphicstest」を試します。

スケッチの設定:以下2点 ( DC=2, CS=5 )
1. #define TFT_DC 2
2. #define TFT_CS 5

実行:動作中にエラーがでて停止します。
_  このエラーが発生する場所は、Lines、Rectangles (filled)、Triangles (filled)、testText();
_  で wdt が発生します。


Rectangles (filled) 時のシリアル出力の表示で field で停止しています。

ILI9341 Test!
Display Power Mode: 0xFF
MADCTL Mode: 0xFF
Pixel Format: 0xFF
Image Format: 0xFF
Self Diagnostic: 0xFF
Benchmark Time (microseconds)
Screen fill 1541140
Text 100898
Lines 992463
Horiz/Vert Lines 126333
Rectangles (outline) 81402
Rectangles (filled)
ets Jan 8 2013,rst cause:4, boot mode:(1,6)

wdt reset


疑問:
_  何故、抽画する所で wdt がでるのでしょうか?
_  wdt は自動再起動の為と思われますが、再起動しなく停止しています。
_  と、思えば再起動するときもあり不安定です。
_  ネットでの議論:Automatic reboot after wdt reset
_   ここでは トップレベルの SensorsIot氏 や igrr氏 が論議しています。
_   今回の問題で私は「ESP.wdtDisable();」で済まそうかと思っていますが
_   これはクラッシュする基の原因をなくす物でなく 対症療法という感じです。
_   奥が深そうなのでこの辺にしておきます。


対策:その1
初回の記事では、対策としてライブラリーの各ルーチンの中に 「ESP.wdtDisable();」
を記載し wdt の発生を止めました。どれくらい止められるかも解らないままに行っています。
この対策は1つの方法かも知れませんが、何が正解か良くわかりません。
基礎やレベルもないままに中をいじっています。

対策:その2:SensorsIot氏 や igrr氏 の論議を読むと以下の対策が正解かどうか疑問が起きます。
今回は、wdt 発生に対して スケッチの中での対策を考えました。
方法: スケッチの中で tft ルーチンを実行する前に「ESP.wdtDisable();」を記述する。
_   特に testLines の中の多数の fill や 連続した fill は wdt を発生させるので
_   この前にも「ESP.wdtDisable();」を記述しました。
例:


unsigned long testFilledRoundRects() {
  unsigned long start;
  int           i, i2,
                cx = tft.width()  / 2 - 1,
                cy = tft.height() / 2 - 1;
  ESP.wdtDisable();
  tft.fillScreen(ILI9341_BLACK);
  start = micros();
  for(i=min(tft.width(), tft.height()); i>20; i-=6) {
    i2 = i / 2;
    ESP.wdtDisable();
    tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
  }

  return micros() - start;
} 

void loop(void) { 
  for(uint8_t rotation=0; rotation<4; rotation++) { 
    ESP.wdtDisable(); 
    tft.setRotation(rotation); 
    testText(); 
    delay(1000); 
  } 
} 


結果:シリアル出力の表示は最後までエラー無く動作しました。
ILI9341 Test!
Display Power Mode: 0xFF
MADCTL Mode: 0xFF
Pixel Format: 0xFF
Image Format: 0xFF
Self Diagnostic: 0xFF
Benchmark Time (microseconds)
Screen fill 1541146
Text 100875
Lines 992463
Horiz/Vert Lines 126343
Rectangles (outline) 81379
Rectangles (filled) 3199752
Circles (filled) 501936
Circles (outline) 433711
Triangles (outline) 314803
Triangles (filled) 1067064
Rounded rects (outline) 186470
Rounded rects (filled) 3492567
Done!


参考:
Adafruit GFX Graphics Library:Overview
フォント:Adafruit GFX Graphics Libraryは幾つかのフォントと 9, 12, 18, 24 point
_    のサイズを使用でき奇麗なフォントを表示できます。
_    Using Fonts を参照してください。
_    例: #include
_       tft.setFont(&FreeSansBoldOblique24pt7b);
_       tft.println(“Hello World!”);
サンプルスケッチの touchpaint :コントロールICが今回のICとは異なるので動きません。
_ 今回のTFT LCD の Touch Screen Controller は XPT2046 です。
2016.05.03 追記:
Microcontroller Projects:ESP8266 WiFi Development kit connect TFT LCD Display


課題:
上記の対策でエラーも無く抽画し充分な速度で動いていますが いつ停止するか不明です。
いつもの「3D Cube」を動作させると 速度は遅いです。対策方法は解りません。
2016.05.03 追記:
Adafruit-GFX-Library はグラフィックスの抽画速度が きわめて遅く高速表示が出来ない。
これは OLED の時と同じく ライブラリーSSD1306は高速であるがTFT LCDには使用できない。

Sermus / ESP8266_Adafruit_ILI9341:ESP8266 と書かれた物です。
_ サンプルプログラムがないのでライブラリー合わせてスケッチを作成しても動かず。
_ 関数のエラーがでて使用できませんでした。


感想:
同じ名前の「Adafruit_ILI9341」ライブラリーでも幾つかの種類が手元にあり、
動作する物とそうでない物があり混乱しました。又、他にESP8266用と書かれた
ものもありますが動作せず。今回、最初に戻り再度試した次第です。


 

Written by macsbug

4月 20, 2016 at 9:06 am

カテゴリー: ESP8266

How to use the UTFT Library the TFT LCD in ESP8266

leave a comment »

ESP8266 と TFT LCD 240×320 SPI で UTFT Library を使用する方法。          2016.04.18


前置き:
TFT LCD を動かすには Rinky-Dink ElectronicsUTFT Library が便利です。
UTFT Library は Arduino, chipKt, TI LaunchPad に対応した多彩なライブラリーです。
ESP8266 が出始めた頃は TFT LCD を動かすライブラリーはありませんでした。
約1年位でしょうか ESP8266 対応のTFT LCD Library が整ってきました。
開発者に大変感謝致します。
ここにはドネーションボタンがあり援助できる方はよろしくお願い致します。
_ 課題:サンプルのデモは速いが「3D Cube」は 非常に速度が遅いです。
_   
_   これは ESP8266 への最適化が行われていない為かとも思われます。

TFT LCD の重要な機能としてタッチセンスがあります。
使用している TFT LCD は TOUCH SENS と SD CARD が装備されています。
これはLCDの表面にタッチセンスが張られており専用ICがコントロールしています。
タッチセンスがあればスイッチ等のハードが不要で多彩な入力が実現できます。
ただし、まだタッチセンス(UTouch Library)が動く事を確認していません。
理由は 動くライブラリがまだ見つからない為です。


準備:
1. D1 mini with TELECTFT LCD 240×320 SPI Module:計1600円
_  
2. Library:gnulabis/UTFT-ESP8266:gnulabis に感謝
_  DLしUTFT-ESP8266-master.zip を解凍する。
_  UTFT-ESP8266-masterフォルダーができます。
_  UTFT-ESP8266-masterの中にある UTFT フォルダーを Library フォルダーへ移動します。


方法:
1. Library>UTFT_ESP8266>ESP8266>UTFT_Demo_320x240_Serial_SW をロード。
2. SPIの配線とスケッチを合わせます。
_  スケッチ設定値:27行目:UTFT myGLCD ( ILI9341_S5P, 13, 14, 15, 5, 4 );
_  私の配線は以下で、27行目を変更します。
_  
_  D1 mini  :UTFT myGLCD ( ILI9341_S5P, D7, D5, D1, D8, D4 );
_  ESP8266:UTFT myGLCD ( ILI9341_S5P, 13, 14, 5, 15, 2 );
_  この1行の変更でサンプルデモはエラーも無く動きました。



画像を表示する方法:examples に UTFT_Bitmap サンプルがあります。
_ スケッチ:UTFT フォルダ>examples>Arduino (AVR)>UTFT_Bitmap。
_ 画像変換:Windows 用アプリで変換。例:xx.jpg を x.c に変換します。
_      UTFT フォルダー>Tools>ImageConverter565.exe、ImgConv.exe
_      UTFT Image Converters.pdf を参照の事。
_ この方法は 240×320 の画像を2枚しか表示できません。コンパイルエラーがでます。
_ 240×320で150KByte程度です。このエラーの件は調べていません。

例:Fuji の画像。320×240 pixels 153.6 KBytes。Generated by: ImageConverter 565 v2.3

#include <UTFT.h>
extern uint8_t SmallFont[];
UTFT myGLCD ( ILI9341_S5P, D7, D5, D1, D8, D4 );
extern unsigned int fuji[0x12C00];

void setup(){
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
  myGLCD.fillScr(255, 255, 255);
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawBitmap (0, 0, 320, 240, fuji);
}

void loop(){
}

参考:
UTFT フォルダのDocumentationの中に重要なマニュアルがあります。
UTFT フォルダ>Documentation>
_ UTFT_Requirements.pdf:Pin Assign。
_ UTFT_Supported_display_modules_&_controllers.pdf:TFT Conrtroller。
_ UTFT.pdf:UTFT Multi-Platform Universal TFT display library Manual:命令表。


感想:
前回、初めてTFT LCDがESP8266で動いて驚きましたが、さらに驚いたのは費用です。
1600円 です。国内のあらゆるESPボードより安く 表示器付きでも遥かに安いのです。
さらに低価格にするにはWeMosへESP-WROOM-02 with TELECを搭載したバージョンを
お願いして出荷してもらう事です。実現すれば 表示器付きで 1049円 が可能になります。

Arduinoの時にはUTFTのおかげでTFT LCDを有効に使う事ができました。ESP8266のチップが
出た時はライブラリが無くなにも出来ない状態でしたが このLibraryで動きほっとしました。
サンプルデモの表示は速いですが、3D Cubeが遅い理由は解りません。
他のライブラリーも試してますが理解力に乏しくあいまいながら進めています。

上は、Arduinio で 320×480 TFT LCD を使用した時のオシロスコープとFFTです。
下は、32bit Arinc 429 Signal を表示。タッチキーで数値入力や機能の選択をします。
ESP8266は このパラレル方式のLCD 320×480 は GPIOポートが少なく使えません。
Arduinoの5倍の速度を持ちながら GPIOポートが少なく能力を発揮できない訳です。


Written by macsbug

4月 18, 2016 at 12:17 am

カテゴリー: ESP8266

Using the TFT LCD display in the ESP8266

leave a comment »

ESP8266 で TFT LCD Display ( 2.4inch 240×320 SPI ILI9341) を使用する方法。 2016.04.16

ケースはカードサイズの大きさで 50 x 85 x 18 mm 。
ESP8266 で TFT LCD を動かす環境(ライブラリ)は 5つ程あり今回はその1回目です。
画像のサイズは 240 x 320 と少ないですが これで 多様な表現が可能となります。
電源は USB 又は ワイヤレス給電が可能です。
ESP8266 用のライブラリーは まだ無い物や過渡的なものもありますのでご留意ください。
ワイヤレス給電(442円)を除き、約1600円で WiFi や Graphic を駆使したものが作れます。


準備:
1. D1 mini with TELEC 又は ESP8266:956円。( 431+525円)

2. 240×320 3.3V 2.4″ SPI TFT LCD Touch Panel Serial Port Module with PBC ILI9341
_  ebay :618円。  * 1. と 2. で 1574円です。注:円レートで変化します。
_  注:左のピンを基準に右のSD CARD用のスルーフォールは半ピッチずれている。
_  Touch Panel の無い物は 531円がある。

3. Library:Sermus / ESP8266_Adafruit_ILI9341:Andrey Filimonov氏に感謝
_  DL後 以下の Adafruit_ILI9341 Folder を Library Folder へ入れる。
_  esp8266-Arduino-master/esp8266com/esp8266/libraries/Adafruit_ILI9341

4. Library:adafruit/Adafruit-GFX-Library
_  DL後 Adafruit-GFX-Library を Library Folder へ入れる。
_  Adafruit_GFX.cpp の改修をします。数が多く面倒ですが頑張ってください。
_  Adafruit_GFX.cpp の各Graphics Routine の最後に ESP.wdtDisable(); を追加する。
_   drawLine、drawRect、drawFastVLine、drawFastHLine、fillRect、fillScreen
_   drawRoundRect、fillRoundRect、drawTriangle、fillTriangle、drawBitmap
_   drawBitmap、drawBitmap、drawBitmap、drawXBitmap、write
_ 追記:その後の調査で ESP8266_Adafruit_ILI9341Adafruit-GFX-Library-master
_    大きな問題はなく動作確認をしていますので 後日 記事にまとめます。
_    ESP.wdtDisable(); はライブラリーではなくスケッチ側に記載する事で
_    ハングアップは防止できました。以下のスケッチの55行に追加しました。

5. ワイヤレス給電:5V 1000mA程度。
_   Qi Pad Wireless Power Charger Hot:237円
_   Universal QI Wireless Charger Receiver Module:205円


配線:SPIは 5本ですが MISO(ESP8266への入力) は使用しない為 4本となります。
_ 画像はTFT LCD Display の裏の端子に表示されたもの。
_ CS=5, DC=2, MOSI=13, CLK=14:配線の端子番号は固定で変更してはいけません。
_  理由:MOSI=13, CLK=14はLibraryの中で行っている為。
_ ESP8266 は LCD基板の裏側に D1 mini を裏にして両面テープで固定しました。
_ ESP8266の金属ケースが止めるのに便利で ついでにTELEC No が見えなくなります。
_  理由:薄く作る為で基板に乗せる必要も無く 手間が省けます。
_ ワイヤレス給電の5V出力は コネクター経由 D1 mini の 5V 端子へ接続します。
_   USBからの書込みと給電 及び ワイヤレス給電の両方が可能になります。





注:基板下側の配線はTOUCH SENSの調査用の為に配線してあります。


メモ:
Adafruit の Graphics Test の設定は以下の様にする。GPIO は固定である。

#define TFT_DC 2
#define TFT_CS 5
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

問題 その1:
_ wdt reset (Watchdog Timer) のエラーがでて動作しない。
_ 原因:Adafruit_GFX_Library:ESP8266に最適化されていない。
_ 解決方法 その1:Adafruit_GFX_Library にある Adafruit_GFX.cpp の16個の
_          Graphics Routine の最後に ESP.wdtDisable(); を追加する。
_ 結果:graphicstest はエラー無く正常に動作し速度も速い。
問題 その2:
_ スケッチ「3D cube」はきわめて遅い。
_ 解決方法 その2:ESP8266 に最適化された Andrey Filimonov氏 の
_  Sermus / ESP8266_Adafruit_ILI9341を使用する。

問題 その4:課題として残すもの。
_ ESP8266 の GPIO:数が少ない為 Touch Sens, SD Card が使用できない。
_ ESP8266のGPIOは、0, 2, 4, 5, 12, 13, 14, 15, 16 の9個である。
_  その中で2つは書込みに必要な端子である為 接続方法に制限があります。
_  今回のSPIは 2, 5, 13, 14 の4個を使用。残りは 0, 4, 12, 15, 16 の5個。
_ Touch Sens:T_IRQ, T_D0, T_DIN, T_CS, T_CLK の4本を使用する。
_ SD Card:SD_CS, SD_MOSI, SD_MISO, SD_SCK の4本を使用する。
_ Arduino UNOやDue:GPIOが沢山ありパラレルもなんのそのです。
_ 結果、今回は Touch Panel や SD Card の操作は行いませんでした。

消費電流:130mA。ワイヤレス給電(800mA)で動きました。
_    ワイヤレス給電側及び受電は1000mA を使用してください。価格は大して差がありません。

部品:結論:ディスプレーは ebayで購入してください。
_ ディスプレー:以下の条件にあったディスプレーは国内では見受けられず、
_ ebayで購入(621円)する必要があります。
_ 条件:240×320、3.3V、2.4″、SPI、TFT、ILI9341、Touch Panel、SD Slot。
_ スイッチサイエンスのAdafruit 2.8インチ TFTタッチシールド v2(抵抗膜方式) は
_  確認していません。価格は 送料込み5303円。
_  aitendoの3.2インチ液晶モジュール [M032C9341B3]は 確認していません。
_  価格は送料代引き込み 3770円。
費用:計1574円。内33%の525円が技適化の為の費用です。
フォント:Adafruit_ILI9341 + Adafruit_GFX の組み合わせはフォントを拡大すると奇麗でない。
_    フォントを奇麗にする方法は再度調査が必要と思われます。


参考:
楽しくやろう:激安QVGA液晶をESP8266で使う:この記事は試したが動かない為 保留している。



感想:
大きさ:厚さ 18mm のカード型の大きさは 手に持つとなんともいい感触です。
幾つかの動作問題:事例の少ない TFT Display + ILI9341 + esp8266 が動きました。
Arduino陣営:Arduinoでは 他のDriver IC やサイズでも多数動作しておりESP8266 は遅れている。
費用:国内某販売店価格ではESP8266ボードを含め7613円で差額は 6036円。
_  今回の費用で4〜5台分に相当し 海外(技適不要)の場合の費用は7台分の価格になります。
_  この競争力の差には驚きました。
_  費用の33%が技適化の為で技適が競争力を低下させています。
_  その後のTFT価格調査:Aliexpress で583円がありました。
GPIOの数:SPI方式はディスプレーサイズが 240×320 までしかない。それ以上はパラレル方式。
_     そうなると ESP8266 ではGPIOポートが全然足りないという事になる。
_     まして Touch sens や CD Card を使用するとなるとどうしたらいいものか。
_     ESP8266 の最大の弱点です。
_     解決するには Nextion が望まれるが ESP8266 で動作した事例は見ていない。
コネクター:接続コネクタのピン配線は いろいろ試した結果 固定である事が判明。
_     ハードはこのままのピン配置で行う事。
_     スケッチは TFT_DC=2, TFT_CS=5 を変更してはいけない。Don’t change。
LibraryのVersion:Manage Library において Adafruit_ILI9341, Adafruit-GFX-Library の
_       バージョンアップがあるが関係があるかどうか調べきれてない。
TFTのLED電源:TFTバックライト用のLEDの電源は D1 miniの3.3Vを使用しているが
_       LDOがやや熱い。どの表示器のバックライト電圧も同じような感じ。
_       必要ならば USB 5V から 別な LDO で 3.3V を用意すればいい。
タッチパネル:現在 動作していません。端子数の問題と即動くライブラリが見つかりません。
_      この機能が実現すると入力が可能になり あらゆる事が出来る様になります。


スケッチ:3D Cube


// 3D Cube : ESP8266 + TFT SPI ILI9341 : macsbug
// Sermus/ESP8266_Adafruit_ILI9341 + Adafruit_GFX_Library with mod
// http://microcontrollerkits.blogspot.jp/2015/11/esp8266-wifi-tftlcd.html
// https://github.com/Sermus/ESP8266_Adafruit_ILI9341
// https://github.com/adafruit/Adafruit-GFX-Library
// TFT LCD Pin VCC  to +3.3V      : Don't change
// TFT LCD Pin GND  to GND        : Don't change
// TFT LCD Pin CS   to D1 GPIO_5  : Don't change
// TFT LCD Pin RST  to +3.3V      : Don't change
// TFT LCD Pin DC   to D4 GPIO_2  : Don't change
// TFT LCD Pin MOSI to D7 GPIO_13 : Don't change
// TFT LCD Pin CLK  to D5 GPIO_14 : Don't change
// TFT LCD Pin LED  to +3.3V      : Don't change
// TFT LCD Pin MISO to D2 GPIO_ 4 : Don't change

#include "SPI.h"                                                //
#include "Adafruit_GFX.h"                                       // with mod
#include "Adafruit_ILI9341.h"                                   // with Sermus
#define TFT_DC 2                                                // GPIO_2:Don't change
#define TFT_CS 5                                                // GPIO_5:Don't change
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);        //
float r, x1, z1, y2;                                            //
int f[8][2];                                                    // Draw box
int x = 320/2;                                                  // 320
int y = 240/2;                                                  // 240
int q = 60;                                                     //

void setup() {                                                  //
  tft.begin();                                                  //
  tft.fillScreen(ILI9341_BLUE);                                 //
  tft.setRotation(3);                                           // 0-3
  tft.setTextColor(ILI9341_WHITE);                              //
  tft.setTextSize(3);                                           //
}                                                               //

void loop() {                                                   //
  for ( int q = 20; q < 60; q = q + 8 ){ cube(q);}              // 
  for ( int q = 60; q > 20; q = q - 8 ){ cube(q);}              //
}                                                               //

void cube(int q) {                                              //
  int c[8][3] = {                                               // Cube
    {-q,-q, q},{q,-q, q},{q,q, q},{-q,q, q},                    //
    {-q,-q,-q},{q,-q,-q},{q,q,-q},{-q,q,-q} };                  //
  for (int a = 0; a <= 360; a = a + 3 ) {                       // 0 to 360 degree
   for (int i = 0; i < 8; i++) {                                //
    r       = a * 0.0174532;                                    // 1 degree
    x1      = c[i][2] * sin(r) + c[i][0] * cos(r);              // rotate X
    z1      = c[i][2] * cos(r) - c[i][0] * sin(r);              // rotate Z
    y2      = c[i][1] * cos(r) - z1      * sin(r);              // rotate Y
    f[i][0] = x1      * cos(r) - y2      * sin(r)  + x;         // X
    f[i][1] = x1      * sin(r) + y2      * cos(r)  + y;         // Y
    f[i][2] = c[i][1] * sin(r) + z1      * cos(r);              // Z
   }                                                            //
   ESP.wdtDisable();                                            //
   tft.fillScreen(ILI9341_BLUE);                                //
   tft.setCursor(0, 0);                                         //
   tft.println("3D Cube");                                      //
   tft.drawLine(f[0][0],f[0][1],f[1][0],f[1][1],ILI9341_WHITE); //
   tft.drawLine(f[1][0],f[1][1],f[2][0],f[2][1],ILI9341_WHITE); //
   tft.drawLine(f[2][0],f[2][1],f[3][0],f[3][1],ILI9341_WHITE); //
   tft.drawLine(f[3][0],f[3][1],f[0][0],f[0][1],ILI9341_WHITE); //
   tft.drawLine(f[4][0],f[4][1],f[5][0],f[5][1],ILI9341_WHITE); //
   tft.drawLine(f[5][0],f[5][1],f[6][0],f[6][1],ILI9341_WHITE); //
   tft.drawLine(f[6][0],f[6][1],f[7][0],f[7][1],ILI9341_WHITE); //
   tft.drawLine(f[7][0],f[7][1],f[4][0],f[4][1],ILI9341_WHITE); //
   tft.drawLine(f[0][0],f[0][1],f[4][0],f[4][1],ILI9341_WHITE); //
   tft.drawLine(f[1][0],f[1][1],f[5][0],f[5][1],ILI9341_WHITE); //
   tft.drawLine(f[2][0],f[2][1],f[6][0],f[6][1],ILI9341_WHITE); //
   tft.drawLine(f[3][0],f[3][1],f[7][0],f[7][1],ILI9341_WHITE); //
   tft.drawLine(f[1][0],f[1][1],f[3][0],f[3][1],ILI9341_WHITE); // cross
   tft.drawLine(f[0][0],f[0][1],f[2][0],f[2][1],ILI9341_WHITE); // cross
  }                                                             //
}                                                               //

Written by macsbug

4月 16, 2016 at 5:27 am

カテゴリー: ESP8266

ESP8266 weathestation and wireless power supply

with 4 comments

D1 mini をワイヤレス給電で動かす方法。                        2016.04.10

構成:D1 mini + DHT22 Shield + Weathestation + wireless power supply



準備:
1. チャージャー:Silm Qi Wireless Fast Charger Charging Pad :493円。
2. レシーバー:Universal QI Wireless Charging Receiver Charger Module:207円。

3. D1 mini + DHT22 + OLED:前回記事「D1 mini と OLED を、、組み立てる」参照。
4. WeatherBug: ESP8266 WeatherStation with IFTTT and HomeKit support。説明。
5. スケッチ:AdySan:WeatherBug。:AdySan氏に感謝。
注: チャージャーとレシーバーは 国内では高い(上記の価格が目安になります)ですから
_  ebay でお求めください。輸送は比較的に速いです。


組立: レシーバー(コイル部のアンテナマークを下にする)をケースの下に両面テープで貼付けし
_   5Vdc出力を D1 mini の 5V へ接続。
_   折り曲げる場合:曲げる所をコイルの半田部分でなく ハンダ付け少し手前のコイルの所を
_    注意深く曲げるとハンダ付けの所で剥がれる事は無く使用できます。分解写参照の事。
_   シールを剥がす方法:周囲だけ接着されていますので ゆっくりと引っ張ると剥がれます。
_   レシーバーのUSBコネクターを使用する場合はハンダ付けの配線は不要となります。


前置き:
レシーバーをどの様に接続するか、2つの方法。

1. USBコネクタで接続する。
2. QI 5Vdc出力を D1 mini の 5V PINに接続する。

理由:USB 5Vdc からと QI 5Vdc出力は Diode D2 と D4 で逆流防止があり使用可能。
_  ただし、他の受電装置の場合は逆流防止Diodeの有無を確認する必要がある。


QI 受信電源回路:5Vdc を使用する為の回路理解。
_ コイル発生電圧は実測で 1.2VAC。→ 昇圧回路で9.29VDCが出来る →
_ → D4 Diode(緑)の出力は 4.85Vdc。→ 5Vdc が Micro USB から出力される。
_ Micro USB コネクタ 又は 5Vdc出力端子 を使用する。


D1 mini の 電源回路:
_ USBからの5VDCは Diode D2 を通り U1 RT9013 LDO 1-pin へ接続されている。
_ D2 の出力は D1 mini の 5V PIN端子である。(基板に記載の「5V」)
_ U1 RT9013 LDO 5-pin から 3.3Vdc が出力される。


メモ:
1. QI 給電のUSB電源:iPad等に使用している1~2AクラスのUSB電源が必要です。
_  格安のUSB電源は 1A,2Aと書かれていても動きません。(たぶん表示が不正)
_  給電タイプのUSBハブは動く物と動かない物があります。
_  供給電力が不十分な場合 QI 給電の出力が低下し 受電せずESP8266は動きません。
_  例:ESP8266 Radio の場合、USB 給電の USB 5V は 350mA 流れている。
_  給電側と受電コイルの距離が 2~6mm 以上離れると受電しません。
_  給電側と受電コイルの距離は最短距離になる様に工作します。
_  電波マークが表で受電シートを裏側にすると受電しない場合があります。
2. 発熱:コイルが熱を発生します。手で触れる程ですが熱くなります。
_  ESP8266側で温度センサー等を使用する場合は対策が必要です。
3. サイズ:69x44mm。ESP側は小さくできるが受電部分のサイズは限度があります。
_  コイルと電圧変換部を分ける方法がある。それでもコイルの大きさは残ります。
4. 電源スイッチ:電源スイッチが不要になり小型のものが作れます。


参考:
1. チャージャー:Silm Qi Wireless Fast Charger Charging Pad For Samsung Galaxy Note
_  Specification: Power: 10W、Wireless distance: 70%、Size: 100mmx9.5mm
2. レシーバー:Universal QI Wireless Charging Receiver Charger Module For Micro USB 
_  Specifications:
_   Input : 5V、Output: 1000mA (Max)、 temperature:-10 ~ 40 degree
_   Working life: 4000 times、Size(Not contain wire): 69 X44mm
3. adafruit:Universal Qi Wireless Receiver Module
4. Wireless Charger Accept for SAMSUNG S3:
5. Wasters haven:“Qi”なワイヤレス充電器を試してみる


感想:
電源の線が無いと見栄えが良い事と気分が楽になります。
ワイヤレス給電の説明は多大になる為 動作している状況が解る程度にしました。
OTA(Over the Air)でスケッチのアップロードができるとさらに良いですね。
今回のスケッチ AdySan:WeatherBug は OTA対応になっています。


スケッチ:AdySan:WeatherBug は、以下を変更して動く事を確認しました。
_ 事前に WUNDERGRROUND_API_KEY を入手しておいてください。
_ W,,_API_KEYは WEATHER UNDERGROUND Station of ESP8266 を参照してください。

/***************************
 * Begin Settings
 **************************/
// WIFI
const char* WIFI_SSID = "xxxx"; 
const char* WIFI_PWD = "xxxx";
// Setup
const     int UPDATE_INTERVAL_SECS = 10 * 60; // Update every 10 minutes
const int I2C_DISPLAY_ADDRESS = 0x3c;     // Display Settings
const int SDA_PIN = D6;                   // Wemos D1 Mini
const int SDC_PIN = D7;                   // Wemos D1 Mini
SSD1306 display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);
SSD1306Ui ui( &display );
// DHT Settings
#define DHTPIN D4                        // Wemos D1 Mini
#define DHTTYPE DHT22                    // DHT 22  (AM2302), AM2321

// Wunderground Settings
const boolean IS_METRIC = true;
const String WUNDERGRROUND_API_KEY = "xxxxxx";
const String WUNDERGROUND_COUNTRY = "japan";
const String WUNDERGROUND_CITY = "tokyo";



	

Written by macsbug

4月 11, 2016 at 10:12 pm

カテゴリー: ESP8266

D1 mini と OLED をワイヤー無しで組み立てる

leave a comment »

D1 mini と OLED をワイヤー配線無しで 楽 に組み立てる方法。     2016.04.09

D1 mini と I2C OLED 128×64 の間に DHT22 シールドを入れます。(38x27x24mm)
D1 mini と I2C OLED 128×64 のみならば 厚さ 11mmになります。

ddd_s


準備:
1. D1 mini with TELEC。 959円 [ $ 4+4.87 ]
2. D1 DHT22 Shield(ピン含)、8ピンヘッダ、8ピンフレーム。530円 [ $4.9 ]
3. I2C OLED 128×64。594円 [ $5.5 ]
4. 総費用:2083円 ( [4+4.87] + 4.9 + 5.5 = $19.27 )


前置き:D1 mini と OLED のピン端子は 3V3 の位置を合わすとそのままの方向で使えます。
_   ただし、D8端子をGNDにする必要があります。
_   D8(GPIO15) は抵抗(10KΩ)でGNDになっていますが直接GNDでも動作可能です。
_   注:各自の責任で行う事と スケッチで D8(GPIO15) を HIGH にしない事。
_   OLED の I2C端子は SDA = D6、SCL= D7 になります。


組み立て: 完成時に基板同士が平行になるようにピンの間隔や位置を確認する事。

1. D1 mini の 下側   5V 〜 TX 端子:
_  D1 mini 下側へ  8ピンヘッダを「黒い樹脂の幅 位」を開けてハンダ付けする。
_  上側と下側の位置を水平に合わす為に行います。

2. D1 mini の 上側 3V3 〜RST端子:
_  D1 mini 上側へ DHT22 シールドを乗せ 8ピンフレームをハンダ付け。

3. GND線:8ピンフレームの GND のハンダ付け。
_  GNDは D8経由 D1 mini 裏側の GND(Switch GND側) へハンダ付けする。
_  リード端子を上手に曲げて スイッチの樹脂を溶かさない様に付ける事。
_  ハンダ付け後 テスターで GND になっている事を確認する事。

4. 8ピンフレームの上に OLEDを取り付ける。DHT22のネジ穴部は切りました。

以上。

dd5_s

メモ:
4本で楽だと思いますが それぞれのポイントで確認をしながら行いましょう。
完成後は 再度ハンダ付けやコネクタの具合を良く見ましょう。
通電試験ではOLEDを取り付ける前に端子の電圧と極性をテスターで確認する事。
完成後は USBを接続して直ぐ動かせる事ができます。
簡単に出来る本体があると 直ぐスケッチの確認が出来て便利かと思います。


 

Written by macsbug

4月 9, 2016 at 9:03 am

カテゴリー: ESP8266

D1 mini information of April 2016

leave a comment »

D1 mini が発売されてから約1ヶ月。いよいよ作品が出てきました。                  2016.04.09

眺めるリストを随時更新しながらアップしていきたいと思います。


1. D1 と D1 mini の販売数:D1 mini が圧倒的に売れている。
2. D1 mini ($4.00) の総販売数:2016/4/9現在、6551台。
3. Shield の販売数:Relay Shield の売り上げが多い。
4. 4月2日から Dual Base for WeMos D1 mini が販売開始されました。
5. WeMos 社の販売総額:2016/3/6〜2016/4/9:505万円。
_ D1 mini + DHT11 の組み合わせ販売記念品は 4/2 までで 987 台(65万円)になりました。
_  この台数はグラフと総額表には含まれてはいません。


作品:

 


メモ:
Dual Base for WeMos D1 mini は 横に拡張した所が関心致します。
自作 D1 mini のものは、リストに入れていません。
ESP8266 の世界の販売総台数はごぞんじでしょうか?
ESP8266 の販売台数はかなり多く驚く統計数です。
その中で D1 mini が販売されて間もなく6512台が販売された事は脅威的なことです。
これは 購入者側が このような製品を望んでいた事を示します

Written by macsbug

4月 9, 2016 at 12:11 am

カテゴリー: ESP8266