2010
01.18

Statusuppdatering, SQ50-C2

Har sedan sist haft lite dåligt med tid till byggena, men nu har iaf högtalarna tagit ett par rejäla kliv framåt.

Det har tagit oerhört mycket längre tid än vad jag uppskattade att få till ytbehandlingen. Jag bestämde mig som sagt för att ta genvägen och använda plastfilm istället för äkta fanér, men är inte så säker på att det var en genväg längre. Efter att ha spacklat och slipat till vad jag trodde var en tillräckligt jämn yta fäste jag på plastfilmen, och nej. Varenda liten skråma syntes och blänkte nu helt plötsligt.

Så det slutade med att jag fick spackla hela ytorna och sedan slipa tills högtalarna ser ut att vara gjord i blankpolerat gips snarare än spånskivor. Det tog ungefär 3 kvällar per högtalare.

Ett tips är att om möjligt vänta med att skära hål i dämpmaterialet tills slipningen är klar. På det sättet räcker det att använda dammsugaren för att få bort allt slipdamm. Om inte lär hela högtalaren bli full av damm, vilket kan ge en förvisso ganska spektakulär rökeffekt när man spelar någon trevlig Scooter-dänga på hög volym och Mega Bass™.

En högtalare, spacklad och slipad till godtycklig perfektion

En högtalare, spacklad och slipad till godtycklig perfektion

Att fästa själva plastfilmen var däremot inga problem. Plastfilmen är självhäftande, och man drar bara av skyddspappret lite grann itaget, fäster först i nederkanten på den yta som ska behandlas och arbetar sedan vidare uppåt ett par centimeter i taget.

Problemet är bara kanterna. Man kan lämna lite på sidorna och sedan skära av dem längs kanten med kniv, och det ser bra ut men det blir fnasigt när man känner på kanterna och det finns även en risk att ytan bakom blänker igenom på vissa ställen. Dessutom lär plastfilmen krympa något med åren.

Det står i anvisningarna att man bör vika över ca 5 mm vid kanter, men när jag testade detta så ser man denna nivåhöjning. Men det kanske är ett mindre problem så jag kommer nog att försöka med det på den andra högtalaren. (För jag lyckades nämligen räkna fel på längden, och filmen räckte bara till en.)

Resultatet

Resultatet. Blixten framhäver problemet med små glipor i kanterna, men det syns inte i normalt ljus.

Delningsfiltret för den andra högtalaren blev mycket trevligare än det första. Övning ger färdighet.

Delningsfilter nr 2

Delningsfilter nr 2

Sedan var det dags att koppla ihop alla högtalarelementen. 5 x 2 stycken! Det kräver sitt tålamod.

Här har jag för övrigt ett bra tips att ge: om ni har husdjur, se till att avliva dem före detta moment. Det hjälper avsevärt.

Montering av högtalarelement. Inspekteras av Sulan.

Montering av högtalarelement. Inspekteras av Sulan.

Nå, så hur låter de då?

Jo tack bra.

Först gjorde jag ett idiotiskt misstag och tog fel på ett 8.2 och ett 2.2-motstånd i delningsfiltret. Elementen behöver en viss inspelningsperiod för att få igång bas-elementet, men efter ett par dagars inspelning började jag misstänka att det nog inte skulle bli bättre med tiden. Så jag öppnade upp högtalaren och fann misstaget. En sten lyfte från mitt bröst då de plötsligt lät riktigt bra. De är nog fortfarande inte helt inspelade, men redan nu är de ett otroligt lyft jämfrt med mina tidigare högtalare.

Vad gäller deras speciella ljudspridning, som gör att ljudet inte känns lika riktat utan mer ”live”, så stämmer det. Och diskanten är fantastisk, och frambringar små detaljer i instrumenten som jag inte visste fanns med på inspelningen. Ni vet, skrapljud på strängar osv. Men med detta sagt så tror jag man skulle kunna balansera upp ljudet och få en ännu bättre återgivning med ett något mer avancerat delningsfilter. Diskanten känns lite för stark, och djupbasen är lite klen. (Innan jag upptäckte mitt misstag på delningsfiltret hade de en fantastisk bas, men det var också det enda. Mellanregistret fanns inte.) Men jag är inte tillräckligt kunnig på delningsfilter för att göra några förbättringar. Inte än iaf.

