Nefer Miranda / Mbed 2 deprecated BLUETOOTH_RTC_PID

Dependencies:   mbed TextLCD

Files at this revision

API Documentation at this revision

Comitter:
nmirandal
Date:
Fri Apr 19 20:45:47 2019 +0000
Parent:
1:8596494b7d9d
Commit message:
RTC and PID

Changed in this revision

ds3231.lib Show diff for this revision Revisions of this file
ds3231_RTC.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 8596494b7d9d -r ecd33165145b ds3231.lib
--- a/ds3231.lib	Fri Apr 05 19:38:58 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://os.mbed.com/users/nmirandal/code/ds3231/#5166909a461b
diff -r 8596494b7d9d -r ecd33165145b ds3231_RTC.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ds3231_RTC.lib	Fri Apr 19 20:45:47 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/nmirandal/code/ds3231/#5166909a461b
diff -r 8596494b7d9d -r ecd33165145b main.cpp
--- a/main.cpp	Fri Apr 05 19:38:58 2019 +0000
+++ b/main.cpp	Fri Apr 19 20:45:47 2019 +0000
@@ -1,18 +1,33 @@
+/***************
+
+
+ESTE PROGRAMA PUEDE SER USADO PARA CONFIGURAR UN RELOJ DE TIEMPO REAL DS3231 O 
+PARA COFIGURAR UN CONTROL PID PARA UN CIRCUITO RCRC CONECTADO EN EL PIN PTE30.
+EL PROGRAMA FUE DISEÑADO PARA APERAR CON UNA APLICACIÓN DE ANDROID CREADA EN
+APP INVENTOR QUE PUEDE CONECTARSE CON LA TARJETA FRDM-KL25Z A TRAVÉZ DE UN 
+MÓDULO DE BLUETOOTH CONECTADO EN EL PUERTO SERIAL UART2. CUANDO EL CELILAR SE 
+CONECTA PARA CONFIGURAR EL CONTROL PID, LA TARJETA ENVÍA LAS MEDIDAS DEL VOLTAJE
+DE SALIDA DEL CIRCUITO. TANTO EN EL MODO RTC COMO EN EL MODO PID, LOS DATOS
+SE MUESTRAN EN UNA PANTALLA LDC.
+
+NEFER MIRANDA LLORENTE
+PROGRAMA DE INGENIERÍA DE CONTROL
+UNIVERSIDAD NACIONAL DE COLOMBIA - SEDE MEDELLÍN
+
+
+***************/
+
+
+
+
 #include "mbed.h"
 #include <stdio.h>
-#include "ds3231.h"
+#include "ds3231_RTC.h"
 #include "TextLCD.h"
 
 Serial master(USBTX,USBRX);// Tx, Rx Computador
 Serial GSM(PTE22,PTE23);// Tx, Rx Módulo de bluetooth
-Ds3231 rtc(A4, A5);
-
-
-/*
-DigitalOut LedVerde(LED2);
-DigitalOut LedRojo(LED1);
-DigitalOut LedAzul(LED3);
-*/
+Ds3231 rtc(A4, A5); // puerto I2C1 de la frdm-kl25z
 
 
 int vo, hb, lb;
@@ -29,15 +44,15 @@
 ds3231_calendar_t fecha= {AAAA,MM,DD,wd};//{años,mes,días,dia de semana}
 
 
-AnalogIn input(PTB1); // voltage measurement
-AnalogOut  u_control(PTE30);// Input voltage for the circuit
-DigitalOut LedVerde(LED2);
+AnalogIn input(PTB1); // puerto para medir el voltaje del circuito
+AnalogOut  u_control(PTE30);// puerto a través del cual se aplica una entrada al circuito
+DigitalOut LedVerde(LED2); // led indicador de estado del circuito
 
-TextLCD lcd(PTE5, PTE4, PTE3, PTE2, PTB11, PTB10); // rs, e, d4-d7
+TextLCD lcd(PTE5, PTE4, PTE3, PTE2, PTB11, PTB10); // conexión ldc (rs, e, d4-d7)
 
 Timer k,t,rtc_t;
 
-//########### Reads a incoming chain of characters #############################
+//## Esta rutina lee una cadena de caracteres disponible en el puerto serial GSM ######
 void get_chain()
 {
     j=0;
@@ -59,7 +74,7 @@
     }
 }
 
