Paskutiniu metu pradėjau domėtis ir dirbti su išmaniaisiais namais bei jų programavimu. Įsisukus į visą šį reikalą, į mano rankas pateko du neveikiantys „Loxone Miniserver“ automatikos valdikliai, skirti valdyti išmaniuosius namus ir jų įrenginius. Abu valdikliai buvo sugadinti žaibo iškrovos per tinklo RJ45 lizdą. Nebūčiau aš, jei nebūčiau pradėjęs deginti laiko ir daug vėlyvų vakarų gedimų paieškoms.
Vienas Miniserver Gen1(senesnės kartos) ir antras – naujesnis arba kitaip pasakius dabartinės kartos Gen2.


Diagnostika
Pradėsiu nuo Gen1 taisymo, nes jo gedimai nebuvo tokie dideli, kaip galėjo pasirodyti. Tuo tarpu dėl Gen2 kol kas neturiu jokių gerų žinių.
Prijungus Gen1 prie 24 V maitinimo, procesorius (Atmel AT91SAM9G20B-CU) iš karto ima kaisti ir labai greitai pasiekia maždaug 100 °C temperatūrą. Tai rodo, kad procesoriuje yra vidinis trumpasis jungimas, kitaip tariant, jis yra sudegęs. Tai nėra labai neįprasta, nes tinklo lizdas beveik tiesiogiai sujungtas su procesoriumi – tarp jų stovi tik 10/100 Base‑T tinklo lustas KSZ8081RNB, kuris, keista, bet liko nesugadintas.
Atjungus procesoriaus maitinimą, patikrinau visas ateinančias įtampas. Prieš procesorių trumpųjų jungimų neradau. 24 V įėjimo įtampa yra tvarkinga – ji paskirstoma į mažesnes įtampas: jei neklystu, pirmiausia į 12 V arba tiesiai į 5 V, o vėliau – į dar mažesnes, skirtas procesoriaus maitinimui.
Po procesoriaus yra kiti lustai, kurie valdo signalų įėjimus ir išėjimus iki relių, taip pat SDRAM moduliai. Procesorius yra tiesiogiai sujungtas su SPI flash atmintimi (Adesto AT25SF041), kurią jis bando nuskaityti ir vykdyti paleidimo instrukcijas iškart po įjungimo. Gen1 veikia naudodamas programinę įrangą, įrašytą į MicroSD kortelę, todėl SPI flash atmintyje turi būti įrašytos instrukcijos, iš kur įkrauti kodą.