Slutsatsen med ljudet är att jag är nöjd, men inte lyrisk.

Nu återstår att tillverka ett nät att sätta över elementen samt att sätta plastfilm på den andra högtalaren, sedan är högtalarprojektet klart, för den här gången. Men jag har ett nytt projekt på planeringsstadiet … :)

2009
12.06

Högtalarsnickeri

Nu går det raskt framåt med högtalarna. Jag lånade en handöverfräs för att ta ut hål för baselementet. Problemet var att hitta ett sätt att få den att gå runt (de är normalt gjorda för att glida längs en rak kant). Med ren bondtur fann vi att ett av hålen som fanns under fräsen, och normalt håller en plastbit på plats, hade precis rätt avstånd. Så i med en avklippt skruv, borra ett hål i mitten av skivan och sen var det bara att köra fräsen runt runt tills den arbetat sig igenom skivan.

Handöverfräs

Bärkat fräsa runt

När man nästan är igenom får man ta det försiktigt, för när väl stycket ramlat ur har man inget längre att använda som stöd för att köra runt.

fras3

Därefter var det dags att slutligen börja sätta ihop lådorna. Jag valde att limma ihop dem och bara använda ett minimalt antal skruvar för att ytterligare förstärka.

Jag hade bara ett fåtal skruvtvingar, så det hela fick göras i ett par omgångar. Först fram+bak+topp+botten, därefter undersidan.

limma1

När alla sidor utom det ena sidostycket var limmat och fastskruvat så satte jag ditt dämpmaterialet med hjälp av häftpistol. Dämpmaterialet är ett tunt täcke från Ikea (Mysa Gräs) som kostar 39:- och räcker till två lådor! Billigt, men det är vad som rekommenderas av Valutronic, så jag hoppas och tror på det.

dampning

På det sista sidostycket måste dämpmaterialet placeras innan det kan sättas på plats.

dampning2

För att bygga delningsfiltret använder jag ett prototyp-kretskort, ett sådant med en massa hål med koppar på baksidan. Perfboard heter det på engelska. Jag utnyttjar kopparen minimalt, utan löder istället ihop benen på komponenterna direkt och använder bara hålen för att hålla allt på plats. Det lär vara en fördel att inte använda tunnar kopparbanor för att transportera signalen.

filter1

Jag fick ner det på ganska liten yta så att jag kan fästa hela filtret på baksidan av kabelanslutningen. Jag använde smältlim på spolen för att fästa.

filter2

Sedan var det dags för att göra en snabb test av filtret. Jag kopplade upp allt och anslöt till förstärkaren. Och det lät förstås .. precis så dåligt som man kan förvänta sig om man inte har en låda. Nåväl. Filtret verkar fungera iaf. Jag är lite tveksam till hur bra det är. Det är ett väldigt enkelt filter, och det används elektrolytkondensatorer, och dessa är inte angivna i vilken riktning de ska kopplas ens. Men det får visa sig. Eftersom jag fäst filtret på kabelanslutningen är det lätt att plocka ut det och modifiera eller byta ut det.

filter3

Valutronic rekommenderar att man ser till att allt blir anslutet och avtestat innan man fäster det sista sidostycket, men eftersom jag både har ett hål för stereoanslutning och ett där baselementet ska sitta tyckte jag inte det var några problem att komma åt inne i lådan ifall det eventuellt skulle behövas. Så jag limmade och skruvade fast även den sista sidan.

