DIY WiFi Light Sensor
The purpose of this project is to create an IoT device with Arduino which sends data to ThingSpeak overWiFi.
Components and supplies
1
Li-Ion Battery 1000mAh
2
Resistor 1k ohm
1
Single RGB Led
1
Slide Switch
1
Photo resistor
1
Adafruit Feather HUZZAH with ESP8266 WiFi
4
Resistor 2.21k ohm
Apps and platforms
1
Arduino IDE
Project description
Code
Code snippet #1
csharp
1// Light Sensor data transmitted to ThingSpeak via Wifi<br>// Inspired from the Hackster project : https://www.hackster.io/glicmich/adafruit-feather-huzzah-with-esp8266-wifi-8009d2</p><p>// Librairies</p><p>#include <ESP8266Wifi.h> 2#include <WifiClient.h> 3#include <ESP8266WebServer.h> 4#include <ESP8266mDNS.h> 5#include <ThingSpeak.h> 6 7const char* ssid = "your_ssid_box"; // Wireless SID 8const char* password = "your_wifi_password"; // Wireless Passcode</p><p>ESP8266WebServer server(80); // http server</p><p>// what digital pin we're connected to 9int led_r= 13; // red led connected to the digital pin 13 10int led_g = 12; // green led connected to the digital pin 12 11int led_b = 14; // blue led connected to the digital pin 14</p><p>int luminosity = A0; // photoresistor connected to the INPUT (analog pin 0)</p><p>WiFiClient client; 12unsigned int myChannelNumber = 546348; // Channel Number from // ThingSpeak IoT 13const char * myWriteAPIKey = "***********"; // Write API Key 14 15void handleRoot() 16 {</p><p> delay(1000); 17 server.send(200, "text/plain", "Hello world !");</p><p> delay(1000); 18 }</p><p>void handleNotFound() 19 {</p><p> String message = "File Not Found\ 20\ 21"; 22 message += "URI: "; 23 message += server.uri(); 24 message += "\ 25Method: "; 26 message += (server.method() == HTTP_GET)?"GET":"POST"; 27 message += "\ 28Arguments: "; 29 message += server.args(); 30 message += "\ 31"; 32 33 for (uint8_t i=0; i</p><p>void setup(void) 34 { 35 Serial.println("AM2302 test!"); 36 pinMode(led_r,OUTPUT); 37 pinMode(led_g,OUTPUT); 38 pinMode(led_b,OUTPUT); 39 digitalWrite(led_r,LOW); 40 digitalWrite(led_g,LOW); 41 digitalWrite(led_b,LOW); 42 pinMode(luminosity,INPUT);</p><p> Serial.begin(115200); 43 WiFi.begin(ssid, password); 44 ThingSpeak.begin(client); 45 Serial.println("");</p><p> // Wait for connection 46 while (WiFi.status() != WL_CONNECTED) 47 { 48 delay(500); 49 Serial.print("."); 50 // RGB red light 51 digitalWrite(led_r,HIGH); 52 digitalWrite(led_g,LOW); 53 digitalWrite(led_b,LOW); 54 } 55 56 Serial.println(""); 57 Serial.print("Connected to "); 58 Serial.println(ssid); 59 Serial.print("IP address: "); 60 Serial.println(WiFi.localIP()); 61 62 if (MDNS.begin("esp8266")) 63 { 64 Serial.println("MDNS responder started"); 65 }</p><p> server.on("/", handleRoot);</p><p> server.on("/inline", [](){ 66 server.send(200, "text/plain", "this works as well"); 67 });</p><p> server.onNotFound(handleNotFound);</p><p> server.begin(); 68 Serial.println("HTTP server started"); 69 }</p><p>void loop(void) 70 { 71 server.handleClient(); 72 // Blink led from white to blue 73 digitalWrite(led_r,HIGH); 74 digitalWrite(led_g,HIGH); 75 digitalWrite(led_b,HIGH); 76 delay(300); 77 digitalWrite(led_r,LOW); 78 digitalWrite(led_g,LOW); 79 digitalWrite(led_b,HIGH); 80 delay(300); 81 digitalWrite(led_r,HIGH); 82 digitalWrite(led_g,HIGH); 83 digitalWrite(led_b,HIGH); 84 delay(300); 85 digitalWrite(led_r,LOW); 86 digitalWrite(led_g,LOW); 87 digitalWrite(led_b,HIGH); 88 delay(300); 89 digitalWrite(led_r,HIGH); 90 digitalWrite(led_g,HIGH); 91 digitalWrite(led_b,HIGH); 92 delay(300); 93 digitalWrite(led_r,LOW); 94 digitalWrite(led_g,LOW); 95 digitalWrite(led_b,HIGH); 96 // Sensor reading 97 luminosity = analogRead(A0); 98 // Light sensor in % / reverse in order to have 0% for LOW light and 100% for high light 99 luminosity = 100 - map(luminosity,0,1024,0,100); 100 Serial.print(luminosity); 101 Serial.println(" %"); 102 ThingSpeak.setField(1, luminosity); // Field 1 , sending the variable luminosity 103 ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); 104 }
Code snippet #1
csharp
1// Light Sensor data transmitted to ThingSpeak via Wifi<br>// Inspired from the Hackster project : https://www.hackster.io/glicmich/adafruit-feather-huzzah-with-esp8266-wifi-8009d2</p><p>// Librairies</p><p>#include <ESP8266Wifi.h> 2#include <WifiClient.h> 3#include <ESP8266WebServer.h> 4#include <ESP8266mDNS.h> 5#include <ThingSpeak.h> 6 7const char* ssid = "your_ssid_box"; // Wireless SID 8const char* password = "your_wifi_password"; // Wireless Passcode</p><p>ESP8266WebServer server(80); // http server</p><p>// what digital pin we're connected to 9int led_r= 13; // red led connected to the digital pin 13 10int led_g = 12; // green led connected to the digital pin 12 11int led_b = 14; // blue led connected to the digital pin 14</p><p>int luminosity = A0; // photoresistor connected to the INPUT (analog pin 0)</p><p>WiFiClient client; 12unsigned int myChannelNumber = 546348; // Channel Number from // ThingSpeak IoT 13const char * myWriteAPIKey = "***********"; // Write API Key 14 15void handleRoot() 16 {</p><p> delay(1000); 17 server.send(200, "text/plain", "Hello world !");</p><p> delay(1000); 18 }</p><p>void handleNotFound() 19 {</p><p> String message = "File Not Found\ 20\ 21"; 22 message += "URI: "; 23 message += server.uri(); 24 message += "\ 25Method: "; 26 message += (server.method() == HTTP_GET)?"GET":"POST"; 27 message += "\ 28Arguments: "; 29 message += server.args(); 30 message += "\ 31"; 32 33 for (uint8_t i=0; i</p><p>void setup(void) 34 { 35 Serial.println("AM2302 test!"); 36 pinMode(led_r,OUTPUT); 37 pinMode(led_g,OUTPUT); 38 pinMode(led_b,OUTPUT); 39 digitalWrite(led_r,LOW); 40 digitalWrite(led_g,LOW); 41 digitalWrite(led_b,LOW); 42 pinMode(luminosity,INPUT);</p><p> Serial.begin(115200); 43 WiFi.begin(ssid, password); 44 ThingSpeak.begin(client); 45 Serial.println("");</p><p> // Wait for connection 46 while (WiFi.status() != WL_CONNECTED) 47 { 48 delay(500); 49 Serial.print("."); 50 // RGB red light 51 digitalWrite(led_r,HIGH); 52 digitalWrite(led_g,LOW); 53 digitalWrite(led_b,LOW); 54 } 55 56 Serial.println(""); 57 Serial.print("Connected to "); 58 Serial.println(ssid); 59 Serial.print("IP address: "); 60 Serial.println(WiFi.localIP()); 61 62 if (MDNS.begin("esp8266")) 63 { 64 Serial.println("MDNS responder started"); 65 }</p><p> server.on("/", handleRoot);</p><p> server.on("/inline", [](){ 66 server.send(200, "text/plain", "this works as well"); 67 });</p><p> server.onNotFound(handleNotFound);</p><p> server.begin(); 68 Serial.println("HTTP server started"); 69 }</p><p>void loop(void) 70 { 71 server.handleClient(); 72 // Blink led from white to blue 73 digitalWrite(led_r,HIGH); 74 digitalWrite(led_g,HIGH); 75 digitalWrite(led_b,HIGH); 76 delay(300); 77 digitalWrite(led_r,LOW); 78 digitalWrite(led_g,LOW); 79 digitalWrite(led_b,HIGH); 80 delay(300); 81 digitalWrite(led_r,HIGH); 82 digitalWrite(led_g,HIGH); 83 digitalWrite(led_b,HIGH); 84 delay(300); 85 digitalWrite(led_r,LOW); 86 digitalWrite(led_g,LOW); 87 digitalWrite(led_b,HIGH); 88 delay(300); 89 digitalWrite(led_r,HIGH); 90 digitalWrite(led_g,HIGH); 91 digitalWrite(led_b,HIGH); 92 delay(300); 93 digitalWrite(led_r,LOW); 94 digitalWrite(led_g,LOW); 95 digitalWrite(led_b,HIGH); 96 // Sensor reading 97 luminosity = analogRead(A0); 98 // Light sensor in % / reverse in order to have 0% for LOW light and 100% for high light 99 luminosity = 100 - map(luminosity,0,1024,0,100); 100 Serial.print(luminosity); 101 Serial.println(" %"); 102 ThingSpeak.setField(1, luminosity); // Field 1 , sending the variable luminosity 103 ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); 104 }
Downloadable files
Light Sensor - Fritzing
Light Sensor - Fritzing

Light Sensor - Fritzing
Light Sensor - Fritzing

Documentation
Pi_C3_A8ce1+2.5mm+epaisseur.STL
Pi_C3_A8ce1+2.5mm+epaisseur.STL
Comments
Only logged in users can leave comments