Networking

Hardware

Software

Consultation

 

Raspberry PI Infrared Sensor

 
 

Adding a Infrared Sensor

When using a Raspberry PI as a Home Theater PC using XBMC/Kodi, having an infrared remote can make the experience more user friendly.

This is how I added a IR sensor to my Raspberry PI's.

This is shown using a PI B, but I have done the same with all subsequent versions.
Lets start with the hardware, here's what you'll need:

  • Raspberry PI - B, B+, 2B - With XBMC/Kodi installed and running.
  • Case - Appropriate for your Raspberry PI
  • Remote Control - I used the remote from my Cable Providers DVR.
  • Infrared Sensor TSOP38238 - http://adafruit.com/products/157
  • Soldering Gun
  • Solder

Next lets bend the leads on the sensor so we can solder them directly to the Raspberry PI.
This is my preference, since I don't use the PI for anything other than a HTPC.

Here is the process I use:

  1. Mark the leads against the pins of the PI.
  2. With a small set of pliers, bend the third lead down, it should be lined up with the twelfth pin on the PI.
  3. A small way down the third lead, past where you just bent (this ensures that it will not touch the second), bend the lead toward the second.
  4. Directly below the second lead bend the third pin down again. This should line up the third lead with the second.
  5. Bend the second lead down, the mark should be lined up with the sixth pin on the PI.
  6. Bend the first lead down, it should be lined up with the first pin on the PI.
  7. Cut all of the leads on the IR so they are the same length downward.

The IR Sensor needs to be soldered to PINS 1, 6, and 12. Which correspond to 3.3V, GOUND, and GPIO 18.

It should be attached as follows:

Drill the top of the case to allow the IR Sensor to be seen.

That's pretty much it for the hardware, lets move on to the software portion.

I already have a "lircd.conf" file that works with the "DVD" button on my remote, you can cut and paste it into '~/lircd.conf'.

begin remote

	name				SHAW
	bits				16
	flags				SPACE_ENC|CONST_LENGTH
	eps				30
	aeps				100

	header				9057	4435
	one				650	1585
	zero				650	479
	ptrail				647
	repeat				9056	2175
	pre_data_bits			16
	pre_data			0xA25D
	gap				107880
	toggle_bit_mask			0x0

	begin codes
		key_ok			0x847B
		key_up			0x01FE
		key_down		0x817E
		key_left		0x8A75
		key_right		0xB24D
#		key_power		0x48B7
		key_exit		0x44BB
		key_info		0x6897
		key_menu		0x21DE
		key_rewind		0x9867
		key_title		0x14EB
		key_play		0xA857
		key_fastforward		0xC837
		key_stop		0x28D7
		key_pause		0x00FF
		key_video_next		0xE718
	end codes

end remote

Here's how to get any remote to work..."

  1. Start the Raspberry PI, then log into a shell, using ssh.
  2. Kill an lircd services but running:
    kill &(pidof lircd)
  3. Rename any existing lircd.conf file to get it out of the way:
    mv ~/lircd.conf ~/lircd.conf.orig
  4. We are going to run 'irrecord' so we need a list of key names. These can be obtained using the following:
    irrecord --list-namespace
  5. Now we can run the 'irrecord' comand. Follow all of the instructions to the letter, this can take some time, and it may seem like nothing is happening, but it should eventually work everything out:
    irrecord -d /dev/lirc0 ~/lircd.conf

Here is a list of Key Name's, and what there linked to:

