nothing
Dependencies: MMA7660 ublox-at-cellular-interface ublox-cellular-base C12832 LM75B ublox-cellular-base-n2xx ublox-at-cellular-interface-n2xx
Revision 0:94c39fbc3923, committed 2019-04-27
- Comitter:
- Nourah1Hamad
- Date:
- Sat Apr 27 11:47:51 2019 +0000
- Commit message:
- Nothing;
Changed in this revision
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/.hg_archival.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/.hg_archival.txt Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,6 @@ +repo: 9f9e08e7e82326785d4135b07db489155b7c5067 +node: 973263a70be0b4cb399960043888356f5678f2c3 +branch: default +latesttag: null +latesttagdistance: 2 +changessincelatesttag: 2
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/C12832.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/C12832.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/chris/code/C12832/#7de323fa46fe
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/LM75B.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/LM75B.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/neilt6/code/LM75B/#fc27dc535ea9
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/main.cpp Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,429 @@ +/* mbed Microcontroller Library + * Copyright (c) 2017 u-blox + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +/* This example program for the u-blox C030 board. + * The UbloxATCellularInterface or OnboardCellularInterface uses it + * to make a simple HTTP connection to a STC IOT server. + * Progress may be monitored with a serial terminal running at 9600 baud or at https://ksu.aep1.iot.stcs.com.sa + * The LED on the C030 board will turn green when this program is + * operating correctly, pulse blue when a sockets operation is completed + * and turn red if there is a failure. + + * Modified by: Muhammad Faheem Khan (Digital Solutions, STCS) + */ + +#include "mbed.h" +#include "UbloxATCellularInterface.h" +#include "UbloxATCellularInterfaceN2xx.h" +#include "LM75B.h" // Temperature Sensor Library. Import more libraries from https://os.mbed.com/components/mbed-Application-Shield/ +#include "C12832.h" // LCD Library. Import more libraries from https://os.mbed.com/components/mbed-Application-Shield/ +#include "MMA7660.h" //HERE + +// Sensor Pin and Object Activation +C12832 lcd(D11, D13, D12, D7, D10); +//LM75B sensor(D14,D15); +MMA7660 MMA(D14,D15); //HERE +PwmOut spkr(D6); + +#define INTERFACE_CLASS UbloxATCellularInterface //This interface is used to initiate modem commands for sending data to sever + +// The credentials of the SIM in the board. If PIN checking is enabled +// for your SIM card you must set this to the required PIN. +#define PIN "0000" +#define APN "jtm2m" //APN remains the same for all the kits +#define USERNAME NULL +#define PASSWORD NULL +#define TCP_SERVER "integration.campus.stcs.io" //STC IoT parsing server address + +// LEDs +//DigitalOut connectionLed(LED1);//operation confirmed HERE +DigitalOut servoProxyLed(LED2);//score outcome, proxy for servo HERE +DigitalOut ledRed(LED1, 1); +DigitalOut ledGreen(LED2, 1); +DigitalOut ledBlue(LED3, 1); +DigitalIn fire(D4); + + +// The user button +volatile bool buttonPressed = false; + + +static void good() { + ledGreen = 0; + ledBlue = 1; + ledRed = 1; +} + +static void bad() { + ledRed = 0; + ledGreen = 1; + ledBlue = 1; +} + +static void event() { + ledBlue = 0; + ledRed = 1; + ledGreen = 1; +} + +static void pulseEvent() { + event(); + wait_ms(500); + good(); +} + +static void ledOff() { + ledBlue = 1; + ledRed = 1; + ledGreen = 1; +} +static void cbButton() +{ + buttonPressed = true; + pulseEvent(); +} + + + + +float stable= 0 ; +const int n = 10; //number of readings to be averaged, change globally here HERE +float score = 0; //reserved for later HERE +int angle = 0; //reserved for later HERE +float pulseXT =0, pulseYT = 0; //Total holders for summation from axis arrays HERE + +float pulseXa, pulseYa; //averaged values for each axis over n HERE +float pulseX[n], pulseY[n]; //arrays to hold n readings for each axis HERE +int i, j; //indexing variables HERE +char xval[100]; // this buffer will be used to store sensor values +char yval[100]; // this buffer will be used to store sensor values +char zval[100]; // this buffer will be used to store sensor values +char buf[1024]; // this buffer is used to send POST data to platform + char deviceID[20] = "357520074039765"; +//void fun(char *str,float x) +//{ + //snprintf(str,sizeof str,"X-axis=%.2f", x); + //snprintf(buf, sizeof buf, "%s%s%s%s%s%s", "POST /ksu/?deviceID=",deviceID,"&",str,"&unit=T", " HTTP/1.0\r\n\r\n"); + + // printf(buf); + +//} +int main() +{ + INTERFACE_CLASS *interface = new INTERFACE_CLASS(); + // If you need to debug the cellular interface, comment out the + // instantiation above and uncomment the one below. + // For the N2xx interface, change xxx to MBED_CONF_UBLOX_CELL_BAUD_RATE, + // while for the non-N2xx interface change it to MBED_CONF_UBLOX_CELL_N2XX_BAUD_RATE. +// INTERFACE_CLASS *interface = new INTERFACE_CLASS(MDMTXD, MDMRXD, +// xxx, +// true); +#ifndef TARGET_UBLOX_C030_N211 + TCPSocket sockTcp; + TCPSocket sockTcp2; + TCPSocket sockTcp3; + +#endif + + SocketAddress tcpServer; + //char deviceID[20] = "357520074039765"; + // char buf[1024]; // this buffer is used to send POST data to platform + char buf2[1024]; + char buf3[1024]; + char temp[50]; // this buffer will be used to store sensor values + int x; + +#ifdef TARGET_UBLOX_C027 + // No user button on C027 + InterruptIn userButton(NC); +#else + InterruptIn userButton(SW0); +#endif + + // Attach a function to the user button + userButton.rise(&cbButton); + + good(); + printf("Starting up, please wait up to 180 seconds for network registration to complete...\n"); + interface->set_credentials(APN, USERNAME, PASSWORD); + for (x = 0; interface->connect(PIN) != 0; x++) { + if (x > 0) { + bad(); + printf("Retrying (have you checked that an antenna is plugged in and your APN is correct?)...\n"); + } + } + pulseEvent(); + + printf("Getting the IP address of \"integration.campus.stcs.io\"...\n"); + if (interface->gethostbyname(TCP_SERVER, &tcpServer) == 0) { + pulseEvent(); + + tcpServer.set_port(1880); + //tcpServer2.set_port(1881); + printf("\"integration.campus.stcs.io\" address: %s on port %d.\n", tcpServer.get_ip_address(), tcpServer.get_port()); + + printf("Performing socket operations in a loop (until the user button is pressed on C030)...\n"); + while (!buttonPressed) { + +#ifndef TARGET_UBLOX_C030_N211 + lcd.cls(); + lcd.locate(0,3); + lcd.printf("Connecting"); + + // TCP Sockets + printf("=== TCP ===\n"); + printf("Opening a TCP socket...\n"); + if (sockTcp.open(interface) == 0) { + pulseEvent(); + printf("TCP socket open.\n"); + sockTcp.set_timeout(10000); + printf("Connecting socket to %s on port %d...\n", tcpServer.get_ip_address(), tcpServer.get_port()); + if (sockTcp.connect(tcpServer) == 0) { + pulseEvent(); + lcd.cls(); + lcd.locate(0,3); + lcd.printf("Connected"); + wait(2.0); + printf("Connected, sending HTTP GET request to %s over socket...\n", TCP_SERVER); + lcd.cls(); + lcd.locate(0,3); + wait(1.0); + printf("=== TCP ===\n"); + printf("Opening a TCP socket 2...\n"); + if (sockTcp2.open(interface) == 0) { + pulseEvent(); + printf("TCP socket open.\n"); + sockTcp2.set_timeout(10000); + printf("Connecting socket to %s on port %d...\n", tcpServer.get_ip_address(), tcpServer.get_port());// kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk + if (sockTcp2.connect(tcpServer) == 0) { + pulseEvent(); + lcd.cls(); + lcd.locate(0,3); + lcd.printf("Connected"); + wait(2.0); + printf("Connected, sending HTTP GET request to %s over socket...\n", TCP_SERVER); + lcd.cls(); + lcd.locate(0,3); + wait(1.0); + printf("=== TCP ===\n"); + printf("Opening a TCP socket3...\n"); + if (sockTcp3.open(interface) == 0) { + pulseEvent(); + printf("TCP socket open.\n"); + sockTcp3.set_timeout(10000); + printf("Connecting socket to %s on port %d...\n", tcpServer.get_ip_address(), tcpServer.get_port()); + if (sockTcp3.connect(tcpServer) == 0) { + pulseEvent(); + lcd.cls(); + lcd.locate(0,3); + lcd.printf("Connected"); + wait(2.0); + printf("Connected, sending HTTP GET request to %s over socket...\n", TCP_SERVER); + lcd.cls(); + lcd.locate(0,3); + + // Sensor Data is stored in temp variable before pushing to platform + + // while(1) { //HERE + + // for (i = 0; i < n; i = i + 1) { //read n values into each axis array + // pulseX[i] = MMA.x(); + // pulseY[i] = MMA.y(); + //} + //pulseXT = 0; //reset Totala + // pulseYT = 0; //reset Totala + // for (j = 0; j < n; j = j + 1) { //summation of the contents of each array into axis Totals + // pulseXT = pulseXT+pulseX[j]; + // pulseYT = pulseYT+pulseY[j]; + //} + //pulseXa = pulseXT/n; //axis average over n + pulseXa = MMA.x(); + // pulseYa = pulseYT/n; //axis average over n + pulseYa = MMA.y(); + //if (MMA.testConnection()) + // connectionLed = 1; + + if (pulseXa > (-0.2) && pulseXa < (0.2) && pulseYa > (-0.2) && pulseYa < (0.2)) {//average result within stability range; x, y + lcd.cls();//clear LCD for next reading round + lcd.locate(3,3);//first LCD column label + lcd.printf("x-axis | ");//label column + lcd.locate(3,12);//xdata location + lcd.printf("%.2f\n",pulseXa);//print x to LCD + lcd.locate(40,3);//second LCD column label + lcd.printf("y-axis | ");//label column + lcd.locate(40,12);//ydata location + lcd.printf("%.2f\n",pulseYa);//print y to LCD + lcd.locate(77,3);//initial LCD location + lcd.printf("z-axis");//label column + lcd.locate(77,12);//zdata location + lcd.printf("%.2f\n",MMA.z());//print z to LCD + lcd.locate(3,21);//flag location + lcd.printf("STABLE");//flag + stable = 1 ; + wait_ms(2000); + + } + + else {////average result not within stability range; x, y + lcd.cls();//clear LCD for next reading round + lcd.locate(3,3);//first LCD column label + lcd.printf("x-axis | ");//label column + lcd.locate(3,12);//xdata location + lcd.printf("%.2f\n",pulseXa);//print x to LCD + lcd.locate(40,3);//second LCD column label + lcd.printf("y-axis | ");//label column + lcd.locate(40,12);//ydata location + lcd.printf("%.2f\n",pulseYa);//print y to LCD + lcd.locate(77,3);//initial LCD location + lcd.printf("z-axis");//label column + lcd.locate(77,12);//zdata location + lcd.printf("%.2f\n",MMA.z());//print z to LCD + lcd.locate(3,21);//flag location + lcd.printf("UNSTABLE");//flag + stable = 0 ; + wait_ms(2000); + + int snd = 0; + while (snd != 1) { + snd++; + for (float i=2000.0; i<10000.0; i+=100) { + spkr.period(1.0/i); + spkr=0.1; + wait(0.5); + } + spkr=0.0; + } + + + } + //} +// vall val ; + + // reading_value(xval,pulseXa); + // val.x = pulseXa; + //val.y = pulseYa; + // snprintf(temp,sizeof temp,"Temperature=%.1f", sensor.temp()); //Sensor Key "Temperature" and Value is Sensor Data + //fun(xval,pulseXa); +/*float values []= {pulseXa , pulseYa}; +char* v [] = {xval,yval}; +int ptr = 0;*/ +//for( i = 0; i < 2; i++) +//{ + // ptr += snprintf(xval + ptr, sizeof(xval) - ptr, "X-axis=%.2f", values[i]); + + +//} + snprintf(xval,sizeof xval,"X-axis=%.2f", pulseXa); //Sensor Key "Temperature" and Value is Sensor Data + snprintf(yval,sizeof yval,"Y-axis=%.2f", pulseYa); //Sensor Key "Temperature" and Value is Sensor Data + snprintf(zval,sizeof zval,"Stability Status=%.2f", stable ); //Sensor Key "Temperature" and Value is Sensor Data + + + //lcd.printf("%s", temp); // Display Temperature value on LCD + + /* create a buf with HTTP POST call to platform, user must define below structure + + 1. deviceID --- This is the IMEI of the device, available on back side of the board + 2. temp -- This is a temporary variable to hold sensor Key and Value. For example, "Temperature"="24.5". Here Key is Temperature and Value is 24.5 + 3. unit -- This is sensor data unit. For example, C for Temperature + + Repeat the steps for sending more than 1 value to platform. Alternatively, user can define this process as a function for sending multiple values. + + */ + + //snprintf(buf, sizeof buf, "%s%s%s%s%s%s", "POST /ksu/?deviceID=",deviceID,"&",temp,"&unit=T"," HTTP/1.0\r\n\r\n"); + + + snprintf(buf, sizeof buf, "%s%s%s%s%s%s", "POST /ksu/?deviceID=",deviceID,"&",xval,"&unit=T", " HTTP/1.0\r\n\r\n"); + snprintf(buf2, sizeof buf2, "%s%s%s%s%s%s", "POST /ksu/?deviceID=",deviceID,"&",yval,"&unit=C"," HTTP/1.0\r\n\r\n"); + snprintf(buf3, sizeof buf3, "%s%s%s%s%s%s", "POST /ksu/?deviceID=",deviceID,"&",zval,"&unit=T"," HTTP/1.0\r\n\r\n"); + + printf("Output string is %s",buf); + + // Note: since this is a short string we can send it in one go as it will + // fit within the default buffer sizes. Normally you should call sock.send() + // in a loop until your entire buffer has been sent. + if (sockTcp.send((void *) buf, strlen(buf)) == (int) strlen(buf)) { + pulseEvent(); + printf("Socket send completed, waiting for response...\n"); + x = sockTcp.recv(buf, sizeof (buf)); + if (x > 0) { + pulseEvent(); + printf("Received %d byte response from server on TCP socket:\n" + "----------------------------------------------------\n%.*s" + "----------------------------------------------------\n", + x, x, buf); + } + } + if (sockTcp2.send((void *) buf2, strlen(buf2)) == (int) strlen(buf2)) { + pulseEvent(); + printf("Socket send completed, waiting for response...\n"); + x = sockTcp2.recv(buf2, sizeof (buf2)); + if (x > 0) { + pulseEvent(); + printf("Received %d byte response from server on TCP socket:\n" + "----------------------------------------------------\n%.*s" + "----------------------------------------------------\n", + x, x, buf2); + } + } + if (sockTcp3.send((void *) buf3, strlen(buf3)) == (int) strlen(buf3)) { + pulseEvent(); + printf("Socket send completed, waiting for response...\n"); + x = sockTcp3.recv(buf3, sizeof (buf3)); + if (x > 0) { + pulseEvent(); + printf("Received %d byte response from server on TCP socket:\n" + "----------------------------------------------------\n%.*s" + "----------------------------------------------------\n", + x, x, buf3); + } + } + + + }}} + + lcd.cls(); + lcd.locate(0,3); + lcd.printf("Resend after 10s"); + wait(1.0); + printf("Closing socket...\n"); + sockTcp.close(); + sockTcp2.close(); + sockTcp3.close(); + pulseEvent(); + printf("Socket closed.\n"); + }}} +#endif + wait_ms(10000); //Loop delay in milliseconds. Keep it more than 10 seconds to save data usage on cellular +#ifndef TARGET_UBLOX_C027 + printf("[Checking if user button has been pressed]\n"); +#endif + } + + pulseEvent(); + printf("User button was pressed, stopping...\n"); + interface->disconnect(); + ledOff(); + printf("Stopped.\n"); + } + else { + bad(); + printf("Unable to get IP address of \"integraton.campus.stcs.io\".\n"); + } + + +}
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/mbed-os.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/mbed-os.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#57d8915a899a59999d7e2a9695e20a8a18cb54bd \ No newline at end of file
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/mbed_app.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/mbed_app.json Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,9 @@ +{ + "target_overrides": { + "*": { + "lwip.ppp-enabled": true, + "platform.stdio-convert-newlines": true + } + } +} +
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/ublox-at-cellular-interface-n2xx.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/ublox-at-cellular-interface-n2xx.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ublox/code/ublox-at-cellular-interface-n2xx/#7fb0bbdc4242
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/ublox-at-cellular-interface.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/ublox-at-cellular-interface.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ublox/code/ublox-at-cellular-interface/#2e8e1c573e18
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/ublox-cellular-base-n2xx.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/ublox-cellular-base-n2xx.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ublox/code/ublox-cellular-base-n2xx/#1afe5ed24f0c
diff -r 000000000000 -r 94c39fbc3923 973263a70be0/ublox-cellular-base.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/973263a70be0/ublox-cellular-base.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/ublox/code/ublox-cellular-base/#779971811c46
diff -r 000000000000 -r 94c39fbc3923 MMA7660.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA7660.lib Sat Apr 27 11:47:51 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Sissors/code/MMA7660/#36a163511e34