Archive for 8月 2015
codebender で ブラウザーから Arduino を動かす。
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できて動いてしまうという訳です。
なんか、凄い感じ!
Proximity Sensor of Arduino
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じゃなくて)
ESP8266 耐久テスト
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も素晴らしい機能を持っています。
ボタン、スライダー、そして、グラフ機能が作れます。
皆さん、素晴らしい電子工作を頑張ってください。
ESP8266 の消費電流と ARDUINO の 3.3V 出力電流について
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しかでないが、それを電源にして動作させると問題なく動く話がある。
Arduino + ESP8266 BAUDRATE
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)
Arduino DUE or MEGA + ESP8266 で 115200bps
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
BUONO UNO R3 + ESP8266 で 57600bps
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)は、中味が同じなので結果は同じでしょうね。
Arduino Uno の 3.3V出力電流について
Arduino Uno を述べる時は、メーカとバージョンの記載が必要。 2015.08.01, rev:08.02
理由は、3.3V出力電流が異なる為。
Arduino Uno R3
Arduino Uno の 3.3V出力に、ERP8266 を接続すると動く物と動かないものがある。
動かない原因は、3.3Vの出力電流不足で電圧が低下する為である。
Arduino Uno のバージョンは、R1,R2,R3 がある。ただし、どこを見て、Rを見分けるのかの問題がある。
ESP8266 を接続すると、動く、動かないという話は、このバージョンの区分けをしていない為である。
又、ESPの設定や動作状態によって消費電流が異なるのも、1つの要因である。
ESPの消費電力の件もあるが、AC ADAPTERからも供給や、3.3V出力にCapacitor追加とかの表現になる。
Arduino の種類と仕様:arduino-Board.com:このサイトでボード毎の電流値が解ります。
Arduino.cc:Arduino Uno の説明に、Arduino Uno,Arduino Uno SMD,Arduino Uno R2,Arduino Uno R3
があり、3.3V出力は、50mAと記載。これは古いArduino Unoの事でESPを使用する時、この容量では足りない。
DC Current for 3.3V Pin 50 mA
3V3. A 3.3 volt supply generated by the on-board regulator. Maximum current draw is 50 mA.
adafuruit:Arduino UNO FAQ
FAQの「More 3.3v power!」に、3.3Vの出力電流について書かれています。
古いUno の3.3V出力は、50mAです。新しいUnoは、3.3VのRegulatorに、LP2985を使用し、150mAまで、、。
Arduino Uno R3, LP2985 Regulator:現品は、LP2985-33DBVR
規格:LP2985 150-mA Low-noise Low-dropout Regulator With Shutdown:
_ Full Load 150mAと書かれている。
Arduino UNO Reference Design:Ver不明であるが、配線図には、LP2985-33DBVR となっている。
他の製品例:メーカーによって異なる場合がある。
sparkfun:Arduino Uno R3:150mA(LP2985-33DBVR使用)
SainSmart:SainSmart UNO R3:3.3V Electric current : 50MA と書かれている。
InHaos:UNO BUONO R3:3.3v 300mA と書かれている。
SainSmart:SainSmart UNO:3.3V RegulatorにAMS1117-3.3を使用。3.3V 1100mA。入手先不明。
参考:ESP8266 ESP-WROOM-02 の消費電流について
Reference Documentation:ESP8266 Datasheet and Hardware User Guide の
ESP8266 ESP-WROOM-02 WiFi Module:
0C-ESP8266__WROOM_WiFi_Module_Datasheet__EN_v0.3.pdf を参照の事。
6. Power Consumption は、以下の様になっている。
3.3V消費電流の実測値:オシロでなく、テスターでの電流値。
結論:通常、120mA程度で、ESP8266の設定や動作状態で消費電流が異なる。
測定したESP: ESP-WROOM-02(Aとする)、ESP8266(ESP-01)は、設定値の異なる2種類(B と C とする)。
A:ESP-WROOM-02 +Arduino Uno R3:定常状態= 75mA
B:ESP8266(ESP-01)+Arduino Uno R3:定常状態= 73mA
C:ESP8266(ESP-01)+Arduino Uno R3:定常状態=120mA
送信時に、+20mA増加する。テスターでの測定の為、瞬間時はもっと大きいと思われます。