====== update 2015-09-13 ========
技適な話、
国内使用でのファーム書換(カスタムファーム)で
追加申請する場合は別ですが、技適の適応外となりそうですので
(ネット記事を参考)
日本国内での使用は参考を控えて下さい
初期ファームでの使用は問題ないと思います。
又海外でのデバイス開発、使用に関しては問題ないと思いますので
記事としては当面残したいと思います
*) 初期ファーム活用した、マイコン連携の記事も公開しています。
http://knaka0209.blogspot.jp/2015/08/esp-wroom-02-03.html
=================================
[概要]
前回の ( esp8266(esp-wroom-02)+mbed LPC1114FN28 )のマイコン連携の記事
と似ていますが、
標準FW(ファーム)使わずに。カスタムでマイコン間を通信します。
今回は、マイコン側からの送信処理のみ、WIFI経由(esp8266)でクラウド送信します。
1)すでに標準FWを削除(上書き)してしまった方で、
復元が困難な場合で、マイコン連携などの機能追加したい方
2) ブレークアウト変換基盤で、ADC(アナログ入力など)できない種類も
ありましたので、対策としても参考頂ければと思います。
# 短所
esp側と、マイコン側の両方のFW書き換えが必要で
手間が増える。
*) マイコン側の接続デバイス数(数×消費電力)によって、
WIFI側動作が不安定になる事も予想されますので
必要に応じて、電源回路など調整下さい。
# Code (ARDUINO SDK)
Loop内で、
シリアル受信し、ヘッダ文字を基準にデータを取得(解析)、
送信用データの作成
char c = Serial.read();
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <ESP8266WiFi.h> | |
extern "C" { | |
#include "user_interface.h" | |
} | |
const char* ssid = ""; | |
const char* password = ""; | |
const char* host = "ans1234.com"; | |
int mNextTime =300; | |
String mHEAD="put_dat="; | |
//Struct | |
struct stParam{ | |
String mc_id; | |
String snum_1; | |
String snum_2; | |
}; | |
// | |
uint get_toutValue(){ | |
uint ret=0; | |
ret= system_adc_read(); | |
return ret; | |
} | |
// | |
void send_http(String sVal){ | |
Serial.print("connecting to "); | |
Serial.println(host); | |
WiFiClient client; | |
const int httpPort = 80; | |
if (!client.connect(host, httpPort)) { | |
Serial.println("connection failed"); | |
return; | |
} | |
String url="/api-1234.php?mc_id=4&rkey=r900&snum_1="+sVal; | |
Serial.print("Requesting URL: "); | |
Serial.println(url); | |
client.print(String("GET ") + url + " HTTP/1.0\r\n" + | |
"Host: " + host + "\r\n" + | |
"Connection: close\r\n\r\n"); | |
delay( 3000 ); | |
int iSt=0; | |
while(client.available()){ | |
String line = client.readStringUntil('\r'); | |
Serial.println( line ); | |
} | |
Serial.println(); | |
Serial.println("closing connection"); | |
} | |
void setup() { | |
Serial.begin(115200); | |
delay(10); | |
// We start by connecting to a WiFi network | |
Serial.println(); | |
Serial.println(); | |
Serial.print("Connecting to "); | |
Serial.println(ssid); | |
WiFi.mode(WIFI_STA); | |
WiFi.begin(ssid, password); | |
while (WiFi.status() != WL_CONNECTED) { | |
delay(500); | |
Serial.print("."); | |
} | |
Serial.println(""); | |
Serial.println("WiFi connected"); | |
Serial.println("IP address: "); | |
Serial.println(WiFi.localIP()); | |
} | |
void loop() { | |
delay( 100 ); | |
String serial_dat=""; | |
while( Serial.available()){ | |
char c = Serial.read(); | |
serial_dat.concat(c); | |
if( serial_dat.length() >= 20){ | |
String sHd = serial_dat.substring(0, 8 ); | |
if(sHd ==mHEAD ){ | |
String sBuff = serial_dat.substring( 8 ); | |
Serial.println("==== response ===="); | |
Serial.println("sBuff=" + sBuff ); | |
Serial.println("==== response.END ===="); | |
struct stParam param; | |
param.mc_id = sBuff.substring(0,4); | |
param.snum_1 = sBuff.substring(4,8); | |
param.snum_2 = sBuff.substring(8,12); | |
// send | |
Serial.println( "snum="+ param.snum_1 ); | |
send_http( param.snum_1 ); | |
serial_dat =""; | |
} | |
} | |
} | |
} | |
今回は、固定値を送信
タイマー起動で、通信を開始。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "mbed.h" | |
#include <stdio.h> | |
#include <string> | |
#include <SerialBase.h> | |
string MC_ID="4"; | |
string mRestKey=""; | |
Serial mPc(USBTX, USBRX); | |
Timer mTimer; | |
AnalogIn inSen1(dp13); | |
AnalogIn inSen2(dp11); | |
AnalogIn inSen3(dp10); | |
AnalogIn inSen4(dp9 ); | |
int mTmMax=60; | |
int mOK_CODE=1; | |
int mNG_CODE=0; | |
int mWait_Debug=5; | |
string mHead="put_dat="; | |
string conv_zeroStr(string src ,int width){ | |
string ret="00000000"; | |
ret +=src; | |
int iNum = ret.length(); | |
ret = ret.substr(iNum-width); | |
return ret; | |
} | |
//main | |
int main() { | |
mPc.baud( 115200 ); | |
mTimer.start(); | |
while(1) { | |
float sec= mTimer.read(); | |
if(sec >= mTmMax){ | |
mTimer.reset(); | |
string msg= mHead; | |
msg+= conv_zeroStr(MC_ID ,4); | |
msg+= conv_zeroStr("0123" ,4); | |
msg+= conv_zeroStr("0456" ,4); | |
msg+= conv_zeroStr("0789" ,4); | |
mPc.printf("%s\r\n" , msg); | |
} | |
} | |
} |
http://knaka0209.blogspot.jp/2015/08/esp-wroom-02-03.html
ここでは省略します。
#関連の記事
ESP-WROOM-02の接続テスト
マイコン連携(esp-wroom-02+mbed LPC1114FN28 で、IoT )
# 参考の記事
回路など
# 開発者向けのまとめ記事