maanantai 23. syyskuuta 2013

Tulostimen hiontaa ja säätöä, osa 1

** Nyt mennään jo päivässä X ja melko lähellä nykyhetkeä.

Alusta asti mietin käyttöpyörää (pulssianturi) kun se ei joka napsulla liikkunut valikoissa ja manuaalisesti aksiloita liikuttaes se hyppäsi aina kaksi arvoa. Tähän löysin firmwaresta asetuksen, ultralcd.cpp -tiedostosta löytyy "encoder_steps_per_menu_item" jonka arvoa muuttamalla voi nupin toiminnan säätää omalle toimivaksi.

Alkuvaiheessa pedin lämpöanturi oli vain pedin ja pahvin välissä, mutta nyt sen laitoin paikallensa lämpöpedin keskellä olevaan reikään johon laitoin vähän paksumpaa lämmönjohtotahnaa.


SD-kortilta tulostamisessa on ollut vähän satunnaista ongelmaa kun joskus se X-tulostuskerran jälkeen päättää ettei tulostakkaan enää ja näyttää näytöllä vain "nimi→1.gco", mutta seuraavana päivänä taas toimii. En tiedä miksi tekee niin. 

Z-kierretangot jätin jo rakennusvaiheessa pitemmiksi mitä ohjeissa oli että voin asentaa
Z-akselin tuki
alapäähän tuet myöhemmin. Nyt ne on toimivalla tulostimella saatu tulostettua ja asennettuakin paikalle. Tuessa on siis laakeri jonka läpi kierretanko menee estäen "ei aivan suoran" -tangon sivuttaisliikkeet.

Samassa yhteydessä vaihdoin moottorin ja kierretangon välisen liitospalan oikeaoppiseen "kytkimeen", missä kahden suoraa liitettävän aksilan välissä on hieman joustava muovi välissä, tässä tapauksessa silikonia. Ja koska moottori on ylhäällä ja kytkin -palassa aksilat ei ole kiinteästi kiinni toisissaan, piti kierretanko lukita mutterien avulla alatukea vasten jonka varassa koko z-akselin paino on.
 
Z-akselin "kytkin"-liitos
Moottoreille säädin stepstickeiltä kaikille samat virrat 0,75A,
paitsi extruderille vähän enemmän 0,8A. Moottorien vääntö on speksattu 4 kg/cm kun virta on 2,5A, mutta hyvin vääntö tässä riittää jo tuollakin virralla
Moottorille menevän virran saa laskettua RepRapWikissä olevan ohjeen mukaan mittaamalla potikan liu'sta jännitteen ja jakamalla se 1,6:lla. Tai sitten kertomalla haluttu virtamäärä 1,6:lla josta tulee potikalle asetettava jännite.

Aiemmin kirjoitin kun filamentti takkusi syöttöruuvin ympärille extruderin kanssa mikä oli tehty 3mm filamentille, niin löysin reprap forumilta extruderin rungon joka oli pienemmällä reiällä oleva. Reikä oli 2mm, mutta porasin sen vielä 2,5mm että filamentti liikkuu sielä sujuvasti.
Mutkalle ei ole enää filamentti menny, mutta jonkun kerran on syöny kolon ja jäänyt vetämään tyhjää. Purkasin hotendinkin siihen liittyen ja nyt taas tuntuu muovi liikkuvan hyvin eikä jää tyhjää vetämään.
Tulostin myös uuden X-kelkan mihin hotendin tuuletinkin sopii oman pidikkeensä kanssa.
Tein myöskin tuulettimelle suojuksen, mutta jouduin ottamaan sen heti pois kun se sai tuulettimen vain vinkumaan kovempaa. Ehkäpä se oli vähän liian pienellä rei'ityksellä.



30% suurennettu ja alkuperäisen kokoinen

Ensitulosteena tekemästä roskiksesta otin myös revanssin jo filamentin syötön säädön jälkeen jolloin se onnistui jo melkein. Viimehetkillä muovi ei tarttunutkaan oikeaan paikkaan ja sinne jäi reikä. Tämän jälkeen tulostin vielä vähän myöhemmin taas uuden version,mutta lisäsin verkko-osan tulostuksen ajaksi filamentin syöttöä 200% jolloin se onnistui erittäin hyvin ja tuli jopa kohtuu kestävä.




 
Löysin pienen halogenivalon ja sen pistokkeen jonka meinasin laittaa kohdevaloksi, mutta kuin sattumalta osui thingiversessä vastaan juuri tuollaiselle tehty kiinnike jolla sen sitten laitoin runkopalkkiin kiinni.





Tulostimen päälle tein filamentille ohjaimen joka estää sitä samalla hankautumasta kierretankoon.






Tulostimesta alkaa muodostua myös "true multicolor reprap" erivärisine lisäpalikoineen.
Lisää tapahtumia taas ensikerralla.

tiistai 17. syyskuuta 2013

Prusan sähköjen asennus ja ensikäyttöä

Rakennuspiste terassilla

  
** 4-5. Päivä

Sitten oli vuorossa asentaa raja-anturit ja vetää johdot antureille ja moottoreille.

(Kuvat sattu vahingossa menemään ja pysymään vierekkäin)
 
Z-endstop (vanha)
Y-endstop
X-endstop




Moottoreille käytin suojattua 4x0,25mm² johtoa ja antureille ohutta yksittäisjohtoa pariksi kierrettynä. Hotendin mukana tuli sen vastukselle johto valmiina, lämpölevylle laitoin 2,5mm² yksittäisjohdot.

Jalkojen alle asensin myös kumitassut pehmentämään mahdollista koneen tärinää. 

** 6. Päivä 
 
Sähköt päälle ensimmäistä kertaa. Firmikseen olin laskenut steps_per_unit -liikearvot 
teoriapohjalta valmiiksi, mutta silti liikkeet eivät täsmänneet todellisia mittoja. Prontfacesta jos syötin samat liikkeiden arvot uudestaan niin aksilat liikkui justiin oikean matkan, mutta kun koneesta taas katkaisi sähköt niin sen jälkeen liikkeet heitti taas hieman.

