head

2015年8月31日月曜日

esp8266(esp-wroom-02)+mbed LPC1114FN28 でクラウド連携 (カスタム編)


====== 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();

#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 ="";
}
}
}
}
# Code (mbed SDK)
今回は、固定値を送信
タイマー起動で、通信を開始。
#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);
}
}
}
view raw esp8266-04-mbed hosted with ❤ by GitHub
センサ値取得の処理は、前回の [センサ値送信]に記載
http://knaka0209.blogspot.jp/2015/08/esp-wroom-02-03.html

ここでは省略します。

#関連の記事
ESP-WROOM-02の接続テスト
マイコン連携(esp-wroom-02+mbed LPC1114FN28 で、IoT )


# 参考の記事
回路など

# 開発者向けのまとめ記事


0 件のコメント:

コメントを投稿

google colaboratory お試し編 、GPUも使える機械学習の環境構築

前回続き、機械学習の関連となります。 開発環境まわりの内容となり。先人様の情報を元に調査しました。 google colab(google colaboratory) を試してみました。機械学習系の いくつかのライブラリがインストール済みで、 クラウド上で、ある程度機械学...

AD-parts

Shop
Bluetooth搭載
ベース基板

Social