Jag har börjat på spacklingsarbetet. Jag ska inte måla dessa, utan använder en kontaktfilm med träimitation. Så därför är inte spacklingen riktigt lika känslig som om man målat den, men det är fortfarande viktigt att alla ojämnheter från lim, spånskiva, skruvhuvuden osv spacklas och slipas ner. Filmen är väldigt tunn och ojämnheter kommer att synas igenom.

Från början var tanken att använda riktigt fanér, men det visade sig vara svårt att få tag på (åtminstone i de träslag jag var intresserad av) och dessutom väldigt svårt att få bra för en amatör, så därför valde jag att använda kontaktfilm istället.

spackla

Det var så långt detta …

2009
11.26

Såga spånskiva

Fick ett ryck och tog ett par steg framåt med högtalarbygget. 3 m² sågspånskiva är nu omvandlat till 12 högtalarsidor.

12 högtalarsidor

12 högtalarsidor

Det tar längre tid än man tror, det där. Många mått som ska bli rätt, kompensera för bredd på sågklinga, räta vinklar, osv osv. Jag använde en cirkelsåg, och resultatet blev på det stora hela ganska bra. Men nästa gång tror jag att jag ber dem såga upp skivan när jag köper den, för att spara tid men även för att noggranheten på deras bandsågar borde vara högre.

tools

Lyckades göra två missräkningar på 5 mm. Den första gick att åtgärda genom att använda en spillbit. Till den andra fanns det ingen spillbit kvar. Så nu saknas det 227×5 mm längst ner, vilket gör att basspalten blir högre än vad den ska vara. Hoppas på att kunna fästa en trälist nederst för att kompensera för detta, men vet inte om det påverkar ljudet negativt.

Jag blev milt sagt irriterad på att jag lyckades göra samma misstag två gånger. Så här ska en normal tumstock se ut tycker jag:

tumstock

Notera att strecken vid hel centimeter är längre än vid halv centimeter. Detta verkar vara en sentida innovation! Med den äldre tumstock jag använde var det precis tvärtom, och därför lätt hänt man räknar fel på 5 mm.

Nästa steg är att såga ut hål för högtalarelementen. Plan A är att använda en sticksåg, men om det blir svårt att få hålet jämnt så får det bli till att få tag på en handöverfräs. Det skulle även göra det möjligt att fasa ner plattan, så att elementet ej skjuter ut. Får se hur det blir.

2009
11.23

En direkt uppföljning på det senaste inlägget. Jag har haft problem att få det trådlösa nätverket att fungera. När jag tidigare installerade en desktop-installation av Ubuntu med NetworkManager så fick jag det att fungera sporadiskt. Inte förrän jag avinstallerade NetworkManager och installerade wicd istället fick jag det att fungera felfritt.

Denna gång ville jag dock undvika även wicd, eftersom jag inte tänkte köra XBMC standalone.

Jag hittade till slut denna diskussion på XBMC-forumet där det fanns ett tips om hur man konfigurerade trådlösa nätverk via konfigurationsfiler istället. Tipset fungerade perfekt, efter att jag gjort ett par små modifieringar. Först behöver ett par program installeras:


sudo apt-get install wireless-tools wpasupplicant

Redigera sedan filen /etc/network/interfaces med din favorit-editor (vim), och lägg till följande sist i filen:


auto wlan0
iface wlan0 inet dhcp
wpa-ssid "namn-på-det-trådlösa-nätverket"
wpa-ap-scan 1
wpa-proto WPA2
wpa-pairwise TKIP
wpa-group TKIP
wpa-key-mgmt WPA-PSK
wpa-psk "lösenord"

Inställningarna wpa-ssid och wpa-psk måste förstås anpassas efter nätverket. Även wpa-proto, wpa-pairwise och wpa-group kan behöva ändras.

Starta därefter om nätverket med följande kommando:


sudo /etc/init.d/networking restart

2009
11.23

Installation av Ubuntu + XBMC

Hej vänner! Här följer ytterligare ett livsbejakande, tekniskt djupdykande inlägg! Denna gång om proceduren för att installera HTPC:ns mjukvara och operativsystem.

Jag använde denna guide som grund.

