Hlavní navigace

Heknutí psacího stroje - How to hack Typewriter Brother AX-410

8. 10. 2019 1:54 (aktualizováno) Мир Куч Quark66

Heknutí psacího stroje – How to hack typewriter.

English summary:

In this paper I will share with you interesting steps in a psychedelic project of connecting a typewriter to a PC. The utility value of the result is not high, but I am glad that I started experiments and learned many other skills along the way.
First it is necessary to get an electronic (not electric) typewriter. It cost me 10 €. Completely functional and very common Brother AX-410 machine, whose heart, as we see in the picture beats at 8MHz and the central nervous system at all works in the „cockroach“ Mitsubishi M38022M4-XXXSP.
The workflow is simple:

  • no idea what to do, no special requirement, no time limit, absolutely no expectation.
  • autopsy of the machine, analysis of PCB and keyboard matrix, finding what is technically feasible
  • analysis and rough idea how to hack the system
  • measuring and monitoring of the process during printing of the machine (dynamic behaviour)
  • cutting, soldering, connectors, no destructive work
  • --- today I'm looping here ---
  • Arduino programming, tests
  • commissioning of the master device
  • PC serial terminal or custom application (C language) for transfer printing and control data to the printer.

Přehledem:

Rád bych se tímto příspěvkem s vámi podělil o zajímavé kroky během psychedelickém projektu připojení psacího stroje k PC. Užitná hodnota výsledku není vysoká, ale jsem rád, že jsem se do experimentů pustil a naučil se po jednoduché cestě mnohé další dovednosti. Snad přijdou k užitku i vám.
Nejprve je nutné sehnat elektronický (nikoli elektrický) psací stroj.Ten mne stál 10€. Zcela funkční a velice běžný stroj Brother AX-410, jehož srdce, jak vidíme na obrázku, tepe s frekvencí 8MHz. A vůbec jeho centrální nervový systém pracuje ve švábovi Mitsubishi M38022M4-XXXSP.
Specifikace procesoru je k mání na internetu, zde jen krátký popis jeho nožiček (není důležité si pamatovat). Má sice podporu seriového přenosu RxTx jak zmínil kdosi na svém bloku, ale ten není umožněn. Dívejme se na něj jako na ústrojí, které posílá impulsy do klávesnice, čte odezvu, vyhodnocuje a případně tiskne písmena kladívkem na papír. A trochu hýbe tiskovým válcem. Nic víc.
This four pictures whos basic principles of my hacking story. This is about connecting Typewriter machine (pretty nicetypesetting) to the world of Arduino.
Obrazová dokumentace slouží jako doplnění mého strohého slovníku, neb některé věci jsou tak technicky pěkné a fascinující, že nemám nástroje pro slovní vyjádření. Pro vyšší rozlišení stačí klik na obrázek.
Postupové práce jsou následující:
  • pitva stroje, analýza PCB a matice klávesnice, zjištění, co je technicky proveditelné, absolutně žádná očekávání, žádné konkrétní cíle
  • analýza a hrubý nápad, kudy do systému vlézt
  • měření a sledování děje během tisku stroje (pohyb kopretiny, kladívka a papíru je zřejmé. Důežitější jsou pulzy).
  • pájení, konektorování
  • .. dnes se nacházím (otálím) v tomto bodě itineráře…
  • programování Arduina, testy
  • uvedení do provozu master zařízení (seriový terminál PC, nebo vlastní aplikace © pro přesun tiskových a řídících dat do tiskárny.

Rozborka stroje

Psací stroj je tak lehký, protože mimo jiné obsahuje minimum zbytečných a těžkých komponent. Proto vezměme křížový sřoubovák a povolme dva (slovy pouze dva!) šrouby zhora. Pak objedeme horní díl kreditkou a vyjmeme víko. V tomto bodě vidíme stroj ve své nahotě a není třeba dalších destruktivních kroků. Obrázek ukazuje to, co by mělo být vidět.
There are no so valuable pictures, Placing PCB inside original machine and added external 16pin connector and 5V power supply from printer.
Po vyjmutí plochého konektoru klávesnice a dalších konektorů, které jsou pěkně značeny barevně bílou, červenou atp. se dostáváme k jediné, tudíž hlavní desce. Pro zajímavost napájecí kablík vlevo dává se zátěží i bez zátěže 8,2 Voltů. Seriový stabilizátor realizovaný jedním odporem a tranzistorem je vidět s dalšími detaily na desce. Zde jsem si dovolil vyznačit zřejmé prvky stavebnice, jako jsou výkonové budiče motorů nahoře a také možnost zcizení napájení 5 Voltů pro naše účely.
Vyfotil a lehce vykontrastoval jsem i tišťák zespodu pro hnidopichy, který by chtěli vyrábět schéma. A je pravolevě otočen.
Ve hledáčku je nyní konektor plochého vodiče klávesnice. Má 16 vodičů, což napovídá, že by pod klávesnicí mohla být spojovací matice 8×8 spínačů, tedy by bylo možné obsloužit 64 kláves.
This four pictures whos basic principles of my hacking story. This is about connecting Typewriter machine (pretty nicetypesetting) to the world of Arduino.
Na desce jsem udělal prozatimní popis jednotlivých vodičů. Tento popisek koresponduje s pravděpodobně nejdůležitějším obrázkem článku, kterým je pitva klávesnice.

Klávesnicová matice

Nejotročtější, ane nejvíce nezbytnou prací byla rekognoskace směrů drátů ve folii klávesnice. Oprostil jsem se od propípávání bzučáčem a zvolil cestu digitální. Pomocí nafocené fólie, její převod do osmi barev a v aplikaci malování jsem kbelíkem vyplňoval jednotlivé trasy a hledal, kam který vodič vede. Nebetyčná půldenní piplačka, ale výsledek je vidět na dalším obrázku.
This four pictures whos basic principles of my hacking story. This is about connecting Typewriter machine (pretty nicetypesetting) to the world of Arduino.
Každá klávesa funguje jako spínač dvou kontaktů mříže. Na jednotlivých klávesách jsou uvedeny popisky nahoře a dole, které že dráty to spojuje. Význam polohy „nahoře dole“ není pro spínání podstatný, pouze odpovídá skutečnosti.
Za obrázkem klávesnice je fotka kontaktní fólie (pravolevě točená).
This four pictures whos basic principles of my hacking story. This is about connecting Typewriter machine (pretty nicetypesetting) to the world of Arduino.
.
To tajné tlačítko na folii vlevo nahoře nemá mechanický ekvivalent na klávesnici, ale pouze umělohmotné vahadélko, které zmáčkno tento kontakt v případě, že tisková hlava pojíždí úplně doleva a je na konci. Snad chytré řešení, i když já osobně bych tento infobit přes klávesnici netahal a dal na kolejnici hlavy obyčejný mikrospínač.
.

Cesty signálů ve stroji

Pokusil jsem se zhotovit hrubý nárys cest, kudy vedou jednotlivé signály od procesoru do klávesnice a zpět. Kvůli tomu, abychom pochopili způsob skenování matice klávesnice. Výsledek na dalším obrázku. Není to úplné elektrické schéma, ale snad popisuje potřebné.
Schematic overview of internal connectivity of kleyboard switching matrix to central processor.
Pravděpodobně nejdůležitější zjištění je, že všechny signály si procesor drží stylem push-up. Jinak řečeno: na pěti voltech. Pokud tedy 16ti kanálovou sběrnici „vytáhneme“ z přístroje (spolu s napájením a zemí), máme k dispozici vše.

Čtení signálů

Předpokládejme, že „oblizování“ klávesnice provádí stroj známým způsobem, kdy do jednotlivých „sloupců“ postupně posílá impulzy a během doby každého impulzu si přečte, který „řádek“ vrátí tento impulz. A podle výše uvedeného (push-up) tušíme, že impulzy jsou vlastně jakési obdélníky směrem dolů, tj. na krátkou chvíli je drát bez napětí. Po připojení nulového kabelu osciloskopu k zemi stroje (vyvedeno mimo pásov ýkonektor) a živého červeného kabelu k vodiči číslo 1 (na chématu vodič 1 odpovídá na desce číslu 0, vodič 2 značce F atd, 3 značce E atd) zůstal jsem zděšen, neb všechyn teze vyřčené se staly skutečností. Opravdu stroj „pípal“ v intervalech malé pulzy a to nezávisle na tom, jestli se na stroji píše, nebo pohybuje válcem… A kupodivu délka jednotlivých pulzů byla ve střídě 1:8, tedy za každý pulz by se vešlo sedm dalších. Že by náhoda? Signál je zřejmý. +5 voltů stále a občas 0 voltů.
V obrázku dále máme více oscilogramů. První jsme již popsali.
Three oscillograms.
  1: pin1 versus GND
  2: pin1 versus pin2 (as Oscil gnd)
  2: pin1 versus pin3 (as Oscil gnd)
Interpretace dvou grafů uprostřed a vpravo vysvětluje průběh signálu na dalších pinech. Byl jsem líný zapojovat vícekanálový analyzátor, tak jsem pouze přepíchnul zem osciloskopu na pin 2. Co se stalo? Po změně vertikálního rozsahu (nyní nikoli 0 –5voltů, nýbrž +5 –5 voltů) vidíme, že mezi piny 1 a 2 čteme vlastně rozdíl napětí. A ten je někdy +5V, jindy –5V. První impulz nahoru je impulz pinu 1, překmit dolů je okamžitě po vypnutí pulzu pinu 1 a za pnutí pulzu pinu 2. Příjemným zjištěním bylo, že pokud jsem přepíchnul zem na další pion 3, druhý impulz se jaksi „odtrhl“ od prvního a to je přesně ta požadovaná situace. Časové odloučení pulzů je dáno tím, že první pípne, po té nic (pípá druhý pin) a pak pulz třetího pinu. Nádhera. Zde musím pochválit návrháře PCB, neboť jsem zkoušel všech osm po sobě jdoucích pinů 1..8 (na desce postupně <0,F,E,..A,9>) a skutečně časování odpovídalo tomuto pořadí. Konečně narozdíl od termitího labyrintu pod klávesnicí je zde nějaký systematický pořádek.
Jak logika věci napovídá, zbylé piny 9 až 16 nesou informaci směrem z klávesnice. Osciloskop na nich ukazuje pouze stabilních +5V. Pokud ale sondujeme například poslední pin 16, tak během stisku mezerníku propaguje pulz z pinu 1 a to je přesně ona situace, kterou budeme zanedlouho zpracovávat programovými prostředky arduina.

Časování

Ponořme se nejprve do logických počtů, s jakou rychlostí musí procesor skenovat klávesnici. Manuál psacího stroje prozradil, že je schopen držet tempo s rychlopísařkou, jež má 12 úderů za vteřinu. Na jeden znak tedy potřebuje alespoň 83 milisekund. Aby oskenoval klávesnici osmi piny, musí být pulz dlouhý maximálně 83/8 ≈ 10ms. V našem případě je pulz dlouhý podle oscilogramu asi 2ms, což značí, že stroj má rezezvu zřejmě pro dva až max pět po sobě jdoucích čtení též klávesy a tím řeší její debouncing. V klávesnici a ani na vedení mezi klávesnicí a procesorem není žádný doplňkový kondenzátor určený pro debouncing, tedy filtraci mikrozáchvěvů při stisku a uvolňování kontaktů klávesy.
Přesné časování pulzů doplním později buď přímo sem, nebo do zatím neexistující kapitoly o zdrojovém kódu zpracovatelského programu Arduina.
Duty cycle measuring. Měření střídy arduinem.
Arduino jakožto universální nástroj pomohl při měření střídy pulzů. Vychází 2ms na pulz a 14ms na mezeru mezi nimi (ticho). Reprint obrazovky IDE s Céčkovým kódem vysvětlí o měření více. V levé části obrázku je seriový výpis měřených hodnot, které arduino sypalo v intevalu 200ms.

Závěr

Nuže ukončíme první polovinu projektu konstatováním, že základní výzkum jest hotov a že zbývá doprogramovat přídavný modul Arduino tak, aby celé zařízení psacího stroje bylo uvedeno vchod. POslední obrázek předvádí, že nic nebylo zničeno, nic se nerozbilo a na stroji přibyl jenom nenápadný pásek drátků (plus vytažené napájení 5 voltů).
There are no so valuable pictures, Placing PCB inside original machine and added external 16pin connector and 5V power supply from printer.

Sdílet