· 6 years ago · Oct 22, 2019, 05:36 AM
1#include <Wire.h>
2#include "Adafruit_VL6180X.h"
3#include <ESP8266WiFi.h>
4#include <WiFiClient.h>
5#include <ESP8266WebServer.h>
6#include <ESP8266mDNS.h>
7#include <ThingSpeak.h>
8
9
10const char* ssid = "XXXXXX"; // Wireless SID
11const char* password = "XXXXXXXXXX"; // Wireless Passcode
12
13ESP8266WebServer server(80);
14
15const int led = 13;
16
17Adafruit_VL6180X vl = Adafruit_VL6180X();
18
19WiFiClient client;
20unsigned int myChannelNumber = XXXXXX; // Channel Number from // ThingSpeak IoT
21const char * myWriteAPIKey = "InsertAPIKey"; // Write API Key
22 // fom ThingSpeak IoT
23void handleRoot()
24 {
25 digitalWrite(led, 1);
26 delay(1000);
27 server.send(200, "text/plain", "hello from esp8266!");
28 digitalWrite(led, 0);
29 delay(1000);
30 }
31
32void handleNotFound()
33 {
34 digitalWrite(led, 1);
35 String message = "File Not Found\n\n";
36 message += "URI: ";
37 message += server.uri();
38 message += "\nMethod: ";
39 message += (server.method() == HTTP_GET)?"GET":"POST";
40 message += "\nArguments: ";
41 message += server.args();
42 message += "\n";
43
44 for (uint8_t i=0; i<server.args(); i++)
45 {
46 message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
47 }
48
49 server.send(404, "text/plain", message);
50 digitalWrite(led, 0);
51 }
52
53void setup(void) {
54 Serial.begin(115200);
55
56
57 // wait for serial port to open on native usb devices
58
59 while (!Serial) {
60 delay(1);
61 }
62
63 Serial.println("AM2302 test!");
64 Serial.println("Adafruit VL6180x test!");
65 if (! vl.begin()) {
66 Serial.println("Failed to find sensor");
67 while (1);
68 }
69 Serial.println("Sensor found!");
70}
71
72 pinMode(led, OUTPUT);
73 digitalWrite(led, 0);
74 Serial.begin(115200);
75 WiFi.begin(ssid, password);
76 ThingSpeak.begin(client);
77 Serial.println("");
78
79 // Wait for connection
80 while (WiFi.status() != WL_CONNECTED)
81 {
82 delay(500);
83 Serial.print(".");
84 }
85
86 Serial.println("");
87 Serial.print("Connected to ");
88 Serial.println(ssid);
89 Serial.print("IP address: ");
90 Serial.println(WiFi.localIP());
91
92 if (MDNS.begin("esp8266"))
93 {
94 Serial.println("MDNS responder started");
95 }
96
97 server.on("/", handleRoot);
98
99 server.on("/inline", [](){
100 server.send(200, "text/plain", "this works as well");
101 });
102
103 server.onNotFound(handleNotFound);
104
105 server.begin();
106 Serial.println("HTTP server started");
107 }
108
109void loop(void)
110 {
111 server.handleClient();
112 // Wait 60 seconds between measurements.
113 delay(60000);
114
115
116 float lux = vl.readLux(VL6180X_ALS_GAIN_5);
117
118 Serial.print("Lux: "); Serial.println(lux);
119
120 uint8_t range = vl.readRange();
121 uint8_t status = vl.readRangeStatus();
122
123 if (status == VL6180X_ERROR_NONE) {
124 Serial.print("Range: "); Serial.println(range);
125 }
126
127 // Some error occurred, print it out!
128
129 if ((status >= VL6180X_ERROR_SYSERR_1) && (status <= VL6180X_ERROR_SYSERR_5)) {
130 Serial.println("System error");
131 }
132 else if (status == VL6180X_ERROR_ECEFAIL) {
133 Serial.println("ECE failure");
134 }
135 else if (status == VL6180X_ERROR_NOCONVERGE) {
136 Serial.println("No convergence");
137 }
138 else if (status == VL6180X_ERROR_RANGEIGNORE) {
139 Serial.println("Ignoring range");
140 }
141 else if (status == VL6180X_ERROR_SNR) {
142 Serial.println("Signal/Noise error");
143 }
144 else if (status == VL6180X_ERROR_RAWUFLOW) {
145 Serial.println("Raw reading underflow");
146 }
147 else if (status == VL6180X_ERROR_RAWOFLOW) {
148 Serial.println("Raw reading overflow");
149 }
150 else if (status == VL6180X_ERROR_RANGEUFLOW) {
151 Serial.println("Range reading underflow");
152 }
153 else if (status == VL6180X_ERROR_RANGEOFLOW) {
154 Serial.println("Range reading overflow");
155 }
156 delay(50);
157
158
159 ThingSpeak.setField(1, lux);
160 ThingSpeak.setField(2, range);
161 ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
162 }