macsbug

Just another WordPress.com site

Archive for 1月 2016

Analog to Digital Converter MCP3002 in ESP8266

with 3 comments

ESP8266 で AD Converter MCP3002 を使い電圧を OLED に表示しました。       2016.01.26
MCP3002 は、SPI 10bit 2ch AD Converter です。

oled

ESP8266 ボード の 3.3V電源 と 5V 電源を測定。超簡単なテスターが直ぐできました。
フォントは ArialMT_Plain_10, 16、Roboto_Black_Plain_24、Roboto_Mono_Thin_Plain_24

データーの取得は、1行の命令でできます。
価格は、1個180円と超お手頃な値段です。


NodeMCU + MCP3002 + OLED


準備:
ハード:
_ MCP3002:3.3Vで使用。1個180円。秋月電子通商データーシート
_ ESP8266(ESP-WROOM-02):秋月電子通商で 550円。
_ OLED 128×64 Display:ebay で650円程度。
_ USB Serial Converter  :ebay で250円程度。
_ 他、抵抗、コンデンサー、ダイオード。(参照:AUTO UART Download Mode of ESP8266)
_ 合計:約1800円。(NodeMCUの場合は 約1460円)。

ソフト:
_ SPI ドライバー:MetalPhreak / ESP8266_SPI_DriverDavid Ogilvy(MetalPhreak)氏に感謝
_         誤記:GPIO12 = DIN,GPIO13=DOUTは逆です。
_         階層:Library>ESP8266_SPI_Driver>spi_register.h,spi.c,spi.h
_ OLED ドライバー:squix78/esp8266-oled-ssd1306Dani Eichhorn(squix78)氏に感謝
_ OLED 用の幾つかのフォントを作る為に以下の Font Converter を使用しました。
_ SSD1306 Tools:Font ConverterDani Eichhorn(squix78)氏に感謝。これは 素晴らしい。
_  作成したフォントは、OLED ドライバー( esp8266-oled-ssd1306-master )の中にある
_  SSD1306Fonts.h に追加保存する事により使えます。


配線:


メモ:
ピンアサイン:ESP8266 SPI と MCP3002。

MCP3002:
_ サンプリング:電源5V=200ksps。電源3.3V=75ksps。
_ データー取得方法:SPI 接続により取得する。
_ SPI ドライバー:MetalPhreak / ESP8266_SPI_Driver:参照の事。
_ データー取得   :パラメーターは複雑ですが、以下の1命令で読み込める。
_         spi_transaction(spi_no, cmd_bits, cmd_data, addr_bits,
_         addr_data,dout_bits,dout_data,din_bits, dummy_bits)
_ 今回の記述:float v0 = spi_transaction ( 1 , 0 , 0 , 0 , 0 , 4 , 0b1100 , 11 , 0)/c;   // CH0
_ パラメーター:
_  [ 1 ] : HSPI(1) 取り込みを示します。他にSPI(0) がある。
_  [ 4 ] : COMMAND_LENGTH(dout_dataの長さ) 。ここでは 0b1100 を送る為 4 bit
_  [ 0b1100 ] :start bit=1, SGL/DIFF=1, Channel(0/1),MSBF=0。
_        CH0=0b1100。CH1=0b1110。
_  [ 11 ] : MCP3002 の RESPONSE_LENGTHは 10 bit + 1 = 11 となります。
_  [ 0 ] : dummy_bits = 0

ESP8266 割り込み:割り込み方法により高度な使い方が可能です。
じわじわ進む」さんの解説によると ESP8266は ticker命令で msec 又は usec の制御可能。
_ usec 使用時は setup の最初に system_timer_reinit() を宣言する。
フォント:計測表示には等幅フォントでないと奇麗に見えません。
トラブルシュート:上記の回路は基本回路で電源回路は省いて書いてあります。
_ つまりMCPの電源が充分である事が前提です。ESPの基板は多数ありますので基板に
_ よっては正しく表示しない場合があります。対策として MCPの電源にLDOを取り付け
_ てみるのも方法です。ありがちなコンデンサーを付けましょうとか他の部品が原因だ
_ とかは問題を余計に混乱させます。
_ 原因の詳細を分析する場合は オシロスコープでMCPの波形を観測する必要があります。


