Niubbio e problema progetto telecomando GoPro

Salve, vorrei creare un telecomando per la mia Hero4S seguendo questo tutorial euerdesign.de
Ho acquistato tutto l'occorrente e prima di iniziare il tutto ho provato a caricare lo sketch per farlo compilare ma ricevo numerevoli errori.

Premetto che non ho mai usato arduino e sto iniziando proprio ora per la realizzazione di questo progetto.

Dovresti mettere il programma (... mi raccomando, racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone </> ... primo a sinistra) e gli errori che l'ambiente ti segnala.

Guglielmo

Per ora io ho lasciato tutto com’è senza inserire i miei parametri wifi

/**********************************************************************************
* ESP8266 REMOTE for GoPro by Robert Stefanowicz - euerdesign.de 28 Dec 2015 *
*********************************************************************************/

#include

/*********************************
* YOUR SETTINGS *
*********************************/

const char* ssid = "Go1337Pro"; //Your Wifi name (SSID)
const char* password = "PASSWORD"; //Your WiFi password
/*********************************
* DO NOT CHANGE BELOW THIS LINE *
*********************************/
const char* host = "10.5.5.9";
int delshort = 50;
int dellong = 500;
const int buttonPin = 0;
int value;
int buttonstate;
int buttonstates;
int camstates;
int checked;
const int buttonPins = 2;
int values;
int valuess;
void setup() {
Serial.begin(115200);
delay(100);
pinMode(buttonPin, INPUT);
pinMode(buttonPins, INPUT);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
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(delshort);
values = digitalRead(buttonPins);

if (buttonstates != values)
{
buttonstates = values;
if (values == 1)
{ checked = 0;
if (camstates == 1){camstates = 0; checked = 1;}
if (camstates == 0){
if (checked == 0) {camstates = 1;}
}
Serial.println("Aenderung");
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 = "/gp/gpControl/command/shutter?p=";
url += camstates;
Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(10);
Serial.println();
Serial.println("closing connection");

}
delay(dellong);
valuess = digitalRead(buttonPins);
if (valuess == 1)
{
camstates = 0;
while(valuess == 1){
delay(delshort);
Serial.println("WHILE-LOOP");
Serial.println(valuess);
valuess = digitalRead(buttonPins);

}

Serial.println("BUTTON STATE CHANGE ");
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 = "/gp/gpControl/command/shutter?p=0";
Serial.print("Requesting URL: ");
Serial.println(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
delay(10);
Serial.println();
Serial.println("closing connection");
}

}

}

Gli errori riscontrati:Arduino:1.7.8 (Windows 7), Scheda:“Arduino Uno”

telecomando.ino:6:9: error: #include expects "FILENAME" or <FILENAME>

telecomando.ino: In function 'void setup()':

telecomando.ino:29:6: error: redefinition of 'void setup()'

sketch_jan30a.ino:1:6: error: 'void setup()' previously defined here

telecomando.ino:38:1: error: 'WiFi' was not declared in this scope

telecomando.ino:39:25: error: 'WL_CONNECTED' was not declared in this scope

telecomando.ino: In function 'void loop()':

telecomando.ino:48:6: error: redefinition of 'void loop()'

sketch_jan30a.ino:6:6: error: 'void loop()' previously defined here

telecomando.ino:64:1: error: 'WiFiClient' was not declared in this scope

telecomando.ino:64:12: error: expected ';' before 'client'

telecomando.ino:66:6: error: 'client' was not declared in this scope

telecomando.ino:74:1: error: 'client' was not declared in this scope

telecomando.ino:98:1: error: 'WiFiClient' was not declared in this scope

telecomando.ino:98:12: error: expected ';' before 'client'

telecomando.ino:100:6: error: 'client' was not declared in this scope

telecomando.ino:107:1: error: 'client' was not declared in this scope

Errore durante la compilazione

Questo report potrebbe essere più ricco
di informazioni con
"Mostra un output dettagliato durante la compilazione"
abilitato in "File > Impostazioni"

Scusa non hai letto la mia raccomandazione ? ? ? :o :o :o

Allora, in conformità al regolamento, punto 7, edita (in basso a destra del post, bottone More → Modify) il tuo post e racchiudi il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Guglielmo

… e comunque, SE veramente quello è il codice … butta tutto e cambia sito, perché è pieno di errori e di incompletezze.

Guglielmo

Sistemato il post e mi scuso.

Però perché non va se fanno un tutorial per tale progetto?

Purtroppo internet è pieno di schifezze e cose che non vanno, anzi ... almeno un 80% è proprio porcheria ...

Alcuni errori grossolani ...
... riga 5: c'è un #include che ... non include nulla
... righe 11 e 12 const char* quando dovrebbe essere solo char*
... riga 108: c'è un return ... dentro il loop() ? ? ?

... dai retta, cerca qualche cosa di più affidabile :wink:

Guglielmo

Potresti indicarmi qualcosa per il tipo di progetto che vorrei realizzare?

Cercando in rete ho trovato questo :

/*
 *  This sketch sends data via HTTP GET requests to data.sparkfun.com service.
 *
 *  You need to get streamId and privateKey at data.sparkfun.com and paste them
 *  below. Or just customize this script to talk to other HTTP servers.
 *
 */

#include <ESP8266WiFi.h>

const int buttonPin1 = 4;
const int buttonPin2 = 5;
int buttonState1 = 0; 
int buttonState2 = 0; 

const char* ssid     = "SSID";
const char* password = "WIFI-PASSWORD";

const char* host = "10.5.5.9";


void setup() {
    digitalWrite(BUILTIN_LED, HIGH);
  Serial.begin(9600);
  delay(10);

  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(BUILTIN_LED, OUTPUT);
  
  // We start by connecting to a WiFi network

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  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());

triggerModusVideo();
  digitalWrite(BUILTIN_LED, LOW);
}