...Tuon kalibroinnin kanssa pällistelin vielä pari päivää kunnes satuin lukemaan eeprommilta asetukset M501 -komennolla, sielä oli väärät arvot tallessa mistä se ne aina latasi. Oikeiden arvojen asetus ja lopuksi tallennus EEPROM:lle M500 -komennolla.

** 7. Päivä

Olin löytänyt töistä sopivan kokoisen levyisen lasilevyn, pituus vain oli liikaa. 


Lasiveitsellä siisti "katkaisu" oikeaan mittaan. Lopputuloksena koko lasi oli säpäleinä maassa. Tulin siihen tulokseen että se oli varmaan karkaistua lasia, eikä sitä ilmeisesti jälkeenpäin helposti saa enää leikattua.

No kaapissa oli ollut aikoja käyttämättä shottiristinolla jonka pelialusta oli myös lasia ja sopivan kokoinen niin tarvinnut yrittää edes leikata sitä. Se päätyi nyt vihdoin hyvään käyttöön.

** 8. Päivä

(Tässä vaiheessa sain aiemman päivän steps_per_unit-arvot toimimaan oikein)

Testasin hotendin lämpeämistä ja sehän lämpes alle minuutis 200C. Lämpöpeti ei ole vielä toiminnassa. Joku arduinon portti ei ole oikein kun sähköt ei tule, eikä pedin lämpötila-anturikaan toiminut.  



Z-rajakytkimen vaihdoin induktiivianturiin koska en luottanut kiinalaiseen mekaaniseen  kytkimeen että se pystyy palauttamaan korkeuden joka kerralla 0,0X mm tarkkuudella. Z-kelkkaan teippasin prikan anturin kohdalle tunnistusta varten.

** 9. Päivä

Taas meni monta päivää yrittäessä selvittää mihin softapinninumeroon lämpöpeti ja sen anturi kytkeytyy. Nyt tajusin ottaa yleismittarin ja piipata mihin nastaan ne menee ja sitä kautta löysin sitten sille vastaavan numeron softaan.

Täälä oli hyvä kuva Arduino Megan softa/hardware -pinninumeroista joista sen sain lopuksi pääteltyä oikein. Saatan muistaa väärin mutta mielestäni lämpöpedillä oli alkujaan oikea portin numero configissa, mutta sitten en vaan ymmärrä miksei se aluksi toiminut.

** 10. Päivä

Vihdoin kaikki saatu toimimaan niin saa iskeä filamentit sisään ja ensimmäistä ajoa. 20x20x12mm kuutio oli justin kokonen, paitsi korkeus oli 1,2mm vajaa. Säädin filamentin syötön että 10mm käsky vetää myös filamenttia 10mm.

Sitten heti kunnon tulostusta, lego auton runko ja roskakori (jonka oletin epäonnistuvan mutta piti koittaa). Slic3r laski gcodeja 1,5 tuntia (En tiedä mikä tuossa kesti kun jatkossa kaikki menny minuuteissa). Tulostus käyntiin illalla ja kesto arvio 5,5 tuntia, eli yöksi yksin tulostamaan pihalla, missä lämmintä ~5-10C.
Ensimmäisen kokeen toinen tuloste.

Hotendin lämmöt 240 ja HBP 110C jonka nukkumaan mennes nostin vielä 120C kompensoimaan vähän yön kylmää ilmaa.

Kappaleiden infill oli kyllä sellaista siksakkia (hunajakenno) että hieman löysät hihnat vaan heiluu, eli jotkut (jousitoimiset?) hihnakiristykset täytyy tehdä.

Yöllä heräsin ja kävin vilkaisemassa tulostinta niin auton runko oli valmis ja pilalle mennyttä roskakoria vielä tulosteli joten keskeytin tulostuksen siihen ja sammutin koneen. Auton runko onnistui ällistyttävän hyvin. Mitä juttuja lukenut niin muilla on tuntunut ensimmäisistä tulosteista tullu ihan muodottomia kasoja vain. Eli ei voi olla kuin tyytyväinen.

(Kuvassa autossa näkyvät ylimääräiset haivenet kulkeutui epäonnistuneen roskakorin takia, mutta ne sai pätkittyä irti ja oli sen jälkeen siisti.)

** 11. Päivä

Täyspöydällinen vain heti tulostumaan, mutta ei montaa kerrosta ehtinyt kun filamentin  

tulo lakkasi nozzlesta kuitenkin syötön pyöriessä koko ajan. Stoppia heti, luulin että nyt hotendi meni jo tukkoon jostain syystä.

Tutkimisen jätin seuraavalle päivälle, mutta tuloksena oli vain että filamentti oli ruvennut kietoutumaan syöttöpultin ympärille.

** 12. Päivä

Koitin käyttää aikaa tulostimen hienosäätöön. Luin kalibrointiohjeita ja tulostelin kappaleita. Filamentin syöttömäärän säädin kuutiota tulostaessa ohjeen mukaan. 
Kalibrointitulostusta
Tällä säädöllä on sen jälkeen menty.

Enemmän kalibrointikohteita ja -kappaleita löytyy täältä. En kaikkia koittanut läpi, mutta lueskelin kyllä ja yritin edes ymmärtää vähän.

** 13. Päivä

Tänään filamentti jumitteli taas, kerran pyörähtitaas pultin ympärille, mutta toisella jumilla söi kolon filamenttiin ja jäi pyörimään tyhjää. Onko tässä 3mm filamentilla etu että se kestää enemmän työntövoimaa kun on paksumpu.

Huomasin myös että omassa extrudderissahan on reikä 3mm filamentille, josta syystä se ehkä pääseekin menemään kippuralle, joten tähän täytyy tehdä tilalle osa joka tehty 1.75mm muoville.


