Go Down

Topic: nuevo con dudas (Read 656 times) previous topic - next topic

SurtiBoy

BUENAS A TODOS:

HE EMPEZADO CON ESTO DE ARDUINO HACE MUY POCO TIEMPO, Y POCO A POCO VOY HACIENDO ALGUNA COSILLA. MI IDEA ES HACER UN TERMOSTATO WIFI PARA PODER ACTIVAR/DESACTIVAR LA CALEFACCION DE CASA ANTES DE LLEGAR.

HE COMPRADO UNA PLACA-SHIELD WIFI EN DX.COM http://www.dx.com/es/p/cc3000-wi-fi-shield-module-w-micro-sd-card-slot-for-arduino-mega2560-r3-deep-blue-328572#.VAEgUGPivfk

LA HE PINCHADO EN EL ARDUINO Y HE CARGADO LOS SKETCH DE EJEMPLO "SCANNETWORKS" Y "CONNECTWITHWPA", Y ACTIVANDO EL MONITOR SERIAL; CON EL PRIMERO NO ME ENCUENTRA NINGUNA RED, CUANDO EL ROUTER WIFI ESTA A MENOS DE UN METRO; Y CON EL SEGUNDO, ME DICE QUE LA PLACA WIFI SHIELD NO LA ENCUENTRA.

TENGO QUE AÑADIRLE ALGO A LA PLACA? O HAY QUE CONECTARLA DE ALGUNA MANERA ESPECIAL.

SALUDOS A TODOS

Naruto128


surbyte

Como dice Naruto, el código y una foto de como las uniste?

SurtiBoy

ESTOS SON LOS CODIGOS

SON LOS QUE VIENEN DE EJEMPLO EN EL SOFTWARE DE ARDUINO

SCANNETWORKS

/*

This example  prints the Wifi shield's MAC address, and
scans for available Wifi networks using the Wifi shield.
Every ten seconds, it scans again. It doesn't actually
connect to any network, so no encryption scheme is specified.

Circuit:
* WiFi shield attached

created 13 July 2010
by dlf (Metodo2 srl)
modified 21 Junn 2012
by Tom Igoe and Jaymes Dec
*/


#include <SPI.h>
#include <WiFi.h>

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while(true);
  }

  // Print WiFi MAC address:
  printMacAddress();

  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void loop() {
  delay(10000);
  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void printMacAddress() {
  // the MAC address of your Wifi shield
  byte mac[6];                     

  // print your MAC address:
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  Serial.print(mac[5],HEX);
  Serial.print(":");
  Serial.print(mac[4],HEX);
  Serial.print(":");
  Serial.print(mac[3],HEX);
  Serial.print(":");
  Serial.print(mac[2],HEX);
  Serial.print(":");
  Serial.print(mac[1],HEX);
  Serial.print(":");
  Serial.println(mac[0],HEX);
}

void listNetworks() {
  // scan for nearby networks:
  Serial.println("** Scan Networks **");
  int numSsid = WiFi.scanNetworks();
  if (numSsid == -1)
  {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }

  // print the list of networks seen:
  Serial.print("number of available networks:");
  Serial.println(numSsid);

  // print the network number and name for each network found:
  for (int thisNet = 0; thisNet<numSsid; thisNet++) {
    Serial.print(thisNet);
    Serial.print(") ");
    Serial.print(WiFi.SSID(thisNet));
    Serial.print("\tSignal: ");
    Serial.print(WiFi.RSSI(thisNet));
    Serial.print(" dBm");
    Serial.print("\tEncryption: ");
    printEncryptionType(WiFi.encryptionType(thisNet));
  }
}

void printEncryptionType(int thisType) {
  // read the encryption type and print out the name:
  switch (thisType) {
  case ENC_TYPE_WEP:
    Serial.println("WEP");
    break;
  case ENC_TYPE_TKIP:
    Serial.println("WPA");
    break;
  case ENC_TYPE_CCMP:
    Serial.println("WPA2");
    break;
  case ENC_TYPE_NONE:
    Serial.println("None");
    break;
  case ENC_TYPE_AUTO:
    Serial.println("Auto");
    break;
  }
}


CONNECT WITH WPA

/*

This example connects to an unencrypted Wifi network.
Then it prints the  MAC address of the Wifi shield,
the IP address obtained, and other network details.

Circuit:
* WiFi shield attached

created 13 July 2010
by dlf (Metodo2 srl)
modified 31 May 2012
by Tom Igoe
*/
#include <WiFi.h>

char ssid[] = "yourNetwork";     //  your network SSID (name)
char pass[] = "secretPassword";  // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
 
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while(true);
  }
 
// attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network:   
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }
   
  // you're connected now, so print out the data:
  Serial.print("You're connected to the network");
  printCurrentNet();
  printWifiData();

}

void loop() {
  // check the network connection once every 10 seconds:
  delay(10000);
  printCurrentNet();
}

void printWifiData() {
  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
    Serial.print("IP Address: ");
  Serial.println(ip);
  Serial.println(ip);
 
  // print your MAC address:
  byte mac[6]; 
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");
  Serial.print(mac[5],HEX);
  Serial.print(":");
  Serial.print(mac[4],HEX);
  Serial.print(":");
  Serial.print(mac[3],HEX);
  Serial.print(":");
  Serial.print(mac[2],HEX);
  Serial.print(":");
  Serial.print(mac[1],HEX);
  Serial.print(":");
  Serial.println(mac[0],HEX);

}

void printCurrentNet() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print the MAC address of the router you're attached to:
  byte bssid[6];
  WiFi.BSSID(bssid);   
  Serial.print("BSSID: ");
  Serial.print(bssid[5],HEX);
  Serial.print(":");
  Serial.print(bssid[4],HEX);
  Serial.print(":");
  Serial.print(bssid[3],HEX);
  Serial.print(":");
  Serial.print(bssid[2],HEX);
  Serial.print(":");
  Serial.print(bssid[1],HEX);
  Serial.print(":");
  Serial.println(bssid[0],HEX);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(rssi);

  // print the encryption type:
  byte encryption = WiFi.encryptionType();
  Serial.print("Encryption Type:");
  Serial.println(encryption,HEX);
  Serial.println();
}

ESTAS SON LAS FOTOS



Naruto128

Lo primero q veo esto funciona como un  router , es decir los dispositivos se conectan a el.
no puedes conectar un router a otro ruoter como dices.

segundo esto usa un protocolo de cominicacion SPI, basicamente permite conectar una infinidad de
dispocitivos con los mismos pines, solo cambiando el pin Cs.
como ves esto tiene dos dispositivos el wifi y la sdCard,
tambien en la foto se ve los pines CS-wiifi>>pin 10 y , para la sdcard pin cs 4.
para mas info sobre SPI >> http://arduino.cc/en/Reference/SPI<<

el code que pusiste no dice nada de estos pines que te dije,
estaria bueno que pongas la libreria completa.




proba esto; SI NO TE FUNCIONA POBA EN PONER EL HIGH
  digitalWrite(10,HIGH);

Code: [Select]

#include <SPI.h>
#include <WiFi.h>

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
 
    pinMode(10, OUTPUT);
    digitalWrite(10,LOW);

 
 
 

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while(true);
  }

  // Print WiFi MAC address:
  printMacAddress();

  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void loop() {
  delay(10000);
  // scan for existing networks:
  Serial.println("Scanning available networks...");
  listNetworks();
}

void printMacAddress() {
  // the MAC address of your Wifi shield
  byte mac[6];                     

  // print your MAC address:
  WiFi.macAddress(mac);
  Serial.print("MAC: ");
  Serial.print(mac[5],HEX);
  Serial.print(":");
  Serial.print(mac[4],HEX);
  Serial.print(":");
  Serial.print(mac[3],HEX);
  Serial.print(":");
  Serial.print(mac[2],HEX);
  Serial.print(":");
  Serial.print(mac[1],HEX);
  Serial.print(":");
  Serial.println(mac[0],HEX);
}