Systemet ska bara sköta en sak (XBMC), så därför ville jag ha ett så minimalt system som möjligt i övrigt. Jag installerade därför inte den fullständiga desktop-installationen, utan valde minimal-installations-cd:n, som går att ladda ner här. Jag använde UNetbootin för att skapa en bootbar USB-pinne.

Jag satte USB-pinnen i HTPC:n och startade om. Jag valde Command-line expert install i GRUB-menyn. Frågorna som ställs är mer ingående än vid en vanlig desktop-installation, men det mesta är logiskt (åtminstone för oss som har Slackware anno 1995 att jämföra med :D )

Installationen kräver att man har en trådbunden anslutning till Internet. Installeraren hittar inte det trådlösa nätverket/nätverkskortet automatiskt, och jag kunde iaf inte hitta något sätt att aktivera den under installation.

Jag valde att lägga installationen på en ext4-partition som täcker hela hårddisken, förutom en liten (~2 GB) swap-partition. Normalt brukar jag lägga upp en system-partition och en home-partition, så att jag vid en ominstallation i framtiden inte behöver bli av med alla mina inställningar och filer, men på denna dator är det inte tänkt att det ska ligga så mycket användardata förutom XBMC-inställningarna (all media ligger på en nätverks-disk) så jag valde för enkelhets skull att hoppa över home-partitionen denna gång. Kom föresten ihåg att sätta ”Reserverade block” till en mindre procentsats än den förvalda (5%). De reserverade blocken hålls alltid tillgängliga i princip för att administratören ska kunna logga in och frigöra mer utrymme. Men på en modern hårddisk (min är en liten en på 160 GB) är det alldeles överdrivet med 5% (8 GB). Jag valde 1% (1.6 GB).

Några punkter senare frågas det vilken Linux-kärna som ska användas. Jag valde ”linux-generic”, men det är möjligt att det finns ett lämpligare val …

Sedan frågas det om man vill inkludera alla drivrutiner i initrd. De används för att göra det möjligt att montera filsystemet. Eftersom ingen märklig hårdvara används för det på min dator (standard SATA) valde jag att bara inkludera de nödvändiga drivrutinerna, i hopp om att tjäna någon hundradel vid uppstart.

Som användarnamn valde jag namnet ”xbmc” istället för mitt vanliga användarnamn, eftersom jag möjligtvis skulle vilja lägga till ett vanligt konto på denna dator i framtiden. Men för xbmc-användaren ska inställningarna vara sådana att XBMC startar automatiskt, istället för Gnome-skrivbordet osv.

Eftersom det är en media-pc undkommer man inte att använda icke-fri mjukvara (främst codecs) så se därför till att tacka ja till att använda ”begränsad programvara”, och även programvara från ”universe”, ”multiverse” och möjligtvis ”bakåtporterad programvara” (härliga svenska översättningar).

Som bootloader valde jag Grub 2. Jag tänkte först använda Grub 1 eftersom jag har en del dåliga erfarenheter med Grub 2 (främst extremt lång boot-tid), men av någon anledning misslyckades installationen av Grub 1, men Grub 2 gick bra.

När installationen är klar startas datorn om, och du uppmanas så småningom logga in. Logga in med användarnamnet ‘xbmc’ och det lösenord som valts tidigare.

Programvara installeras på Ubuntu-system med kommandot apt-get (alternativ finns). Det första jag gjorde efter uppstart var att installera OpenSSH-server så att jag kunde logga in på datorn från en annan PC och fortsätta installationen därifrån:


sudo apt-get install openssh-server

Det första kommandot, sudo, står för switch-user-do (eller superuser-do) och har uppgiften att köra det efterföljande kommandot som en annan användare (som standard systemadministratören). Om du loggar in som systemadministratör (”root”) kan du hoppa över sudo.

