2024/03/25(月)RICOH GRリモコン

grctl.png

RICOH GR遠隔リモコン
//連射可能にした版
//ボタン割り込みの使用をやめ、ループ内でGPIO0の状態をチェックしている

#include
#include // HTTPClient

//■初期設定
#define SLEEP_TIME 120000 //ms
#define SHOOT_INTERVAL 300 //ms

#define SHOOT_URL "http://192.168.0.1/v1/camera/shoot"
#define HTTP_POST "af=camera"
#define SSID "myssid"
#define WIFI_PASS "password"



//■メイン処理
int sleep_count = SLEEP_TIME; //time to deep sleep (ms)

//WiFiClient client;

//■セットアップ
void setup() {

Serial.begin(115200);
Serial.println("Wifi start");

//wifi_set_sleep_type(MODEM_SLEEP_T);
//wifi_set_sleep_type(LIGHT_SLEEP_T); //★スリープして復帰しなくなるのでNG

wifi_connect();

//接続完了
sleep_count = SLEEP_TIME;

//改行して繋がったことをシリアルで伝える。
Serial.println("");
Serial.println("WiFi connected");

//WiFiの状態を表示
WiFi.printDiag(Serial);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

}

//■ループ
void loop() {

//Wifi切断時
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Not connected!");
ESP.restart(); //再起動して再接続実施

//Wifi接続時
} else {

//ボタン押下時
if(digitalRead(0) == LOW){
sleep_count = SLEEP_TIME;
Serial.println("shoot!");
shoot();
delay(SHOOT_INTERVAL); //連射間隔

//未操作時
}else{
delay(100);
sleep_count -=100;

}
}

//長時間操作無し時スリープ
if(sleep_count <= 0){
Serial.println("Go to deep sleep");
ESP.deepSleep(0);
}

//Serial.println("*");
}



//■以下関数
void wifi_connect(){
//noInterrupts();

WiFi.mode(WIFI_STA); //WiFiクライアントモード設定
WiFi.printDiag(Serial); //WiFiを繋ぐ前に、WiFi状態をシリアルに出力
WiFi.begin(SSID, WIFI_PASS);
// WiFi.config(ip, gateway, subnet);

//接続が確立するまで、・・・を表示
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
sleep_count -= 1000;

Serial.print(".");
//WiFi.printDiag(Serial);

if(sleep_count <= 0){
Serial.println("Go to deep sleep");
delay(1000);
ESP.deepSleep(0);
}
}

//interrupts();
}


void shoot(){
//noInterrupts();

HTTPClient http;
http.begin(SHOOT_URL);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.POST(HTTP_POST); //Send the request

String payload = http.getString(); //Get the response payload
Serial.println(httpCode); //Print HTTP return code
Serial.println(payload); //Print request response payload

http.end(); //Close connection
//interrupts();
}
OK キャンセル 確認 その他