SENSORES

ESP2866 Distance

Here we have a demo of the distance that will reach the standard module.

The AP wifi is a APPLE TIME CAPSULE, and the distance is near to 40 mtrs.

IMG_3913

 

The green light describe how we have a correct connection link and the ping delay is into 5 and 50ms.

Greetings.

WIFI to Serial module ESP2866

This is a new module, that will help us to communicate with our ARDUINOS or PINGUINOS modules.

Is like a modem, by all the people that use some time ago the well know US-ROBOTIC, know the AT commands, and the easy way to use it.

The module showed is a BASIC model, but the distance that reach is perfect for domotic or smart home.

Unknown-9

 

The PINOUT

esp8266_schematic

The power supply never will be UP of 3,62Volts

After of some days testing I will say that is recommended that you install a resistor from VCC to CH_PD, to make UP this pin. With an 1k resistor will be perfect.

 

 

The next example code only make a GET of a WEBPAGE, if we run a TCPDUMP in the middle of the NETWORKS we will capture the request.

This code will be compatible with any project ARDUINO or PINGUINO

#define SSID “Walii” //your wifi ssid here
#define PASS “ffffffffff” //your wifi wep key here

#define DST_IP “164.138.31.203” //baidu.com
#define HOST “pinguino.walii.es”

char myChar;

void setup()
{
pinMode(9, OUTPUT);
pinMode(13, OUTPUT);

//blink led13 to indicate power up
for(int i = 0; i<15; i++)
{
digitalWrite(13,HIGH);
delay(50);
digitalWrite(13,LOW);
delay(50);
}

// Open serial communications for WiFi module:
Serial.begin(115200);
// Set time to wait for response strings to be found
Serial.setTimeout(5000);
delay(100);

//test if the module is ready
Serial.println(“AT+RST”);
if(Serial.find(“ready”))
{
delay(1000);
//connect to the wifi
boolean connected=false;
for(int i=0;i<5;i++)
{
if(connectWiFi())
{
connected = true;
break;
}
}
if (!connected)
{
//die
while(1);
}

delay(5000);
//set the single connection mode
Serial.println(“AT+CIPMUX=0”);
}
else
{
delay(100);
}
}

void loop()
{
String cmd = “AT+CIPSTART=\”TCP\”,\””;
cmd += DST_IP;
cmd += “\”,80″;
Serial.println(cmd);
if(Serial.find(“Error”)) return;
cmd = “GET /status HTTP/1.0\r\nHost: “;
cmd += HOST;
cmd += “\r\n\r\n”;

Serial.print(“AT+CIPSEND=”);
Serial.println(cmd.length());
if(Serial.find(“>”))
{
}
else
{
Serial.println(“AT+CIPCLOSE”);
delay(1000);
return;
}

Serial.print(cmd);

delay(500);
//Serial.find(“+IPD”);
while (Serial.available())
{
char c = Serial.read();
delay(50);
}

delay(1000);
}

boolean connectWiFi()
{
Serial.println(“AT+CWMODE=1″);
String cmd=”AT+CWJAP=\””;
cmd+=SSID;
cmd+=”\”,\””;
cmd+=PASS;
cmd+=”\””;
Serial.println(cmd);
delay(2000);
if(Serial.find(“OK”))
{
return true;
}
else
{
return false;
}
}

 

 

TCPDUMP capture.

22:25:46.492679 IP 10.10.10.127.60604 > 164.138.31.203.80: Flags [.], ack 5761, win 638, options [nop,nop,TS val 108106608 ecr 2454109009], length 0
22:25:46.493147 IP 164.138.31.203.80 > 10.10.10.127.60604: Flags [.], seq 5761:7201, ack 73, win 905, options [nop,nop,TS val 2454109009 ecr 108106599], length 1440

 

 

 

 

