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 DIP PRO, con el PIC18F45K50. Para la compatibilidad de X-TRAINER P8 DIP PRO y los Click board™ se utiliza la tarjeta de expansión X-BOARD X-TRAINER PRO. 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 DIP PRO. Manual
1 x Click board™ Go to Cloud (G2C). Comprar
1 x Click board™ Ambient 7. Comprar
1 x X-BOARD X-TRAINER PRO. Manual
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
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
Descarga el software MICROSIDE v1.0
Descargar código en MPLAB X de la práctica Click Cloud.
octubre 31, 2019