No tulostin ainakin nyt toimii ja tästä on helppo tulostaa varaosia, lisäosia ja parempia korvaavia osia.

torstai 12. syyskuuta 2013

Prusan rungon kasaus, osa 2

Nämä nyt on kirjoitettu jälkikäteen koska rakennellessa meni aika hyvin siihen eikä sitten jaksanu päivän päätteeksi kirjotella.
Koska kuvia on ainakin omasta mielestäni mukava katsella varsinkin rakennusprojekteista niin laitan niitä sitten myös ripakopallisen..
[olisin laittanut jos tänne sais helposti vierekkäin niitä ettei veisi niin paljo tilaa, mutta nyt niitä kuvia löytyy sitten tuolta blogin kuva-albumista mitä en tähän ahtaa.]

** 2. Päivä
Laakerinpitimien kiinnitys"jigi"

Tulostustason pohjimmaisen tason tein lasikuitulevystä johon kiinnitetään Y-akselin laakerit. Laakerinpitimien oikean paikan katsomiseen tein pienen "jigin" että ne ovat suorassa samassa linjassa.
Luotilankatarkistus

Z-akselin alapään kiinnityksen paikka on hyvä tarkistaa luotilangalla tms. että se on samassa linjassa yläkiinnikkeen kanssa. Liukutankojen yläpään kiinnityksessä ruuvien mitat täytyi olla melko jämptit ettei ruuvi tullut pitkälle ja ottanut moottoriin.

Moottorien kiinnityksessä laitoin solumattoa moottorin ja kiinnikkeen väliin vaimentamaan moottorien aiheuttamaa
värinää.

X-akselin liukutankojen päihin laitoin kierroksen teippiä että sovitus oli sopivan tiukka
Solumatto ja ruuvit jämptin pituiset
kun niiden kiinnitys jäi hieman epäselväksi. Jossain vanhassa mallissa ne tuettiin ruuvilla kiinni alhaalta päin, mutta omissa Z-kelkoissa ei ollut sellaisia ruuvien paikkoja joten ne vain olevat sielä. Toisessa Z-kelkassa pääty oli valmiiksi ummessa ja toisesta pästä estin tangon pois tulemisen laittamalla ruuvin päädystä läpi kun siinä kohtaa näytti reiät sopivasti olevan.


Purkutehtävä
** 3. Päivä

Y-akselin moottoria asentaessa tuli pieni purkutehtävä, kun moottorin akseli ei ollut niin pitkä että hihnapyörä olisi ylettynyt rungossa jo olevan ohjaimen kanssa samalle kohdalle niin sieltä välistä täytyi ottaa yksi mutteri pois.


Z-akseli kasattuna vielä ilman kierretankoa on hyvä tarkistaa että se liikkuu ylös/alas
Z-kierretangon asennus
hyvin ja likutangot ovat yhtä etäällä ylä- ja alapäässä.
Sitten kierretanko paikoilleen ja hyvät vaseliinit kierteisiin ja yhdistys moottoriin kiinni. Moottorin aksilaan piti laittaa ohut muoviletkun pala tai joku johdon suojavaippa että se kiristyy kiinnityspalan väliin ja pystyy samalla hieman joustamaan (Laitoin ensin samaa solumuovia kierroksen aksilan ympärille, mutta myöhemmissä käyttötesteissä se pehmeyttään rasituksen alla kiertyi tyhjää ja lopuksi irtosi).
Luetun mukaan rasvaukseen ei kannata käyttää WD-40:stä, se ei estä kulumista ja aiheuttaa vain mustaa mössöä.



Tulostustaso ilman lasia vielä
Y-kelkan päälle tulostustason kokoinen (hieman isompi) vanerilevy, sen päälle pala pahvia lämpöeristeeksi ja lopuksi MK2-lämpölevy joka

Extruderi
pitää tulostuslasin lämpöisenä. Välttämätön ABS-muovin tulostuksessa, mutta PLA:ta käyttäessä ei pakollinen.


Extruderiin moottori, rattaat ja syöttöpultti kiinni. Hotendin asennuskoloon kun laittoi yhden M8 prikan alle niin ostamani E3D-täysmetallinen Hotendi istui sinne juuri sopivan tiiviisti ettei päässyt heilumaan.
Kun extruderia rupesi sovittamaan X-kelkkaan niin
keskimmäisiin ruuveihin laittaessa moottori oli niin pitkällä että se osuihihnaan.Vaihtoehtona asentaa extruderi
Hotendin tuulettimen asennus
toisinpäin, rattaat
taaksepäin, tai sitten rattaat eteen mutta yhdenreijän verran vinoon. Vinoon asentaessa taas hotendin tuulettimen pidike ei mahtunut jäähdytysrivaston päälle, niin päädyin tekemään muovin palasta kannattimen tuulettimelle ja teipistä tuulitunneli jäähdytysrivastoon.

Mekaaninen rakenne olisi tässä vaiheessa lähes valmis,
ehkä pientä hienosäätöä.


Tässä vaiheessa mennään.

perjantai 23. elokuuta 2013

Prusan rungon kasaus, osa 1

Tulostimeen on kaikki osat hommattu, muutama osa kylläkin vielä matkalla. Osien hankinnassa sattui rakentamisen kannalta huono homma kun muoviosat saatiin vasta nyt, lähes viimeisenä, ja tämä sen takia kun "kaverinkaverintutusta" ei sittemmin kuulunut ja piti ruveta muualta kattelemaan muoveja. Ebaystä löytyi lopuksi yksi joka myi kohtuuhintaan ja toimitti suomeen ilman järjettömiä 40$ postikuluja. Loppuhinta muoviosille oli toimitettuna 44€ ja vain 6.pv matka-ajalla.

Kasaukseen löytyy hyvä visuaalinen ohje täältä.

