{{:documentacion-proceso:tecnologicos:huerta.jpg?400 |}}{{:documentacion-proceso:tecnologicos:control_riego.jpg?400 |}} https://github.com/esp8266/Arduino#arduino-core-for-esp8266-wifi-chip core for arduino sp8266 ====== Circuito con RTC para Arduino ====== Antes de empezar: ** Comunicación I2C y SPI ** ** I2C ** I2C (Inter-integrated Circuit) es un bus de comunicaciones serie síncrona muy utilizado en la industria para la comunicación entre controladores y sus periféricos en sistemas integrados. ** Consideraciones ** * Necesitan resistencias pull-up, ya que los dispositivos sólo pueden forzar al bus a ponerse a '0'. * la línea de tierra debe ser común a todos los dispositivos (estar unida). * Es bidireccinal half-Duplex y sigue el modelo maestro-esclavo. {{:documentacion-proceso:tecnologicos:captura_de_pantalla_2016-01-19_a_las_11.41.17.png?600|}} Solo utiliza dos líneas para transmitir datos (SDA) y la señal de reloj (SCL) //Los dispositivos de un bus I2C tienen una dirección única para cada uno, y que pueden clasificarse como maestros o como esclavos.// - El ** maestro es el que inicia la transferencia de datos y genera la señal de reloj ** - El ** esclavo **espera a que un maestro se comunique con el para generar la transferencia. ** SPI ** SPI(Serial Peripherial Interface) es un bus de comunicaciones serie síncrona usado para la transferencia serie síncrona usado para la transferencia de información entre circuitos integrados en equipos electrónicos. ** Consideraciones ** - Utiliza 3 líneas para transmitir (SDO), recibir (SDI) y para generar la señal de reloj (SCK). - la señal de reloj la genera uno de los dispositivos (el que actúa de maestro). - la linea de tierra debe ser común a todos los dispositivos (estar unida) - Permite comunicación Full-Duplex y utiliza el modelo maestro-esclavo. - Los dispositivos no tienen direcciones -> se utiliza una línea de control (CS -> Chip Select) para cada circuito integrado que tenga que ser controlado. - La transferencia no se inicia con todos sino con un dispositivo concreto activando (por nivel bajo) su correspondiente línea SS. {{:documentacion-proceso:tecnologicos:captura_de_pantalla_2016-01-19_a_las_11.59.48.png?300|}} ===== Esquema básico del circuito. ===== {{:documentacion-proceso:tecnologicos:ds1307-real-time-clock-rtc-circuit.png?600|}} RTC o Reloj en Tiempo Real – Es un circuito electrónico especializado cuya función es mantener la hora y fecha actual en un sistema informático (ya sea con microcontrolador u otro tipo de CPU). Se caracteríza por tener un bajo consumo de energía y también normalmente su propia fuente de alimentación auxiliar. Normalmente al recurrir a este tipo de circuitos integrados obtenemos una mejor precisión del tiempo. Un ejemplo de dispositivos que incluyen relojes en tiempo real son las computadoras personales (PC). ===== Circuito ===== {{:documentacion-proceso:tecnologicos:foto_el_14-1-16_a_las_17.48.jpg?600|}} ===== Codigo actualizado ===== #include "RTClib.h" #include RTC_DS1307 RTC; void setup() { Serial.begin(57600); Wire.begin(); RTC.begin(); pinMode(13, OUTPUT); if(!RTC.isrunning()) { // Serial.println("RTC is not runnig"); RTC.adjust(DateTime(__DATE__, __TIME__)); } } void loop() { DateTime now = RTC.now(); /* Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); */ if (now.hour() == 19) { if(now.minute() == 30) { digitalWrite(13, HIGH); } if(now.minute() == 35) { digitalWrite(13, LOW); delay(1000); } } delay(1000); }