KEY_0				zero
KEY_1				one
KEY_2				two
KEY_3				three
KEY_4				four
KEY_5				five
KEY_6				six
KEY_7				seven
KEY_8				eight
KEY_9				nine
KEY_AGAIN			skipminus
KEY_ANGLE			display
KEY_AUDIO			mymusic
KEY_BACK			back
KEY_BACKSPACE		back
KEY_BLUE			blue
KEY_BOOKMARKS		playlist
KEY_CAMERA			mypictures
KEY_CHANNELDOWN		channelminus
KEY_CHANNELDOWN		pageminus
KEY_CHANNELUP		channelplus
KEY_CHANNELUP		pageplus
KEY_CLEAR			clear
KEY_CLOSE			back
KEY_DELETE			clear
KEY_DOWN			down
KEY_DVD				menu
KEY_EIGHT			eight
KEY_EJECTCD			eject
KEY_EJECTCLOSECD	eject
KEY_ENTER			enter
KEY_ENTER			select
KEY_EPG				guide
KEY_EPG				title
KEY_ESC				back
KEY_EXIT			back
KEY_FASTFORWARD		forward
KEY_FIVE			five
KEY_FORWARD			forward
KEY_FOUR			four
KEY_GREEN			green
KEY_HOME			start
KEY_INFO			info
KEY_LANGUAGE		language
KEY_LEFT			left
KEY_MEDIA			start
KEY_MENU			menu
KEY_MHP				mypictures
KEY_MUTE			mute
KEY_NEXT			skipplus
KEY_NEXTSONG		skipplus
KEY_NINE			nine
KEY_NUMERIC_0		zero
KEY_NUMERIC_1		one
KEY_NUMERIC_2		two
KEY_NUMERIC_3		three
KEY_NUMERIC_4		four
KEY_NUMERIC_5		five
KEY_NUMERIC_6		six
KEY_NUMERIC_7		seven
KEY_NUMERIC_8		eight
KEY_NUMERIC_9		nine
KEY_NUMERIC_POUND	hash
KEY_NUMERIC_STAR	star
KEY_OK				select
KEY_ONE				one
KEY_PAUSE			pause
KEY_PHOTO			mypictures
KEY_PLAYPAUSE		play
KEY_PLAY			play
KEY_POWER			power
KEY_PREVIOUS		skipminus
KEY_PREVIOUSSONG	skipminus
KEY_PROG1			start
KEY_PROPS			info
KEY_PVR				recordedtv
KEY_RADIO			liveradio
KEY_RECORD			record
KEY_RED				red
KEY_REPLAY			skipminus
KEY_REWIND			reverse
KEY_RIGHT			right
KEY_SELECT			start
KEY_SEVEN			seven
KEY_SIX				six
KEY_SKIP			skipplus
KEY_STOPCD			stop
KEY_STOP			stop
KEY_SUBTITLE		subtitle
KEY_TEXT			teletext
KEY_THREE			three
KEY_TITLE			title
KEY_TUNER			mytv
KEY_TV				mytv
KEY_TWO				two
KEY_UP				up
KEY_VIDEO			myvideo
KEY_VOLUMEDOWN		volumeminus
KEY_VOLUMEUP		volumeplus
KEY_YELLOW			yellow
KEY_ZERO			zero
KEY_ZOOM			display

Here's the list of key names, from 'irrecord --list-namespace':

