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("℃<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