Datorn har ännu inget grafiskt gränssnitt, och inga drivrutiner för grafikkortet. Det finns drivrutiner att installera med apt-get, men den senaste tillgängliga versionen är 185, medan nvidia har släppt version 190. Det går dock att lägga till ett extra programvaruförråd som innehåller de senaste drivrutinerna. Här finns en fullständig beskrivning, men i korthet behövs bara följande kommandon:


sudo apt-get install python-software-properties
sudo add-apt-repository ppa:nvidia-vdpau/ppa
sudo apt-get update
sudo apt-get install nvidia-190-modaliases nvidia-glx-190

Den första raden installerar programmet add-apt-repository som används på den andra raden. Den andra raden lägger till ett nytt förråd med programvara som kan användas för automatisk installation. Möjligtvis kan det uppstå problem med krypteringsnycklar, men jag för mig laddades de ner automatiskt.

Den tredje raden laddar ner en lista med alla tillgängliga programvaror och den sista raden installerar slutligen grafikdrivrutinerna. Dessa två paket är dock beroende av andra, så en mängd paket (71 st hos mig, 50 MB) installeras automatiskt av den sista raden.

I Ubuntu används normalt PulseAudio för att hantera ljud. Det är en kraftfull ljudserver, som kan hantera olika volymnivåer för olika program, koppla över ljud automatiskt till hörlurar när de ansluts, sänka viss volymnivåer vid inkommande samtal osv, osv. Det är tyvärr även ökänt för att det orsakar problem med ljudkort som tidigare fungerat väl, fördröjningar i ljuduppspelninge, med mera. Eftersom en media-pc inte använder flera program, och all nedmixning av olika kanaler sker via XBMC så behövs inte PulseAudio, så därför hoppade jag över att installera det.

Installerade däremot de nödvändiga ljud-drivrutinerna med följande kommando:


sudo apt-get install linux-sound-base alsa-base alsa-utils

För att xbmc-användaren ska få använda ljudkortet krävs att den tilldelas rättigheter:


sudo usermod -a -G audio xbmc

Kommandot ovan lägger till användaren ”xbmc” i gruppen ”audio”.

På samma sätt krävs extra rättigheter för att XBMC ska få lov att stänga av datorn eller sätta den i vänteläge när det väljs av användaren. Det görs dock via PolicyKit:


sudo apt-get install pm-utils policykit
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.suspend
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.hibernate
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.reboot
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.shutdown
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.reboot-multiple-sessions
sudo polkit-auth --user xbmc --grant org.freedesktop.hal.power-management.shutdown-multiple-sessions

Volymnivåer är normalt satta till noll, men datorn kommer ihåg senaste nivåer efter omstart. Eftersom ljudnivån hanteras av XBMC så är det en bra idé att sätta alla ljudnivåer på ljudkortsnivå till max. Med vissa ljudkort kan detta orsaka överstyrning, så om det händer så sätt nivåerna till 80% eller liknande.

Kommandot ovan installerade även en mixer i textläge som kan användas för att ställa ljudnivåerna. Starta den med ”sudo alsamixer”. På min dator satte jag kanalerna ”Master” och ”Front” till 100, samt aktiverade IEC958, IEC958 D och IEC958 1. De sista används för ljud via HDMI-utgången.

Använd följande kommando för att tvinga ljudkortsdrivrutinerna att spara ner inställningarna direkt:


sudo alsactl store 0

Nästa programvara att installera är XBMC. Precis som för grafik-drivrutinerna så finns XBMC tillgängligt i ett extern programvaruförråd. När detta skrivs är den senaste tillgängliga versionen 9.11beta1. Lägg till programvaru-förrådet med följande kommando:


sudo add-apt-repository ppa:team-xbmc/karmic-ppa

Det finns en mängd XBMC-relaterade paket som kan installeras. Det enda nödvändiga paketet är ‘xbmc’, men de övriga innehåller olika skins, scripts, med mera. En komplett lista fås med detta kommando:


apt-cache search xbmc

Jag använde följande kommando för att installera ett grundläggande XBMC-system:


sudo apt-get install xbmc-skin-pm3-hd xbmc-skin-confluence xbmc

