Práctica - Click Cloud

 

 

 

Descripción

 

En esta práctica se implementa una comunicación serial UART y una lectura analógica con el Click board Ambient 7, usando el Click board Go to Cloud (G2C) y el módulo X-TRAINER P8 o X-TRAINER P8 DIP40, con el PIC18F45K50. Para la compatibilidad de X-TRAINER P8 y los Click boards se utiliza el breakout X-TRAINER TO CLICK BOARDS X2C. Con Ambient 7 se obtiene la intensidad luminosa del ambiente, se envía los datos por medio de Go to Cloud (G2C) y se visualiza a través de la plataforma Click Cloud.

 

Materiales:

1 x Módulo X-TRAINER P8 o X-TRAINER P8 DIP40. Comprar

1 x Click board Go to Cloud (G2C). Comprar

1 x Click board Ambient 7. Comprar

1 x X-TRAINER TO CLICK BOARDS X2C. Comprar

1 x Cable micro USB.

 

Software:

Windows 7 o posterior.

Click Cloud. Ir a la plataforma

MPLAB X IDE. Descarga

XIDE v1.0 Descarga

 

Procedimiento

 

1. Realiza las conexiones que se muestran en la imagen del apartado "Diagrama Esquemático" y conéctalo a la computadora.

2. Entra a la plataforma Click Cloud y realiza los pasos del siguiente tutorial para la conexión con el click board Go to Cloud (G2C). Si aún no conoces la plataforma Click Cloud, en el siguiente link encontrarás más información acerca de Click Cloud. Para más información acerca de la configuración del Click board Go to Cloud (G2C) visita el siguiente link.

3. Al final de esta práctica, en el apartado de "Descargas", puedes encontrar los archivos del código fuente, o bien copiarlo del apartado de "Código" que se encuentra más abajo.

4. Ejecuta MPLAB X IDE, abre el proyecto, sustituye en el código tus credenciales que proporcionó la plataforma Click Cloud en el paso 2 y realiza la compilación. En el siguiente link encontrarás un manual para compilar tu proyecto en MPLAB X IDE.

5. Abre el Software XIDE v1.0 y programa el código que descargaste o compilaste en el módulo. En el siguiente link encontrarás el manual de usuario para el Software XIDE v1.0. 

6. Al terminar de programar, el módulo se reiniciará, el programa de esta práctica se ejecutará y podrás visualizar la gráfica en Click Cloud.

 

 

Diagrama esquemático

 

X-TRAINER P8
X-TRAINER P8 DIP40
X-TRAINER P8

X-TRAINER P8 DIP40

 

Código

 

Código

/*
* File: main.c
* Author: MICROSIDE
*
* Created on 30 october 2019, 12:38 PM
*/

#include <xc.h>
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#define _XTAL_FREQ 48000000
#define LED LATAbits.LA1

unsigned char WiFi_SSID [] = "wifitestmikro";
unsigned char WiFi_pass [] = "wifitestmikropass";
unsigned char Device_Key [] = "3zn5tcjqkxw9h679";
unsigned char Device_pass [] = "c5f5cb98-519f-4bbf-941a-222aa9ee4253";
unsigned char Reference [] = "Micro_lum";
#define channel_AN4 0x04

uint16_t TIMEOUT = 0;
uint16_t TIMEOUT_FAIL = 20;

void SYSTEM_Initialize(void) {
       OSCCON = 0x70;
       OSCCON2 = 0x00;
       OSCTUNE = 0x80;
       ACTCON = 0x00;
       while (PLLRDY == 0);

//LED X-TRAINER

       LATAbits.LA1 = 0;
       ANSELAbits.ANSA1 = 0;
       TRISAbits.RA1 = 0;

//SENSOR

       ANSELAbits.ANSA5 = 1;
       TRISAbits.RA5 = 1;

//RESET G2C

       ANSELDbits.ANSD5 = 0;
       TRISDbits.RD5 = 1;
       LATDbits.LD5 = 1;

//TX

       LATCbits.LC6 = 0;
       ANSELCbits.ANSC6 = 0;
       TRISCbits.RC6 = 0;

//RX

       LATCbits.LC7 = 0;
       ANSELCbits.ANSC7 = 0;
       TRISCbits.RC7 = 1;

       BAUDCON1 = 0x08;
       RCSTA1 = 0x90;
       TXSTA1 = 0x24;
       SPBRG1 = 0xCF;
       SPBRGH1 = 0x00;

       ADCON0 = 0x01;
       ADCON1 = 0x00;
       ADCON2 = 0x06;
       ADRESL = 0x00;
       ADRESH = 0x00;
}