void listNetworks() {
  // scan for nearby networks:
  Serial.println("** Scan Networks **");
  int numSsid = WiFi.scanNetworks();
  if (numSsid == -1)
  {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }

  // print the list of networks seen:
  Serial.print("number of available networks:");
  Serial.println(numSsid);

  // print the network number and name for each network found:
  for (int thisNet = 0; thisNet<numSsid; thisNet++) {
    Serial.print(thisNet);
    Serial.print(") ");
    Serial.print(WiFi.SSID(thisNet));
    Serial.print("\tSignal: ");
    Serial.print(WiFi.RSSI(thisNet));
    Serial.print(" dBm");
    Serial.print("\tEncryption: ");
    printEncryptionType(WiFi.encryptionType(thisNet));
  }
}

void printEncryptionType(int thisType) {
  // read the encryption type and print out the name:
  switch (thisType) {
  case ENC_TYPE_WEP:
    Serial.println("WEP");
    break;
  case ENC_TYPE_TKIP:
    Serial.println("WPA");
    break;
  case ENC_TYPE_CCMP:
    Serial.println("WPA2");
    break;
  case ENC_TYPE_NONE:
    Serial.println("None");
    break;
  case ENC_TYPE_AUTO:
    Serial.println("Auto");
    break;
  }
}






SI NO TE FUNCIONA  DESCARGATE ESTA LIBRERIA.

https://www.sparkfun.com/products/12071

surbyte

Y otra cosa amigo, lee las normas, No se puede escribir todo un post en mayúsculas porque es como si estuvieras gritando.
Cuentános de como va tu progreso. Suerte con lo sugerido por Naruto

SurtiBoy

Perdonad por lo de las mayusculas, es la costumbre...

he probado con lo del pinmode y sigue dando el mismo mensaje, wifi shield no present.

he descargado la libreria que me has dicho y al intentar compilar alguno de los ejemplos me da errores, y tambien a la hora de importar las librerias, ya que me dice que tengo que cambiarles el nombre por el tema de los guiones bajos etc etc. no se si hay alguna otra manera de importarlas

mañana intentare hacer algo mas a ver que hace o deja de hacer

muchas gracias

surbyte

Bueno, lo que veo yo es que los ejemplos que presentas tienen otro fin.
Porque no copias los errores que te da el código de naruto, ese sería un buen punto de partida.

SurtiBoy

Al compilar el codigo de naruto; no me da ningun tipo de error, pero a la hora de ver el monitor serie; me dice que la "wifi shield is no connect".

he bajado las librerias que me dijo y al importarlas me da el error que se ve en la foto que he subido.

aparte, intento compilar algun programa de los de ejemplo para ver si realmente la wifi shield funciona bien y no hay forma son todo errores, cuando supongo que los ejemplos estaran comprobados.

cuando da el error al importar las librerias, me dice que tengo que cambiar los nombres para que no haya simbolos etc etc, cambio los nombres, y aun asi sigue sin funcionar. como puedo hacer para importar las librerias tal y como vienen????

hay otra imagen de los errores que me da al compilar uno de los ejemplos de las librerias SFE_CC3000; este es el codigo del ejemplo ScanTest.

/****************************************************************
ScanTest.ino
CC3000 WiFi AP Scan Test
Shawn Hymel @ SparkFun Electronics
January 5, 2014
https://github.com/sparkfun/SFE_CC3000_Library

Performs a scan of all SSIDs as seen by the CC3000 and prints the
access points' information to the Serial Monitor. No WiFi
connections are made.

Hardware Connections:

Uno Pin    CC3000 Board    Function

+5V        VCC or +5V      5V
GND        GND             GND
2          INT             Interrupt
7          EN              WiFi Enable
10         CS              SPI Chip Select
11         MOSI            SPI MOSI
12         MISO            SPI MISO
13         SCK             SPI Clock

Resources:
Include SPI.h and SFE_CC3000.h

Development environment specifics:
Written in Arduino 1.0.5
Tested with Arduino UNO R3

This code is beerware; if you see me (or any other SparkFun
employee) at the local, and you've found our code helpful, please
buy us a round!

Distributed as-is; no warranty is given.
****************************************************************/