Specifications and Features

  • Default Baud Rate: 115200
  • 802.11 b / g / n
  • Wi-Fi Direct (P2P), soft-AP
  • Built-in TCP / IP protocol stack
  • Built-in TR switch, balun, LNA, power amplifier and matching network
  • Built-in PLL, voltage regulator and power management components
  • 802.11b mode + 19.5dBm output power
  • Built-in temperature sensor
  • Supports antenna diversity
  • “Off” leakage current is less than 10uA
  • Built-in low-power 32-bit CPU: can double as an application processor
  • SDIO 2.0, SPI, UART
  • STBC, 1×1 MIMO, 2×1 MIMO
  • A-MPDU, A-MSDU aggregation and the 0.4 Within wake
  • 2ms, connect and transfer data packets
  • Standby power consumption of less than 1.0mW (DTIM3)

Update de pruebas realizadas con el INTERVALOMETRO pinguino.

Aqui algunas capturas mas con relación al funcionamiento del intervalometro.

Hace un par de noches hemos gozado de unas muy bonitas tormentas eléctricas, y he intentado capturar algunas fotos con el invento hecho algunos post detras.
POST INTERVALOMETRO PINGUINO

Capturas:

 

 

Sensor de Apertura de Frigorifico & Open Refrigerator Sensor

Hoy les traigo el ultimo artilugio que se me ha ocurrido, ya que ayer mi mujer ha retado a mi niña por dejar la puerta abierta de la nevera, y se me paso por la cabeza “porque nadie ha hecho algo tan practico como un avisador de puerta abierta?” quizas ya lo hay pero la version de frigo que tengo doy gracias que aun enfria… 🙂

Y basicamente el cacharro es esto:

un sensor de luz que detecta y promedia el primer valor que coje, y lo guarda como referencia, entonces cuando abrimos la puerta detecta que la incidencia de luz es mayor y comienza el juego, dejando un tiempo prudencial de espera (en este caso 10 segundos me pareció correcto) si la puerta no se ha cerrado dispara una alarma sonora  hasta que dicha puerta no es cerrada, comenzando nuevamente el ciclo.

algo basico pero que no tengo entendido que existiese.

aqui os dejo unas fotos, videos y el código, no he pensado poner el circuito ya que tiene muy poco, creado a partir del 18f2550, y con un buzz conectado al sensor 12 y un LDR en el 13… no tiene mas que eso.

 

 

El codigo:

[sourcecode language=”py”]
// Alarma de Nevera
// Walter López Pascual (Walii & Walterleonardo) 2011 walii.es

int led1,LDR,MLDR,valor,ovalor; // Values like integers ( Pin )
int mldr[]; // Array for measures
int debug=0; // Only with debug "1" we´ll see printed values in serial
int wait=10000; // Time to wait before BUZZ in MS

promedioldr ()
{
int i;
MLDR=0;
for (i=0;i<9;i++){
mldr[i]=analogRead(LDR);
MLDR=MLDR+mldr[i];
}
MLDR=MLDR/10;
return MLDR;
}

void setup()
{
led1=11; // led 1 is connected on pin 1
LDR=13;
pinMode(led1,OUTPUT); // BUZZ & LED
ovalor=promedioldr(); // Capture initial value to measure
Serial.begin(9600);
}

void encenderledbuzz () //BUZZ & LED active action
{
digitalWrite(led1,HIGH);
delay(250);
digitalWrite(led1,LOW);
delay(250);
}

void esperar () //wait time before BUZZ
{
if (debug==1){
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…\r\n");
delay(wait/10);
Serial.printf("Wait…BUZZ\r\n");
}
else delay(wait);
}

void loop()
{
valor=promedioldr();
if (valor>=ovalor+100){
esperar();
while (analogRead(LDR)>=ovalor+100){
encenderledbuzz();
if (debug==1) Serial.printf("Analog Value = %d \r\n", analogRead(LDR));
}
}
if (debug==1) Serial.printf("Actual LDR value= %d / Previous LDR value= %u\r\n", valor, ovalor);
digitalWrite(led1,LOW);
}
[/sourcecode]

