Käytin aikoinaan lapsuudessani psion series 3c (https://en.wikipedia.org/wiki/Psion_Series_3#Psion_Series_3c) PDA:ta. Psion oli mahtava, sille pystyi kirjoittamaan basic-ohjelmia, (myös piirtämään grafiikkaa). Akkuna toimi kaksi AA-paristoa jotka kestivät viikkoja. Olin pienenä kovakin häxöri, ainakin John Connorin veroinen (joka tosin käytti Atari Portfoliota https://en.wikipedia.org/wiki/Atari_Portfolio)
Ainut puute oli lähinnä se että sopivaa linkkikaapelia ei ollut saatavilla enkä sellaista silloin osannut tehdä, joten ohjelmia ei saanut talteen.
Myöhemmin sain rippikoululahjaksi TI-86 graafisen laskimen... ja joo siis erosin kirkosta myöhemmin. TI-86 kulki mukana paremmin kuin psion ja paristot kestivät pidempään. Tein lukioaikoinani sillä kaikenlaista hyödyllistä, kuten lukujärjestysohjelman (ja "navigointikartan" jotta löytäisin oikean luokan), pari seikkailupeliä yms..hauskaa. Tämä oli siis aikaa ennen ifooneja ja androideja.
Olin aiemmin hassutellut 128x64 kokosen LCD:n bananapi:n kanssa (arduinon toimiessa sovitimena). Kerron jossain toisessa postauksessa tarkemmin kokeilustani (webbikameran kuva lcd-näytölle, chip8, ohjelmananageri emu yms) Valitettava puute tuossa LCD-mallissa on vaadittavien kontrollilinjojen määrä. Vaikeuttaa johdotusta ja vaatii väliin elektroniikkaa kun io-pinnejä ei esim raspberryn tapauksessa ole tuhlattavaksi.
Mielessä kyti ajatus näyttö+näppisyhdistelmästä, jonka voisi tökätä sulautettuun tietokoneeseen (tai vaikka mikrokontrolleriin), verkkoasetusten, retropelien, emulaattoreiden (TI86, telmac yms), yms "erikoissovellusten" käyttämiseksi.
Henkilökohtaisesti retroilu ei pahemmin napostele. Ymmärrän toki retropelien pelailun, mutta että alkaisi nostalgiapärinöissä vääntämään koodia commodorelle, dosboxille tai graafiselle laskimelle ei todellakaan tunnu mielekkäältä. Varsinkin kun nykyään on fiksumpia ja tuottavampia kieliä mitä esim basic tai OPL.
Retrofiilistelyssä sensijaan mennään kiintoisalle alueelle, kun mietitään mitä on jätetty taakse. Ja mitä asioita voisi käyttää parantamaan nykypäivän elämää. Ah, miten voisikaan yhdistää käyttöliittymien yksinkertaisuuden (ei mitään tyylihipströintiä), matalankynnyksen ohjelmankirjoituksen (taskulaskinappien kehitys oli helppoa ja nopeaa). Mutta kuitenkin niin että käytössä olisi nykypäivän mahdollisuudet (ohjelmointikielet, valmiit ohjelmat ja kirjastot, oheislaitteet, SDR)?
Skrollissa mainostettu pico8 sensijaan on perus retroilusta askel haluamaani suuntaan. Eli alusta johon on matala kynnys kehittää softaa. Pico8 menee suljetun sorsan sekä keinotekoisen rajoittamisen kanssa hieman metsään. Tavoitteena on tietokone, ei pelkkä pelikone.
Eräänlainen fallout henkinen pipboy hakusessa siis.
Käytössäni on 3d tulostin ja saatavilla on halpaa elektroniikkaa. Miksipä en yrittäisi? Katsotaan mitä saan aikaan. Dokumentoin prosessin eri vaiheita itseäni varten ja siltävaralta jos joku hakee ratkaisua teknisiin ongelmiinsa googlella. Ties vaikka tästä kehittyisi ajansaatossa kilpaileva, katu-uskottavampi open source vaihtoehto jollekkin naurettavalle hipsteri-solu machinesille
http://www.solu.co/
Ostoksia
Ebaystä bongasin i2c liitäntäisen oled-näytön. 0.96" tuumaa, näyttönä UG-2864HSWEG01, jota ohjaa SSD1306 driveripiiri. Hintaa toimituksineen alle 5eKytkis menee neljällä piuhalla ja pari kolmekymmentä mA maksimikulutus on varmaan alle banana/raspberrypi:n 3.3v kiskon maksimivirran. (mikään ei kuitenkaan ole ylikuumennut kun näytön kytkin)
Samantien i2c väylään ajattelin lisätä myös näppäimistön. IO-expanderiksi valikoitui edullinen PCF8574. (DIL kotelo 30snt 10kpl:n erässä ostettuna)
Itse näppäimistö olisi mallia "matriisi. Näemmä edullisesti sai 4x4 näppäimistöjä (reilu 80snt/kpl). Toki sitä olisi voinut ostaa kasan tactileswitchejä ja kolvailla ne näkkärille. Olisi työlästä ja se tarkoittaisi hyppylankahässäkkää.
Osat tulivat. Mitä nyt oled näytön piikkirima oli puhkaissut pakkauksen ja osassa 6kpl erää osa näppäimistöistä tuli pintaliitosmallisilla ja toiset läpijuotetuilla napeilla.
Kytkennän kasaamiseen käytin 2x8cm koekytkentälevyä.
Matriisinäppäimistö
En ala avaamaan tässä perusasioita, mitä matriisinäpäimistö tarkoittaa.https://en.wikipedia.org/wiki/Keyboard_matrix_circuit
http://www.dribin.org/dave/keyboard/one_html/
Lukekaa tuolta vaikka kummittelusta (ghostingista). En kuitenkaan nähnyt tarpeellisena diodien lisäämistä kytkinmatriisiin. Tämä siksi että pyrin suunnittelulla välttämään tilannetta jossa näppäimistössä ei tarvitsisi painaa kahta useampaa näppäintä samanaikaisesti
Skannaavissa näppäimistöissä on myös riskinsä, että virta ohjautuu sarakkeita skannatessa vcc:ssä olevalta sarakkeelta sarakkeeseen, kun painetaan viereisiä nappeja. Onneksi PCF8574 on vain "jäykkä 0" ja "löysä 1" :D jolloin piirin IO pinnin käräyttäminen muilla io-pinneillä tulee mahdottomaksi eikä täten vastuksia tarvita
Oheinen kuva datalehdestä auttaa selittämään asiaa
GPIO-expanderin pinnillä on kaksi tilaa
0) Pinniä vedetään "jäykästi" maahan. Tällöin pinnin arvoksi ei voida lukea muuta kuin nolla
1) Alasvetävä trankku avautuu ja 0.1mA virtalähde syöttää pinniin virtaa eli irtonainen pinni nousee kohti käyttöjännitettä. Pinnin arvoksi voidaan lukea 0 tai 1 riippuen vetääkö joku muu sitä maahan.
Ei ole 1,0,hi-Z. Mutta sopii tähän hyvin. Itseasiassa käy helpommin kun ei tarvitse miettiä kolmen tilan kanssa :)
Palaan aiheeseen myöhemmin softaosiossa.
Näppislayout
Alkuperäinen idea oli käyttää yhtä 4x4 näppistä ja toteuttaa 70-luvun henkinen heksanäppäimistö.
Heksakoodien syöttely tai muutaman näppäimen käyttö olisi rajannut käytön retropeleihin (joita ei oikeasti jaksa tahkota muutamaa tuntia max kerrallansa, yksinkertaisiin valikoihin tai retrotietokonekäyttöön..
Tekstarityyliin komentojen naputtelu taasen olisi turhan hidasta ja vaatisi syöttöä avustavaa softaa (näytää ruudulla mikä merkki valittuna)
Haaveissa on kuitenkin se että käyttöliittymää voisi jotenkin käyttääkkin. Kirjoitella viestejä, antaa käynnistettäville palvelinsoftille parametrejä, editoida asetuksia yms...
Kaksi 4x4 näppistä riittäkööt. Ja kummallekkin oma io-expanderi niin kummitteluriski pienenee. Varastin ideoita hieman kalq-näppäinasettelusta.
Lopullinen softa tulee tukemaan helposti konffittavia näppäimistöjä.
Eli laitteessa on oikean ja vasemmanpuoleinen näppäimistö.
Oikeanpuoleisella komennetaan ja vasemmanpuoleisella syötetään tietoa. Ennen näppäimistön rakentamista hahmottelin alustavasti näppäimistöasettelun, jotta varmistuisi että näppäinasettelu on mielekäs
Syöttönäppis, oletuksena
Chip8 peleihin, navigointiin ja valikoissa seikkailuun1 | 2 | 3 | C |
4 | 5 | 6 | D |
7 | 8 | 9 | E |
A | 0 | B | F |
Komentonäppis
VasNap | OikNap | MATH | SYMB |
ONOFF | SHIFT | GREEK | SCROLL |
DEL | EXIT | HELP | FKEYS |
BKSP | TAB | SPACE | ENTER |
Opettelun yksinkertaistamiseksi komentonäppis pysyy staattisesti samana.
Syöttönäppiksen funktio pysyy muuttuneena sen ajan kun nappia painetaan.
Suunnittelin että ONOFF näppäin joko sammuttaisi laitteen torkkutilaan tai sitten vain kytkisi ruudun pois päältä esimerkiksi jos laitteisto toimii akuilla.
HELP nappi taasen tarjoaisi on-screen helpin näppäimistä (siinä sovelluksessa jossa nyt ollaan).
EXIT poistuu ajettavasta ohjelmasta
Syöttönäppis: SCROLL
VASEN | YLÖS | OIKEA | PGUP |
HOME | ALAS | END | PGDOWN |
Zout | Zin | Threshold- | Threshold+ |
Zfit | MENU | PREV | NEXT |
Menu/prev/next
Syöttönäppis: FKEYS
F1
|
F2
|
F3
|
F4
|
F5
|
F6
|
F7
|
F8
|
F9
|
F10
|
F11
|
F12
|
CONT-
|
CONT+
|
VOL-
|
VOL+
|
Syöttönäppis: VasNap
m
|
b
|
w
|
h
|
p
|
space
|
x
|
c
|
r
|
y
|
s
|
z
|
d
|
n
|
f
|
v
|
Kalq näppäimistöstä pöllitty vasen puoli. Sekä oikean että vasemmanpuoleisen kalq näppäimistön tapauksessa spacen mielekkyys kyseenalaistuu, kun space löytyy jo oikeanpuoleisesta näppäimistöstä Vasta käytönnön näpyttely paljastaa, miten hyvin toimii vai hankaloittaako komentonäppiksen napinpaino komentonäppiksen spacen painoa.
Syöttönäppis: OikNap
g
|
t
|
o
|
j
|
i
|
e
|
space
|
u
|
k
|
a
|
l
|
q
|
ö
|
ä
|
ü
|
ß
|
Näppäimistöleiskassa huomioidaan suomen ja saksankieli. Ruotsinkieltä ei isänmaallisista syistä tueta joten å jää puuttumaan. Saksalaisista kirjaimista ß ja ü. Pitäähän saksan perussanastoon kuuluvat fürer ja scheiß kirjoittaa oikein :)
Sovelluskohtaisesti näppäimistössä voi toki olla toimintoja, kuten kreikkalaiset kirjaimet
Syöttönäppis: Math
+
|
-
|
*
|
/
|
<
|
>
|
(
|
)
|
[
|
]
|
{
|
}
|
|
|
&
|
^
|
!
|
Syöttönäppis: SYMB
?
|
;
|
:
|
=
|
@
|
,
|
.
|
~
|
\
|
%
|
#
|
$
|
_
|
"
|
'
|
EUR
|
Mekaniikka
Elektroniikka sanelee tässätapauksessa muodon, minkälainen kotelo harakanpesälle tarvitsee tehdä.
Alkuperäinen ajatus oli jotakuinkin tämännäköinen TODO. kuva
Koska kyseessä on kumminkin yksittäiskappale, joka on epäsymmetrinen ja varsin epämääräisen muotoinen (näppis vinossa, näyttö vinossa, epämääräinen johtohärdelli). Fiksuinta lienee aloittaa suunittelu paloittain ja sovitella osia toisiinsa.
Epämääräisten harakanpesien tapauksesa elektroniikalle kannattaa tehdä jonkinlainen raami tai kiinnitysmekanismi. Kulmareikiä ei piirilevyhärdellissä ollut, joten päätin että levy puristuisi reunoistaan koteloon.
Tuon kotelon ideana on, että keskellä oleva evä loksahtaisi näppäimistöjen väliin ja vaakasuoraan menevät harjanteet painautuisivat piirilevyn pintaan napin jalkojen väliin. Päätyosa pur
Seuraavaksi päällepainettavan kopan suunnitteluun
Kehitettäessä 3d pikamalleja, joskus on vain helpointa ajan, muovin ja hermojen säästämiseksi printata mallista mittojen kannalta kriittinen osa ja kokeilla että se sopii. Minkowskin operaatiota käytettäessä kun välillä lipsahtaa ajatusvirhe mittojen osalta, toleranssien kanssa on voinut käydä erehdys yms. En ole siis koneinssi eikä itselläni ole yhtäkään mekaniikkasuunittelukurssia käytynä. Siispä:
Printtasin sivuviipaleen. Huomioita:
1)edustalla liikaa 2.5mm
2)kohoumaa pitäisi työntää eteen 1.8mm
4)Reunus 2mm turhan syvä (joo, minkowski... koettakaa puolipallolla)
3)Taakse tarvitaan tukitapit, jotka ottaa vastaan kotelon takaseinän (seinä noin3mm levee, 8.2-8.5 pitkä)
Sitten tulostin samanlaisen kappaleen korjailtuna.
Totesin että nyt riittää ja laitoin kappaleen tulostumaan
1h ja 20min jälkeen printteristä pullahti kappale. Nuo hiusmaiset höntyvät viittaavat liian kuumaan printauslämpöön. Ajan PLA:ta turhan kuumana 200c. Tämä johtuu siitä että printterini muovinsyötössä on ollut käsittämättömiä ongelmia (asiasta lisää jossain muussa postauksessa) ja olen pitänyt päätä toistaiseksi vähän kuumemmalla jotta muovi olisi juoksevampaa.
Kansi naksahti paikalleen kivasti. Kaapelina käytän vanhaa, dyykattua cd-rom aseman ja äänikortin välistä kaapelia, jonka pinnijärjestys on vaihdettu sopimaan bananapi:n rimaan (3.3v SCL SCA ja maakarva erikseen).
Totesin että nyt riittää ja laitoin kappaleen tulostumaan
1h ja 20min jälkeen printteristä pullahti kappale. Nuo hiusmaiset höntyvät viittaavat liian kuumaan printauslämpöön. Ajan PLA:ta turhan kuumana 200c. Tämä johtuu siitä että printterini muovinsyötössä on ollut käsittämättömiä ongelmia (asiasta lisää jossain muussa postauksessa) ja olen pitänyt päätä toistaiseksi vähän kuumemmalla jotta muovi olisi juoksevampaa.
Kansi naksahti paikalleen kivasti. Kaapelina käytän vanhaa, dyykattua cd-rom aseman ja äänikortin välistä kaapelia, jonka pinnijärjestys on vaihdettu sopimaan bananapi:n rimaan (3.3v SCL SCA ja maakarva erikseen).