-//############### Removes all the data in the buffer ###########################
+//###### Esta función limpia la variable chain ########
 void reset_var()
 {
     for (int i=0; i<sizeof(chain); i++) {
@@ -68,18 +83,20 @@
 }
 
 
-//########### This function configures the RTC  ################################
+//#### Esta función configura el reloj de tiempo real cuando se recibe un nuevo
+//#### dato de fecha y hora a través de bluetooth###
 
 void set_rtc()
 {
     ds3231_time_t hora = {HH, mm, ss, am_pm, 1};
     ds3231_calendar_t fecha= {AAAA%100,MM,DD,wd};
 
-    if(!rtc.set_calendar(fecha)) {
+    if(!rtc.set_calendar(fecha)) { // se ejcuta si la configuración de la fecha es exitosa
+    // se imprime en la terminal del pc la fecha y hora a la cual se configuró el RTC
 
         master.printf("\r\n\r\n         Reloj Configurado el %d / %d / %d ",DD,MM,AAAA);
 
-        if(!rtc.set_time(hora)) {
+        if(!rtc.set_time(hora)) { // se ejcuta si la configuración de la hora es exitosa
             if(hora.am_pm)master.printf("a las %d:%d:%d PM\r\n\r\n\r\n",HH,mm,ss);
             else master.printf("a las %d:%d:%d AM\r\n\r\n\r\n",HH,mm,ss);
         }
@@ -88,10 +105,13 @@
 }
 
 
-//############## This function processes the received data depending on what
-//############## it's suppoused to be for #####################################
+/* La función request() se encarga de interpretar el dato que se ha recibido 
+a través del puerto serial GSM, este puede tener la función de configurar el
+modulo RTC, configurar un control PID, activar o desactivar la señal de entrada
+del circuito RCRC, o notificar si el celular se ha conectado o desconectado a 
+través de bluetooth.
 
-
+*/
 void request()
 {
     lcd.cls();
@@ -150,7 +170,10 @@
     }
 }
 
-//############### This is a function which manages the incoming data ###########
+/*
+Esta función es una ISR para recibir datos a través del puerto serial GSM
+
+*/
 
 void in_data()
 {
@@ -168,7 +191,7 @@
 
 
 
-//########################################## Main starts here ##################
+
 
 
 
@@ -191,32 +214,15 @@
     while(1) {
 
 
-        vo = input.read_u16();
-        vo_hb=vo/256;       //calculo la cifra mas significativa
-        vo_lb=vo-vo_hb*256;     //calculo la cifra menos significativa
+        vo = input.read_u16();// medición del voltaje de salida del circuito RCRC
+        vo_hb=vo/256;       
+        vo_lb=vo-vo_hb*256;    
         GSM.putc(vo_hb);
-        GSM.putc(vo_hb);   //mas significativa primero, menos despues si no no funciona!!! y con la orden PUTC solo asi le envia binarios
-
-        /*
-                vo_lb=vo&0xFF;
-                vo_hb=vo>>8;
-                GSM.putc(vo_lb);
-                GSM.putc(vo_hb);
+        GSM.putc(vo_hb);   // envío de los datos al celular por bluetooth
 
-        if(vo<256) {          //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras)
-            GSM.putc(0);     //si el numero es hasta 255 se le ponen dos ceros adelante a la secuencia de bits
-            GSM.putc(vo);     //luego la cifra menos significativa
-        }
-        if(vo>255) {         //pero si es mayor a 255 las cifras deben ser convertidas a un hex de dos bytes de la siguiente forma
-            vo_hb=vo/256;       //calculo la cifra mas significativa
-            vo_lb=vo-vo_hb*256;     //calculo la cifra menos significativa
-            GSM.putc(vo_hb);
-            GSM.putc(vo_hb);   //mas significativa primero, menos despues si no no funciona!!! y con la orden PUTC solo asi le envia binarios
-        }
-
-        */
-        if(t.read()>T && PID) {
-            if(control=='N') {
+        if(t.read()>T && PID) { // PID indica que el celular se ha conectado por bluetooth
+                                // en la pantalla de configuración del PID.
+            if(control=='N') { // si se recibió el comando para activar la acción de control, se ejecuta esta parte.
                 e=sp-1.0*input;
 
                 q0=Kp+Ki*T/2.0+Kd/T;
@@ -243,14 +249,14 @@
             t.reset();
             t.start();
 
-        } else if (t.read()>T && PID) {
+        } else if (t.read()>T && !PID) {
             u=0.0;
             LedVerde=1.0;
-        }// end for  if(t.read()>T)
+        }// end for  if(t.read()>T && PID)
 
 
 
-        if(rtc_t.read()>=1.0 && CLK) {
+        if(rtc_t.read()>=1.0 && CLK) {// se muestra la fecha y hora en el lcd se recibió el comando para leer el tiempo desde el RTC
 
             rtc.get_calendar(&fecha);
             rtc.get_time(&hora);
@@ -281,7 +287,7 @@
             rtc_t.start();
 
 
-        } else if (rtc_t.read()>=0.1 && PID) {
+        } else if (rtc_t.read()>=0.1 && PID) { // se muestra el voltaje medido y el setpoint en el lcd si se recibió el comando de PID
 
             lcd.locate(0,0);
             lcd.printf("Voltaje: %.2f V",3.3*input.read());
@@ -290,8 +296,8 @@
             rtc_t.stop();
             rtc_t.reset();
             rtc_t.start();
-        } else if(rtc_t.read()>=1.0 && !PID && !CLK) {
-            // lcd.cls();
+        } else if(rtc_t.read()>=1.0 && !PID && !CLK) { // si no se recibió ningún comando, no se hace nada.
+            
         }//end for if(rtc_t.read()>=1.0)