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