ATMEGA USB 009 (1-wire, i-Button)

Tikriausiai pagalvosite, kad susipainiojau ir užmiršau 008 straipsniuką? Deja, 008 dar nesigavo ir neveikia…

Darbe stačiau elektroninę spyną su Dallas (Maxim) i-Button mikroschemom. Tiksliau “tabletėm”, “batareikom”. Mūsuose tom spynom naudojamos DS1990A mikroschemos. Viena mikroschema kainuoja apie 10Lt. Originali spyna buvo su PIC procesorium, su pačiu mažiausiu, ir 24C16 atmintim raktu atsiminimams. Aš nuskaičiau minėtos mikroschemos turinį ir radau tuos pačius skaičiukus kurie išgraviruoti ant “tablečių”. Pasiskaičiau mikroschemos aprašymą ir pamačiau, kad tai nėra koks tai stebūklingas “high security” daikčiukas. Paprasčiausias serial ROM su CRC ir vienintelis navarotas, kad maitinamas per tą patį duomenų laidą.

Nutariau paeksperimentuoti su esamom tabletėm. Pagrindinė problema, kad internete pilna visokių source susijusiu su 1-wire protokolu, bet dauguma jų naudoja komercinį AVR kompiliatorių kuris turi integruota include failą. O aš norėjau rašyti ant GNU versijos, todėl teko ilgokai paieškoti veikiančio varianto.

Tabletė jungiama prie mano plokštės panaudojant “firmware” jumperį. Tik reikia prikabinti 4.7K pull-up rezistorių is viskas bus gerai (yra programos modifikacija kuri veikia be rezistoriaus). Visa informacija atvaizduojama per LCD moduliuką.

i-button avr

Ekrane, viršutinėje eilutėje rodoma būklė (status): OPEN, SHORT, OK ir ERROR. Atitinkamai: niekas neprijungta, trumpas jungimas, viskas gerai ir klaida. SHORT būklė leidžia naudoti tuos pačius du laidus skambučiui. Dešinėje viršuje, CRC, tai kontrolinė suma. Programos archyve yra programa kuri perskaičiuoja kontrolinę sumą. Apačioje, kairėje- device familly id, mikroschemos grupės numeris. Ilgiausias skaičius- 48 bitų mikroschemos serijinis numeris. Jis taip pat išgraviruotas ant mikroschemos.

i-button avr

Programos išeities tekstai (source code): 20071027.zip

Programoje yra daugiau visokiausių funkcijų, aš panaudojau minimalistinį variantą kuris man veikia.

Dabar jau galima susikontruoti savo kodinę spyną, tik kad ID tabletės nėra saugūs prietaisai. Manau koks nors gudročius gali sukonstruoti mikroschemos emuliatorių ir nužiūrėjęs skaičiukus pagaminti rakto dublikatą. Ir dėl to Dallas’as nekaltas, jis gi rašo:

The DS1990A Serial Number iButton is a rugged data carrier that serves as an electronic registration number for automatic identification.
…allowing the DS1990A to be used easily by human operators. Accessories permit the DS1990A iButton to be mounted on almost any object, including containers, pallets, and bags.

Apie spynas, kaip matot, čia niekur neužsimenama. Manau čia Lietuvaičiai gudrauja ir stumia niekalūs mūsų tautai. Rimtom spynom reikėtų naudoti DS1963S mikroschemutę…

6 replies on “ATMEGA USB 009 (1-wire, i-Button)”

  1. Teko susidurti ir man su tokiom tabletėm. Tokias naudoja darbuotojai “Senukuose” identifikavimui. Gavęs tokią iškart pastebėjau užrasytą užrašą 1wire, tai apie naudojamą protokolą iškart pasidarė aišku:)

  2. Sveiki,
    Bandau sukonstruoti elektroninį užraktą savo duryse, labai norėčiau pamatyti shemą, nes internete kiek radau yra įvairų variantų, bet nei su viena mikrokontroleris tabletės nemato.. Help!

  3. Dėkui už greitą atsakymą, kaip ir galvojau panaršęs kodą – LCD jungiasi prie keleto mikrokontrolerio portų, o oscilatorius yra 12Mhz. Visgi prie PB0 kojos ‘tabletės’ schemoje nesimato, gal būtų galima pakomentuoti:
    Ar iButton jungiama tiesiogiai prie kojos ar per tam tikrą varžą?
    Ar naudojama ‘patempimo’ varža 5.1K į pliusą?
    Ar naudojamas stabilitronas 5.1V tarp iButton ir žemės?

    Tarp kitko, makefile’as skirtas linux OS? Viskas susikompiliuoja lyg ir normaliai.. Win OS neteko dirbti su avrdude bei gcc.

  4. Taigi parašyta- iButton pajungtas prie “firmware” jumperio. T.y. PB3. Nors galima naudoti bet kurį laisvą piną. Terminas “pull-up” reiškia “pakelti į viršų”- link pliuso. Dar yra “pull-down”.

    Stabilitronas reikalingas tik apsaugai. Šiaip darant “galutinį” prietaisą, reikia jungti pagal pačio Dallaso (maxim) rekomendacija. Ten stovi net kelios detalės apsaugai.

    “make” failas yra OS independant. Mano naudojamas “make” failas buvo naudojamas ant Windows XP. Kompiliatorius- GNU. Jokių komercinių dalykėlių nenaudojam.

    Jei neturi 12MHz osciliatoriaus, galima naudoti ir mažesnį, tik reikia pasikeisti konstantas source kode. 12MHz reikia tik USB kodui.

Leave a Reply

Your email address will not be published. Required fields are marked *