Jump to content
43oh

Recommended Posts

I am working on code related to sending an email through cc3100booster and msp432p401r. I am having an issue in connectivity of wifi in the module when the wifi connection code is provided in void setup(). I am providing mobile's hotspot and it gets connected and disconnected periodically. I require an continuous connection.

When the wifi connection code is written inside loop(), the connection problem is solved but a newer issue is arised i,e, the program is running for email but not for the server [In server program i am sending temperature and pulse count value to thingspeak.com to get a graphical representation of my data.]

moreover, despite of being present in loop, it executes only once. its a complete arcane issue for me. I am linking code below. please help me out with this.

#define TEMBOO_ACCOUNT "xxxxxxx"  // your Temboo account name
#define TEMBOO_APP_KEY_NAME "xxxxxxx"  // your Temboo app name
#define TEMBOO_APP_KEY  "xxxxxxxx"  // your Temboo app key
 
#define WIFI_SSID "xxxxxx"   //hotspot name
#define WIFI_PASSWORD "xxxxxxx"   //hotspot password
#ifndef __CC3200R1M1RGC__
#include <SPI.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <Temboo.h>
#endif
 
 
const String GMAIL_USER_NAME = "xxxxxxx"; //sender's email
 
const String GMAIL_APP_PASSWORD = "xxxxxx" //sender's app password
 
const String TO_EMAIL_ADDRESS = "xxxxxxx";    //receiver's email
 
boolean attempted = false;
 
#include <LiquidCrystal.h>
LiquidCrystal lcd(13,33,12,24,5,25,6,26,27,8,28);
 
  float temp;
  float volt;
  int sensorValue1;
  int sensorValue2;
  int count;
WiFiClient client;
 
char server[] = "api.thingspeak.com";
unsigned long lastConnectionTime = 0;            // last time you connected to the server, in milliseconds
const unsigned long postingInterval = 10L * 1000L; // delay between updates, in milliseconds
 
void checkconnection()
{
  int wifiStatus = WL_IDLE_STATUS;
 
  // determine if the WiFi Shield is present.
  Serial.print("\n\nShield:");
  
    
  if (WiFi.status() == WL_NO_SHIELD) {
   
    Serial.println("FAIL");
   
    
    // if there's no WiFi shield, stop here.
    while(true);
  }
    
  while(wifiStatus != WL_CONNECTED) {
    Serial.print("WiFi:");
    wifiStatus = WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
 
    if (wifiStatus == WL_CONNECTED) {
      Serial.println("OK");
    } else {
      Serial.println("FAIL");
    }
    delay(1000);
  }
   Serial.println("Waiting for an ip address");
  
  while (WiFi.localIP() == INADDR_NONE) {
    // print dots while we wait for an ip addresss
    Serial.print(".");
    delay(300);
  }
 
  Serial.println("\nIP Address obtained");
  // We are connected and have an IP address.
  // Print the WiFi status.
  printWifiStatus();
}
 
void serverprog()
{
 while (client.available()) {
    char c = client.read();
    Serial.write(c);
  
 if (millis() - lastConnectionTime > postingInterval) {
    httpRequest();
  }
}
 
 
 
void httpRequest() {
  // close any connection before send a new request.
  // This will free the socket on the WiFi shield
  client.stop();
 
  // if there's a successful connection:
  if (client.connect(server, 80)) {
    Serial.println("connecting...");
    char msgg[200];
    sprintf(msgg,"GET /update?api_key=xxxxxxxxxxxxxxxx&field1=%f&field2=%d",temp,count);  //have to make account on thingspeak.com and create channel then create 2 fields. then copy the WRITE API key in place of xxxxxxxxx
    // send the HTTP PUT request:
    client.println(msgg);
    client.println("Host: api.thingspeak.com");
    client.println("User-Agent: Energia/1.1");
    client.println("Connection: close");
    client.println();
 
    // note the time that the connection was made:
    lastConnectionTime = millis();
  }
  else {
    // if you couldn't make a connection:
    Serial.println("connection failed");
  }
}
 
 
void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
 
  // print your WiFi IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
 
  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}
 
 
   void setup() {
  lcd.begin(16, 2);
 
  Serial.begin(9600);
  Serial.println("processing......");
  
 
 
   }
 
 
 
void loop() {
  int sensorValue1 = analogRead(A0);
  lcd.clear();
    lcd.setCursor(0,2);
  lcd.print("wait..");
 /* lcd.setCursor(0,0);
  lcd.print("temperature =");
  lcd.setCursor(14,0);
  lcd.print(temp);*/
   
  Serial.println(sensorValue1);
  volt=sensorValue1*3.22;
  temp=volt/10;
  Serial.println(volt);
  Serial.println("temp=");
  Serial.println(temp);
  delay(10);
  
 int sensorValue2;
  unsigned long start=millis();
  analogReadResolution(10);
  unsigned long currentValue;
  float x=0;
  int y;
  count=0;
  delay(3000);
  lcd.clear();
 
lcd.setCursor(0,2);
lcd.print("detecting.......");
  do
  {
    int sensorValue2 = analogRead(A1);
    if(sensorValue2 > x)
   
    {
      x=sensorValue2;
      y=1;
     
    }
else if(sensorValue2 < x)
 
{
   x=sensorValue2;
   if(y==1)
   {
     count++;
     y=0;
   }
}
 
currentValue=millis();
  }
  while(currentValue-start<=30000);
   count=(count*2)/10000;
  lcd.clear();
  lcd.setCursor(0,0);
 lcd.print("temperature =");
  lcd.setCursor(14,0);
  lcd.print(temp);
   lcd.setCursor(0,2);
  lcd.print("pulse count =");
  lcd.setCursor(14,1);
    lcd.print(count);
    delay(1000);
 
     
  Serial.println(sensorValue2);
   Serial.println("pulse count=");
    Serial.println(count);
    checkconnection();
    delay(3000);
    
  if (!attempted) {
   
    Serial.println("Running SendAnEmail...");
  
    TembooChoreo SendEmailChoreo(client);
 
    SendEmailChoreo.begin();
    
    SendEmailChoreo.setAccountName(TEMBOO_ACCOUNT);
    SendEmailChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
    SendEmailChoreo.setAppKey(TEMBOO_APP_KEY);
    SendEmailChoreo.setChoreo("/Library/Google/Gmail/SendEmail");
 
    SendEmailChoreo.addInput("Username", GMAIL_USER_NAME);
   
    SendEmailChoreo.addInput("Password", GMAIL_APP_PASSWORD);
    SendEmailChoreo.addInput("ToAddress", TO_EMAIL_ADDRESS);
  
    SendEmailChoreo.addInput("Subject", "Recieved An Email???");
  char msg[100];
  sprintf (msg," Body Temperature=%f, Pulse count=%d",temp,count);
    SendEmailChoreo.addInput("MessageBody", msg);
 
       unsigned int returnCode = SendEmailChoreo.run();
 
    if (returnCode == 0) {
        Serial.println("Success! Email sent!");
    } else {
           while (SendEmailChoreo.available()) {
        char c = SendEmailChoreo.read();
        Serial.print(c);
      }
    }
    SendEmailChoreo.close();
    
  }
 serverprog();
     lcd.clear();
 
}
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...