PINGUINO BLUETOOTH

Bueno hoy al fin pude terminar el proyecto bluetooth, lo tengo parado hace un par de semanas porque estoy en medio de un curso de Manager de Proyectos y otro de Ingles… pero al fin, he podido…

Basicamente estaba intentando dejar de lado XBEE para la comunicación in-alambrica, ya que esos módulos son un poco caros…entre 40 y 60 euros… ahora con los módulos bluetooth que se pueden conseguir por 20euros… puedo hacer todas los proyectos que quiera, además de no necesitar un receptor especial, ya que con cualquier ordenador o PDA con bluetooth, puedo comunicarme tranquilamente.

Aquí un video del funcionamiento.

La idea principal es modificar el Paddle Sensor con uno de estos modulos así consume memos, entre unos 50 a 100mA, a maxima potencia. Adicionalmente otra de las ventajas es la comunicación RS232 UART bi direccional, la cual puede llegar a casi un Mega de transferencia. Aunque la distancia se reduce a 20 metros sin obstáculos y 5 con obstáculos.

Lo primero es el esquema de este adaptador bluetooth.

Con un simple LM 317 y un preset de 5K en su Adj puedes tener un regulador de 3.3Volts 1 Amp…

Básicamente conectamos directamente el módulo BLUETOOTH en nuestra placa PINGUINO… sin nada de intermediario y se entenderán perfectamente, ya que la placa PINGUINO posee unas resistencias de acople que ayudan al dialogo correcto.

El codigo es simple. Escribo como si fuese un puerto serie normalito… y espero respuestas… en este caso, mido la temperatura y la luminosidad mediante entradas analógicas, y como punto adicional, controlo un LED colocado en el puerto 0. Todo esto con retroalimentación a la consola serie.

[sourcecode language=”py”]
// Bluetooth comunication v 1
// Walter López (walterleonardo & walii) 2011 pinguino.walii.es

char *string = "Hola mundo bluetooth!!! estoy vivo… soy pinguino";
#define LM35 18
#define LDR 17
#define LED 0

int i=0;

temp(){
int aux=0,buffer[10];
for (i=0;i<9;i++){
buffer[i]=analogRead(LM35);
aux = aux + buffer[i];
}
aux = (aux / 10);
aux = aux/2;
return aux;
}

light(){
int aux=0,buffer[10];
for (i=0;i<9;i++){
buffer[i]=analogRead(LDR);
aux = aux + buffer[i];
}
aux = (aux / 10);
aux = (aux-23)/10;
aux = 100-aux;
return aux;
}

void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
digitalWrite(LED,LOW);
Serial.printf("\r\n");
Serial.printf("****************************************\r\n");
Serial.printf("*** PRUEBA de comunicacion BLUETOOTH ***\r\n");
Serial.printf("****************************************\r\n");
Serial.printf("\r\n");
}
void loop()
{
u8 c;
Serial.printf("****** %s\r\n", string);
Serial.printf("\r\n");
Serial.printf("\r\n");
Serial.printf("Press t key to receive the temperature …\r\n");
Serial.printf("Press l key to receive the Light level …\r\n");
Serial.printf("Press x key to change the LED status …\r\n");
c = Serial.getkey();
Serial.printf("=========================================\r\n");
if (c == 116) Serial.printf("Temperature = %u degrees Celsius\n\r" , temp());
if (c == 108) Serial.printf("Light = %u Percentage\n\r" , light());
if (c == 120) digitalWrite(LED,(digitalRead(LED)^1)), Serial.printf("Changed LED Status \n\r");
Serial.printf("=========================================\r\n");
Serial.printf("\r\n");

}

[/sourcecode]

Facebook Like Add
Google PLUS ONE
De donde me visitan
Publicidad
Calendario de Posts
July 2018
M T W T F S S
« Nov    
 1
2345678
9101112131415
16171819202122
23242526272829
3031