Paaiškėjo, kad SPI flash atmintis taip pat yra sudeginta – bandant ją nuskaityti, lustas tiesiog ima kaisti. Šiuo etapu jau buvo aišku, kad reikės kito Miniserver Gen1, kad būtų galima nuskaityti jo flash atmintį ir perkelti ją į naują lustą. Tuo metu dar nežinojau, kas tiksliai saugoma tame luste, taip pat kur laikomas įrenginio serijinis numeris, kuris būtinas tam, kad įrenginys galėtų veikti tinkle ir priimti užklausas.
Loxone Miniserver serijinis numeris yra MAC adresas, kuris taip pat naudojamas kaip tinklo adresas.
Remontas
Pradėjau nuo pagrindinio procesoriaus nuėmimo. Įranga gana paprasta:
- Karšto oro stotelė: KRAFT&DELE KD852 (gamykloje naudojamas bešvinis lydmetalis, kurio lydimosi temperatūra yra aukštesnė, todėl stotelę nustatau į 350 °C – dirbant greitai galima naudoti ir didesnę temperatūrą). Terminė kompensacija: kad sumažinčiau plokštės deformaciją procesoriaus nuėmimo metu, apačia šildoma iki maždaug 100 °C.
- Lydmetalis: Pb60/Sn40.
- Litavimo stotelė: Xtreme ZD-929C 48W.
- Litavimo fliusas: AMTECH NC-559-V2-TF arba AMTECH VS-213-A-TF Flux.
Eiga paprasta: aplink BGA lustą užtepamas litavimo fliusas, šildoma plokštės apačia, tuo pačiu procesorius kaitinamas iš viršaus, kol pradeda judėti – tada jis nuimamas. Nuėmus procesorių, visi BGA kontaktai padengiami nauju lydmetaliu (taip sumaišomas gamyklinis bešvinis lydmetalis su naudojamu švininiu), po to visi kontaktai kruopščiai praeinami išlitavimo juosta, kad kontaktai būtų lygūs ir švarūs.
Galiausiai viskas nuvaloma techniniu izopropilo spiritu (IPA 99,8 %).
Procesoriaus litavimą galima šiek tiek palengvinti, jei ant jo iš naujo uždedami lydmetalio rutuliukai, nes tokiu atveju jų lydimosi temperatūra būna žemesnė. Iš gamyklos gautas procesorius paprastai būna su bešviniais lydmetalio rutuliukais, kurių lydimosi temperatūra yra aukštesnė. Aš to nedariau – procesorių litavau tokį, koks jis buvo gautas.
Užlitavus procesorių ir prijungus 24v maitinimą, pasirodė LED indikacijos, tačiau nieko daugiau nevyko. Įdėjus „MicroSD“ kortelę, LED elgsena pasikeitė, bet įrenginys vis tiek nepradėjo veikti. Šiame etape kilo klausimas – ką veikia procesorius ir ko jam trūksta.
Sugalvojau surasti UART stebėjimo taškus ant plokštės. Žinoma, būtų buvę daug paprasčiau, jei prieš užlituojant procesorių būčiau pasitikrinęs, kur veda UART kontaktai, bet to nepadariau. Todėl, remdamasis nuotraukomis ir kontaktų išdėstymu plokštėje, juos identifikavau.
UART sudarytas iš TX, RX ir GND kontaktų – per juos galima realiu laiku stebėti procesoriaus veikimą. UART stebėjimui naudojau „Arduino UNO“ ir programą Tera Term. Prisijungus ekrane pasirodė tekstas „BootROM“, kas suteikė vilčių, jog procesoriui trūksta tik įkrovos instrukcijų iš flash atminties.

Pirmiausia nuskaityti nusprendžiau veikiančio Miniserver Gen1 flash atmintį. Atidarius failą HEX formatu, dauguma duomenų buvo neperskaitomi, tačiau kelios eilutės buvo pateiktos paprastu tekstu, kas mane visai nustebino.
<Serial Version=“10″>
<Type>1</Type>
<UUID>307a86dd-06fa-4ae3-9704-71f9b0128250</UUID>
<MAC>00:00:00:00:00:00</MAC>
<Date>01.01.2017 01:01:01</Date>
</Serial>
Įrenginio MAC adresas ir sugeneruotas 4-os versijos UUID buvo pateikti atviru tekstu. MAC adresą pakeičiau į tą, kuris priklausė mano neveikiančiam įrenginiui, o UUID sugeneravau pats. Visą paredaguotą .bin failą įrašiau į naują flash lustą ir jį užlitavau ant plokštės.

Po paleidimo Miniserver Gen1 nebekėlė jokių priekaištų – įrenginys sėkmingai startavo ir pradėjo vykdyti programinės įrangos įkrovimą iš „MicroSD“ kortelės. Paleidau Loxone Config ir sėkmingai prisijungiau prie įrenginio.
Tuo metu dar nebuvau visiškai įsitikinęs, ar veikia skaitmeniniai įėjimai ir išėjimai į rėles, tačiau atlikus testavimus jokių problemų neatsirado. Taigi, Loxone Miniserver Gen1 buvo pilnai sutaisytas.
Be to, nusprendžiau profilaktiškai pakeisti rėles, esančias skaitmeniniuose išėjimuose – tą ir padariau.
Taip pat pakeičiau ant plokštės esantį super kondensatorių – V tipo 5.5 V, 0.33 F. Nebuvau tikras ar tai ką nors pakeis ir ar jie turi nusidėvėjimą, bet po pakeitimo ir matavimų rezultatai iš karto pasimatė, taip pat naujas super kondensatorius yra mažesnis negu originalus.

Po visų darbų visa plokštė kruopščiai nuvaloma – juk turi atrodyti kaip nauja. 😄
Kol kas tiek iš manęs – jei atsiras naujienų dėl Miniserver Gen2, būtinai papildysiu.
-Jonas





