I made a couple of changes to the Exosite and the source code. All updates can be downloaded from CC3200 Site and Source code link. My goal is to get numerical data from the accelerometer and display it on the website. So, I have added couple lines of code to the HTTP server callback function. Now the function sends numeric values x-axis to the Exosite.
void SimpleLinkHttpServerCallback(SlHttpServerEvent_t *pSlHttpServerEvent,
SlHttpServerResponse_t *pSlHttpServerResponse){
unsigned char *ptraccX;
…
ReadAccSensor(); //float *pfCurrTemp
ptraccX = pSlHttpServerResponse->ResponseData.token_value.data;
//ptraccY = pSlHttpServerResponse->ResponseData.token_value.data;
//signed char cAccXT2;
//signed char cAccYT2;
//signed char cAccZT2;
//BMA222ReadNew(&cAccXT2, &cAccYT2, &cAccZT2);
//volatile static float g_accXIntervalSum = 0;
//volatile static float g_accYIntervalSum = 0;
//volatile static float g_accZIntervalSum = 0;
//char AccX = (char)cAccXT2;
//char AccY = (char)cAccYT2;
short sTempLenAccX = itoa(g_accXIntervalSum,(char*)ptraccX);// Convert integer to ASCII in decimal base. Convert x-axis value to a decimal string.
ptraccX[sTempLenAccX++] = ' ';
ptraccX[sTempLenAccX] = ' ';
//short sTempLenAccY = itoa(g_accYIntervalSum,(char*)ptraccY);// Convert integer to ASCII in decimal base. Convert x-axis value to a decimal string.
//ptracc[sTempLenAccY++] = ' ';
//ptracc[sTempLenAccY] = ' ';
if(g_ucDryerRunning) // g_ucDryerRunning is set in void ReadAccSensor()
{
//strcpy((char*)pSlHttpServerResponse->ResponseData.token_value.data,"Running");
//pSlHttpServerResponse->ResponseData.token_value.len += strlen("Running");
pSlHttpServerResponse->ResponseData.token_value.data = ptraccX;
pSlHttpServerResponse->ResponseData.token_value.len += sTempLenAccX;
//pSlHttpServerResponse->ResponseData.token_value.data = ptraccY;
//pSlHttpServerResponse->ResponseData.token_value.len += sTempLenAccY;
}
}
Now I can read x-axis value of the accelerometer. Next step is to get data from Y and Z axis.
After a few hours of hard work and I have managed to send and display data from the other two axis (Y and Z).
BMA222ReadNew function returns the accelerometer readings. The return values are signed char types. I cast them as unsigned char type, I think that is the reason why I get weird readings sometimes.
BMA222ReadNew(&cAccXT1, &cAccYT1, &cAccZT1);
After that I convert HEX data to character string using the itoa () function.
Using brute force I send data and labels from SimpleLinkHttpServerCallback function:
ReadAccSensor(); //float *pfCurrTemp
ptraccX = pSlHttpServerResponse->ResponseData.token_value.data;
signed char cAccXT1, cAccYT1, cAccZT1;
//unsigned char cAccXTu, cAccYTu, cAccZTu;
unsigned char cAccYTu, cAccZTu;
//_u8 *cAccXT2; //_u8 *data;
_u8 *cAccYT2;
_u8 *cAccZT2; //_u8 *data;
BMA222ReadNew(&cAccXT1, &cAccYT1, &cAccZT1);
//cAccXTu = (unsigned char) cAccXT1;
cAccYTu = (unsigned char) cAccYT1;
cAccZTu = (unsigned char) cAccZT1;
//cAccXT2 = &cAccXTu;
cAccYT2 = &cAccYTu;
cAccZT2 = &cAccZTu;
//ptraccX = cAccXT2;
ptraccY = cAccYT2;
ptraccZ = cAccZT2;
short sLenAccX = itoa(g_accXIntervalSum,(char*)ptraccX);// Convert integer to ASCII in decimal base. Convert x-axis value to a decimal string.
short sLenAccY = itoa(g_accYIntervalSum,(char*)ptraccY);// String that contains Y-axis data
ptraccY[sLenAccY++] = ' ';
short sLenAccZ = itoa(g_accZIntervalSum,(char*)ptraccZ);// String that contains Z-axis data
ptraccY[sLenAccZ++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = 'X';
ptraccX[sLenAccX++] = '-';
ptraccX[sLenAccX++] = 'a';
ptraccX[sLenAccX++] = 'x';
ptraccX[sLenAccX++] = 'e';
ptraccX[sLenAccX++] = 's';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ptraccY[0];
ptraccX[sLenAccX++] = ptraccY[1];
ptraccX[sLenAccX++] = ptraccY[2];
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = 'Y';
ptraccX[sLenAccX++] = '-';
ptraccX[sLenAccX++] = 'a';
ptraccX[sLenAccX++] = 'x';
ptraccX[sLenAccX++] = 'e';
ptraccX[sLenAccX++] = 's';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ptraccZ[0];
ptraccX[sLenAccX++] = ptraccZ[1];
ptraccX[sLenAccX++] = ptraccX[2]; // typo has to be ptraccY
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = 'Z';
ptraccX[sLenAccX++] = '-';
ptraccX[sLenAccX++] = 'a';
ptraccX[sLenAccX++] = 'x';
ptraccX[sLenAccX++] = 'e';
ptraccX[sLenAccX++] = 's';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
ptraccX[sLenAccX++] = ' ';
I have updated files in my source code link: CC3200 Site and Source code.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.