Kasaaminen lähtee päätykolmioista jossa tuli heti ensimmäinen ongelma kun kolmio kasaantui kieroon. Ongelmana oli yläpalat jotka oli kärsinyt hieman "warping":stä eli tulostaessa pala on käpristynyt ja siitä on tullut kaareva joten reijät ei ollu ihan oikeilla paikoilla. 8mm poralla reilulla kädellä reikiä suurentaen sain kolmiot lopuksi oikeaan muotoon.

Siitä jatkaen etu-, taka- ja ylätankojen lisäys ja rakennelma rupeaa näyttämään jo itseltään. Tässä ei ongelmia ollut kun tein etukäteen poralla reikiin vähän liikkumatilaa. Ennen lopullista kiristystä mittojen tarkistukset. Mitat on muovin reunasta reunaan, mutta ensimmäisen jälkeen mittasin siitä tangosta tankoon mitan ja laitoin muut sen mitan mukaan kun muovien reunat on vähän epätasaiset niin saa tarkemmin.

Uloimpien mutterien alle laitoin ruuvilukitetta niin pysyvät paremmin (ja helpompi laittaa kuin nylock mutterit). Myöhemmin pistän varmaan vielä muillekkin mutterelle lukitteet.
Tämän illan rakennus oli siinä, aikaa taisi mennä muutama tunti.



PS.
Osia odotellessa kaikkea asiaan liittyvää on tullu lueskeltua, mutta tässä on hyvä sarjakuva tulostimen rakentamisesta (lue alusta asti). >> RepRap Adventures

torstai 4. heinäkuuta 2013

3D Tulostin, projekti RepRap

Töissä on joskus alkuvuoden paikkeilta tullu puheeksi 3D tulostimet että ei ihan mahottomia maksa (sillon halvimmillaan ~1000e valmis), mutta on jäänyt aina semmoselle "tommonen olis kiva" -tasolle. Joku viikko sitten oli taas puhetta "rautalanka" DIY malleista, kun ei paljon taas enää maksaisi. Se jäi nyt takaraivoon kaivelemaan että mitä semmonen DIY vehje sitten maksaisi. 500e kun on kuitenkin oletetulle käytölle vielä vähä paljon.

Nyt rupesin selvittämään asiaa ja tuli vastaan RepRap -malli (Prusa Mendel i2) jonka runko rakennetaan käytännöstä kierretangon pätkistä ja muovinpaloista jotka saa tulostettua toisella tulostimella (tai ostettua jonkun tekemät).
Samalla sitten selvis myös että työkaverin kaverinkaverintuttu oli semmoisen tehny ja siltä sais myös muoviosat halpaan hintaan, joten runkoon tarvii ostaa vain kierretankoa ja muttereita.


Rungon lisäksi tarvii tietysti vähä moottoreita, tulostuspään, elektroniikan ym.

Tarvikkeiden hintoja kattoin reprap.cc ja reprapworld.com -kaupoista, ja kierretangont ym. ihan vaan biltemahinnalla. Tarpeet on katottu Prusa Mendel -mallin mukaan ja tämmöinen alustava lista siitä tuli.
Muoviosat         44 kpl    25 €
M8 kierretanko    6x 1 m    15 €
8mm sileä tanko   3x 1 m    10 €
M8 mutteri        100 kpl   6 €
M8 aluslevy       100 kpl   5 €
Hammashihna       2 m       7 €
Hihnapyörä        2 kpl     6 €
608 laakeri       6 kpl     3 €
LM8UU laakeri     10 kpl    15 €

J-Head tulostuspää          40 €
RAMPS elektroniikka         108 €
Termistori        1 kpl     5 €
optorajakytkin    3 kpl     12 €
tai mikrokytkin   3 kpl     3 €
Moottorit         5 kpl     60 €


Tuolla listalla hintaa kertyisi hieman yli 300e ja jokunen moottori saattaa löytyä valmiiksi jo kätköistä joka alentaisi siltä osin vielä vähän hintaa. Ei paha, jos vielä kaverin kanssa tekee projektina niin 150e, niin äkkiä osat tilaukseen.
No katsotaan mihin tämän kanssa päästään.

maanantai 1. heinäkuuta 2013

Class-D 2x25W vahvistimen kompakti kotelointi

Aiemmin rakensin tuon vahvistimen piirilevyn ja nyt (tai kylläkin jo kuukauden päivät sitten) olen saanut ensimmäisen koteloitua oikein kompaktiin pakettiin.
Töistä löysin rikkinäisen SSD-kovon jossa on musta alumiinikotelo. Paksuutta tuossa ei paljon ollut ja koska vahvistimen levyllä on muutama isompi konkka niin ne ei tietenkään kotelon sisälle mahtunut, joten päädyin tekemään kahdelle symmetrisesti olevalle konkalle kanteen reijät, mutta kolmannen epäsymmetrisesti sijoitetun korvasin jalallisella ja kaadoin sen levyltä pois jolloin se mahtui kotelon sisään. Lisäksi "5V"-jännitteen konkka oli aivan himpun liian korkea joten laitoin myös sen levyn reunan ulkopuolelle.

Audio inputtiin laitoin RC low pass filterin  30kHz tuntumaan poistamaan plugin kytkemisen häiriöäänet, mutta se ei kuitenkaan koteloon päätyneessä filtterissä ollut niin toimiva kun protoversiossa. Testejä tehdessä käytin 1uF polkoa jolla häiriöt oli kohtuu vähäiset, mutta ko. konkka oli liian paksu, niin koteloon laitettu 3,3nF polko ja 1,8k vastus ei ollutkaan enää läheskään niin toimiva.

Suurta tietämystä filttereistä ei tosin ole ja asiasta lukiessa ei tullut vastaan mitään valaisevaa.

Kaiutinliitännät ja sähkönsyötön laitoin ruuviliittimien kautta, audiosisääntulolle 3,5mm jakin jota jouduin vähän ohentamaan ja kylkeen vielä virtakytkin joka on kytketty piirin shutdowniin.
Liittimet laitoin epoksilla koteloon kiinni. MAX:in ja pohjan välissä on lämpötyyny, jos se jostain syystä niin paljon sattuisi lämpeämään, ja levy on ruuveilla kiinni pohjassa. GND on kytketty yhden ruuvin kautta koteloon.
Diodi vielä plus -johdon väliin polariteettisuojaksi sekä yksi 100uF lisäkonkka syöttöön ja johtojen veto siististi.

