Showing posts with label xbmc. Show all posts
Showing posts with label xbmc. Show all posts

Raspberry PI CarPC September 2014 updates

online engineering degree/engineering degree online/online engineering courses/engineering technology online/engineering courses online/engineering technician degree online/online engineering technology/electronic engineering online
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

Control XBMC from the Raspberry PI GPIO's

online engineering degree/engineering degree online/online engineering courses/engineering technology online/engineering courses online/engineering technician degree online/online engineering technology/electronic engineering online
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
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):
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:

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!