macsbug

Just another WordPress.com site

Archive for 8月 2015

codebender で ブラウザーから Arduino を動かす。

leave a comment »

codebendor は、ブラウザーで Arduino のプログラムを編集し実行できる。                2015.08.29
ブラウザーは、Chrome か Firefox を使用します。 Safari は、不可です。


iOS の IOTアプリ、Blynk を始めようかと検討していると、古い話ですが codebendor を思い出す。
KICKSTARTER Blynk に支援($40)して、promo-code を取得(2015.05)していたのに気づく。
codebendor は、ブラウザーで、Arduino のプログラムの編集とアップができる優れもの。
サポートブラウザー:Mac OS X: Firefox or Chrome/Chromium 、、Safariでは動かない。


手順:ブラウザーで codebender に 接続。
_ Log in  で、nomen, password  を入力。
_ プログラムの編集とアップができる。
_ Arduino IDE と同じく Arduino Uno を接続し Board と Port を設定。
_ Lチカを編集して、Run on Arduino を実行すると、コンパイルしてプログラムがアップされます。
_ Port を認識しないエラーの場合は、Arduino の接続をやり直してください。

おおっ、Ardduino の LED が点滅しています。感激!

Try It Now:Registor がなくても トライアルができます。


codebender では、開発者のソースが公開されています。         追記:2015.09.11
codebender のページで、参加者の作成したソースを見る事ができます。
検索(Search)入力に、ESP8266 と入力すると関連するリストが出てきます。
その Project Name や User を開くとソースリストを見る事ができます。
各自のリストですので動くものとそうでない物があると思いますが参考になります。
各自のソースコードをみて、その場で、ArduinoへUploadできて動いてしまうという訳です。
なんか、凄い感じ!

Written by macsbug

8月 29, 2015 at 3:11 pm

カテゴリー: Arduino

Proximity Sensor of Arduino

leave a comment »

APDL-9960 近接センサーを試す。                                  2015.08.22


SparkFun RGB and Gesture Sensor – APDS-9960 と Arduino を配線し、Proximityセンサーを試す。
データーの表示は、Processing を使用し、オシロスコープのようにグラフ表示。
サンプルプログラムは、全て動きました。
なかなか、良い感度と精度が出ています。センシングする距離は、最大約6センチ位です。


用意するもの:
Arduino UNO と Arduino IDE 。
Library 及び サンプルプログラム:APDS-9960_RGB_and_Gesture_Sensor
プロセシング言語:Processing
SparkFun ジェスチャーセンサ( 3.3V 仕様):価格:スイッチサイエンスで、2053円(送料込み)。



配線:

 Arduino  APDL-9960
  3.3V   VCC
  GND   GND
  A4(4)   SDA
  A5(5)   SCL

 


APDL-9960:仕様:

  • Operational Voltage: 3.3V
  • Ambient Light & RGB Color Sensing
  • Proximity Sensing
  • Gesture Detection
  • Operating Range: 4-8in (10-20cm)
  • I2C Interface (I2C Address: 0x39)

 


Arduino と Processing のスケッチ:

Arduino:


/*********************************************************
Proximity Test
Hardware Connections:The APDS-9960 can only accept 3.3V! 
 Arduino Pin  APDS-9960 Board  Function 
 3.3V         VCC              Power
 GND          GND              Ground
 A4           SDA              I2C Data
 A5           SCL              I2C Clock
*********************************************************/
#include <Wire.h>
#include <SparkFun_APDS9960.h>
SparkFun_APDS9960 apds = SparkFun_APDS9960();
uint8_t proximity_data = 0;

void setup() {
  Serial.begin(115200);
  apds.init();
  apds.setProximityGain(PGAIN_1X);
  apds.enableProximitySensor(false) ;
}

void loop() {
  if ( apds.readProximity(proximity_data)){
    Serial.write('H');             // Header
    Serial.write(proximity_data);  // 0 - 255
  } 
  delay(50);
}


Processing:


import  processing.serial.*;
Serial  serial;
int[]   data;

void setup() {  
  size(700, 240);
  data = new int [width];
  serial = new Serial( this, Serial.list()[0], 115200 );
}

void draw() {
 background(10);
 strokeWeight(2); 
 stroke(0, 255, 0);
 for (int i=0; i<data.length-1; i++) {            // GRAPH DRAW
   line( i, data[i], i+1, data[i+1] );
 } 
} 

