Error en LCD + SIM900 + ARDUINO UNO

Hola compañeros, gracias por entrar a mi tema.

Quiero pedirles orientación.

Mi familia & yo tenemos dos viveros, y hace unos 5 meses di la idea a la familia de automatizarlos desde temperatura y humedad. Con un Arduino UNO, sensores de temperatura & humedad & un reley vinculado a una llave de paso de riego, lo hice.

Pero ahora mi padre me ha preguntado si es posible enviar esos datos por medio GPRS en un mensaje de texto, & ya lo he hecho. Por medio de la tarjeta SIM900 he vinculado los mensajes de texto a un móvil.

Pero iré al grano... Cuando emplazco o conecto la tarjeta SIM900 al arduino, & los sensores en los headers de ésta, la pantalla LCD que tiene vinculado el Arduino, no muestra la temperatura & humedad, quedan los vectores obscuros, negros. He investigado en distintos foros, mas no encuentro respuesta o explicación alguna... No sé si sea algún problema de voltaje, no lo sé, & es por eso que acudo con ustedes.

Saludos & gracias Coleguillas!

Espero puedan apoyarme al respecto.

Eso ocurre porque estas compartiendo pines que antes destinabas solamente al LCD y ahora estan siendo usados tambien por el SIM900.
Busca la especificación del SIM900 y verás que pines no debes usar.
No dices si es un LCD I2C o paralelo. Si es paralelo llevas todas las de perder. Con el I2C solo requieres A4 y A5 y en ese caso dudo que te diera problemas asi que debe ser paralelo.

Esta página dice que estos pines estansiendo usados por el SIM900 V1.0

Pins usage on Arduino
D0 - Unused if you select software serial port to communicate with GPRS Shield
** D1** - Unused if you select software serial port to communicate with GPRS Shield
** D7** - Used if you select software serial port to communicate with GPRS Shield
** D8** - Used if you select software serial port to communicate with GPRS Shield
** D9** - Used for software control the power up or down of the SIM900
Note: A4 and A5 are connected to the I2C pins on the SIM900. The SIM900 however cannot be accessed via the I2C .

D7 a D9 son tu preocupación incialmente

Hola, surbyte. Gracias por comentar...

He cambiado los pines de comunicación del SIM900 al Arduino, ahora son los digitales 1 y 0 (TX Y RX)

basándome en ésta página: http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield

Sin embargo sigue igual, la pantalla sigue dandome los vectores obscuros.

Mi pantalla LCD es 16x2, pero de una vez me he asegurado de cambiar los pines de comunicación de mi LCD a la placa Sim900 los cuales son: 5,6,10,11,12,13.

Seguiré probando a ver si puedo darle al asunto.

Vectores oscuros, que raro lo que dices.

Mi pregunta es.. el LCD se ilumina y muestra algo no muestra nada.
Si pones

lcd.print("Hola Mundo");

se lee?

Lo siento, a esto me refería con vectores o pixeles obscuros.

Anexo de momento la foto y mi; código por si hay alguna discrepancia en la cual me esté provocando este suceso

//Librerías principales
#include <LiquidCrystal.h>
#include <DallasTemperature.h>
#include <OneWire.h>
//Pin temperatura en PIN 6 
#define PIN_TEMPERATURA 2
float getMoisture = A2;
//Comunicado de instancias entre distintos dispositivos
OneWire wire(PIN_TEMPERATURA);
//Referencia con detalles del sensor
DallasTemperature sensor(&wire);
//Conectividad LCD a pines Arduino
                //7,8,9,10,11,12
LiquidCrystal lcd(5,6,10,11,12,13);

void setup()
{
  //Iniciando LCD 
  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  //Comunicacion en BD para SerialMonitor
  Serial.begin(9600);
  //Iniciando dispositivos
  sensor.begin();
}

void loop()
{
  //Reemplazo de sensor
  getMoisture = analogRead(A0);
  //Conversion escalar DIGITAL -> ANALOGA
  getMoisture = 5 - 5 * getMoisture /1023;

  Serial.println("La humedad es: ");
  Serial.print(getMoisture);
  float hume = getMoisture;
  
  //Configurando sensor de temperatura  
  sensor.requestTemperatures();

  Serial.println("La temperatura es: ");
  Serial.println(sensor.getTempCByIndex(0));
  float temp = sensor.getTempCByIndex(0);

  //Impresion de temperatura exacta en LCD (COLUMNAS, FILAS)
  lcd.setCursor(0,0);
  lcd.print("Temp: ");
  lcd.setCursor(6,0);
  lcd.print(temp);
  lcd.print("C");

  //Impresion la humedad del sensor en LCD (COLUMNAS, FILAS)

 lcd.setCursor(0,1);
 lcd.print("Hum:");
 lcd.setCursor(6,1);
 lcd.print(hume);
 lcd.print("%");
 
}

No importan las conexions quiero que verifiques esto

Board layout

#include <LCD.h>
#include <LiquidCrystal.h>

LiquidCrystal iLCD ( 12, 11, 5, 4, 3, 2 );

RS 12
EN 11
D4 5
D5 4
D6 3
D7 2

En tu caso
RS 5
EN 6
D4 10
D5 11
D6 12
D7 13

Verifica si estan asi?

Hola nuevamente surbyte, siento haber contestado, pero he tenido algo apretado los días.

Así es, los pines de la LCD a mi Arduino, son exactamente los que pusiste:

PIN LCD || LCDS || PIN ARDUINO/SIM900

*4 RS 5
*6 EN 6
*11 D4 10
*12 D5 11
*13 D6 12
*14 D7 13

:confused:

Tienes un mal contacto. De eso no hay duda!!
Trabajando en un protoboard solo debes probar continuidad pin por pin entre arduino y el LCD para asegurarte que esten bien. Sin tensión por supuesto!!

Hola surbyte. He revisado conexión por conexión cable por cable y todo esta bien, de hecho he estado trabajando todo este tiempo en una proto. Pero me he fijado apenas en algo curioso... cuando cargo el código que expuse anteriormente, la SIM900 se queda bloqueada, y me doy cuenta de esto porque el foco de "status" se queda como si estuviera falseado. Sin embargo si cargo uno que no incluya pines de LCD, la SIM900 funciona a la perfección. no sé si tenga algo que ver.

sucede algo similar con éste caso:
http://forum.arduino.cc/index.php?topic=362139.0

La única diferencia es que yo estoy cuidando mucho el no abarcar los pines de comunicación SIM900 -Arduino. (07/06/2016)

Hola surbyte y a cualquier compañero bienvenido. He solucionado el problema, la solución fue:

  • Alargar los cables puentes por medio de extensiones hembra hembra y macho macho, creo que era por la interferencia que generaba la antena emisora/receptora de señal.

Sin embargo, mi problema ha cambiado de rumbo, la tarjeta SIM900 sigue sin funcionar en modo conectividad a la hora de accionarlo, es como lo comentaba; cuando cargo SINTAXIS de LCD al Arduino, dejara de reaccionar la SIM900, & me he cerciorado que no ocupase los pines de Arduino - SIM900 con los sensores o LCD. Si alguien pudiese darme una pequeña pista si sabe sobre el tema, agradecería bastante.