0 Replies Latest reply on Jun 19, 2017 12:47 PM by gharryh

    MKR1000 not starting from LIPO

    gharryh

      For some days now i am trying to build a simple system to measure temp. and hum. using a DHT22 sensor connected to a MKR100 that has a 3.7V 1000maH Li-On acuu..

       

      I wrote a sketch that acts as a webserver displaying some data on a webpage. This the skektch:

       

      /*
        WiFi Web Server
      
        A simple web server that shows the value of the analog input pins.
        using a WiFi shield.
      
        This example is written for a network using WPA encryption. For
        WEP or WPA, change the WiFi.begin() call accordingly.
      
        Circuit:
         WiFi shield attached
         Analog inputs attached to pins A0 through A5 (optional)
      
        created 13 July 2010
        by dlf (Metodo2 srl)
        modified 31 May 2012
        by Tom Igoe
      
      */
      
      #include "DHT.h"
      #define DHTPIN 6     // what digital pin we're connected to
      #include <SPI.h>
      #include <WiFi101.h>
      #include <WiFiMDNSResponder.h>
      
      char ssid[] = "TimeTech"; //  your network SSID (name)
      char pass[] = "secret";    // your network password (use for WPA, or use as key for WEP)
      //int status = WL_IDLE_STATUS;
      
      //char ssid[] = "yourNetwork";      // your network SSID (name)
      //char pass[] = "secretPassword";   // your network password
      int keyIndex = 0;                 // your network key Index number (needed only for WEP)
      
      int status = WL_IDLE_STATUS;
      
      // Uncomment whatever type you're using!
      //#define DHTTYPE DHT11   // DHT 11
      #define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
      //#define DHTTYPE DHT21   // DHT 21 (AM2301)
      
      // Connect pin 1 (on the left) of the sensor to +5V
      // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
      // to 3.3V instead of 5V!
      // Connect pin 2 of the sensor to whatever your DHTPIN is
      // Connect pin 4 (on the right) of the sensor to GROUND
      // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
      
      // Initialize DHT sensor.
      // Note that older versions of this library took an optional third parameter to
      // tweak the timings for faster processors.  This parameter is no longer needed
      // as the current DHT reading algorithm adjusts itself to work on faster procs.
      DHT dht(DHTPIN, DHTTYPE);
      
      float tF;
      float dP;
      float dPF;
      
      int countIndex=0;
      
      WiFiServer server(80);
      
      void setup() {
        //Initialize serial and wait for port to open:
        Serial.begin(9600);
        while (!Serial) {
          ; // wait for serial port to connect. Needed for native USB port only
        }
      
        // check for the presence of the shield:
        if (WiFi.status() == WL_NO_SHIELD) {
          Serial.println("WiFi shield not present");
          // don't continue:
          while (true);
        }
        IPAddress ip(192, 168, 178, 222);
      
        WiFi.config(ip);
        
      //  analogReference();
      
      //  for(int i=0; i<8; i++; analogRead(A0));
        
        // attempt to connect to WiFi network:
        while ( status != WL_CONNECTED) {
          Serial.print("Attempting to connect to SSID: ");
          Serial.println(ssid);
          // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
          status = WiFi.begin(ssid, pass);
      
          // wait 10 seconds for connection:
          delay(10000);
        }
        server.begin();
        // you're connected now, so print out the status:
        printWiFiStatus();
      }
      
      
      void loop() {
        // listen for incoming clients
        WiFiClient client = server.available();
        if (client) {
          Serial.println("new client");
          // an http request ends with a blank line
          boolean currentLineIsBlank = true;
          while (client.connected()) {
            if (client.available()) {
              char c = client.read();
              Serial.write(c);
              // if you've gotten to the end of the line (received a newline
              // character) and the line is blank, the http request has ended,
              // so you can send a reply
              if (c == '\n' && currentLineIsBlank) {
                // send a standard http response header
                client.println("HTTP/1.1 200 OK");
                client.println("Content-Type: text/html");
                client.println("Connection: close");  // the connection will be closed after completion of the response
                client.println("Refresh: 5");  // refresh the page automatically every 5 sec
                client.println();
                client.println("<!DOCTYPE HTML>");
                client.println("<html>");
      
                int sensorValue1 = analogRead(A1);
                int sensorValue3 = analogRead(A3);
      
                float voltage1 = sensorValue1 * (3.3 / 1023.0);
                float voltage3 = sensorValue3 * (3.3 / 1023.0);
      
                client.print("analog input1 ");
      
                client.print(" is ");
                client.print(voltage1);
                client.println(" V<br />");
                client.print("analog input3 ");
      
                client.print(" is ");
                client.print(voltage3);
                client.println(" V<br />");
               client.println("<br />");
      
                // Read temperature as Celsius (the default)
                float t = dht.readTemperature();
                countIndex++;
                float h = dht.readHumidity();
                client.print("Aantal meetingen vandaag: ");
                client.println(countIndex);
                client.print("<BR />");
                client.print("Temperatuur: ");
                client.print(t);
                client.print("&#8451;<BR />");
                client.print("Luchtvochtigheid: ");
                client.print(h);
                client.print("%<BR />");
                client.println("</html>");
                break;
              }
              if (c == '\n') {
                // you're starting a new line
                currentLineIsBlank = true;
              }
              else if (c != '\r') {
                // you've gotten a character on the current line
                currentLineIsBlank = false;
              }
            }
          }
          // give the web browser time to receive the data
          delay(1);
      
          // close the connection:
          client.stop();
          Serial.println("client disonnected");
        }
      }
      
      void printWiFiStatus() {
        // print the SSID of the network you're attached to:
        Serial.print("SSID: ");
        Serial.println(WiFi.SSID());
      
        // print your WiFi shield's 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");
      }
      

       

      The problem i notice is as folloows: If the MKR100 is connected tru the USB then the device wil start if i open the serial monitor on the IDE (No Lipo attached) iget

      Attempting to connect to SSID: TimeTech

      SSID: TimeTech

      IP Address: 192.168.178.225

      signal strength (RSSI):-59 dBm

      and then if i open the page in the used IP adress i get

       

      analog input1 is 0.02 V

      analog input3 is 3.30 V

       

      Aantal meetingen vandaag: 10

      Temperatuur: 29.80℃

      Luchtvochtigheid: 32.80%

      And the the serialmonitor  produces this output:

      n

      ew client

      GET / HTTP/1.1

      Host: 192.168.178.225

      User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0

      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

      Accept-Language: nl,en-US;q=0.7,en;q=0.3

      Accept-Encoding: gzip, deflate

      Connection: keep-alive

      Upgrade-Insecure-Requests: 1

      Cache-Control: max-age=0

       

      client disonnected

      new client

      GET / HTTP/1.1

      Host: 192.168.178.225

      User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0

      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

      Accept-Language: nl,en-US;q=0.7,en;q=0.3

      Accept-Encoding: gzip, deflate

      Connection: keep-alive

      Upgrade-Insecure-Requests: 1

      Cache-Control: max-age=0

      Then i connect the LIPO and remove the USB connection.

      If i do this the connection stays stable and present.

       

      But if i remove the USB first and then plugin the LIPO then the device wont connect to the router.

       

      So the question is, is this a known problem with the MKR1000 of do i something wrong in the sketch??

       

      Regards

       

      Harry