Rungon kolmas versio

Sain rungon kolmannen version mallinnettua. Tässä käytetään kehikkona naulauslevyjä. Ajattelin ensin 3D -tulostaa kulmapalat, mutta taidan käyttää niihinkin L muotoisia naulauslevyjä.

Voimansiirto on muuttunut takavetoisista renkaista telaketjuille. Näin toivottavasti saan enemmän pitoa. Telaketjun ajattelin tehdä kumimatosta. En osaa vielä sanoa teenkö vetäviin renkaisiin vain karhennoksen ja katson tuleeko riittävästi pitoa vai muokkaanko renkaan malliin hampaat.

Tilasin Arduino Uno kopion ja se olisi ajatus ohjelmoida ohjaamaan servoja. Näin Raspberry Pi olisi helppo tarvittaessa irrottaa muuhun käyttöön. Rasperry Pin pidike on vielä vanhaa mallia. Lisään ehkä siihen vain velcro pidikkeen nyt kun GPIO pinnit saa tyhjiksi.

Ensimmäinen ajotesti

Tein ajotestin rungon toisella versiolla ja siitä löytyi muutama ongelma. Akun lisäämisen jälkeen rungosta tuli etupainoinen, jolloin 3D-tulostetut renkaat eivät saaneet pitoa. Mietin renkaiden päällystämistä esimerkiksi teipillä, mutta luultavasti pito ei olisi riittänyt siltikään. Raspberry pin pidike ei myöskään toiminut halutulla tavalla, vaan kortti tahtoi hypätä pois lyhyistä muovitapeista. Lisäksi johtojen sitominen osoittautui hankalaksi ja ne jäivät roikkumaan rungon takaosasta vapaaksi.

Ohjelmistopuolella koodin toiminnallisuus näytti hyvältä ja servot pyörittivät renkaita samaa tahtia. Käytettävyyttä täytyy hieman miettiä, sillä nyt täytyi olla kannettavalla SSH -yhteys Raspberryyn. SSH:n kautta hoidin Node.js palvelimen käynnistämisen ja lopettamisen. Renkaiden pysäyttäminen oli myös hankalaa kännykällä. Täytyy varmaan lisätä jonkinlainen raja-arvo, jolla ollessa lähetetään nollaa palvelimelle.

Uutta runkoa en lähde enää tekemään kokonaan tulostamalla. Nykyisenkin rungon tulostamiseen meni 16 tuntia. Lisäksi olisi varmaan parasta hylätä renkaat ja muuttaa robotti toimimaan telaketjuilla.

Web käyttöliittymä robotin ohjaukseen

Sain tehtyä web käyttöliittymän robotin ohjaukseen. Käyttöliittymässä otetaan tieto kännykän kallistussensorilta ja kutsutaan sen jälkeen jQueryn get metodilla Node.js palvelinta, joka puolestaan välittää servoille tarvittavan pulssin.

Servojen ohjaus node.js kirjastolla

Alunperin ajatukseni oli ohjata servoja Pythonilla. Aloin kuitenkin tutkimaan mahdollisuutta käyttää Node.js ja sille löytyikin sopiva kirjasto GPIO pinnien käskyttämiseen. Pigpio mahdollistaa PWM -signaalin syöttämisen servolle. Lisäksi Node sisältää funktiot http pyyntöjen käsittelyyn, joten valinta oli helppo.

Alla on koodi servojen käskyttämiseen selaimen kautta. Esimerkiksi pyynnöllä vasen/30 ajetaan vasenta servoa keskikohta + 30 millisekuntia pitkällä PWM pulssilla.  Minulla oli aluksi ongelmia saada toinen servo toimimaan. Tuli ilmi, että Pigpio käyttää GPIO numeroituja pinnejä eikä rautatasolla numeroituja kuten Python. Tämän takia Python skriptissä olevat pinnit 3 ja 5 ovat muuttuneet numeroiksi 2 ja 3.

Runko valmis

Sain rungon tulostettua ja kiinnitettyä pidikkeet siihen.  Korkeus suunnassa olevat ruuvien reijät eivät tulleet oikeille kohdille, joten kiinnitin osat muovilla toisiinsa. Riittävän lujassa tuntuvat pysyvän näinkin.

 

Rungon toinen versio

Sain rungon toisen version mallinnuksen valmiiksi. Tällä kertaa pidikkeet kiinnitetään pulteilla toisiinsa eikä runkoa tarvitse tulostaa yhdellä kertaa kokonaan.

Raspberry Pin tulostettu pidike olikin jo eilisessä viestissä esillä. Kiinnitys tapahtuu asettamalla piirikortti tappien päälle. Tarvittaessa pitää tukee sitä teipillä.

Pidikkeet servolle ja Raspberry Pille

Sain suunniteltua ja tulostettua pidikkeet servolle ja Rasperry Pille. Tein kumpaankin M5 kokoiset kierteen, joten ne voidaan liittää itse runkoon pulteilla. Servo ei ole tällä hetkellä kiinni muuten kuin urissa. Lisään siihen mahdollisesti kaksipuoleista teippiä, jos se pääsee liikkumaan liikaa.

 

Takaisin suunnittelupöydän ääreen

Aloin kiinnittämään servoja ja Raspberryä runkoon ja siinä ilmeni pari ongelmaa. Servojen kiinnityskohdat olivat liian ahtaat. En tiedä johtuiko tämä väärästä mitoituksesta vai oliko tulostuksen yhteydessä muovi kutistunut.

Servot olisin saanut kiinni poikittain.  Suurempi ongelma oli, että Raspberry Pin kiinnitysreiät ovat M2.5 kokoa eikä M3 kuten emolevyn ruuvit olivat. Ehdin jo tehdä M3 kierteet tappeihin enkä uskaltanut vääntää M3 ruuveja väkisin läpi piirilevystä. Lisäksi en omista työkalua M2.5 kierteen tekoon, joten kiinnitykseen pitää keksiä toinen vaihtoehto.

Runko tulostettu

Sain eilen rungon tulostettua. Tulostuksessa kesti 16 tuntia joten, jos siihen joutuu muutoksia tekemään, täytyy miettiä vähän modulaarisempaa rakennetta.

Ensisilmäyksellä kuitenkin runko  näyttää aika hyvältä. Seuraavaksi pitäisi alkaa servoja sovittelemaan siihen.