Kotelon läpi tulevat konkat sekä alkuperää vihreät riviliittimet maalasin pienoismallien mustalla maalilla ja ruuviliittimiin asiaankuuluvat merkinnät toisella värillä.

Myöhemmissä kuunteluissa ja testeissä eri virtalähteitä käyttäessä, toisista tulee vähän enemmän häiriötä ja kuuluu pienenä sirinää. Tämän takia laitoin tuon jo mainitun toisen 100uF konkan syöttöön, vaikka ei niin hirveästi enää vaikuttanutkaan. Jännitesyöttöön lisättävällä 1000uF konkalla häiriöt jo poistuivat, mutta semmoinene nyt ei tähän kotelomalliin enää mahdu. Jos tarve vaatisi niin se täytyisi kytkeä ruuviliittimien kautta ulkoisesti.


Ja "virallinen" tuotenimi, Epelifier v.2

perjantai 26. huhtikuuta 2013

Linux ja SSD optimointi

Toiset käyttää SSD-levyä kuten perinteistä kiintolevyä, mutta jos levy on käyttöjärjestelmälevynä ja SSD:ssä on kuitenkin rajallinen kirjoituskertojen määrä niin ei siitä voi haittaakaan olla hieman optimoida levylle tekemiä kirjoituksia vähemmäksi.
Tässä on temput mitä itse tein Linux Mintin kanssa.

Ennen asennusta livelinux GPartedilla tai vastaavalla osioidaan levy ext4 -formaattiin ja sitten terminaalissa poistaa journalointi käytöstä
    $ tune2fs -O ^has_journal /dev/sdaX        #korvaa X levyn numerolla, esim /dev/sda1
    $ fsck -fy /dev/sdaX        #korjaa osion virheet, ilman tätä järjestelmä ei käynnisty



--> /etc/fstab <--

SSD-levyn liitosasetuksiin noatime ja discard -asetus
 * noatime kieltää tiedostojärjestelmää päivittämästä levylle tietoa siitä, milloin tiedosto on viimeksi avattu (oletko joskus tarvinnut tätä tietoa..?).
 * discard ottaa käyttöön erityisesti SSD-levyjä varten kehitetyn TRIM-komennon, joka vähentää levyn kirjoituksia normaalissa käytössä. Vaatii vähintään 2.6.33 kernelin.

    UUID=2e0c3ea7-5cb3-499e-8542-315946ab1ef2    /    ext4    noatime,discard,errors=remount-ro    0    1

Tmpfs-osiolla olevia tietoja pidetään tietokoneen keskusmuistissa aina, kun se on mahdollista, ja vain muistin käydessä vähiin tai esimerkiksi siirryttäessä lepotilaan tiedot siirretään SSD-muistille. Siirretään siis log- ja tmp-kansiot tmpfs-osiolle.


""
tmpfs    /var/log    tmpfs    defaults,noatime,mode=0775    0    0
tmpfs    /var/tmp    tmpfs    defaults,noatime,mode=1777    0    0
tmpfs    /tmp        tmpfs    defaults,noatime,mode=1777    0    0

""

--> /etc/rc.local <--

Lokitiedostoja ylläpitävä sysklogd ei välttämättä osaa käsitellä oikein tilannetta, jossa /var/log-hakemisto on tyhjä. Koska siirsimme sen äsken tmpfs osiolle, joka tyhjenee aina kun koneen sammuttaa, tämä scripti tekee koneen käynnistyessä /var/log -kansioon hakemistorakenteen. Lisää se ennen "exit 0" kohtaa

""

# you may want to add more folders to be checked/created to this list:
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba speech-dispatcher unattended-upgrades; do
  if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
  fi
done

""

--> /etc/default/grub <--

Muokkaa riville "elevator=.." -> "..=deadline"
 * Deadline scheduling algorithm places I/O requests in a priority queue so each is guaranteed to be ran within a certain time. It is often used in real-time operating systems.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=deadline"

Päivitetään vielä grub
    $ sudo update-grub


--> /etc/sysctl.conf <--

Swappi osion käytön määritys 0-100 välillä. 0 käyttää swappia vain kun muisti on aivan lopussa, 100 käyttää swappia jatkuvasti (jota emme halua).
Lisää rivi tiedoston loppuun.

vm.swappiness=10


--> Firefox profiili <--


Tämä ohje on kopioitu linux wikistä kokonaisuudessaan, joten kiitos sen kirjoittajalle.

Firefox käyttää surffailun aikana melko paljon omaa tietokantaansa, joka sijaitsee .mozilla/firefox-hakemistossa. Tämän hakemiston siirtäminen tmpfs-osiolle nopeuttaa Firefoxia huomattavasti. Tällöin on kuitenkin muistettava tehdä sellaiset asetukset, että profiili otetaan talteen massamuistin puolelle koneen sammutuksen yhteydessä ja palautetaan se koneen käynnistyessä.

Aloitetaan varmuuskopioimalla Firefoxin profiili komennolla
    $ cp -R ~/.mozilla/firefox ~/.mozilla/firefox_backup

Seuraavaksi luodaan skripti, joka sammutuksen yhteydessä kopioi Firefoxin profiilin hakemistoon .mozilla/fi ja käynnistyksen yhteydessä palauttaa nämä tiedostot käyttäen rsync-synkronointisovellusta.
Luo tiedosto /etc/init.d/ffprofile ja kirjoita sen sisällöksi:

Huom! Korvaa tähän_käyttäjätunnuksesi

""

#!/bin/sh

