2024/03/25(月)RICOH GRリモコン
RICOH GR遠隔リモコン
//連射可能にした版
//ボタン割り込みの使用をやめ、ループ内でGPIO0の状態をチェックしている
#include
#include
//■初期設定
#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();
}