#include <SPI.h>
#include <SFE_CC3000.h>

// Pins
#define CC3000_INT      2   // Needs to be an interrupt pin (D2/D3)
#define CC3000_EN       7   // Can be any digital pin
#define CC3000_CS       10  // Preferred is pin 10 on Uno

// Global Variables
SFE_CC3000 wifi = SFE_CC3000(CC3000_INT, CC3000_EN, CC3000_CS);

void setup() {

  int i;
  AccessPointInfo ap_info;
 
  // Initialize Serial port
  Serial.begin(115200);
  Serial.println();
  Serial.println("---------------------------");
  Serial.println("SparkFun CC3000 - Scan Test");
  Serial.println("---------------------------");
 
  // Initialize CC3000 (configure SPI communications)
  if ( wifi.init() ) {
    Serial.println("CC3000 initialization complete");
  } else {
    Serial.println("Something went wrong during CC3000 init!");
  }
 
  // Perform scan of nearby WAPs
  Serial.println("Scanning APs. Waiting for scan to complete.");
  if ( wifi.scanAccessPoints(4000) != true ) {
    Serial.println("Error scanning APs");
  }
 
  // Iterate through available WAPs and print their information
  Serial.println("Access Points found:");
  Serial.println();
  while ( wifi.getNextAccessPoint(ap_info) ) {
    Serial.print("SSID: ");
    Serial.println(ap_info.ssid);
    Serial.print("MAC address: ");
    for ( i = 0; i < BSSID_LENGTH; i++ ) {
      if ( ap_info.bssid < 0x10 ) {
        Serial.print("0");
      }
      Serial.print(ap_info.bssid, HEX);
      if ( i < BSSID_LENGTH - 1 ) {
        Serial.print(":");
      }
    }
    Serial.println();
    Serial.print("RSSI: ");
    Serial.println(ap_info.rssi, DEC);
    Serial.print("Security: ");
    switch(ap_info.security_mode) {
      case WLAN_SEC_UNSEC:
        Serial.println("Unsecured");
        break;
      case WLAN_SEC_WEP:
        Serial.println("WEP");
        break;
      case WLAN_SEC_WPA:
        Serial.println("WPA");
        break;
      case WLAN_SEC_WPA2:
        Serial.println("WPA2");
        break;
      default:
        break;
    }
    Serial.println();
  }

  // Done!
  Serial.println("Finished scan test");
 
}

void loop() {
 
  // Do nothing
  delay(1000);
 
}

surbyte

Esto #include <SFE_CC3000.h>
exige que en ...\arduino\libraries exista una librería con el nombre
SFE_CC3000 y no como tu tienes SFE_CC3000_Library-master

Edita el nombre de la carpeta ubicada en libraries para que diga solamente SFE_CC3000
Eso siempre siempre debe coincidir con lo que pones en el include , mayúsculas y minúsculas incluídas.

Corrige eso y vemos, pero si no desparecen todos los errores estaremos muy cerca.

SurtiBoy

Si Señor. Ya escanea las wifis jeje que bueno

muchas gracias

surbyte

Te habras dado cuenta que no es dificil, sino hay que ser cuidadoso y el mas minimo error por omisión genera grandes dolores de cabeza.
Para los que lean este post, es importante que verifiquen que una librería debe estar con su nombre, el mismo que luego usan en el include, mayúsculas y minúsculas incluidas y que cuando la observan en ....\arduino\libraries\Libreria no hay otra carpeta que diga
....\arduino\libraries\Libreria

luego al invocarla en el sketch deberán poner

#include <Libreria.h>  // correcta

#include <libreria.h>  // incorrecta

Go Up