미세먼지 센서(GP2Y1014AU0F)


GP2Y1014AU0F 미세먼지 센서


Product

제품 구입처(product link): GP2Y1014AU0F Sensor


GP2Y1014AU0F Test

Pinmap

arduino + GP2Y1014AU0F sensor

Source

sample code is here



Using dht11 & 0.96” OLED(Organic Light Emitting Diode)

0.96” OLED test
dht11 Sensor test

Source

// created by. Nicky
#include "U8glib.h"
#include "DHT.h"
# dhtPing 6
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
DHT dht(dhtPin, DHT11);

#define USE_AVG

// Arduino pin numbers.
const int sharpLEDPin = 7;   // Arduino digital pin 7 connect to sensor LED.
const int sharpVoPin = A0;   // Arduino analog pin 0 connect to sensor Vo.

// For averaging last N raw voltage readings.
#ifdef USE_AVG
#define N 100
static unsigned long VoRawTotal = 0;
static int VoRawCount = 0;
#endif // USE_AVG

// Set the typical output voltage in Volts when there is zero dust. 
static float Voc = 0.6;

// Use the typical sensitivity in units of V per 100ug/m3.
const float K = 0.5;

/////////////////////////////////////////////////////////////////////////////

// Helper functions to print a data value to the serial monitor.
void printValue(String text, unsigned int value, bool isLast = false) {
	Serial.print(text);
	Serial.print("=");
	Serial.print(value);
	if (!isLast) {
		Serial.print(", ");
	}
}
void printFValue(String text, float value, String units, bool isLast = false) {
	Serial.print(text);
	Serial.print("=");
	Serial.print(value);
	Serial.print(units);
	if (!isLast) {
		Serial.print(", ");
	}
}

/////////////////////////////////////////////////////////////////////////////

// Arduino setup function.
void setup() {
	// Set LED pin for output.
	pinMode(sharpLEDPin, OUTPUT);

	// Start the hardware serial port for the serial monitor.
	Serial.begin(9600);

	// Wait two seconds for startup.
	delay(2000);
	Serial.println("");
	Serial.println("GP2Y1014AU0F Demo");
	Serial.println("=================");
}

// Arduino main loop.
void loop() {  
	// Turn on the dust sensor LED by setting digital pin LOW.
	digitalWrite(sharpLEDPin, LOW);

	// Wait 0.28ms before taking a reading of the output voltage as per spec.
	delayMicroseconds(280);

	// Record the output voltage. This operation takes around 100 microseconds.
	int VoRaw = analogRead(sharpVoPin);

	// Turn the dust sensor LED off by setting digital pin HIGH.
	digitalWrite(sharpLEDPin, HIGH);

	// Wait for remainder of the 10ms cycle = 10000 - 280 - 100 microseconds.
	delayMicroseconds(9620);

	// Print raw voltage value (number from 0 to 1023).
  #ifdef PRINT_RAW_DATA
	printValue("VoRaw", VoRaw, true);
	Serial.println("");
  #endif // PRINT_RAW_DATA

	// Use averaging if needed.
	float Vo = VoRaw;
  #ifdef USE_AVG
	VoRawTotal += VoRaw;
	VoRawCount++;
	if ( VoRawCount >= N ) {
		Vo = 1.0 * VoRawTotal / N;
		VoRawCount = 0;
		VoRawTotal = 0;
	} else {
		return;
	}
  #endif // USE_AVG

	// Compute the output voltage in Volts.
	Vo = Vo / 1024.0 * 5.0;
	printFValue("Vo", Vo*1000.0, "mV");

	// Convert to Dust Density in units of ug/m3.
	float dV = Vo - Voc;
	if ( dV < 0 ) {
		dV = 0;
		Voc = Vo;
	}
	float dustDensity = dV / K * 100.0;
	printFValue("DustDensity", dustDensity, "ug/m3", true);
	Serial.println("");

	//DHT11
	int h = dht.readHumidity();
	int t = dht.readTemperature();


	//lcd print
	u8g.firstPage();
	do{
		u8g.setFont(u8g_font_unifont);
		u8g.setPrintPos(0,10);
		u8g.print("Dust ug/m3");
		u8g.setPrintPos(0,25);
		u8g.print(dustDensity);
		u8g.setPrintPos(0,40);
		u8g.print(h);
		u8g.drawStr(40,40,"%");
		u8g.setPrintPos(0,55);
		u8g.print(t);
		u8g.drawStr(40,55,"C");

	}while(u8g.nextPage());

} // END PROGRAM

REF

sharp-sensor-demos
0.96” Lcd test
u8glib