Hello!
I have made some progress on my CarPC project and here are the main changes:
- support for Raspberry PI Model B+
- update XBMC to 13.2 stable
- update kernel to 3.16.0
- reworked radio(rds is available but not yet enabled because of some high cpu usage - will fix this shortly)
- update system available(only ~150MB for download instead of a whole image)
- file system restructuring
- new skin
- forum released(Engineeryng-Diy Forum)
First of all the installation process(this is only for a fresh install, update coming soon):
- write a fresh image with the latest Raspbian from http://www.raspberrypi.org/downloads/
- copy the carpc folder in /home/pi/ on the SD card(gt this folder from my Downloads page/updates)
- plug the image in RPI and start it
--- use the auto menu to expand file system
--- change password to 'a'
--- enable boot into desktop-> Desktop Log in as user 'pi' at the graphical desktop
--- enable ssh, disable overscan, disable serial messages
--- Change Internalisation Options -> Locale and Timezone to your country
- connect a keyboard and open the terminal or connect using ssh
- change user permissions for pi: sudo chmod -R a+rwx /home/pi
- type cd /home/pi/carpc/ and then ./carpc-install.sh and then wait for the system to install
Note! If you get Cannot mkdir: Permission denied running this script then you should type sudo chmod -R a+rwx /home/pi/carpc/ and then run the script again.
- after this, you should reboot(sudo reboot)
Calibrate the touch screen
Forget about xinput-calibrator and X11 calibration metods.
If you have calibration file(/home/pi/touchscreen_axes_calib) from a previous installation you can use it.
If you don't, then use the touch screen calibration plugin. This plugin works if you set correctly the Raspberry PI resolution in /boot/config.txt. Follow the steps in this video.
Add a map for navigation
Go to Navit Planet Extractor and download a .bin file for your area.
Copy the .bin file in your RPI card in /home/pi/.navit/ folder. Rename the .bin file to map1.bin, map2.bin, map3.bin or map4.bin.
Setup the GPS receiver
1.
For USB devices. After plugging the device into the usb port type dmesg
and you should see somewhere that a new device was mapped on
/dev/tty... Most probably the file name would be /dev/ttyACM0.
2. For Serial(UART) modules. The device will have the file name as /dev/ttyAMA0.
You
can test that the device is connected to a file name by calling
cat/dev/ttyAMA0, for example and you should see some NMEA output.
Now, copy this file name and put it in the file /home/pi/StartCarPC in the section:
# Start gpsd
# /dev/ttyAMA0 - RPI serial port
# /dev/ttyACM0 - usb port
sudo killall gpsd
gpsd /dev/ttyAMA0
Voice configuration for Navit
Each
time a road indication has to be made, Navit will execute the file
/home/pi/.navit/speech.sh with the indication text. This file will play a
sound and the speak the indication, through speakers.
aplay -r 44100 /home/pi/.navit/notification3.wav & sleep 0.7
&& espeak -ven+f4 -s150 -a 150 -p 50 "$1" --stdout | aplay
/home/pi/.navit/notification3.wav - the sound that will be played each time before an indication
-ven+f4 - female voice number 4
-s150 - speed 150 words per minute
-a150 - amplitude
-p50 - pitch
You can find more settings in the espeak manual
If you don't want the voice guidance you can press the speaker button in Navit and it will be turned off.
Configure the Controller
The
controller can be easily used with Steering wheel controls or other
physical controls in your car.
You can set the configuration file like in this post.
Change the car logo in the Home screen
The car logo is a png file in /home/pi/config/logo.png.
New skin
Thanks to Doru, a new skin is available: CarPC-touch_carbon.
Comments moving to forum
From now on, a forum is available for any issues/suggestions(http://engineeringdiy.freeforums.org/). Due to this, comments on this blog will be disabled.
Have fun!
Andrei
Showing posts with label xbmc. Show all posts
Showing posts with label xbmc. Show all posts
Sunday, September 28, 2014
Sunday, November 10, 2013
Control XBMC from the Raspberry PI GPIO's
I have recently worked on adding external controls for my Raspberry PI CarPC project because while driving it is better to have some physical controls to rely on, rather than looking at the touch screen to find the buttons.
This post provide information on how to set up buttons or rotary encoders to control XBMC from Raspberry PI.
Rotary encoder
Rotary encoders are very cheap and very nice controls(eBay link). You can find them in car stereos for volume control. You can also use them to browse through menu items or to skip to next song etc.
They are looking very similar to a potentiometer, but there are major differences: they can be turned in both directions with infinite steps(you know just the direction of the spin), they provide digital output, a full rotation have a number of steps and they have push button also.
Connections for Raspberry PI should be done as follows:
+ pin to 3.3V
GND pin to Raspberry PI GND
SW to one GPIO
CLK and DT to two GPIOs
When the push button is pressed the pin labelled SW is connected to GND. This can be set up as any push button(see below).
Push button
We have to use the first setup(with pull up resistor) for the tool to work properly. So, for the push button of the rotary encoder above, we have to cable it like this:
The tool
I have created a tool to allow you interface rotary encoders(and also push buttons) with Raspberry PI GPIO's. Also you can set an XBMC command to be executed for click, left rotation and right rotation.
The tool can be otbained from my Google Code project(link to page).
It is very easy to use it. You just have to accomplish two steps:
- copy rpi-xbmc-remote in a place where it can be accessed from anywhere(e.g. /usr/bin)
- call it using sudo rpi-xbmc-remote /path/to/configuration/file
The configuration file
Example:
This post provide information on how to set up buttons or rotary encoders to control XBMC from Raspberry PI.
Rotary encoder
Rotary encoders are very cheap and very nice controls(eBay link). You can find them in car stereos for volume control. You can also use them to browse through menu items or to skip to next song etc.
They are looking very similar to a potentiometer, but there are major differences: they can be turned in both directions with infinite steps(you know just the direction of the spin), they provide digital output, a full rotation have a number of steps and they have push button also.
Connections for Raspberry PI should be done as follows:
+ pin to 3.3V
GND pin to Raspberry PI GND
SW to one GPIO
CLK and DT to two GPIOs
When the push button is pressed the pin labelled SW is connected to GND. This can be set up as any push button(see below).
Push button
A push button can have two states on or off. There are two ways to hook up a button to a logical circuit(e.g Raspberry PI GPIO's):
I have created a tool to allow you interface rotary encoders(and also push buttons) with Raspberry PI GPIO's. Also you can set an XBMC command to be executed for click, left rotation and right rotation.
The tool can be otbained from my Google Code project(link to page).
It is very easy to use it. You just have to accomplish two steps:
- copy rpi-xbmc-remote in a place where it can be accessed from anywhere(e.g. /usr/bin)
- call it using sudo rpi-xbmc-remote /path/to/configuration/file
The configuration file
Example:
ip:localhost
button:7:KB:return
encoder:clk:23:KB:up:dt:24:KB:down
The
configuration file can reside anywhere on the disk. It provides a way
to define two kind of inputs for XBMC: regular button and rotary
encoder. Lines should be less than 100 characters
in length. Lines starting with # are comments and are not being
processed.
Example of regular button definition:
button:7:KB:return
- 'button' means
it is a regular button
- '7' means use
GPIO7 for this button
- 'KB' means XBMC
device map
"KB" -
Standard keyboard map
"XG" -
Xbox Gamepad
"R1" -
Xbox Remote
"R2" -
Xbox Universal Remote
"LI:devicename"
- valid LIRC device map where 'devicename' is the actual
name of the LIRC
device
- 'return' means
XBMC button name to be called(see XBMC keymaps)
Example of rotary
encoder definition:
encoder:clk:23:KB:up:dt:24:KB:down
- 'encoder' means
it is a rotary encoder
- '23' means use
GPIO23 for rotary encoder CLK
- 'KB' means XBMC
device map for rotary encoder left turn(same as above)
- 'up' means XBMC
button name to be sent for left turn of the rotary encoder
- '24' means use
GPIO24 for rotary encoder DT
- 'KB' means XBMC
device map for rotary encoder right turn(same as above)
- 'return' means
XBMC button name to be called(see XBMC keymaps)
Keep in mind!
You have to put a pull up resistor for every push button you define in the configuration file. If you don't do this then the state of the button will be variable when not pressed(it will oscillate between 0 and 1) and it will behave like it is pressed randomly.
Have fun!
Labels:
controller,
debian wheezy,
embedded,
gpio,
linux,
push button,
raspberry pi,
xbmc
Subscribe to:
Posts (Atom)
