Lesson 26 Flame Sensor

Share for us
Share on facebook
Share on twitter
Share on pinterest
Share on whatsapp


A flame sensor module performs detection by capturing infrared wavelengths from flame. It can be used to detect and warn of flames.


– 1 * Raspberry Pi

– 1 * Network cable (or USB wireless network adapter)

– 1 * Flame sensor module

– Several jumper wires

Experimental Principle

There are several types of flame sensors. In this experiment, we will use a far-infrared flame sensor. It can detect infrared light with a wavelength ranging from 700nm to 1000nm. A far-infrared flame probe converts the strength changes of the external infrared light into current changes. And then it converts analog quantities into digital ones.

In this experiment, connect pin DO of flame sensor module to a GPIO of Raspberry Pi to detect flame existence by programming.

Experimental Procedures

Step 1: Build the circuit

                 Raspberry Pi               Flame Sensor

                           GPIO0 ——————————– DO

                              3.3V ———————————  +

                             GND ———————————  G

Step 2: Edit and save the code (see path/Rpi_SensorKit_code/25_flameSensor/flameSensor.c)

Step 3: Compile

              gcc  flameSensor.c  -lwiringPi

Step 4: Run


Now, ignite a lighter in the range of 80 cm near the module and a string “Detected Flame!” will be displayed on the screen.


#include <wiringPi.h>
#include <stdio.h>

#define FlamePin 0

void myISR(void)
	printf("Detected Flame !\n");

int main(void)
	if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
		printf("setup wiringPi failed !\n");
		return 1; 

	if(wiringPiISR(FlamePin, INT_EDGE_FALLING, &myISR)){
		printf("setup interrupt failed !\n");	
		return 1; 


	return 0;

Python Code

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time

FlamePin = 11

def init():
	GPIO.setup(FlamePin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def myISR(ev=None):
	print "Flame is detected !"

def loop():
	GPIO.add_event_detect(FlamePin, GPIO.FALLING, callback=myISR)
	while True:

if __name__ == '__main__':
	except KeyboardInterrupt: 
		print 'The end !'