void serialEvent(Serial port) {
 if ( port.available() >= 3 ) {
   if ( port.read() == 'H' ) {   
     int recv_data = port.read();                  // DATA READ     
     for (int i=0; i<data.length-1; i++) {        // GRAPH DATA UP
       data[i] = data[i+1];
     }
     data[data.length-1] = recv_data;
   }
 }
}

float convToGraphPoint(int value) {
  return (height - value*height/256);
}


メモ:
Processing は、画像を表示をするのに便利です。
_ 今回は、シリアルデーターをオシロスーコープにするサンプルを参考にしました。
_ 信号は、Arduio : Sensor -> Serial.write(data); -> Processing : port.read(); という流れです。
_ スケッチは、簡単に変更して使え、他の Arduino のセンサーの動作確認にも便利です。
_ Export Application を選択すると Windows, Mac, Linux の単独アプリが作れます。
製品の注意:ebay で販売されている APDL9930 は格安ですが Proximityセンサー機能はありません。
_  参考:じわじわ進む:ArduinoとAPDL9930(9960じゃなくて)


 

Written by macsbug

8月 23, 2015 at 3:10 am

カテゴリー: Arduino, Processing

ESP8266 耐久テスト

leave a comment »

Arduino DUE + ESP8266 (ESP-WROOM-02) (57600bps) で構成し耐久テストを行う。 2015.08.21
Arduino から、HTML文を送信し、ブラウザーにボタンを表示し双方向の通信を行う。

ESP-WROOM-02単体で動くWEBと通信するスケッチを友人が作成。
これを、Arduino用に変換して、iMac Safari で通信し、以下の画面になる。
10秒毎にリロードさせ回数を表示。195回目で一度フリーズしたがボタンを押して再会する。
今の所、512回を遥かに超えている。 尚、連打テストも必要ですね。


 

参考HP:
_  ALLAboutEE :How To Use the ESP8266 and Arduino as a Webserver:注目の場所
_  Serial WIFI Transceiver Module ESP8266:参考スケッチ
_  ESP8266 RFERENCE:AT Command の詳細

通信の構成:

