|
/* |
|
Yksinkertainen scripti Wemos D1 Minille. |
|
Koodi lähettää napinpainalluksella HTTP-pyynnön |
|
haluttuun osoitteeseen . |
|
|
|
Pitkä painallus lähettää pyynnön osoitteeseen |
|
server_ip:port/video |
|
Lyhyt painallus osoitteeseen |
|
server_ip:port/photo |
|
|
|
Asenna Arduino core ESP8266-alustalle osoitteesta |
|
https://github.com/esp8266/Arduino |
|
|
|
@author Peter Kronström |
|
*/ |
|
|
|
#include <ESP8266WiFi.h> |
|
#include <ESP8266HTTPClient.h> |
|
#include <Ticker.h> |
|
|
|
/* Selfie-kameran asetukset tänne */ |
|
#define WIFI_SSID "ssid" // WiFin tunnus |
|
#define WIFI_PASSWORD "pass" // WiFin salasana |
|
#define SERVER_ADDRESS "192.168.1.xxx" // hae 'ifconfig'-komennolla Raspberrystä |
|
#define SERVER_PORT 5000 // server.py:n portti |
|
|
|
/* Joitakin staattisia muuttujia */ |
|
#define DEVICE_ID "nappi" |
|
#define PAYLOAD "{\"success\":\"True\"}" |
|
|
|
/* Pinnimäärittelyt */ |
|
#define BUTTONPIN D3 |
|
|
|
int buttonState = 0; |
|
Ticker debounceTicker; |
|
bool debounce = false; |
|
|
|
int sendData(String url, String payload) { |
|
HTTPClient http; |
|
http.begin(SERVER_ADDRESS, SERVER_PORT, url); |
|
http.addHeader("Content-Type", "application/json"); |
|
http.POST(payload); |
|
http.end(); |
|
} |
|
|
|
void doDebounce() { |
|
debounce = false; |
|
} |
|
|
|
void setup() { |
|
Serial.begin(115200); |
|
|
|
WiFi.mode(WIFI_STA); |
|
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); |
|
|
|
// Yritä yhdistää wifiin, jos ei onnistu niin yritä uudelleen |
|
while (WiFi.waitForConnectResult() != WL_CONNECTED) { |
|
Serial.println("Connection Failed! Rebooting..."); |
|
delay(5000); |
|
ESP.restart(); |
|
} |
|
|
|
pinMode(BUILTIN_LED, OUTPUT); |
|
|
|
Serial.print("Initialized."); |
|
Serial.print(". IP: "); |
|
Serial.println(WiFi.localIP()); |
|
} |
|
|
|
void loop() { |
|
buttonState = digitalRead(BUTTONPIN); |
|
|
|
if (buttonState == LOW && !debounce) { |
|
int longPressCounter = 0; |
|
digitalWrite(BUILTIN_LED, LOW); // LED on! |
|
|
|
while (digitalRead(BUTTONPIN) == LOW) { |
|
// Kasvata laskuria longPressCounter |
|
// kunnes painonappi on vapautettu tai |
|
// painaminen kestää yli 10 * 100 ms = 1 s. |
|
delay(10); |
|
longPressCounter++; |
|
|
|
if (longPressCounter >= 100) |
|
break; |
|
} |
|
digitalWrite(BUILTIN_LED, HIGH); // LED off! |
|
|
|
if (longPressCounter >= 100) { |
|
// pitkä, yli 1 s painaminen. |
|
sendData("/video", PAYLOAD); |
|
} |
|
else { |
|
// Lyhyt painaminen. |
|
sendData("/photo", PAYLOAD); |
|
} |
|
|
|
// Estä ohjelmaa rekisteröimästä epämääräiset |
|
// häiriöt välittömästi painamisen jälkeen |
|
debounce = true; |
|
debounceTicker.attach_ms(500, doDebounce); |
|
} |
|
|
|
} |