感想:
SPIの制御:複雑ですが読み込みが1行で済みました。パラメータの理解が必要ですね。
_ アナログ信号を気楽に使えるようになると楽しくなります。
チャンネル数: MCP3208 は 8チャンネルで多数のアナログセンサーを接続する事が可能。
最大入力:MCP3002の電源電圧以下。今回は入力に抵抗分割を入れ 5V も測定できました。
校正:テスターで測定し 単純にソフトで割り算。ここでは 測定値の28.05分の1。
波形表示:今回の内容でオシロスコープもどきを作るが波形表示は遅く速度不充分(msec)。
NodeMCU:約90mA。10kΩは不要。PROG,RST SWは無く自動書込み。ebayで600円程度。
使用例:ソーラーパネルの電圧をモニターし ThingSpeak へ送信しグラフで見る。


番外編:ESP8266 GPIO のプルアップ抵抗は幾つがいいか?
Getting Started with ESP8266 での幾つかの要点を以下に書き出しました。
FTDI提供のFT232ドライバは問題ない。
FT232クローンは、PC上の問題を引き起こす可能性がある。
CH340GまたはCP2102チップのベースモジュールは、この問題は発生しません。
3.3VのVCCラインは一般的に300ミリアンペアである。
WiFi操作中にESPチップを実行するのに十分な電力を供給すること。
プルアップ・プルダウン抵抗は、1kΩ 又は 2.2KΩ である。

思案:CH340G は問題ありそうでもないよという感じ。CP2102は調査の為、オーダー中
_  CP2102調査結果:USBtoUARTBridgeVCPDrivers をインストールし問題なし。(2016.01.31)
_ プルアップ・プルダウンの抵抗値は、1KΩ ですね。


参考:
ESP8266 Community Forum:HARDWARE SPI (HSPI) DRIVER CODE / LIBRARY:SPI波形
D.av.id.[AU]:ESP8266 Hardware SPI (HSPI) General Info and Pinout:ピンアウト(誤記?)
D.av.id.[AU]:Hardware SPI (HSPI) Command & Data Registers:命令の詳細
Teemu Leskinen:ESP8266 MCP3002 Driver
exabugs:ESP8266 (ESP-WROOM-02) でセンサーを扱
exabugs:ESP8266 (ESP-WROOM-02) の便利ライブラリまとめ (Ticker編)
じわじわ進む:ESP-WROOM-02でSPI接続のADCから取得したデータをUDPで送出
olduino:MCP3002 Analog to Digital Converter
こばさんのwakuwaku山歩き:ESP8266 割り込み使って Lチカ


スケッチ:

#include <Wire.h>
#include "SSD1306.h"                                      // OLED
#include "SSD1306Ui.h"                                    // OLED
extern "C"{
#include <spi.h>                                          // MCP3002
#include <spi_register.h>                                 // MCP3002
#include "user_interface.h"
}
float c = 28.05;                                          // Calibration
SSD1306 display(0x3c, 4, 5);                              // OLED:ADRS,SDA,SCL

void setup() {
  spi_init(HSPI);                                         // MCP3002
  display.init();                                         // OLED
  display.flipScreenVertically();                         // OLED
  display.displayOn();                                    // OLED
  display.clear();                                        // OLED
}

void loop(){
  // MCP3002 Reading
  float v0 = spi_transaction(1,0,0,0,0,4,0b1100,11,0)/c;  // CH0 READ
  float v1 = spi_transaction(1,0,0,0,0,4,0b1110,11,0)/c;  // CH1 READ
  // OLED Display
  display.clear();
  display.setFont(ArialMT_Plain_10);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.drawString( 0, 16, "ch 0 : ");
  display.drawString( 0, 32, "ch 1 : ");
  display.setFont(ArialMT_Plain_16);
  display.setTextAlignment(TEXT_ALIGN_RIGHT);
  display.drawString( 127, 10, "vdc ");
  display.drawString( 127, 32, "vdc ");
  display.setFont(Roboto_Black_Plain_24);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.drawString( 32,  6, String(v0,2));
  display.setFont(Roboto_Mono_Thin_Plain_24);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.drawString( 32, 28, String(v1,2));
  display.display();
}


	

Written by macsbug

1月 26, 2016 at 4:02 am

カテゴリー: ESP8266

CH340G USB Serial Module in OSX

leave a comment »

CH340GのUSBシリアルモジュールを OSX で使用する方法。                        2016.01.21

Mac OS X 10.8.5 Mountain Lion に CHR340G USBシリアルモジュールを接続すると
いきなりマックが停止してしまう。例:以下の NODEMCUは CHR340Gを使用している。
システムリポートのUSBにUSBシリアルモジュールが表示されない。