1. ESPの初期化は、以下の esp_begin で行う。
2. WEB からのリクエストと、データーの送受信は、以下の sendData で行う。
3. void Loop では、while(Serial1.available() でボタンを検知する。
4. その後に、if (Serial1.find(“+IPD,”) でデーターの先頭を検知する。
5. +IPD の次は、id の値が来る。この id は、送信時に必要な値。
_  Multi Connection mode:(CIPMUX=1): + IPD, id , len : data
6. 通信が停止する件 その1:+IPD,1,280:GET /favicon.ico HTTP/1.1
_   favicon.ico というデータをクライアントが要求して来る場合がある。
_   その応答の為に停止する事がある。
_   対応は、即座に AT+CIPCLOSE を返せば良い。この場合、以下の esp_begin が必要。
_   参考:Arduino Mini Server debug of GET /favicon.ico
7. 通信が停止する件 その2:busy p.. になると通信が途絶える。
_  BAUDRATEが高すぎる。
_  データー長の違いや欠損等々、If文やwhile文の違いで起こる事もあると判断。
_  対策は、再度 以下の esp_begin の実行が必要。

受信データーの例:
+IPD,0,284:GET /RED=ON HTTP/1.1
Host: 192.168.4.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:35.0) Gecko/20100101 Firefox/35.0 SeaMonkey/2.32.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: keep-alive

 



void esp_begin(){
     sendData("AT+RST\r\n",2000,DEBUG);            // reset module
     sendData("AT+CWMODE=2\r\n",1000,DEBUG);       // configure as access point
     sendData("AT+CIFSR\r\n",1000,DEBUG);          // get ip address
     sendData("AT+CIPMUX=1\r\n",1000,DEBUG);       // TCP/IP Connection :  Multiple
     sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
}

String sendData(String command, const int timeout, boolean debug){
     String response = "";
     Serial1.print(command);
     long int time = millis();
     while( (time+timeout) > millis()){
       while(Serial1.available()){
         char c = Serial1.read();
         response+=c;
       }  
     }   
     if(debug){Serial.print(response);}    
     return response;
}


HTML方式の限界:
HTMLの記述は、ボタン数個程度なら簡単に出来て便利かと思います。
しかし、機能やデザインを良くする程、記述の量が膨大になり、そしてメモリーの限界が訪れます。

対応策:
Blynk」と言う、iOS アプリを使うのが正解だと判断しています。
Blynk は、 送受信の機能があり、UIも素晴らしい機能を持っています。
ボタン、スライダー、そして、グラフ機能が作れます。
皆さん、素晴らしい電子工作を頑張ってください。

 

 


Written by macsbug

8月 21, 2015 at 3:18 am

カテゴリー: Arduino, ESP8266

ESP8266 の消費電流と ARDUINO の 3.3V 出力電流について

with 2 comments

Arduino の 3.3V 出力電流は、どのくらいの物があるかを調べてみた。                       2015.08.13


結論:ESP8266の消費電流は、通常80mAで最大360mA程度。Arduino 3.3V出力はLDOで異なる。
_  Arduino 3.3VでESP8266が動作可能かは、Arduinoの種類によって異なる。
_  下の表の 300mA か500mA 以上のArduinoを使用する
_  Capacitorを追加し、瞬間的な電流を補うのも1つの方法である。

NURDSによると、802.11b, CCK 1Mbps, POUT=+19.5dBm の時は 215mA。
sparkfunのESP8266 Thing Hookup Guideでも、215mAと言っている。
_ 802.11b, packet size of 1024 bytes, -65dBm は、 62mA。

IoT Wi-Fi Modules Comparison Table では、Receiveで60mA、Transmitで、215mA。

ESP8266 power usage measurements によると、最大 360mA。


ねむいさんのブログ:オシロスコープによる実測。LDOの種類によって電源電圧降下がある。
ESP-WROOM-02を使ってみる3 -そんな電源で大丈夫か- によると、通常80mA、
Peak時=350mA、RF出力時=280mA。
以下、画像をリンク。


REDUCING ESP8266 POWER CONSUMPTION USING DEEP SLEEP によると、最大330mA。
 


Arduino の派生品も含め調査。150mAは、消費電流が大きい場合動作しない。300mA以上なら動作する。
Arduinoの種類によって、3端子ReulatorのLDOが異なる。中にはDCDC-Converterを使用している物もある。
Device Marking は、3.3VのRegulatorに記されているMark。OUTPUT Currentは、仕様や規格から記載した。

Arduino Device Marking Parts number OUTPUT Current 根拠
Arduino UNO R3 純正 LPFL LP2985-33DBVR  50mA  SS仕様 
Arduino UNO R3 純正  – LP2985-33DBVR  150mA IC規格
 Arduino UNO R3 LORA LP2985AIM5-3.3 150mA IC規格
 Arduino Leonald  LPFL LP2985AIM5-3.3 150mA IC規格
 Sainsmart UNO R3 LPF3 LP2985AIM5-3.3 150mA IC規格
 BUONO UNO R3   2A DCDC-Converter  Xl1410E1 300mA 仕様
 Cactus Micro Rev2 LG33  MIC5219-3.3BM5  500mA peak
 Arduino MEGA  269-5G MC33269ST-3.3 800mA IC規格
 MPSM v.2 DevBoard REG1117 REG1117-3.3 800mA IC規格
ESP8266 Wifi Module Breakout NCP1117LP NCP1117−3.3 1000mA IC規格
 Sainsmart UNO 改造版 AMS1117-3.3 AMS1117-3.3 1100mA IC規格
 Arduino DUE  AMS1117-3.3 AMS1117-3.3  1100mA   IC規格
ESP8266-07 WiFi Relay Board AMS1117-3.3 AMS1117-3.3  1100mA   IC規格

 

消費電流を計る装置とグラフ化と思ったら、すでに実施されている方がおり参考にさせて頂きました。感謝!
同じ、LP2985-33DBVRを使用しも、ある所では、50mA、規格は、150mA とか素人には解りにくい。
定常状態で74mA位で動くと言えば動くが、送信時に不安定になるので150mAは、使わないほうが良い。
動いた動かないは、供給側の能力もあるし、消費側の使用状態でも大きく変わる。
連続送信の場合は、消費電流が多くなるのは想像できる。Capcitorで補えばなんとか行くかも。
そうすると、最低500mAくらいは、欲しくなる。
安定化の為に供給先の電源ラインやICには、0.1uFや数十〜百uF程度のCapacitorを付ける事。
こうやって、電子工作はいつも電源の問題に行き当たりますね。


左:Sainsmart UNO 改造版(SW右にAMS1117-5.0:中央にAMS1117-3.3)。右:Cactus Micro Rev2(USB右にLG33)。


この中で、お薦めは、Cactus Micro Rev2 である。旧型は、Cactus Micro がある。
理由:3.3V LDOは、LG33(MIC5219-3.3BM5)を使用し、500mA-Peak 出力可能である。
_  一体型で小型である事、3.3V 出力電流も問題なし。価格もリーズナブル($11)。
_  ただし、容量が少ない為に、大きなスケッチは書けない。
構成: ATmega32U4+ESP8266 [四月兄弟] が、1つになったもの。
_   Arduino IDE の、ボード選択は、”LilyPad USB”
開発環境:OSX Yosemite + Cactus Micro Rev2 にて、動かない場合。
_ どの様に動かないかで対応が異なります。
_ OSX Yosemite + Arduino 開発環境 (Development environment) を参考にしてみてください。
_ Cactus Micro Arduino compatible plus WIFI esp8266 も参考にしてみてください。


tindie の ESP8266 Wifi Module Breakout は、1A。(左下:LOD=NCP1117−3.3) 追記:2015.8.15


MPSM v.2 DevBoard:右の写真の下にある LDO=AMS1117-3.3。


ESP8266-07 WiFi Relay Board:右の写真の下にある LDO=AMS1117-3.3。



AMS1117-3.3V Power Supply Module 3.3V          DC 5V to 3.3V Power Supply Module AMS1117-3.3 LDO


COMPILING ERROR AFTER SPI PORTING

picture below represents digital signals of data 0x4.     manipulation of same logging data sequences .


安定した電源を確保するには、電池を使用する方法がある。
アルカリ乾電池の電池容量定電流連続放電によると、1000mA 1時間流す事ができる。
_ 単3乾電池にすると、1A程度の電流が流せるので、場合によっては3端子regulatorよりも安定する。
_ ESP-WROOM-02単体で3.3V 三端子レギュレーターを付けて、かなり安定した動作をしている話がある。
_ 同、単3リチウムイオン乾電池2本で、2.4Vしかでないが、それを電源にして動作させると問題なく動く話がある。


Written by macsbug

8月 13, 2015 at 1:21 pm

カテゴリー: Arduino, ESP8266

Arduino + ESP8266 BAUDRATE

leave a comment »

Arduio + ESP8266 で使用可能なBaudRate のまとめ            2015.08.08


 

 Arduino Board    vs    ESP BaudRate (bps)   9600  19200  57600  115200
 Arduino UNO SoftWareSerial+ESP8266 X X
 Arduino UNO HardWareSerial(0,1) only
 BUNONO SoftWareSerial X
 Arduino MEGA HardWareSerial
 Arduino DUE   HardWareSerial
 Cactus Micro SoftWareSerial X
 Cactus Micro Rev2 SoftWareSerial X
 Arduino UNO SoftWareSerial+ESP8266MOD(ESP-12) X
 Arduino UNO SoftWareSerial+ESP-WROOM02(CEREVO)

 

メモ:=確認済み。○=未確認であるが可能と判断する。X=不可能。-=未確認。

_ ESP-WROOM02(CEREVO):現在、SSIDは変更できるがボーレートを変更できない。(ERROR 表示)

 


1. 結論:用途に合わせて上記の使用可能な範囲で使用する。

2. 通信速度:
_ 32bit 25KHz 程度の高速なデーターを通信する場合は、57600 bps が望ましい。
_ 単にランプ等のスイッチのオン・オフならば、低速で良い。
_ WEBアプリを使用した、HTMLの送信は、一度に送れる量に制限がある。

3. SoftWareSerial :
_ SoftWareSerial は、便利だが、速度に制限がある。
_ Arduino UNOは、シリアルが1つしか無い為、SoftWareSerial を使用した方が、デバックしやすい
_ 例:Arduino UNO HardWareSerialの pin(0)=RX, pin(1)=TX は、115200 bps が可能であるが
_  Upload 時に、配線を外す必要がある事と、シリアルモニターでデバックが出来ない不便さがある。

5. Cactus Micro は、ESPを含んだ超小型で便利だが、クロックが8MHzの為、9600bpsが望ましい。

 


UNO BUONO R3    ( Error in writing:3.3V Output 1800mA -> 300mA):ebay=1個 1242円(2015.08.02)


Cactus Micro Arduino compatible plus WIFI esp8266

 


Cactus Micro Rev2 Arduino compatible plus WIFI esp8266:tindle 1個 $14(1748円)(2015.07.29)


 

 

Written by macsbug

8月 7, 2015 at 11:13 pm

カテゴリー: Arduino, ESP8266

Arduino DUE or MEGA + ESP8266 で 115200bps

leave a comment »

Arduino DUE 又は MEGA2560 + ESPA8266 は 115200 bps にて動作した。   2015.08.04


配線:Hardware Serial (Serial1) を使用。
_ ARduino DUE(MEGA) 18(TX1) -> ESP8266 Rx –> WiFi -> WEB
_ ARduino DUE(MEGA) 19(RX1) <- ESP8266 Tx <– WiFi <- WEB
ボーレート:ESP8266 を、115200 bps に変更。-> Arduino だけで ESP8266 を設定する方法
動作状況:いつものWEB Serverは、動作した。

Arduino UNO  :CPU=ATmega328P  /  8-Bit/Clock 16MHz
Arduino MEGA :CPU=ATmega2560  /  8-Bit/Clock 16MHz:3.3V=150mA(LP2985AIM5-3.3)
Arduino DUE  :CPU=Atmel SAM3X8E/32-Bit/Clock 84MHz:3.3V=1100mA(AM5117 3.3)


シリアルモニターの表示。接続条件:Arduino MEGA2560 + 115200 bps + iMac Google Chrome(WEB)


AT+RST

OK

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset

load 0x40100000, len 816, room 16

tail 0

chksum 0x8d

load 0x3ffe8000, len 788, room 8

tail 12

chksum 0xcf

ho 0 tail 12 room 4

load 0x3ffe8314, len 288, room 12

tail 4

chksum 0xcf

csum 0xcf

2nd boot version : 1.2

SPI Speed      : 40MHz

SPI Mode       : QIO

SPI Flash Size : 4Mbit

jump to run user1

sl盾

Ai-Thinker Technology Co. Ltd.

invalid

AT+CWMODE=2

OK

AT+CIFSR

+CIFSR:APIP,"192.168.4.1"

+CIFSR:APMAC,"1a:fe:34:a2:3e:fa"

OK

AT+CIPMUX=1

OK

AT+CIPSERVER=1,80

OK

,403:GET / HTTP/1.1

Host: 192.168.4.1

Connection: keep-aliveAT+CIPSEND=0,63

OK

> <html><h1>Hello</h1><h2>World!</h2><button>LED1</button></html>

SEND OK

AT+CIPSEND=0,21

OK

> <button>LED2</button>

SEND OK

AT+CIPCLOSE=0

1,CONNECT

+IPD,1,317:GET /favicon.ico HTTP/1.1

Host: 192.168.4.1

Connection: keep-alive

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36

Accept: */*

Referer: http://192.168.4.1/

Accept-Encoding: gzip, deflate, sdch

Accept-Language: ja,en;q=0.8

0,CLOSED

OK

Written by macsbug

8月 4, 2015 at 1:22 pm

カテゴリー: Arduino, ESP8266

BUONO UNO R3 + ESP8266 で 57600bps

leave a comment »

BUONO UNO R3 (Arduino compatible) + ESP8266 は、57600 bps で動作した。    2015.08.02

BUONO UNO R3 の仕様:BUONO UNO R3 Datasheet ( 3.3V:300mA )

特徴:
_ システムパワーを、5V/3.3V スイッチで切換える事ができる。(I/O の電圧が、3.3V 動作可能)
_ 3.3V の出力電流は、300mA まで可能。ESP8266 を駆動させる可能な容量である。(Xbeeが可能)

販売:BUONO UNO R3 は、ebay で販売されている。価格は、2015.08.02現在、1個1568円と少々高い。


準備:BUONO UNO R3 をシリアルモニター化するスケッチでボーレートを、57600 bps に変更。
-> Arduino だけで ESP8266 を設定する方法
動作状況:いつものWEB Serverは、動作した。
メモ:115200 bps は、文字化けが発生する為に、動作不可。
57600 bps が可能な理由:3.3V の電流容量を増加、I/Oの電圧を3.3V 同一電圧でおこなった為と思われます。


下にある、Arduino Uno R3 を BUONO UNO R3 に交換し、SYS PWR は、3V3(3.3V)に設定。
3.3V駆動の為、5V/3.3V レベル変換は不要である。
HARD:Arduino pin 2(Tx) -> ESP8266 Rx, Arduino pin 3(Rx) <- ESP8266 Tx.   SOFT:SoftwareSerial( 3,2);


ESP8266MOD も同様に、BUONO UNO R3 に交換し、57600 bps で通信が可能になりました。
3.3V定常電流:75mA


ESP8266(ESP-01)とESP8266MOD(ESP-12)は、中味が同じなので結果は同じでしょうね。


Written by macsbug

8月 2, 2015 at 11:38 am

カテゴリー: Arduino, ESP8266