Återigen installerades en mängd andra paket automatiskt (110 st).

Nästa steg är att konfigurera grafiken. Det görs i de flesta fall automatiskt med följande kommando:


sudo nvidia-xconfig

Till slut ska operativsystemet ställas in att starta XBMC direkt efter uppstart. Guiden jag länkade till tidigare gör det på ett ganska smart sätt, men det finns andra. Jag valde iaf att göra på samma sätt som står beskrivet där, framför allt eftersom det är en snabb uppstart som inte involverar gdm.

Därmed hade jag ett fungerande system uppe som startar automatiskt. Det tar ca 35 sekunder från att man trycker på startknappen tills man är inne i XBMC:s huvudmeny. Helt ok!

Får avsluta med att be om ursäkt för en knastrande snustorrhet och brist på korrekturläsning. Jag skrev detta främst för att komma ihåg de nödvändiga stegen när det är dags för ominstallation. Nästa gång blir det om något intressantare, så som kompilering av LCDProc drivrutiner! :)

2009
11.14

Fjärrkontroll och rattar

Mina lediga stunder de senaste veckorna har gått till att få inmatnings-enheterna att fungera. I synnerhet de två rattarna samt fjärrkontroll.

Rattar

Till de två rattarna använder jag rotary encoders. Det är vridströmställare utan stopp som levererar två digitala pulser, där den ena är förskjuten 90° jämfört med den andra:

Genom att hela tiden hålla reda på när en signal växlar från hög till låg eller tvärtom, och vad som senast hände, kan man avgöra om ratten vrids åt höger eller åt vänster. Det hela fungerar riktigt bra, och jag har inte ens behövt använda någon avstudsningsteknik.

Jag hade från början tänkt använda en vanlig potentiometer till volym-ratten, eftersom det är en fördel om den har fasta min- och max-lägen. Men för att göra konstruktionen lättare och för att vinna ytterligare lite flexibilitet har jag bestämt mig för att använda samma komponenter för båda rattarna.

Fjärrkontroll

Från början hade jag tänkt undvika att implementera fjärrkontrol-hantering, och istället använda fjärrkontroll-sensorn från min gamla X-box. Eftersom signalerna på gamepads och sensorer som ansluts till X-box är USB-kompatibla så är det enkelt att löda på en vanlig USB-kontakt på sensorn och ansluta till en PC istället. Det finns bra stöd i LIRC för det. Instruktioner för hur man omvandlar sensorn till vanlig USB finns här.

Jag gjorde detta för ett par månader sedan, och det fungerade bra. Men när jag nu plockat upp den igen har något gått sönder, så den upptäcks inte alls som USB-enhet längre. Så vad göra. Köpa ny? Nähä. Då får jag fixa IR-stöd själv istället.

Till saken hör att min TV har en fjärrkontroll som kan växlas mellan två lägen: TV och STB. Vad STB står för vet jag inte, men det vore perfekt om man kunde använda samma fjärrkontroll till TV:n och HTPC:n, genom att växla mellan dessa två lägen.

Så jag beställde en IR-sensor (75-303-89 på Elfa) och anslöt den till interface-kortet med hjälp av en experimentbräda. Noterade direkt att signalnivåerna var de rätta så nu var det bara att ta reda på protokollet från fjärrkontrollen och börja knacka kod.

Efter analys med oscilloskop kom jag fram till att fjärrkontrollen använder ett protokoll utvecklat av NEC. Det finns beskrivet tillsammans med en uppsjö andra IR-protokoll på denna utmärkta sida!

Hanteringen är ganska enkel. Jag har lagt ett interrupt på digital-ingången från IR-sensorn. Vid varje nytt interrupt (uppåtgående eller nedåtgående flank) kontrollerar jag om den nya nivån och tiden sedan senaste interruptet är de beräknade, med en viss marginal på tiden. Sedan startar timern om och interrupthanteringen avslutas. När sista interruptet mottagits, och kommandot är komplett (32 bitar) så inaktiveras interruptet tills kommandot hanterats av huvudloopen.

