minolta_remote_v1.ino 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #include <ArduinoJson.h>
  2. #include <AsyncEventSource.h>
  3. #include <AsyncJson.h>
  4. #include <AsyncWebSocket.h>
  5. #include <AsyncWebSynchronization.h>
  6. #include <ESPAsyncWebServer.h>
  7. #include <StringArray.h>
  8. #include <WebAuthentication.h>
  9. #include <WebHandlerImpl.h>
  10. #include <WebResponseImpl.h>
  11. #include <AsyncEventSource.h>
  12. #include <AsyncJson.h>
  13. #include <AsyncWebSocket.h>
  14. #include <AsyncWebSynchronization.h>
  15. #include <ESPAsyncWebServer.h>
  16. #include <StringArray.h>
  17. #include <WebAuthentication.h>
  18. #include <WebHandlerImpl.h>
  19. #include <WebResponseImpl.h>
  20. #include <ArduinoWiFiServer.h>
  21. #include <BearSSLHelpers.h>
  22. #include <CertStoreBearSSL.h>
  23. #include <ESP8266WiFi.h>
  24. #include <ESP8266WiFiAP.h>
  25. #include <ESP8266WiFiGeneric.h>
  26. #include <ESP8266WiFiGratuitous.h>
  27. #include <ESP8266WiFiMulti.h>
  28. #include <ESP8266WiFiScan.h>
  29. #include <ESP8266WiFiSTA.h>
  30. #include <ESP8266WiFiType.h>
  31. #include <WiFiClient.h>
  32. #include <WiFiClientSecure.h>
  33. #include <WiFiClientSecureBearSSL.h>
  34. #include <WiFiServer.h>
  35. #include <WiFiServerSecure.h>
  36. #include <WiFiServerSecureBearSSL.h>
  37. #include <WiFiUdp.h>
  38. static const uint8_t D1 = 5;
  39. static const uint8_t D2 = 4;
  40. static const char* ssid = "MINOLTA_REMOTE_CONTROL";
  41. static const char* password = "12345678";
  42. bool isFocusPressed = false;
  43. IPAddress local_IP(192,168,1,200);
  44. IPAddress gateway(192,168,1,1);
  45. IPAddress subnet(255,255,255,0);
  46. AsyncWebServer server(80);
  47. void setup() {
  48. // put your setup code here, to run once:
  49. Serial.begin(115200);
  50. pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
  51. pinMode(D1, OUTPUT);
  52. pinMode(D2, OUTPUT);
  53. digitalWrite(LED_BUILTIN, LOW);
  54. digitalWrite(D1, LOW);
  55. digitalWrite(D2, LOW);
  56. if (!WiFi.softAPConfig (local_IP, gateway, subnet))
  57. {
  58. Serial.println("Failed to config IP");
  59. }
  60. WiFi.softAP(ssid, password);
  61. Serial.println(WiFi.softAPIP());
  62. Serial.println("Waiting for connect");
  63. /*while(WiFi.status() != WL_CONNECTED)
  64. {
  65. digitalWrite(LED_BUILTIN, HIGH);
  66. delay(500);
  67. Serial.print(".");
  68. Serial.print(WiFi.status());
  69. digitalWrite(LED_BUILTIN, LOW);
  70. }*/
  71. Serial.println("Client connected");
  72. server.on("/api/focus",HTTP_GET, [](AsyncWebServerRequest *request)
  73. {
  74. Serial.println("api/focus");
  75. digitalWrite(LED_BUILTIN, HIGH);
  76. halfPress();
  77. digitalWrite(LED_BUILTIN, LOW);
  78. request->send(200,"application/json","{\"result\":\"true\"}");
  79. });
  80. server.on("/api/takePhoto",HTTP_GET, [](AsyncWebServerRequest *request)
  81. {
  82. Serial.println("api/takePhoto");
  83. digitalWrite(LED_BUILTIN, HIGH);
  84. if (request->hasParam("msec"))
  85. {
  86. int ms = request->getParam("msec")->value().toInt();
  87. }
  88. else
  89. {
  90. pressFullWithDelay(1000);
  91. }
  92. digitalWrite(LED_BUILTIN, LOW);
  93. request->send(200,"application/json","{\"result\":\"true\"}");
  94. });
  95. server.on("/api/reset",HTTP_GET, [](AsyncWebServerRequest *request)
  96. {
  97. Serial.println("api/reset");
  98. digitalWrite(LED_BUILTIN, HIGH);
  99. unPress();
  100. digitalWrite(LED_BUILTIN, LOW);
  101. request->send(200,"application/json","{\"result\":\"true\"}");
  102. });
  103. server.on("/api/multiple",HTTP_GET, [](AsyncWebServerRequest *request)
  104. {
  105. Serial.println("api/multiple");
  106. digitalWrite(LED_BUILTIN, HIGH);
  107. if (request->hasParam("count") && request->hasParam("delay"))
  108. {
  109. int ms = 1000;
  110. int count = request->getParam("count")->value().toInt();
  111. int delayMs = request->getParam("delay")->value().toInt();
  112. if (request->hasParam("msec"))
  113. {
  114. ms = request->getParam("msec")->value().toInt();
  115. }
  116. if (!isFocusPressed)
  117. {
  118. halfPress();
  119. delay(1000);
  120. }
  121. while (count>0)
  122. {
  123. fullPress();
  124. delay(ms);
  125. digitalWrite(D2, LOW);
  126. count--;
  127. delay(delayMs);
  128. }
  129. }
  130. digitalWrite(LED_BUILTIN, LOW);
  131. request->send(200,"application/json","{\"result\":\"true\"}");
  132. });
  133. server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request){ request->send(200, "text/plain", "Is working"); });
  134. server.begin();
  135. }
  136. void halfPress()
  137. {
  138. digitalWrite(D1, HIGH);
  139. isFocusPressed = true;
  140. }
  141. void fullPress()
  142. {
  143. if (!isFocusPressed)
  144. {
  145. halfPress();
  146. delay(1000);
  147. }
  148. digitalWrite(D2, HIGH);
  149. }
  150. void pressFullWithDelay(int ms)
  151. {
  152. fullPress();
  153. delay(ms);
  154. unPress();
  155. }
  156. void unPress()
  157. {
  158. digitalWrite(D2, LOW);
  159. digitalWrite(D1, LOW);
  160. isFocusPressed = false;
  161. }
  162. void multipleShoot(int ms, int count, int delayMs)
  163. {
  164. if (!isFocusPressed)
  165. {
  166. halfPress();
  167. delay(1000);
  168. }
  169. while (count>0)
  170. {
  171. fullPress();
  172. delay(ms);
  173. digitalWrite(D2, LOW);
  174. count--;
  175. delay(delayMs);
  176. }
  177. }
  178. void loop() {
  179. // put your main code here, to run repeatedly:
  180. }