error=0
tunnus=tähän_käyttäjätunnuksesi
case "$1" in
start)
    echo "Calling rsync -av --delete /home/$tunnus/.mozilla/fi/ /home/$tunnus/.mozilla/firefox/"
    rsync -av --delete /home/$tunnus/.mozilla/fi/ /home/$tunnus/.mozilla/firefox/
    exit $error
    ;;

stop)
    echo "Calling rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/"
    rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/
    chmod -t /home/$tunnus/.mozilla/fi/
    chmod og-w /home/$tunnus/.mozilla/fi/
    exit $error
    ;;

*)
    echo "Usage: /etc/init.d/ffprofile {start|stop}"
    exit 1
    ;;

esac

""

Anna tiedostolle myös suoritusoikeudet
     $ sudo chmod +x /etc/init.d/ffprofile

Seuraavaksi luodaan symboliset linkit tähän tiedostoon eri ajotasoille siirryttäessä läpikäytäviin /etc/rcX.d-hakemistoihin. Jotta synkronointi tehtäisiin sammutuksen ja uudelleenkäynnistyksen yhteydessä (ajotasot 0 ja 6), luodaan linkit komennoilla
    $ sudo ln -s /etc/init.d/ffprofile /etc/rc0.d/K01ffprofile
    $ sudo ln -s /etc/init.d/ffprofile /etc/rc6.d/K01ffprofile


Käynnistyksen yhteydessä taas siirrytään jakelusta riippuen eri ajotasolle. Debian-pohjaisissa jakeluissa (mm. miniläppäreissä usein käytetyssä Ubuntussa) se on 2, jolloin linkki luotaisiin komennolla
    $ sudo ln -s /etc/init.d/ffprofile /etc/rc2.d/S99ffprofile

Enää on selviydyttävä tapauksesta, jossa kone ei sammukaan puhtaasti, jolloin Firefoxin profiili jää päivittämättä levylle. Luodaan tätä varten ajastettu tehtävä, joka kopioi tunnin välein Firefoxin profiilin samaan paikkaan kuin yllä luodut skriptit. Tämä onnistuu luomalla tiedosto /etc/cron.hourly/ffprofile johon sisällöksi tulee:

Huom! Korvaa tähän_käyttäjätunnuksesi

""

#!/bin/sh
tunnus=tähän_käyttäjätunnuksesi
echo "Calling rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/"
rsync -av --delete /home/$tunnus/.mozilla/firefox/ /home/$tunnus/.mozilla/fi/
chmod -t /home/$tunnus/.mozilla/fi/
chmod og-w /home/$tunnus/.mozilla/fi/

""

Nyt olemme valmiit siirtämään Firefoxin profiilin lopullisesti tmpfs:lle. Lisätään /etc/fstab-asetustiedostoon rivi

tmpfs    /home/käyttäjätunnuksesesi/.mozilla/firefox    tmpfs    defaults    0    0

ja littämällä uusi tmpfs-osio komennolla
    $ sudo mount -a

Kopioidaan tämän jälkeen vielä vanha profiili paikoilleen komennolla
    $ cp -R ~/.mozilla/firefox_backup ~/.mozilla/firefox



Edit: typo

sunnuntai 21. huhtikuuta 2013

Transmission torrent client


Asennetaan transmission -torrent ohjelma
     $ sudo apt-get install transmission-cli transmission-common transmission-daemon


Asennuksen jälkeen transmission käynnistyy, mutta jotta voimme muokata asetuksia se pitää olla sammuksissa, muuten asetukset ei tule voimaan.
    $ sudo /etc/init.d/transmission-daemon stop

Avataan tiedosto jossa asetukset ovat
    $ sudo nano /etc/transmission-daemon/settings.json

Muutama kohta mitkä haluat ehkä vaihtaa asetuksissa, tiedostossa on myös monta muuta asetusta oman mielen mukaan. Web-liittymän kautta pystyy myös muutamia asetuksia säätämään.
 - download-dir           = Latauspolku, esim. /media/usbhdd
 - download-queue-size    = Latausten yhtäaikainen määrä
 - peer-limit-global      = Tähän "60", olen todennut omalla 128 muistijaolla olevan max. 

                          (tai mistä johtuukaan) tai muuten raspi kaatuu ajan päästä.
 - peer-limit-per-torrent = Tähän "15", ^^
 - peer-port
 - rpc-authentication-required    = Kysytäänkö käyttäjänimi/salasana
 - rpc-password           = Salasana kryptataan tähän kun olet käynnistänyt

                          transmissionin uudestaan
 - rcp-username           = Käyttäjänimi kirjautumiseen
 - rcp-whitelist          = Mistä osoitteesta on sallittu ottaa yhteys, esim "192.168.*" 

                          eli omasta sisäverkosta tai itselläni on pelkkä "*" 
                          jolloin pääsee myös ulkoverkosta kunhan on
                          porttiohjaus tehty reitittimeen.
 - rpc-whitelist-enabled  = true, ^^


Lopuksi käynnistetään transmission jälleen
    $ sudo /etc/init.d/transmission-daemon start

Web-käyttöliittymä löytyy osoitteesta
    http://raspin-ip:9091/transmission/web/

Jos käytät windowsia, transmissionille löytyy Remote GUI -ohjelma jolla on helppo hallita toiselta koneelta torrentteja. Ominaisuuksia löytyy myös enemmän kuin web-liittymästä.

Remote Java löytyy myös joka toimii mm. linuxilla. sen saa käyntiin komennolla
    $ java -jar /polku/sijaintiin/transmission-remote-java-0.15.20-1041-bin.jar

lauantai 20. huhtikuuta 2013

Class-D 2x25W/1x50W vahvistin, MAX9709

Tämä sai alkunsa joskus vuosi sitten kun selasin maximin sivuja ja mietin mitä sitä vois tehdä.
Maxim IC on siitä kiva valmistaja (löytyy tosin muitakin) että se tarjoaa komponenteistaan ilmaisia samppeleita myös opiskelioille ja harrastajille. Ja kaikki tämä vielä kotiovelle kannettuna muutamassa päivässä.