När huvudloopen uppfattar att ett IR-kommando är komplett så skickar den ett USB-interrupt till PC:n. Samma sak med rattarna och knapparna.

XBMC

Det sista steget är att informera XBMC om vad som händer. Jag har skrivit ett enkelt program som dels väntar på USB-interrupt (dvs väntar på att ta emot kommandon från interface-kortet) och dels har en anslutning till XBMC via EventServer/Client protokollet (ett enkelt envägs UDP-baserat protokoll för att skicka just knapptryckningar och liknande).

I och med detta är hela kedjan klar, från fjärrkontroll till ir-sensor till avr till usb till pc till xbmc. Men det finns ett problem:

Fjärrkontrollen fungerar och man kan navigera runt i XBMC. Men navigeringen är inte mjuk. T.ex om man höjer volymen genom att hålla volymknappen inne på fjärrkontrollen så går den stötvis. Eller om man trycker ”enter” på ett underbibliotek t.ex, så kan den skicka två knapptryckningar istället för ett så att man hamnar någon helt annanstans än man tänkt sig.

Jag misstänker att det finns två anledningar till detta. Fjärrkontrollen skickar ut upprepningskommandon med ett förmodat jämnt tempo. Men någonstans längs den komplicerade kedjan innan dessa når XBMC kan tidsförskjutningar uppstå, med en ryckig navigering som följd.

Det andra problemet är att, som sagt, upprepningskommandon skickas av fjärrkontrollen. Dessa skickas exakt 110 ms efter det förra kommandot startade. Eftersom varje nytt kommando tar ca 86 ms att skicka innebär det att första upprepningskommandot kommer bara 24 ms senare. Har användaren inte hunnit släppa knappen på den tiden skickas nästa kommando direkt.

Jag funderar på olika sätt att lösa detta. Ett sätt är att konfigurera programmet så att vissa knappar bara skickar en impuls. Dvs, volymknappen fortsätter fungera som nu och skicka upprepade knapptryckningar, medan enter-tangenten bara skickas en gång.

Ett annat sätt är att skicka en ”knapp nertryckt” signal till XBMC när första kommandot mottages och sedan skicka ett ”knapp släppt” kommando först när det gått 110 ms utan att någon upprepningskod mottagits.

2009
11.02

Glasrutan åter på plats

Glasrutan är åter på plats. Åtminstone tillfälligt.

Efter att Malmös ledande bilvårdfirma bidragit med ett par bitar solfilm gav jag mig på det något svåra arbetet med montera solfilm på glas. Det gick sådär.

Solfilm monteras genom att man drar av filmen från skyddsfolien och lägger den med dess klistriga sida mot (den väl rengjorda!) glasytan. Men först ska man blöta både filmen och glasytan, för då kan man passa in den ifall den inte skulle bli perfekt från början (och det blir den inte). Men jag snålade med vattnet, så den första filmen gick åt skogen. Den andra filmen gick betydligt bättre, men tyvärr var den lite ljusare än den första, så jag kommer nog att få be om en bit till!

wfoil

Tog en sväng om Clas Ohlson på väg hem idag (och kom därifrån med halva affären, men det är en annan historia). Letade främst efter något att fästa glasrutan med, och kom hem med några olika möjliga lösningar. Det som visade sig fungera bäst var faktiskt skruvklammers i plast.

Glasrutan fäst med skruvklammers

Glasrutan fäst med skruvklammers

Skruvklammrarna ger dels ett stöd under för att hålla upp glaset, och dels trycker de glaset mot radions framsida. Perfekt.

klammers

Så nu sitter glasrutan där, åtminstone tills jag får en ny solfilm. Just nu är den bara fästad i underkant men det sitter oväntat bra ändå. Det är inte lika enkelt att fästa en skruvklammer ovanför då det är mycket tunnare material att skruva i där.