KEY_0
KEY_102ND
KEY_10CHANNELSDOWN
KEY_10CHANNELSUP
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_A
KEY_AB
KEY_ADDRESSBOOK
KEY_AGAIN
KEY_ALTERASE
KEY_ANGLE
KEY_APOSTROPHE
KEY_ARCHIVE
KEY_AUDIO
KEY_AUX
KEY_B
KEY_BACK
KEY_BACKSLASH
KEY_BACKSPACE
KEY_BASSBOOST
KEY_BATTERY
KEY_BLUE
KEY_BLUETOOTH
KEY_BOOKMARKS
KEY_BREAK
KEY_BRIGHTNESS_CYCLE
KEY_BRIGHTNESSDOWN
KEY_BRIGHTNESSUP
KEY_BRIGHTNESS_ZERO
KEY_BRL_DOT10
KEY_BRL_DOT1
KEY_BRL_DOT2
KEY_BRL_DOT3
KEY_BRL_DOT4
KEY_BRL_DOT5
KEY_BRL_DOT6
KEY_BRL_DOT7
KEY_BRL_DOT8
KEY_BRL_DOT9
KEY_C
KEY_CALC
KEY_CALENDAR
KEY_CAMERA
KEY_CANCEL
KEY_CAPSLOCK
KEY_CD
KEY_CHANNEL
KEY_CHANNELDOWN
KEY_CHANNELUP
KEY_CHAT
KEY_CLEAR
KEY_CLOSE
KEY_CLOSECD
KEY_COFFEE
KEY_COMMA
KEY_COMPOSE
KEY_COMPUTER
KEY_CONFIG
KEY_CONNECT
KEY_CONTEXT_MENU
KEY_COPY
KEY_CUT
KEY_CYCLEWINDOWS
KEY_D
KEY_DASHBOARD
KEY_DATABASE
KEY_DEL_EOL
KEY_DEL_EOS
KEY_DELETE
KEY_DELETEFILE
KEY_DEL_LINE
KEY_DIGITS
KEY_DIRECTION
KEY_DIRECTORY
KEY_DISPLAY_OFF
KEY_DISPLAYTOGGLE
KEY_DOCUMENTS
KEY_DOLLAR
KEY_DOT
KEY_DOWN
KEY_DVD
KEY_E
KEY_EDIT
KEY_EDITOR
KEY_EJECTCD
KEY_EJECTCLOSECD
KEY_EMAIL
KEY_END
KEY_ENTER
KEY_EPG
KEY_EQUAL
KEY_ESC
KEY_EURO
KEY_EXIT
KEY_F10
KEY_F11
KEY_F12
KEY_F13
KEY_F14
KEY_F15
KEY_F1
KEY_F16
KEY_F17
KEY_F18
KEY_F19
KEY_F20
KEY_F21
KEY_F22
KEY_F23
KEY_F24
KEY_F2
KEY_F
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_FASTFORWARD
KEY_FAVORITES
KEY_FILE
KEY_FINANCE
KEY_FIND
KEY_FIRST
KEY_FN
KEY_FN_1
KEY_FN_2
KEY_FN_B
KEY_FN_D
KEY_FN_E
KEY_FN_ESC
KEY_FN_F
KEY_FN_F10
KEY_FN_F1
KEY_FN_F11
KEY_FN_F12
KEY_FN_F2
KEY_FN_F3
KEY_FN_F4
KEY_FN_F5
KEY_FN_F6
KEY_FN_F7
KEY_FN_F8
KEY_FN_F9
KEY_FN_S
KEY_FORWARD
KEY_FORWARDMAIL
KEY_FRAMEBACK
KEY_FRAMEFORWARD
KEY_FRONT
KEY_G
KEY_GAMES
KEY_GOTO
KEY_GRAPHICSEDITOR
KEY_GRAVE
KEY_GREEN
KEY_H
KEY_HANGEUL
KEY_HANJA
KEY_HELP
KEY_HENKAN
KEY_HIRAGANA
KEY_HOME
KEY_HOMEPAGE
KEY_HP
KEY_I
KEY_INFO
KEY_INSERT
KEY_INS_LINE
KEY_ISO
KEY_J
KEY_K
KEY_KATAKANA
KEY_KATAKANAHIRAGANA
KEY_KBDILLUMDOWN
KEY_KBDILLUMTOGGLE
KEY_KBDILLUMUP
KEY_KEYBOARD
KEY_KP0
KEY_KP1
KEY_KP2
KEY_KP3
KEY_KP4
KEY_KP5
KEY_KP6
KEY_KP7
KEY_KP8
KEY_KP9
KEY_KPASTERISK
KEY_KPCOMMA
KEY_KPDOT
KEY_KPENTER
KEY_KPEQUAL
KEY_KPJPCOMMA
KEY_KPLEFTPAREN
KEY_KPMINUS
KEY_KPPLUS
KEY_KPPLUSMINUS
KEY_KPRIGHTPAREN
KEY_KPSLASH
KEY_L
KEY_LANGUAGE
KEY_LAST
KEY_LEFT
KEY_LEFTALT
KEY_LEFTBRACE
KEY_LEFTCTRL
KEY_LEFTMETA
KEY_LEFTSHIFT
KEY_LINEFEED
KEY_LIST
KEY_LOGOFF
KEY_M
KEY_MACRO
KEY_MAIL
KEY_MAX
KEY_MEDIA
KEY_MEDIA_REPEAT
KEY_MEMO
KEY_MENU
KEY_MESSENGER
KEY_MHP
KEY_MINUS
KEY_MODE
KEY_MOVE
KEY_MP3
KEY_MSDOS
KEY_MUHENKAN
KEY_MUTE
KEY_N
KEY_NEW
KEY_NEWS
KEY_NEXT
KEY_NEXTSONG
KEY_NUMERIC_0
KEY_NUMERIC_1
KEY_NUMERIC_2
KEY_NUMERIC_3
KEY_NUMERIC_4
KEY_NUMERIC_5
KEY_NUMERIC_6
KEY_NUMERIC_7
KEY_NUMERIC_8
KEY_NUMERIC_9
KEY_NUMERIC_POUND
KEY_NUMERIC_STAR
KEY_NUMLOCK
KEY_O
KEY_OK
KEY_OPEN
KEY_OPTION
KEY_P
KEY_PAGEDOWN
KEY_PAGEUP
KEY_PASTE
KEY_PAUSE
KEY_PAUSECD
KEY_PC
KEY_PHONE
KEY_PLAY
KEY_PLAYCD
KEY_PLAYER
KEY_PLAYPAUSE
KEY_POWER
KEY_POWER2
KEY_PRESENTATION
KEY_PREVIOUS
KEY_PREVIOUSSONG
KEY_PRINT
KEY_PROG1
KEY_PROG2
KEY_PROG3
KEY_PROG4
KEY_PROGRAM
KEY_PROPS
KEY_PVR
KEY_Q
KEY_QUESTION
KEY_R
KEY_RADIO
KEY_RECORD
KEY_RED
KEY_REDO
KEY_REFRESH
KEY_REPLY
KEY_RESERVED
KEY_RESTART
KEY_REWIND
KEY_RFKILL
KEY_RIGHT
KEY_RIGHTALT
KEY_RIGHTBRACE
KEY_RIGHTCTRL
KEY_RIGHTMETA
KEY_RIGHTSHIFT
KEY_RO
KEY_S
KEY_SAT
KEY_SAT2
KEY_SAVE
KEY_SCALE
KEY_SCREEN
KEY_SCROLLDOWN
KEY_SCROLLLOCK
KEY_SCROLLUP
KEY_SEARCH
KEY_SELECT
KEY_SEMICOLON
KEY_SEND
KEY_SENDFILE
KEY_SETUP
KEY_SHOP
KEY_SHUFFLE
KEY_SLASH
KEY_SLEEP
KEY_SLOW
KEY_SOUND
KEY_SPACE
KEY_SPELLCHECK
KEY_SPORT
KEY_SPREADSHEET
KEY_STOP
KEY_STOPCD
KEY_SUBTITLE
KEY_SUSPEND
KEY_SWITCHVIDEOMODE
KEY_SYSRQ
KEY_T
KEY_TAB
KEY_TAPE
KEY_TEEN
KEY_TEXT
KEY_TIME
KEY_TITLE
KEY_TUNER
KEY_TV
KEY_TV2
KEY_TWEN
KEY_U
KEY_UNDO
KEY_UNKNOWN
KEY_UP
KEY_UWB
KEY_V
KEY_VCR
KEY_VCR2
KEY_VENDOR
KEY_VIDEO
KEY_VIDEO_NEXT
KEY_VIDEOPHONE
KEY_VIDEO_PREV
KEY_VOICEMAIL
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_W
KEY_WAKEUP
KEY_WIMAX
KEY_WLAN
KEY_WORDPROCESSOR
KEY_WWW
KEY_X
KEY_XFER
KEY_Y
KEY_YELLOW
KEY_YEN
KEY_Z
KEY_ZENKAKUHANKAKU
KEY_ZOOM
KEY_ZOOMIN
KEY_ZOOMOUT
KEY_ZOOMRESET
BTN_0
BTN_1
BTN_2
BTN_3
BTN_4
BTN_5
BTN_6
BTN_7
BTN_8
BTN_9
BTN_A
BTN_B
BTN_BACK
BTN_BASE
BTN_BASE2
BTN_BASE3
BTN_BASE4
BTN_BASE5
BTN_BASE6
KEY_VCR2
KEY_VENDOR
KEY_VIDEO
KEY_VIDEO_NEXT
KEY_VIDEOPHONE
KEY_VIDEO_PREV
KEY_VOICEMAIL
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_W
KEY_WAKEUP
KEY_WIMAX
KEY_WLAN
KEY_WORDPROCESSOR
KEY_WWW
KEY_X
KEY_XFER
KEY_Y
KEY_YELLOW
KEY_YEN
KEY_Z
KEY_ZENKAKUHANKAKU
KEY_ZOOM
KEY_ZOOMIN
KEY_ZOOMOUT
KEY_ZOOMRESET
BTN_0
BTN_1
BTN_2
BTN_3
BTN_4
BTN_5
BTN_6
BTN_7
BTN_8
BTN_9
BTN_A
BTN_B
BTN_BACK
BTN_BASE
BTN_BASE2
BTN_BASE3
BTN_BASE4
BTN_BASE5
BTN_BASE6
BTN_C
BTN_DEAD
BTN_DIGI
BTN_EXTRA
BTN_FORWARD
BTN_GAMEPAD
BTN_GEAR_DOWN
BTN_GEAR_UP
BTN_JOYSTICK
BTN_LEFT
BTN_MIDDLE
BTN_MISC
BTN_MODE
BTN_MOUSE
BTN_PINKIE
BTN_RIGHT
BTN_SELECT
BTN_SIDE
BTN_START
BTN_STYLUS
BTN_STYLUS2
BTN_TASK
BTN_THUMB
BTN_THUMB2
BTN_THUMBL
BTN_THUMBR
BTN_TL
BTN_TL2
BTN_TOOL_AIRBRUSH
BTN_TOOL_BRUSH
BTN_TOOL_DOUBLETAP
BTN_TOOL_FINGER
BTN_TOOL_LENS
BTN_TOOL_MOUSE
BTN_TOOL_PEN
BTN_TOOL_PENCIL
BTN_TOOL_QUADTAP
BTN_TOOL_RUBBER
BTN_TOOL_TRIPLETAP
BTN_TOP
BTN_TOP2
BTN_TOUCH
BTN_TR
BTN_TR2
BTN_TRIGGER
BTN_WHEEL
BTN_X
BTN_Y
BTN_Z