void putch(char txData) {
       while (0 == PIR1bits.TX1IF);
       TXREG1 = txData;
}

uint8_t EUSART1_Read(void) {
       if (RCSTA1bits.OERR) {
           RCSTA1bits.CREN = 0;
           RCSTA1bits.CREN = 1;
       }
       return RCREG1;
}

bool EUSART1_is_rx_ready(void) {
       return (bool) (PIR1bits.RC1IF);
}

bool CheckSIM_Command(unsigned char* COM, char* RES, char Time) {
       if (TIMEOUT >= TIMEOUT_FAIL) {
             return true;
       }
       uint16_t cont = 0;
       uint8_t TimeOut = 0;
       uint8_t receive_buffer[10];
       uint8_t buffer_count = 0;
       printf("%s\r", COM);
       while (1) {
              if (EUSART1_is_rx_ready()) {

                   char data = EUSART1_Read();

                   if (data == '\r' || data == '\n') {
                       receive_buffer[buffer_count] = '\0';
                       buffer_count = 0;
                       if (strstr(receive_buffer, RES) != NULL)
                            return true;
                   } else {
                         receive_buffer[buffer_count++] = data;
                   }
             }
             if (cont <= 25000) {
                 cont++;
                 __delay_us(2);
             } else {
                   TimeOut++;
                   if (TimeOut < Time) {
                         cont = 0;
                   } else {
                         TIMEOUT++;
                         return false;
                   }
             }
       }
}

void AppG2C_Init() {
       TIMEOUT = 0;
       unsigned char buffer1[80];
       while (!CheckSIM_Command("AT", "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
       while (!CheckSIM_Command("AT+CEN=1", "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
       while (!CheckSIM_Command("AT+NWP=1", "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
       sprintf(buffer1, "AT+NWCR=\"%s\",\"%s\"", WiFi_SSID, WiFi_pass);
       while (!CheckSIM_Command(buffer1, "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
       while (!CheckSIM_Command("AT+NWC=1", "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
       sprintf(buffer1, "AT+BRCR=\"%s\",\"%s\"", Device_Key, Device_pass);
       while (!CheckSIM_Command(buffer1, "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
       while (!CheckSIM_Command("AT+BRC=1", "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
}

       void G2C_Task() {
       TIMEOUT = 0;
       unsigned char buffer1[80];

       ADCON0bits.CHS = channel_AN4;
       ADCON0bits.ADON = 1;
       ADCON0bits.GO_nDONE = 1;
       while (ADCON0bits.GO_nDONE==1);
       uint8_t Data = ADRESH / 2.55;

       sprintf(buffer1, "AT+DSET=\"%s\",\"%d\"", Reference, Data);
       while (!CheckSIM_Command(buffer1, "OK", 20) && TIMEOUT < TIMEOUT_FAIL);
       while (!CheckSIM_Command("AT+PUB", "OK", 20) && TIMEOUT < TIMEOUT_FAIL);

}
uint16_t cont_task = 0;

void main(void) {
       SYSTEM_Initialize();
       AppG2C_Init();
       while (1) {
             if (cont_task == 0) {
                   LED=1;
                   G2C_Task();
                   cont_task=60000;
                   LED=0;
             }
             else
                   cont_task--;
             __delay_ms(1);

       }
}

 

Descargas

 

Software XIDE v1.0

Descarga el software XIDE v1.0 

Práctica - Click Cloud

Descargar código en MPLAB X de la práctica Click Cloud.

Fecha

octubre 31, 2019

× WhatsApp