追記:2016.0203:解決方法。
順不同ながら 2016.02.03 の結論
USB HUB に SUGOI HUB を使用し問題はなくなった。
1:iMacは何らかの持病を持っている。電源を抜くと起動しない。
_ 電源コンセントを外し、長時間してから接続すると起動する。
2:USBを接続してから起動するとUSBを認識し正常に動く。
3:接続したとたんにクラッシュするので USBの過電流かと思われる。

上記2点から、USBの電力を補える SUGOI HUB を使用してみた。

メモ:ポリスイッチとUSB回路の保護。
USB が過電流になるとポリスイッチが動作し遮断する。
これは回路保護の為にある半導体です。
この半導体は電源が切れても記憶して遮断のままになる。
時間が経過するともとに復帰する。
遮断状態でポリスイッチの両端をショートすると即時に復帰する。


方法:
例:Mac OS X 10.8.5 Mountain Lion
CH341SER_MAC.ZIP (http://wch.cn/downloads.php?name=pro&proid=178)

追記:2016.01.27 の解決方法。今後モニターします。
その後のモニター:再度起動して接続するとマックがクラッシュ。再びUSB接続してから起動の順番。
以下の所から、nodemcu-devkit-master.zip をDL し、Drivers の中にある「CH341SER_MAC.ZIP」
を解凍し「 ch34xInstall.pkg 」を起動しインストールする。再起動して CH340G の USBを接続。
nodemcu / nodemcu-devkit/Drivers/CH341SER_MAC.ZIP
ch34xInstall.pkg の作成及び変更日は、2013年12月25日11:46 になっている。

結果、起動後に CH340G USB を接続するとマックはクラッシュせず無事接続。
そして、USB 2.0 Hub に接続した「USB2.0-Serial」という CH340G のUSBが認識されました。

製品 IDは、0x7523。これは、「MacOS XのUSBデバイスのメモ」に書かれている。
この記事の中に、WCH、CH340 0x1A86/0x7523 となっている。
又、この中で作者はこのドライバーを製作していますね。


メモ:CH341SER_MAC.ZIP には 古いものがあり これは改善されない。
感想:CHR340Gは低価格の為だろうが、手間がかかるので素直にFT232RLを使用して欲しい。
参照:ちっちゃいものくらぶ:CH340 USBシリアルモジュール


追記:
ところが翌日に CH340Gの装置をUSB接続すると、いきなりマックがクラッシュ。
How to use Arduinos with CH340G / CH341G Serial/USB FTDI chip の記事を見て
ターミナルで、sudo nvram boot-args=”kext-dev-mode=1″ を実行。
実行時はよいが起動してUSBを接続すると同じくマックがクラッシュ。
とりあえずの対策は、USBを付けたまま起動する。一応クラッシュはしないが、どうもしっくりいかない。
以上、未解決で中途半端な記事で申し訳ない。
と言う事でこの件の情報をメモ代わりに随時追加する事にした。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
OS X YosemiteでRaspberryPiとシリアル接続できない問題
ここには、以下の記述。
sudo kextcache -m /System/Library/Caches/com.apple.kext.caches/Startup/Extensions.mkext /

System/Library/Extensions
を実行する。
TrimEnabler使いたい人は事前に
rm -f /Library/PrivilegedHelperTools/org.Cindori.AuthHelper
を実行。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
MacOSX+CH340G搭載Arduino互換ボードの動作メモ

デバイスファイルは、ターミナルを使用し ls -la /dev/*seri* で確認する。

実施結果:
未接続:ls: /dev/*seri*: No such file or directory

CH340G 接続:wchusbserialfa14410 を認識している。
_ crw-rw-rw- 1 root wheel 18, 25 1 22 13:55 /dev/cu.wchusbserialfa14410
_ crw-rw-rw- 1 root wheel 18, 24 1 22 13:55 /dev/tty.wchusbserialfa14410

通常のFTDI接続:usbserial-A9WV3H1L が追加で認識された。
crw-rw-rw- 1 root wheel 18, 27 1 22 13:55 /dev/cu.usbserial-A9WV3H1L
crw-rw-rw- 1 root wheel 18, 25 1 22 13:55 /dev/cu.wchusbserialfa14410
crw-rw-rw- 1 root wheel 18, 26 1 22 13:55 /dev/tty.usbserial-A9WV3H1L
crw-rw-rw- 1 root wheel 18, 24 1 22 13:55 /dev/tty.wchusbserialfa14410

相変わらず起動後にUSBシリアルモジュールを接続するとマックがクラッシュする。
USBシリアルモジュールを接続後に起動するとクラッシュはしない。
結果、システムリポートのUSB欄には以下のように名前が表示されました。

USB2.0-Serial
製品 ID: 0x7523
製造元 ID: 0x1a86
バージョン: 2.54
速度: 最高 12 Mb/秒
場所 ID: 0xfa144100 / 6
利用可能な電流(mA): 500
必要な電流(mA): 96


How To Use Cheap Chinese Arduinos That Come With With Ch340G / Ch341G Serial/Usb Chip

OS-X El Capitan Steps (Only For The Older Driver!) と
OS-X Yosemite Steps について書かれている。


CHINESE ARDUINOS WITH CH340 / CH341 SERIAL / USB CHIP ON OS X YOSEMITE

Quick Tutorial:以下の手順。
Download Driver Files for your OS
Install software but don’t restart yet.
Launch Terminal
sudo nvram boot-args=”kext-dev-mode=1″
Restart your Mac
Launch Terminal
sudo ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ 1410 /dev/tty.wch


All the colors of Java and so on
UPDATE for Mac users with Yosemite :

Please, follow this extra instructions :
1 Install the CH340 driver
2 Run the command in Terminal: sudo nvram boot-args=”kext-dev-mode=1″
3 Reboot


 

Written by macsbug

1月 21, 2016 at 12:23 am

カテゴリー: Apple, Arduino, ESP8266

3D CUBE with ESP8266 and OLED

with 2 comments

ESP8266 + OLED で 3D CUBE を表示しました。              2016.01.16


ESP8266 80MHz( 左 )。________________ Arduino 16MHz( 右 )。
 

ESP8266 80MHz 立体視。裸眼立体視で CUBE が浮き上がって見えます。


準備:
ハード:
_ ESP8266 ( 例:ESP-WROOM-02 )
_ I2C OLED 128×64 Pixels :ebay:559円
_ USB Serial Converter:ebay:254円:前回ブログ参照
_ Schottky diode (1S4009):秋月で1個20円
_ 4.7uF Capacitor
_ 10KΩ Resistor
_ 配線:ESP8266_13 = OLED_SDA, ESP8266_14 = OLED_SCL。
_    1. ESP_RST を Capacitor, Diodeから DTR へ。
_    2. ESP_GPIO0 を Diode から DTR へ。

ソフト:OLED SSD1306 Library:Adafruit_GFX.hESP_Adafruit_SSD1306


メモ:
スケッチは、Colin Ord:Arduino – OLED Module with 3D demo sketch を参照しました。
_     Colin Ord Art Blog の Colin Ord氏に感謝。
SSD1306 Library:幾つかありますが、drawLine命令(線を引く)のある物を使用しました。
_         U8glib.h。SSD1306.h, SSD1306Ui.h。sd1306_i2c.h。
_         Library OLED_I2C:OLED_I2C.h
_         Adafruit_GFX.h,ESP_Adafruit_SSD1306.h。今回使用したライブラリー
1 degree=0.0174532:この精度で記載しないと 360度1回転でずれが出てきます。
delay(1); :スケッチ最後尾にあるこの命令は、画面の停止を防止します。
保護抵抗:GPIO0(PROG)とGND間(Diode Anode側[-]、RST(RESET)とGND間(4.7uF+側)
_    に 100Ωを入れた方が安全と思われます。
USB Serail Converter:5V/3.3V 動作が可能のもので セレクトは 3.3Vにしてあります。
自動書き込み:4.7uF+diode+DTR信号により スケッチの書き込みが自動的に行われます。
Arduio 16MHz と ESP8266 80MHz の速度差は、動画に示すようにかなりの差があります。
3D CUBEの動画: .mov を 「Total Video Converter Lite 」アプリで gif に変換しました。
_       (WordPress は .mov が使用不可の為)
OLEDの注意:VCCとGNDが逆配置のボードがあります。ebay, Aliexpress 共にそうです。


デイスプレーのライブラリーについて:
最も充実しているのは、Rinky-Dink Electronics です。ただし ここでの、ESP8266は非対応です。
ここには、Arduino、chipKit、Ti LaunchPad に対する多くのライブラリがあります。
Arduino には LCD、LED、TFT(UTFT)、OLED ライブラリーがあり便利です。
ちなみに、TFT Display でタッチ機能のあるものは、UTtouch を使用します。
今回使用した OLEDには Arduino UNO対応の OLED_I2C ライブラリーがあります。
_ サンプルは、3D_Cube、Bitmap、Brightness、Graph_Demo、NumberFonts、
_ Scrolling_Text、TinyFont_View、ViewFont があり参考になります。
_ 尚、UTFTのESP8266対応版は現在調査中です。


スケッチ:

//3D CUBE with ESP8266 and OLED :  by macsbug  2016.01.15
#include <Wire.h>                                          //
#include <Adafruit_GFX.h>                                  // OLED
#include <ESP_Adafruit_SSD1306.h>                          // OLED 
Adafruit_SSD1306 display(4);                               // OLED Reset
float r, x1, ya, z1, x2, y2, z2, x3, y3, z3;               //
int f[8][2];                                               // Draw box
int x = 64;                                                // 64=128/2
int y = 32;                                                // 32= 64/2
int c[8][3] = {                                            // Cube
 {-20,-20, 20},{20,-20, 20},{20,20, 20},{-20,20, 20},      //
 {-20,-20,-20},{20,-20,-20},{20,20,-20},{-20,20,-20} };    //

void setup(){                                              //
  Wire.begin(13,14);                                       // I2C SDA,SCL
  display.begin(SSD1306_SWITCHCAPVCC,0x3c);                // I2C ADDRESS=3C
  display.clearDisplay();                                  // Clear the buffer
}                                                          //

void loop(){                                               //
 for (int a = 0; a <= 360; a = a + 3 ) {                   // 0 to 360 deg 3step
   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 Y
    ya = c[i][1];                                          //
    z1 = c[i][2] * cos(r) - c[i][0] * sin(r);              //
    x2 = x1;                                               //
    y2 = ya * cos(r) - z1 * sin(r);                        // rotate X
    z2 = ya * sin(r) + z1 * cos(r);                        //
    x3 = x2 * cos(r) - y2 * sin(r);                        // rotate Z
    y3 = x2 * sin(r) + y2 * cos(r);                        //
    z3 = z2;                                               //
    x3 = x3 + x ;                                          //
    y3 = y3 + y ;                                          //
    f[i][0] = x3;                                          // store new values
    f[i][1] = y3;                                          //
    f[i][2] = z3;                                          //
   }                                                       //
   display.clearDisplay();                                 // clear
   display.drawLine(f[0][0],f[0][1],f[1][0],f[1][1],WHITE);//
   display.drawLine(f[1][0],f[1][1],f[2][0],f[2][1],WHITE);//
   display.drawLine(f[2][0],f[2][1],f[3][0],f[3][1],WHITE);//
   display.drawLine(f[3][0],f[3][1],f[0][0],f[0][1],WHITE);//
   display.drawLine(f[4][0],f[4][1],f[5][0],f[5][1],WHITE);//
   display.drawLine(f[5][0],f[5][1],f[6][0],f[6][1],WHITE);//
   display.drawLine(f[6][0],f[6][1],f[7][0],f[7][1],WHITE);//
   display.drawLine(f[7][0],f[7][1],f[4][0],f[4][1],WHITE);//
   display.drawLine(f[0][0],f[0][1],f[4][0],f[4][1],WHITE);//
   display.drawLine(f[1][0],f[1][1],f[5][0],f[5][1],WHITE);//
   display.drawLine(f[2][0],f[2][1],f[6][0],f[6][1],WHITE);//
   display.drawLine(f[3][0],f[3][1],f[7][0],f[7][1],WHITE);//
   display.drawLine(f[1][0],f[1][1],f[3][0],f[3][1],WHITE);// cross
   display.drawLine(f[0][0],f[0][1],f[2][0],f[2][1],WHITE);// cross
   display.display();                                      // display
   delay(1);                                               //
 }                                                         //
}                                                          //

参考:
Adafruit_SSD1306
Adafruit SSD1306 OLED Library:拡大文字は汚い。抽画のLine(線)命令はある。
ESP_Adafruit_SSD1306:ESP8266用のAdafuruit SSD1306。
Adafruit GFX Graphics Library
Adafruit GFX Graphics Library.pdf
squix78/esp8266-oled-ssd1306:奇麗な拡大フォントを使用できる。抽画のLine(線)命令がない。
Colin Ord:Arduino – OLED Module with 3D demo sketch:Arduinoの3D Cubeデモ(u8glib)
u8glib:ESP8266 非対応。
u8glib:google:ESP8266 非対応。
OLED_I2C:ESP8266 非対応。

 


 

Written by macsbug

1月 15, 2016 at 11:02 am

カテゴリー: ESP8266

AUTO UART Download Mode of ESP8266

leave a comment »

ESP8266 への書き込みを自動化する方法。                  2016.01.14

ESP8266 へスケッチを書き込むには GPIO0(PROG)ボタンを押して RST(RESET)ボタンを押す。
その後 RST(RESET)ボタンを離して GPIO0(PROG)ボタンを離す。
そして、Arduino IDEの「マイコンボードに書き込む」を押す。この操作は大変面倒です。

「マイコンボードに書き込む」を押すだけで書き込みができる回路を作りました。

 この操作だけで自動的に書き込みが出来ます。


準備:
ESP8266:1個
I2C OLED:1個: ebay=559円 。
4.7uF 電解コンデンサー:1個
ショットキーバリアダイオード(1S4009):2個:通常の Diodeでも可能と思います。
抵抗:7個:10KΩ。
USB Serial Converter:DTR出力のあるものを使用する。ebay=249円。
_ 5V and 3.3V FTDI FT232RL USB to TTL Serial Converter Adapter Module For Arduino
 上から DTR,RX,TX,VCC,CTS,GND 。5V/3.3V 切り替え可能。


配線:USB アダプターの DTR 、ESP8266の RST, GPIO0 を以下のように接続します。


動作:Arduino IDEの「マイコンボードに書き込む」を押すと DTR 信号がLOWになる。
_  この時、GPIO0 は LOW  になり、RST も LOW  になる。
_  その後、GPIO0 は HIGH になり、RST も HIGH になる。
_  このようにして、自動的に書き込みモード ( UART Download Mode ) になります。


メモ:
時定数( 4.7uF,10kΩ ) は、計算や波形測定はしていませんので、あしからず。
_  USBアダプターの出力ピンに DTR がない物は使用できません。
_  RSTやGPIO0 をGNDするときは ESP端子保護の為に 100Ωの抵抗を入れる方が良い。
_  OTA対応:開発環境の変更が必要となり手間ですが書き込みの自動化が出来る方法がある。
OTA:Arduino CoreにOTA ( Over The Air, Wifi経由書き込み )の機能が取り込まれました。
_  これにより、スケッチの書き込みは USBケーブル接続無しで出来るようになります。
_  参考:ESP-WROOM-02 + ArduinoOTAでスケッチのWiFi経由アップロード
他の事例:DTRとRTSを使用する方法。ただし通常のUSB Serial ConverterにはRSTは無し。
NodeMCUのボードには、この回路が既に組み込まれており Arduion IDE の Board 設定で
Generic ESP8266 Board _ nodemcu か NodeMCU を選択すると自動的に書き込まれます。
注:このメニューを出すには Board ManagerにてESP8266のVerを2.0.0にアップの事。

以下、左は NodeMCU ModuleでUSBがCP2102版とCH340G版があります。
CP2102版はドライバーをインストールすればマックで問題なく使用できます。
CH340G版は動きますが何かと問題があります。私の場合接続後にマックの起動が必要。
配線図はこのNodeMCU Module のものです。価格は ebay で 約6百円。

右は Mini NodeMCU(ESP-12F,CH340G) で 回路図は今のところ公開されていませんが、
配線を調べた所、以下の配線図と同様で抵抗値は 1KΩ です。
Generic ESP8266 Modele + 基盤上のPROG,RST スイッチでも書き込み可能。
NodeMCU Moduleを選択すれば自動で書き込みができます。
尚、この基盤は書き込み後にESP-12F側だけでもUSB電源で動作する優れものです。
価格は ebayで約668円。Aliexpressの10個買いだと1個約369円。
n1mini


感想:スイッチが不要になりボード上にスペースも確保できます。
_  スイッチのボタン操作が不要の為、もの凄く楽になりました。
_  一度使用するとボタン操作にはもどれません。是非体験してみてください。


 

Written by macsbug

1月 13, 2016 at 10:27 am

カテゴリー: ESP8266

WEATHER UNDERGROUND Station of ESP8266

leave a comment »

SquixTechBlogWeatherStationDemo を試しました。                                                   2016.01.13

動画は ESP8266 Weather Station with forecast で見る事が出来ます。

参照する気象情報は、WEATHER UNDERGROUND と ThingSpeak です。
ThingSpeak は、自作の温湿度装置のデーターを送り そのデーターを使用します。


左:WiFi 接続時の画面。右:データーアップデート時の画面。

左から日時と気象状況。右の「Outdoor」は ThingSpeakの値。これをを繰り返し表示します。


WEATHER UNDERGROUND の 気象情報。
WEATHER UNDERGROUND に接続し「Tokyo, Japan」等を入力し気象状況を見る事ができます。

WEATHER UNDERGROUND には、STORM (無料)という iOSアプリがあります。
iTunes:Storm – Radar, Storm Tracking, Hurricanes, Accurate Lightning & Precipitation Alerts


準備:
WEATHER UNDERGROUND の API Key :Create an Account欄で サインインし API Keyを入手。
_ サイン  :
_ API Key:A WEATHER API DESIGNED FOR DEVELOPERS で入手する。
_      :YouTube:Weather Underground (Wunderground) API :: Part 1:これで出来ました。
_      入力内容は、説明に合わせ メール等は個人の内容に変更。
_      What country are you or your company based in? は、Japan にする。
_     なれないと思いますが、がんばって サインインをして API (16桁)を入手してください。
ThingSpeak API Key :以下参照。既に温湿度装置とThingSpeakに接続しID,API Keyを入手済みの事。
_      ESP と BME280 と ThingSpeak で IOT
_      ESP8266 + AE-BME280 + ThingSpeak
ハード:ESP8266とOLED(ebay:559円)を接続。ESP8266_13=OLED SDA,ESP8266_14=OLED SCL
ソフト:スケッチ(squix78 / esp8266-weather-station)を librariesに入れWeatherStationDemoを読む。
_ 変更箇所:* Begin Settings の11カ所を各自の状態に合わせ設定します。
_  WIFI_SSID,WIFI_PWD,I2C ADDRESS,SDA_PIN,SCL_PIN,UTC_OFFSET
_  WUNDERGRROUND_API_KEY,WUNDERGROUND_COUNTRY,WUNDERGROUND_CITY
_  THINGSPEAK_CHANNEL_ID,THINGSPEAK_API_READ_KEY
_  const float UTC_OFFSET = 9;  は、UTCを日本時間に変更します。+9時間。

_  OLEDの表示を上下逆にするには、void setup() の display.clear(); と ui.init(); の次に
_  display.flipScreenVertically(); を入れます。

* Begin Settings
const char* WIFI_SSID = "xxxx";                 // your ssid
const char* WIFI_PWD  = "xxxx";                 // your password
const int I2C_DISPLAY_ADDRESS = 0x3c;           // OLED I2C address
const int SDA_PIN = 13;                         // I2C OLED SDA
const int SDC_PIN = 14;                         // I2C OLED SCL
const float UTC_OFFSET = 9;                     // JST = +9
const String WUNDERGRROUND_API_KEY   = "xxxxx"; // WUNDERGROUND API KEY
const String WUNDERGROUND_COUNTRY    = "japan"; // japan
const String WUNDERGROUND_CITY       = "tokyo"; // tokyo
const String THINGSPEAK_CHANNEL_ID   = "xxxxx"; // ThingSpeak CHANNEL
const String THINGSPEAK_API_READ_KEY = "xxxxx"; // ThingSpaek API KEY

メモ:
配線は i2Cの2本のみ。スケッチの変更は11カ所のみで直ぐ動きました。
SquixTechBlog の Dani Eichhorn氏に感謝。
Dinai Eichhorn氏の記事は完成度が高く大変参考になります。
OLEDのWiFi接続時の表示方法は参考になりました。
WUNDERGRROUND と ThingSpeak へのアクセスやデーター取得方法は参考になりました。
WUNDERGRROUND と ThingSpeak のアップデート・インターバルは 10分起きに行っています。
OLEDの注意: 色    :3種類:白、青、上部が黄色で下は青。私は青を好む。
_       端子配列:2種類:VCC,GND,SCL,SDA。GND,VCC,SCL,SDA。私はVCC,GNDを好む。
_ 異なる端子配列と問題点:ebay購入画面に2種類の画像や逆配列の部品が到着する場合がある。
_             OLEDの交換や専用基板を製作し使用する場合に電源が逆になる。


参考:
macsbug:Weather Station of ESP8266:前回の例。
blog.squix.chDani Eichhorn氏:I thank Mr.Dani Eichhorn.
SquixTechBlog の WeatherStationDemo:今回の記事もと。
ESP8266 Weather Station with forecast:動画
adfuruit:Huzzah Weather DisplayANDY DORO氏による詳細な内容が書かれている。
Github:squix78 / esp8266-weather-station:今回のスケッチ
WEATHER UNDERGROUND:お天気情報 と サインイン
A WEATHER API DESIGNED FOR DEVELOPERS:UNDERGROUND API Key
Weather Underground (Wunderground) API :: Part 1:UNDERGROUND API Key YouTubeの説明


Written by macsbug

1月 12, 2016 at 1:35 pm

カテゴリー: ESP8266

Weather Station of ESP8266

leave a comment »

SquixTechBlog の ESP8266: Weather Station V2 Code published を試しました。 2016.01.12

動画は上記のサイトで見る事が出来ます。


左は WiFi 接続時の画面。左2つ目からスライドしながら気象状況を繰り返し表示します。


データー基の forecast に接続し「Tokyo, Japan」等を入力すると気象状況を見る事ができます。
iOSには、Dark Sky (有料)というアプリがあります。



準備:
API Key の入手:The Dark Sky Forcast API で Sign in(Log in) し、API Key (32桁) を入手。
_      
_      
_   なれないと思いますが、がんばって サインインをして API を入手してください。
ハード:ESP8266とOLEDを接続します。ESP8266_13=OLED SDA,ESP8266_14=OLED SDA
_   OLED部品情報:ebay で 1個559円(投稿時の価格)というのがあります。
ソフト:スケッチ(squix78 / esp8266-projects)を libraries に入れ weather-station-v2 を読む。
_   変更箇所:以下の6カ所を各自の状態に合わせ設定します。

SSD1306 display(0x3c, 13, 14);          // I2C ADDRESS,SDA,SCL
char ssid[] = "xxxx";                   // your network SSID (name)
char pass[] = "xxxx";                   // your network password
String forecastApiKey = "xxxxxxxx";     // API key
double latitude  = 47.3;                // your latitude
double longitude = 8.5;                 // your longitude

メモ:
配線は i2Cの2本のみ。スケッチの変更は6カ所のみで直ぐ動きました。
SquixTechBlogDani Eichhorn氏に感謝。
Dinai Eichhorn氏の記事は完成度が高く大変参考になります。
データー取得のインターバル方法は大変参考になりました。
_ Ticker.h:割り込み:ticker.attach(60 * 10, setReadyForWeatherUpdate);


参考:
macsbug:WORLD CLOCK of ESP8266:前回の例。
blog.squix.chDani Eichhorn氏:
SquixTechBlog:ESP8266: Weather Station V2 Code published:今回の記事もと。
adfuruit:Huzzah Weather DisplayANDY DORO氏による詳細な内容が書かれている。
Github:squix78/esp8266-projects/arduino-ide/weather-station-v2/:今回のスケッチ
Meteocons:weather icons:ウエザーアイコンがある。
forecast:お天気情報
The Dark Sly Dorecast API: Login,  API Key


 

Written by macsbug

1月 12, 2016 at 12:13 am

カテゴリー: ESP8266

WORLD CLOCK of ESP8266

leave a comment »

SquixTechBlog の ESP8266 Weather Station: World Clock Demo を試しました。 2016.01.11

動画は上記のサイトで見る事が出来ます。


以下のように、左の画面(Frame)からスライドしながら世界各地の時計を表示します。


準備:
ハード:ESP8266とOLEDを接続します。ESP8266_13=OLED SDA,ESP8266_14=OLED SDA
ソフト:スケッチと追加ライブラリーを libraries に入れ、WorldClockDemo を読み込みます。
_ スケッチ    :squix78/esp8266-weather-station · GitHub
_ 追加ライブラリー:squix78/esp8266-oled-ssd1306 · GitHub
_ 変更箇所:以下の5カ所を各自の状態に設定します。

const char* WIFI_SSID = "xxxx";            // your ssid
const char* WIFI_PWD  = "xxxx";            // your password
const int I2C_DISPLAY_ADDRESS = 0x3C;      // I2C Address
const int SDA_PIN = 13;                    // SDA Pin number
const int SDC_PIN = 14;                    // SCL Pin number

メモ:
配線は i2Cの2本だけ。ライブラリー追加とスケッチの変更は4カ所のみで直ぐ動きました。
SquixTechBlogDani Eichhorn氏に感謝。
Dinai Eichhorn氏の記事は幅広く完成度が高く大変参考になります。
OLEDの表示方法:表示には、ICONとFONTが用意され、その内容が表示されています。
Frame のスライド方法は大変参考になります。
時刻読み込みのインターバル方法は大変参考になります。
_ Ticker.h:割り込み:ticker.attach(UPDATE_INTERVAL_SECS, setReadyForWeatherUpdate);


Written by macsbug

1月 11, 2016 at 1:10 am

カテゴリー: ESP8266