Laitoin sieltä sitten mm. MAX9709 piirin tilaukseen ja muutaman päivän päästä se sitten saapui oikeen vakuumiin pakattuna. No se jäi laatikkoon odottelemaan koska piiri oli ensinnäkin niin pieni TQFN-56 -koteloinen eli vain 8x8 mm eikä siinä ollut varsinaisia jalkoja vaan piirin reunassa vain juotospinnat ja pohjassa vielä therma-pad.
Lisäksi en löytänyt valmista komponenttikoteloa sille käyttämääni Eagle -piirilevyn suunnitteluohjelmaan joka oli se kynnys etten piirtänyt levyä tuolle sillä hetkellä.

Alkuvuodesta lueskelin ruuvipenkistä "alle euron piirilevyt" -artikkelin ja mieleen palasi tuo vahvistinpiiri. Olen syövyttänyt myös itse useita piirilevyjä, mutta tuon piirin vaatimaan tarkkuuteen en kyllä läheskään pysty itse joten vaihtoehto oli tilata tehdastekoiset. Rupesin uudestaan suunnittelemaan tuota ja sain tehtyä itse komponenttipaketin eagleen joka osoittautui helpommaksi kuin olin joskus kuvitellut/yrittänyt.
Levyn piirrossa kului aikaa jokunen viikko että se olisi kerralla hyvä kun kerran levyt oikeen tilataan. Tuon suunnitteluaika pidentyi vielä muutamalla viikolla justiin päälle iskevän kiinalaisten uudenvuoden takia.

Lopuksi niittenkin hupi loppui ja sain levyt tilattua ja kolmen viikon odotuksella ne lopuksi saapuivat.



Nippu komeita piirilevyjä
Ei muutakun tarkkaa kättä ja jännityksellä odottaen miten piirin juotos onnistuu. Onneksi satun olemaan alala töissä ja tilojen "lainaaminen" omalla ajalla sopii niin on hyvät välineet käytössä.
Siispä mikroskoopin alla tarkkaa työskentelyä ja asettelin yksitellen jokaiselle piirin pädille sopivasti juotospastaa ja thermal-padille vähän reilummin. Sitten piirin asettelu oikealle kohdalle ja levy esilämmitykseen. Reilu kolme minuuttia ja sitten leisterillä (pieni kuumailmapuhallin) varovasti tohottaen ~minuutti ja juotos valmis. Vielä muiden komponenttien asettelu ja juottaminen ja levy on valmis.



Valmis yläpuoli
Valmis alapuoli

Pikainen ensitesti ja aivan mykkä. Lyhyt tarkistus ja olin unohtanut piirtää shutdown- ja mute -pinneille vedot. Pieni hyppylanka paikalleen ja johan rupesi ääntä lähtemään. Tässä vaiheessa oli onnistunut olo.
Hyppylankakorjaus

Myöhemmin kotona enemmän koitettuna tuo toimii oikein hyvin. Piiri ei edes kuumene "normaali" äänenvoimakkuudella eikä siten välttämättä tarvi kovinkaan suurta jäähdytystä.
Aiemmin olen tehnyt yhden vahvistimen TDA1557-piirillä ja siitä tuli käyttämäni virtalähteen hurinoita läpi, mutta tämän on hiiren hiljainen ja olen kyllä enemmän kuin tyytyväinen miten onnistunut tästä tuli.

Nyt suunnittelupenkillä on sitten noiden kotelointiratkaisut ja loppusijoituspaikat, mitä sitten keksiikään.


PS. Skemat täältä jos kiinnostaa.

perjantai 19. huhtikuuta 2013

XBMC:n asentaminen

XBMC:n asenteamisesta on hyvät ohjeet täälä josta myös löytyy tarvittavat valmiiksi käännetyt paketit. Edit. Koska kyseinen sivu on kadonnut syövereihin, tästä viimeisimmät paketit mitkä itselläni on (v.12.1).
Tässä kuitenkin samat ohjeet vielä.
- Lataa ensin neljä pakettia em. osoitteesta (xbmc.deb, libcec.deb, taglib.deb, libshairport.deb) ja laita vaikka usb-tikulle tai siirrä verkon kautta raspiin.


- Jos päivität edellisen version uudempaan niin poista ensin vanha.
    $ sudo dpkg -r xbmc
    $ sudo dpkg -r libcec


- Asennetaan tarvittavat kirjastot ja ladatut paketit.
    $ sudo apt-get update
    $ sudo apt-get install libplist1 libmicrohttpd10 libtinyxml2.6.2 libyajl2 libssh-4 libmysqlclient18 liblzo2-2 libfribidi0 libcurl3-gnutls liblockdev1 libpcrecpp0

    $ cd /kansio/mihin/laitoit/paketit
    $ sudo dpkg -i libcec_2.1.0-1_armhf.deb
    $ sudo dpkg -i taglib_20130324-1_armhf.deb
    $ sudo dpkg -i libshairport_1-1202030-1_armhf.deb
    $ sudo dpkg -i xbmc_12.1-1_armhf.deb

    $ cd /usr/lib/
    // Jos haluat käyttää CEC-ohjausta
    $ sudo ln -s /usr/local/lib/libcec.so.2 ./libcec.so.2
    // Jos haluat käyttää airtunesia tai airplayta
    $ sudo ln -s /usr/local/lib/libshairport.so.0 ./libshairport.so.0


** 12.1 versiossa cpu käyttö on jostain syystä hieman korkea niin seuraavalla se pitäisi hieman tipahtaa.

- Tee kansioon .xbmc/userdata/ uusi tiedosto nimeltä "advancedsettings.xml"
    $ nano .xbmc/userdata/advancedsettings.xml

- Liitä sinne seuraava teksti ja tallenna.