Nästa utmaning är att hitta på ett sätt att montera display och rattar.

2009
10.25

Det fortskrider

Nu är både knappar och moderkortet på plats, och HTPC:n går nu att använda så smått. Krävde en del pill att få allt på plats, men nu sitter det där.

Jag har gjort ett nytt kretskort för att löda fast tryckknapparna på. Det är fastskruvat på undersidan av radion, och format så att moderkortet kan sitta ovanpå det. För varje tryckknapp har jag även satt en lysdiod som placeras inuti knappen så att de kan lysa upp vid olika händelser.

Knappar monterade

Knappar monterade

Den första knappen är kopplad till power-on på moderkortet. Övriga går till interface-kortet. Jag har inte bestämt vilka funktioner de ska ha än. Själva tryckknapparna har jag gjort hål på och limmat fast på strömställarna. Råkade få lim in i den sista strömställaren, så det är tveksamt om den kommer fungera.

Borrat hål på undersidan av knapparna

Borrat hål på undersidan av knapparna

Det går framåt med programmeringen också. Jag har nu fått upp en USB-anslutning till interface-kortet, och kan läsa av knappar, tända lysdioder och visa text på display från PC:n. XBMC, som jag tänkt använda som mediaspelare, använder LCDproc för att hantera displayer, så därför har jag börjat skriva en LCDproc-driver för interface-kortet.

Knappar och moderkort monterade

Nu kvarstår att få glasrutan på plats, fästa display och rattar (potentiometer och rotary encoder), IR-sensor, baksidan, hårddiskupphängning, …

2009
10.06

Luxorn är tandlös

Nu är radion till slut tandlös, efter att jag gått fram med lite välbeprövad ingenjörsbrutalitet på den. Jag gjorde så att jag smälte plasten där metalltungorna var fästade och kunde sedan bända loss knapparna utan att förstöra något. Den enda plast jag smälte var en ”hylla” inuti varje knapp, och den tänkte jag ändå försöka bli av med.

Tänderna har lossnat

Tänderna har lossnat

Tanken är nu att borra ett litet hål på undersidan av varje knapp och sedan limma fast dem på switcharna.

2009
09.28

Interface-kretskort

Äntligen har jag haft lite tid över att ägna åt HTPC:n. Jag har nu en första version klar av kretskortet som ska användas för att hantera knappar, display, volymkontroller, osv.

interfacepcb-2

Displayen jag använder är en teckenbaserad 2×16 VFD display. Den lyser betydligt starkare än en vanlig LCD-display, och har den finessen att det är de aktiva pixlarna som lyser. På en vanlig LCD-display är det bakgrunden som lyser och man ”släcker” de pixlar som ska vara svarta. Detta är viktigt eftersom jag planerar att sätta displayen bakom en solfilm så att den inte syns förrän man visar något på den.

Processorn är en ATmega644 på 20 MHz. Det är lite overkill, men det var vad som fanns hemma. Till den är det kopplat en RS232 serieport, en stiftlist att ansluta upp till 6 lysdioder och en stiftlist att ansluta de 6 knapparna som sitter på radion, en analogingång för volym-potentiometer, en ingång att ansluta en rotary-encoder, samt en USB-anslutning.

Interface-kretskort

Jag har tänkt använda V-USB, som är en mjukvaru-implementation av USB som går att använda på Atmel mikroprocessorer som inte har något inbyggt stöd för USB. Jag har dock inte fått det att fungera än, troligtvis på grund av strul med datasignalerna: jag kör processorn på 5V, men USB-standarden säger att datasignalerna ska vara på 3.3V. Data från den anslutna PC:n till mikroprocessorn är inget problem eftersom 3.3V uppfattas som en logisk 1:a även om processorn drivs med 5V. Men man får inte skicka 5V datasignaler ut på USB-bussen. Därför använder jag en konstruktion med zener-dioder kopplade mellan signalen och jord, som drar ner signalen till godkänd nivå. Vad problemet beror på får undersökas med oscilloskop.