I have worked on some new features for my CarPC. Here are the changes:
First, some videos:
The latest image can be downloaded from the Downloads link on the right of this blog(username:pi, password:a).
Note!
If you do not have any rotary encoder connected or any buttons with a resistor you need to disable the carpc-controller application. You can do this by editing the file /home/pi/StartCarPC and commenting the line which contains carpc-controller.
Hardware updates:
- added ViewHd HDMI to HDMI+audio board
- added SI4703 FM Radio module
- created an expansion board with fm radio module and three connectors(one for GPS receiver and two for rotary encoders)
- added a very cheap board to mix two output channels(RPI and radio) into a single output(which goes to the amplifier, in my case AUX input of the car player)
Software updates:
- added loading movie(created by Doru Ignat)
- added a python server responsible for controlling the radio module via i2c
- added new XBMC plugin for controlling the FM Radio(including storing up to 5 radio stations in a file)
- improved carpc-controller to support sending multiple commands for a single button press or encoder turn(e.g. turning right one rotary encoder can increase the volume in XBMC and the volume of radio at the same time)
- improved the speed in Navit clicking
- improved the Navit OSD for both day and night setup(Navit switches automatically teh setup based on the time of the system).
- added time synchronization mechanism based on GPS readings(RPI does not have a real time clock)
The expansion board.
RE1 and RE2 are rotary encoders.
The FM Radio driver and Python server.
The FM Radio module is connected using i2c communication interface(GPIO0-SDA and GPIO1-SCL of the PI).
The radio driver is contained in the si4703 python class. The Radio server is implemented in the file radio_server.py(which is automatically started at boot time). This server simply opens a socket and waits for data. After any data is received, a couple of if-else statements different radio functions are called base on the incoming data.
The available commands are:
seek_right - search for a new station in the right of the current frequencyThe server reply with the current frequency for each command.
seek_left - search for a new station in the left of the current frequency
tune_xx.x - set the current frequency to xx.x MHz
volume_xx - set the volume of the radio module to xx. xx should be between 0 and 15
toggle_mute - toggle mute
get_frequency - get the current frequency
Simple test.
To understand how this radio server-client works you can make the folowing experiment:
1. Plug the gpio expansion board(or wire the radio module to the PI as in the above schematic)
2. [Server] Connect using one ssh window(I use Putty) to the PI and enter the folowing commands:
cd radio
sudo python radio_server.py
The radio server should initialize the radio module and start the server.
3. [Client] go to the radio folder and use radio_client.py to send commands o the radio server, like in the folowing picture:
The file radio_client.py simply opens an UDP socket, puts an '_' character between arguments and send the obtained string to the server socket.
The radioFM XBMC plugin.
In order to simplify user interaction I have created a new XBMC plugin(radioFM). Its purpose is to allow interacting with the Radio Server(and with the Radio Module) using the touch screen. In order to be able to use this plugin you need to have the radio_server.py started and the FM module plugged in.
Features:
- The current frequency is displayed at the top.
- The left and right arrow buttons are for seeking to the next channel(left or right).
- The bottom 5 buttons are preset channels(these are kept in a file so they are available after reboot).
- The Set/Tune Channels button is used for changing the mode in which the bottom buttons are operating. By default they are in the 'Tune' mode, so if you presss them the radio will tune to that frequency. If you press the Set/Tune Channels button once you will enter the Set mode, which will allow you to store the current channel in which preset button you like(or in all of them... if you want) by pressing it once. You will see that the frequency will be changed.
In order to correctly hook up two audio sources together(putting them in parallel) for a single output you have to use one schematic from this document. I have used the last schematic. Don't forget to use at least 1% tolerance for the resistors.
The new GPIO controller.
The GPIO controller is now using the official XBMC client code from xbmcclient.h.
Now, you can call a lot more XBMC functions for any button pressed or encoder movement.
TODO List:
- update to the latest Raspberry PI firmware(today it is possible but then Navit won't be visible)
- remove the calibration file for XBMC(/usr/share/eGalax/touchscreen_axes_calib) and use the values from the Debian calibration file(/usr/share/X11/xorg.conf.d/01-input.conf)
- create an XBMC addon to allow calibrating the touch screen for both XBMC and X11 windows and also for calibrating the external encoders and button
- create a configuration page(XBMC addon) for the carpc-controller settings
- create a better audio mixer unit
- create a new page for launching different X11 applications
Thanks Andrei !
ReplyDeleteHi.
ReplyDeleteI can use your image file to install on cubieboard2
Thank you.
Very cool.
ReplyDeleteThank you.
You are Nº1 !! Thankz for sharing
ReplyDeleteHi master,
DeleteMy video don’t go to full screen i can see the small rpi logo in top left and when loads the desktop the task bar. Because i don’t have your gpio remote i have to disable it (windows open and closing without doing nothing) and x11 cursor its not visible in xbmc.
Many thanks for sharing you hard work.
Camolas.
(windows open and closing without doing nothing) , I have the same issue, how can I solve it? How or where dissable gpio remote?
DeleteThanks a lot
Hi!
DeleteIf you don't have any gpio connections you have to stop the carpc-controller from starting. I have updated the post with a note. Please have a look!
Hi master,
DeleteI have a touch calib problem when going from home screen to navit e think its because the X11 dont take control of touch calib (runing navit from X11 works great), any idea?
Im trying to install the hello world script but no success one time more any idea?
I want to put my modest program working with yours dont now if is better to do with the "script-way" or the navit (i tried changing the navit to my sec but no image) can you please tech me?
You are top
Bye
Hi!
DeleteLet's talk on Skype
Hi thanks very much, yes it works!!
ReplyDeleteThanks a lot Andrei, your work is very impressive!
ReplyDeleteI still have two questions.
Do you have your car antenna connected to the SI4703 module and which values have your resistors R1 and R2?
I have connected the car antenna main wire to the ground of the jack on the SI470 board, as this is the FMIP pin. See here how the chip is connected: http://www.soliddigi.com/portfolio/breakout-board-for-si4703-fm-tuner.
DeleteThe signal of the fm antenna can be improved by matching the impedance of the car's antenna, which probably is 50 ohm with the impedance of the si470 breakout board. This is a very complex operation and i have to study more, but if you have any more experience in rf domain please let me know of any improvements.
R1 and R2 have 1Kohm value, but actually you can use any resistors, as long as they don't get too much current.
I dont get how that works, i have an Si4730 breakout board I connected the centre of the car antenna to the FMIP and i cant pick up anything. Infact I'm surprised it even does with yours as you need an inductor and a capacitor match to the impedance on both sides. L1/C1 ive tried so many times and had no results at all.
DeleteI have the breakout board from Soliddigi and an RF amplifier and I have all fm stations in my area. I don't have the same stations as a car fm receiver when I am far away from cities. I am agree that this setup needs an impedance matching, but didn't had time for investigating this and I am not an RF expert. If you find any good matching please let me know.
DeleteThe breakout by sparkfun for the Si4703 is just about impossible to get working with a car antenna. The antenna needs to hover inbetween the min FM frequency and the max. Its difficult to get it to do that. I have tried and tried for 2 weeks and ive given up with it. I tried a TEA5767 and had the same issue. The problem with car antennas is that most of them are a high gain whip type that aren't suitable for use with that chip. I did try an Si4705 but i had the same results with that. The biggest problem is that no offers the whole range of silabs chips in small quantities so getting the right one for the purpose is near impossible. Once you connect either of these chips to coax you've lost the signal. The breakout i was using has a 75ohm impedance and so does the car antenna. It didn't work no matter what. I am looking into other viable option before spending out on a digital tuner built for purpose.
DeleteThis is so great! I'll try to build something like this for my own car.
ReplyDeleteHow do you deal with powering off the car? Do you have to remember to power off the RPi before it loses electricity? Or have you found a way to deal with this?
Also, would you mind explaining in a word or two how you connect the hardware to the car battery?
Thanks, greetings!
Peter
In my setup i have the shutdown button in the home screen, but you can search on the internet, there are couple of automatic on/off switches.
DeleteGreat progress, I've been following your blog for a while.
ReplyDeleteFor audio mixing, check out the TLV320 codec chips like http://www.ti.com/product/tlv320aic3254-q1
That chip has both analog and I2S input, so you could directly use the rpis I2S output.
THe only downside might be designing a board for it.
Do you have plans for displaying RDS information from the FM chip?
Hi Andrei,
ReplyDeleterespect for this cool project. Exactly what I wanted to setup for my car.
With your latest build I'm able to use the new PI USV (www.piusv.de) which needs i2c drivers.
Everything seems to work correctly now except the calibration of the touch screen
( which is not exactly yours, but also eGalax )
The Y-Axis works correct, but the X-Axis is mirrored. I tried to follow your explanation about the calibration, but no changes in /usr/share/eGalax..../touchscreen_axis_calib seem to have an effect to the touchfield behavior.
Is there another file where I have to change settings?
Here are my parameters: xinput : Option "Calibration" "84 1990 1863 106"
and /usr/share/eGalaxCalibration/touchscreen_axes_calib: calib_x_d=1280;calib_x_fact=-0.660474716;calib_y_d=720;calib_y_fact=0.41025641;swap_axes=1;click_confines=8
maybe you'll find the error?
regards
Hi,
DeleteI see that you are are setting calib_y_d to 720 and calib_y_fact positive. This means that the y pointer will be moved down with 720 pixels.
From the way you set calib_x_d and calib_x_fact the x axis is mirrored. If you want to disable the mirroring you have to set it like:
calib_x_d=0;calib_x_fact=0.660474716;
You can see if the values are loaded properly by starting xbmc by hand over ssh with /usr/local/lib/xbmc/xbmc.bin
Regards
Hi Andrei, I downloaded your latest image (Feb 16 2014) and wrote to the sd card - but raspberry is not booting up at all. I tried downloading and writing the image using win32diskimager a couple of times - but no luck.
ReplyDeleteAm I missing anything?
Hello,
DeleteI think you have the newer raspberry pi and it is a problem with the firmware i use.
I will soon release a new image with latest firmware which should work on all RPIs
Hi Andrei,
ReplyDeleteI've searched a lot and built my own concept to create an car pc, but then I saw your project and thought...wow
So I'm looking forward to use your project in my car
What is the best practise to do this? Just buy exactly the same things as you did, download your images and put the rPI in my car?
Thanks for your project!
Hi,
DeleteThe best way is to buy similar hardware to avoid issues. The hardware i use is the cheapest found on market.
Any updates Andrei? You've gone quiet. :)
ReplyDeletePlease see my latest post: http://engineering-diy.blogspot.ro/
DeleteAndrei; I'm using your most recent downloads. The XBMC loads up and runs. The mouse (generic Microsoft) moves around the screen, but no button clicks work. I am able to highlight objects and using the ENTER key, activate them. I do not have this problem with any other Raspian builds (the mouse works fine....)
ReplyDeleteAlso, when I exit the XBMC, the screen goes totally blank. I am unable to do anything.
How can I either exit XBMC and get to an LX terminal, or how do I boot and prevent XBMC from loading in the first place?
Thanks.
Hello Andrei,
ReplyDeleteI wanted to ask whether it is possible to get this touchscreen calibration addon?! I'm using my selfcompiled version of XBMC with your patches - only missing thing is your addon. Where can I get this? Have you updated your touchscreen patch? Can I get the newest one and the addon? Or where can I find it?
Thank you very much for your work! Where can I donate?
This comment has been removed by the author.
DeleteHi,
DeleteYou can get my latest patches for XBMC Gotham and Navit also from my Downloads page in the top right corner of this blog. If you wat to donate you can use my paypal address on the top right of this blog also.
Thank you!
Okay just found the patches and now I've a working build! I've installed the CarPC Skin and it works but I can't see the calibration addin... btw I'm using OpenElec...! Please help me...
ReplyDeleteHi,
DeleteI have uploaded the calibration plugin, but you also have a look at the patches because there are some functions needed(xbmcgui.getRawMousePosition).
Hi Andrei,
ReplyDeleteSorry to trouble you (again). I have SI4703 FM module connected exactly as you have. My pi has loaded into XBMC but I have connected by SSH and followed your instructions. I get this ...
pi@raspberrypi ~ $ cd radio
pi@raspberrypi ~/radio $ sudo python radio_server.py
Starting Radio Module...
/home/pi/radio/si4703.py:25: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(0 ,GPIO.OUT) ## SDA
Exception in method 'update_registry' while trying to read from si4703
Traceback (most recent call last):
File "radio_server.py", line 6, in
fm.init()
File "/home/pi/radio/si4703.py", line 34, in init
si4703.update_registry(self)
File "/home/pi/radio/si4703.py", line 160, in update_registry
reordered_registry = si4703.convert_reg_readings(self, raw_data, 1)
File "/home/pi/radio/si4703.py", line 97, in convert_reg_readings
first_byte = str(bin(old_registry[i]))
IndexError: list index out of range
Is this because it is already loaded and running in xbmc? This radio stuff is all new to me :)
Any help is appreciated. Cheers mate.
Chris
Hi Chris, I am getting exactly the same problem with the FM radio. How did you manage to resolve it?
DeleteHi,
DeleteI have added an update for the radio files. Please get it from https://drive.google.com/?tab=wo&authuser=0#folders/0B__Rs5JF53-kOHhDODJENVFkNmM.
Just unpack it and then run update.sh script.
Thanks Chris, everything worked like wonders. Thanks Andrei too!
DeleteHello
Deletesorry my english is not so good because i´m from Germany :-)
i have a problem i instlled all everthing is doing but the radio not
here the error:pi@raspberrypi ~/radio $ sudo python radio_server.py
Starting Radio Module...
/home/pi/radio/si4703.py:24: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(4 ,GPIO.OUT) ## RST
/home/pi/radio/si4703.py:25: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(0 ,GPIO.OUT) ## SDA
read reg #7: 0x100
read reg #7: 0x8100
powerdown
read reg #7: 0x8100
set AHIZEN
+updating AHIZEN
read reg #7: 0xbc04
read reg #7: 0xbc04
powerup
read reg #7: 0x8100
read reg #7: 0xbc04
read reg #7: 0xbc04
read reg #7: 0xbc04
read reg #7: 0xbc04
read reg #7: 0xbc04
read reg #7: 0xbc04
Radio Module successfully initialized
Traceback (most recent call last):
File "radio_server.py", line 13, in
sock.bind((UDP_IP, UDP_PORT))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address
can you help me?
linux is new for me please tell about a noobie :-)
Julian
Hi,
DeletePlease use my latest update and also use the forum to solve issues.
hello
Deletethe last update is on the raspberry .. but i try it again and will report
Julian
Realy nice but i hav a problem with calibration. I have a 7 inch touch ut if i want to calibrate the button for bottoms are out of frame so i dont can calibrate my touch. but why
ReplyDeletesory for my bad english :-D
Hi Andrei, I've installed the img, and everything is working except the X axis its mirrored (right to left). I think that maybe i've put the touch panel on the opposite side to the display. Must I take apart everything, and start from the beginnig or could be corrected by changing something in the kernel?
ReplyDeleteAnd also the sound comming from my Rpi B+ is with interferences. Everytime the green lamp blinks new interferences are coming. What could be wrong with it. I'm using 3.5mm stereo music jack (not the A/V jack that kind is the output).
ReplyDeleteHi Andrei,
ReplyDeleteI'm trying to get the old radio_server.py modul. But I can not find any version of your software older than 1-Oct-2014.
Were can I get it, pls?
TNX!
Hello Andrei, what you have done is absolutely fantastic, i have ordered the hardware for this project, i hope it goes smooth.
ReplyDeleteThanks,
Amit
( wishes & blessings from India )
Hello, a question, does this application allow a USB external harddrive to play movies or allow devices like an IPAD or phones to access a external drive connected to it VIA wifi or bluetooth
ReplyDeleteSorry one other question can I use this application like a BLuetooth connection for my phone so i can pair it to use it hands free.
ReplyDeleteSince you have summed the outputs from the fm radio and the raspberry pi, what causes the radio to stop its output when you are using another function generating sound from raspberry pi? If GPS is being utilized would you receive voice over directions while listening to the radio?
ReplyDeleteHi there, this might be an outdated thingy but can you create an add-on which opens navit on raspbian please? I've ben looking all over internet to find a script or the way it works but can't find any answer so I've put a forum topic on https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=218842&p=1346518#p1346518 and https://www.tapatalk.com/groups/engineeringdiy/viewtopic.php?f=2&t=899&p=6017#p6017
ReplyDeletenotifications turned on ;)
ReplyDeletehttps://bayanlarsitesi.com/
ReplyDeleteGüneşli
Halkalı
Florya
Akbatı
KBLLF
Ankara
ReplyDeleteAntalya
istanbul
Ordu
izmir
287EZ0
kayseri evden eve nakliyat
ReplyDeleteantalya evden eve nakliyat
izmir evden eve nakliyat
nevşehir evden eve nakliyat
kayseri evden eve nakliyat
YNW
adana evden eve nakliyat
ReplyDeletebolu evden eve nakliyat
diyarbakır evden eve nakliyat
sinop evden eve nakliyat
kilis evden eve nakliyat
M7D
35B12
ReplyDeleteDiyarbakır Lojistik
Ordu Evden Eve Nakliyat
Giresun Parça Eşya Taşıma
Mardin Parça Eşya Taşıma
Muş Lojistik
2EBD5
ReplyDeleteŞırnak Parça Eşya Taşıma
Kilis Şehirler Arası Nakliyat
Mercatox Güvenilir mi
Sivas Lojistik
Bitmart Güvenilir mi
Çerkezköy Marangoz
Isparta Şehirler Arası Nakliyat
Aksaray Parça Eşya Taşıma
Kırıkkale Şehirler Arası Nakliyat
2EC15
ReplyDeleteAmasya Parça Eşya Taşıma
Sinop Şehirler Arası Nakliyat
Bayburt Şehirler Arası Nakliyat
Manisa Parça Eşya Taşıma
Yobit Güvenilir mi
Gümüşhane Lojistik
Şırnak Lojistik
Çerkezköy Çekici
Ankara Asansör Tamiri
4A652
ReplyDeleteAdana Şehir İçi Nakliyat
Van Şehirler Arası Nakliyat
Bilecik Şehirler Arası Nakliyat
Cate Coin Hangi Borsada
Ünye Petek Temizleme
Zonguldak Evden Eve Nakliyat
Mamak Boya Ustası
Çanakkale Parça Eşya Taşıma
Antep Lojistik
72F76
ReplyDeleteShinja Coin Hangi Borsada
Tiktok Takipçi Satın Al
Soundcloud Reposts Satın Al
Star Atlas Coin Hangi Borsada
Bitcoin Madenciliği Nasıl Yapılır
Bitcoin Nasıl Alınır
Tiktok İzlenme Satın Al
Soundcloud Beğeni Hilesi
Nonolive Takipçi Hilesi