<advancedsettings>
   <fanartres>540</fanartres>
   <imageres>512</imageres>
   <useddsfanart>false</useddsfanart>
   <lookandfeel>
 <enablerssfeeds>false</enablerssfeeds>
   </lookandfeel>
   <gui>
       <algorithmdirtyregions>3</algorithmdirtyregions>
       <nofliptimeout>0</nofliptimeout>
   </gui>
   <bginfoloadermaxthreads>2</bginfoloadermaxthreads>
</advancedsettings>

Sitten vain käyntiin ja kovaa käyttöä
    $  /usr/lib/xbmc/xbmc.bin


Edit 03/2015: Ladattu paketit google driveen jakoon.

sunnuntai 14. huhtikuuta 2013

Verkkojaot toimimaan

Ohje on tehty raspille, mutta toimii myös työpöytälinuxille.

Asennetaan samba
    $ sudo apt-get install samba samba-common-bin


Asetetaan salasana samballe
    $ sudo smbpasswd -a pi


Muokataan asetustiedostoa
    $ sudo nano /etc/samba/smb.conf


Korvaa tiedoston sisältö seuraavalla.
Vaihda workgroup samaksi mitä käytät tietokoneella, windows 7:ssa taitaa olla vakiona "home".
Netbios name määrittää koneen nimen joka näkyy verkossa.
Server string on vain vaihtoehtoinen lisätietokenttä ko. koneesta.
Tiedoston lopussa taas sitten määritellään mitä jaetaan. Tässä on jaossa SD-muistikortti ja usb-kiintolevy.



#======================= Global Settings =======================
[global]
workgroup = koto
netbios name = raspberrypi
server string = Rpi multi-usage server

dns proxy = no

#### Debugging/Accounting ####
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d

####### Authentication #######
security = user
map to guest = pi

# Some performance tuning
socket_options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536


#======================= Share Definitions =======================
[Raspi-HDD]
comment = Rpi USB-HDD
path = /media/usbhdd
guest ok = yes
guest account = ftp
browseable = yes
read only = no
create mask = 0777
directory mask = 0777
writeable = yes
admin users = pi

[Rpi-SDcard]
comment = Rpi SD-kortti
path = /
guest ok = yes
guest account = ftp
browseable = yes
read only = no
create mask = 0777
directory mask = 0777
writeable = yes
admin users = pi

Käynnistetään samba uudelleen
    $ sudo /etc/init.d/samba restart



-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-


Jos halutaan liittä windows/samba verkkojako raspiin, se onnistuu seuraavasti.

Tehdään kansio johon jako liitetään
    $ sudo mkdir -p /media/musat


Asennetaan cifs-"työkalu(?)"
    $ sudo apt-get install cifs-utils


Liitetään jako komentoriviltä
    $ sudo mount -t cifs //192.168.0.21 -o username=käyttäjänimi,password=salasana /media/musat


Tai muokataan fstab-tiedostoa jolloin jako liitetään aina automaattisesti käynnistäessä
    $ sudo nano /etc/fstab


Lisätään sinne rivi

//192.168.0.21/Musat    /media/musat    cifs    dir_mode=0777,file_mode=0666,username=käyttäjänimi,password=salasana    0    0

Tuo saadaan käyttöön käynnistämällä raspi uudelleen tai komennolla
    $ sudo mount -a




Huom.
Jos käyttäjänimessäsi on väli, laita sen tilalle "\040", esim. olli\040lehtonen


Edit 19.4: pikkulisäys

USB-kiintolevyn liittäminen

Tehdään hakemisto minne kiintolevy liitetään
    $ sudo mkdir -p /media/usbhdd

Jos levy on ntfs-muodossa, asennetaan ensin tiedostojärjestelmäajuri
    $ sudo apt-get install ntfs-3g

Jos levy on ainut kiinni oleva on sen "levytunnus" todennäköisesti sda1, mutta voit katsoa mitä levyjä koneesta löytyy
    $ ls -al /dev/sd*

Jos kiintolevy halutaan liittää vain väliaikaisesti voi sen tehdä komentoriviltä
    $ sudo mount -o uid=pi,gid=pi /dev/sda1 /media/usbhdd

Mutta jos levy on aina kiinni on järkevämpi muokataan fstab-tiedostoa, jolloin levy liitetään aina käynnistäessä
    $ sudo nano /etc/fstab


Lisätään rivi (tässä kiintolevy on ntfs formaatissa. FAT levylle vaihda ntfs-3g -> vfat)
/dev/sda1    /media/usbhdd    ntfs-3g    auto,hotplug,defaults    0    0

Jonka jälkeen fstab tiedostossa olevat levyt voidaan liittää ilman boottausta komennolla
    $ sudo mount -a
 

Jos levy halutaan ottaa irti, se pitäisi ensin irroittaa järjestelmästä ettei sillä ole kesken mitään.
    $ sudo umount /dev/sda1

perjantai 12. huhtikuuta 2013

Kiinteän IP:n asettaminen

Jos raspia meinaa käyttää muuhunkin kuin mediatoistoon, kuten tiedosto-/web-palvelimena, kannattaa sille asettaa kiinteä ip-osoite. Tai vaikka vaan käyttäisi kotiverkossa ssh:n yli, on helpompaa kun tietää aina mikä raspin IP on.

Muokataan verkkoasetustiedostoa:
    $ sudo nano /etc/network/interfaces

Lisää/muokkaa tiedostoon seuraavat rivit.

auto lo
iface lo inet loopback

auto eth0
# Tämän rivin dhcp pitää vaihtaa -> static
iface eth0 inet static

# Raspin IP-osoite
address 192.168.0.60 
# Oletusyhdyskäytävä, reititin johon raspi on liitetty
gateway 192.168.0.254
# Aliverkon peite, käytännössä aina tämä
netmask 255.255.255.0
# Verkon "perhe", tästä ei tietoa, ei ilmeisesti pakollinen, mutta oon laittanu
network 192.168.0.0
broadcast 192.168.0.255
Käynnistetään verkko uudestaan
    $ sudo /etc/init.d/networking restart

Ja sitten vielä koneen buuttaus
    $ sudo reboot