int value = 0;
int sw_funct = 1;
int sw_trigger = 0;


void loop() {

  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);

// FUNKTIONEN umschalten zw foto und video

  if (buttonState2 == 1){

switch (sw_funct){
  case 1:
       triggerModusPhoto();
       sw_funct = 2;
       delay(300);
  break;
  case 2:
       triggerModusVideo();
       sw_funct = 1;
       delay(300); 
  break;
}
}

  if (buttonState1 == 1){

switch (sw_funct){
  case 1:

  switch (sw_trigger){
    case 0:
    triggerStart();
    sw_trigger = 1;
    break;
    case 1:
    triggerStop();
    sw_trigger = 0;
    break;
    }

delay(300); 
  break;
  case 2:
triggerStart();
delay(300); 
  break;
}
}

  }

void triggerStart(){


  ++value;
  Serial.print("connecting to ");
  Serial.println(host);
  
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
   return;
  }
  
  // We now create a URI for the request
  String url = "/gp/gpControl/command/shutter?p=1";
  //String url = "/gp/gpControl/status"; 
  Serial.print("Requesting URL: ");
  Serial.println(url);
  
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(10);
  
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  
  Serial.println();
  Serial.println("closing connection");
  //return(1);
  //delay(5000);
}

void triggerStop(){


  ++value;
  Serial.print("connecting to ");
  Serial.println(host);
  
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
   return;
  }
  
  // We now create a URI for the request
  String url = "/gp/gpControl/command/shutter?p=0";
  //String url = "/gp/gpControl/status"; 
  Serial.print("Requesting URL: ");
  Serial.println(url);
  
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(10);
  
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  
  Serial.println();
  Serial.println("closing connection");
  //return(1);
  //delay(5000);
}

void triggerModusVideo(){


  ++value;
  Serial.print("connecting to ");
  Serial.println(host);
  
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
   return;
  }
  
  // We now create a URI for the request
  String url = "/gp/gpControl/command/xmode?p=0";
  //String url = "/gp/gpControl/status"; 
  Serial.print("Requesting URL: ");
  Serial.println(url);
  
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(10);
  
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  
  Serial.println();
  Serial.println("SWITCH to VIDEO");
  //return(1);
  //delay(5000);

}

void triggerModusPhoto(){


  ++value;
  Serial.print("connecting to ");
  Serial.println(host);
  
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
   return;
  }
  
  // We now create a URI for the request
  String url = "/gp/gpControl/command/xmode?p=1";
  //String url = "/gp/gpControl/status"; 
  Serial.print("Requesting URL: ");
  Serial.println(url);
  
  // This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" + 
               "Connection: close\r\n\r\n");
  delay(10);
  
  // Read all the lines of the reply from server and print them to Serial
  while(client.available()){
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }
  
  Serial.println();
  Serial.println("SWITCH to PHOTO");
  //return(1);
  //delay(5000);

}

che restituisce : gopro_remote.ino:9:25: fatal error: ESP8266WiFi.h: No such file or directory

Premetto che ho inserito nella cartella tale file.

Devi mettere nella cartella "library", che si trova all'interno della cartella di "sketchbook", la cartella della libreria, NON il singolo file .h

Hai scaricato la libreria ESP8266WiFi ? Se SI, da dove l'hai scaricata (metti il link) ?

Guglielmo

Preso qua GitHub - esp8266/Arduino: ESP8266 core for Arduino

Ma prima di scaricare le cose … leggete quello che c’è scritto ? ? ? :o :o :o

This project brings support for ESP8266 chip to the Arduino environment. It lets you write sketches using familiar Arduino functions and libraries, and run them directly on ESP8266, no external microcontroller required.

ESP8266 Arduino core comes with libraries to communicate over WiFi using TCP and UDP, set up HTTP, mDNS, SSDP, and DNS servers, do OTA updates, use a file system in flash memory, work with SD cards, servos, SPI and I2C peripherals.

Quello che hai scaricato è un “core” per ESP8266 per poterlo programmare (lui, non Arduino) in modo da poter svolgere alcuni compiti autonomamente senza bisogno di Arduino.

A te invece serve una LIBRERIA per Arduino per USARE il modulo ESP8266 … tipo QUESTA !!!

Guglielmo

E qui mi rifaccio sul titolo del post, sono all’inizio. Comunque grazie dei tuoi consigli.
Sostituito la libreria adesso ho :

In file included from C:\Users\Administrator\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFi.h:33:0,
                 from telecomando.ino:5:
C:\Users\Administrator\Documents\Arduino\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:26:19: fatal error: queue.h: No such file or directory
 #include <queue.h>
                   ^
compilation terminated.
Errore durante la compilazione

Ma quale libreria hai scaricato ? Da dove ? Metti il solito link ...

Guglielmo

P.S.: Perdona, ma dato che ti definisci "Niubbo" ... non era meglio che prima facevi pratica ed imparavi con programmi più semplici?

Ho seguito il tuo link per la libreria.

Impossibile ... o hai ancora la vecchia da qualche parte ...
... guarda i nomi dei files nella mia (iniziano tutti con SparkFunESP8266xxxxx ... essendo fatta per una LORO scheda) e guarda i nomi che compaiono nei tuoi errori ...

Esempio: Nella libreria linkata un file si chiama "SparkFunESP8266WiFi.h" nel tuo messaggio di errore si chiama "ESP8266WiFi.h" ...

Controlla perché devi aver mischiato le cose ... ::slight_smile:

Guglielmo

P.S.: Inoltre io ti ho detto "una libreria tipo QUESTA" ... ovvero una libreria per gestire da Arduino il ESP8266, ma devi trovare quella adatta al tuo progetto ... quella linkata è adatta alla scheda SparkFun

Effettivamente a via di provare ho mischiato un po i file.
Ricomincio tutto daccapo: devo programmare un modulo wifi ESP8266 attraverso un convertitore USB to TTL seguendo lo schema del post iniziale. Ho scaricato le librerie (e messe nella corretta cartella) contenute nel tutorial, riprovato a fare la verifica dopo aver settato nel software Arduino 1.6.7 (prima avevo installato la versione prelevata da arduiono.org che mi dava ulteriori errori) il modulo da programmare.
Il risultato è questo :

Arduino:1.6.7 (Windows 7), Scheda:"Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck"

C:\Users\Administrator\Documents\Arduino\libraries\ESP8266WiFi\src\ESP8266WiFiAP.cpp: In member function 'bool ESP8266WiFiAPClass::softAPConfig(IPAddress, IPAddress, IPAddress)':

C:\Users\Administrator\Documents\Arduino\libraries\ESP8266WiFi\src\ESP8266WiFiAP.cpp:218:45: error: 'wifi_softap_set_dhcps_lease_time' was not declared in this scope

     if(!wifi_softap_set_dhcps_lease_time(720)) {

                                             ^

Più di una libreria trovata per "ESP8266WiFi.h"
Usata: C:\Users\Administrator\Documents\Arduino\libraries\ESP8266WiFi
Non usata: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.0.0\libraries\ESP8266WiFi
exit status 1
Errore durante la compilazione

  Questo report potrebbe essere più ricco di informazioni con
  "Mostra un output dettagliato durante la compilazione"
  abilitato in "File > Impostazioni"

Allora quindi NON devi usare un modulo ESP con Arduino, ma vuoi usare il modulo ESP come unità standalone ... ::slight_smile:

Mmm ... sei sicuro che quel wifi_softap_set_dhcps_lease_time() sia utilizzabile come una funzione? Non è un metodo della classe **ESP8266WiFiAPClass **? Perché, se SI, la sintassi corretta è istanza_classe.metodo() ... quindi verifica che vada usato così come riporta errore il compilatore o se deve essere preceduta dall'istanza della classe.

Guglielmo

Risolto, grazie.