Kadangi raspberry pi turi ganėtinai mažiai input/output kanalų, ilgai sukau galvą, kaip čia pačiam "pasigamint" jų daugiau. Ketinau viską pats susilituoti, tačiau šią mintį paleidau ir prieš kelias savaites iš JAV užsisakiau tokią "kepurėlę".
Šiandien prisėdau prie projektuko ir pasimėginau viską sujungti. Kadangi kiek anksčiau panašią plokštelę buvau susimaketavęs pats, paleisti šį prietaisėlį pavyko iš pirmo karto. Viskas iš ties gerai apgalvota. Pati plokštelė tvirtinasi tiesiai ant rpi. Sekanti plokštelė maunasi ant prieš tai sumontuotos.
Taip pritvirtinus dvi ploktšeles, gavau papildomus 64 kanalus. Tiesa plokštelė turi vieną minusą, dėl kurio ketinu parašyti gamintojui, gal sekančioje versijoje patobulins :) Minusas toks, kad šiam praplėtimui reikia 5v įtampos, o rpi input kanalai gali priimti max 3.3V,tad tiesiai jungti "interrupt" signalų į raspberry negaliu. Teks panaudoti tam tikrą "level shifterį", kuris "numuštų" įtampą. Principas toks, kad mikroschemos sumontuotos ant šios plokštelės, input signalus į raspberry siunčia per interrupt Pin'ą. T.y. jei užtrumpinamas, vienas, du ar net keli kanalai, ši plokštelė raspberriui praneša "hey, nuo paskutinio mikroschemos nuskaitymo yra pasikeitimų", tada per I2c protokolą reikia užsiklausti mikroschemos, kurie input kanalai buvo "sutrigerinti". Tad kol nesu pajungęs level shifterio, input kanalus susikonfigūravau tiesiai ant pačio rpi, o iš šių plokštelių panaudojau tik output kanalus. Kad pats testavimas būtų smagenis, prijungiau net 220v lemputę. O kad viskas atrodytų dar smagiau, ant raspberry pi pakūriau web api, į kurį galima paduoti komandą "Revert" ir taip įjungti/išjungti apšvietimą.
Tiesa šiam testui panaudojau relių blokus, kurių galutiniame produkte ketinu nenaudoti. Vietoj jų naudosiu reles, kurios montuojasi ant DIN bėgelių. Apie tai kitam post'e, kai sulauksiu dar vieno siuntinėlio :) Kaip atrodė mano testas - video žemiau:
Gal tu geriau nusipirk kastuvą, šufelį, gulsčiuką, grąžtą, kibirą... :D
AtsakytiPanaikintiReiktų argumentų :)
AtsakytiPanaikintiDažniausiai interrupt signalai yra atviro kolektoriaus (open collector or open drain)ir reikia pajungti tik pull-up varžą pvz. 10kOm į savo maitinimą 3,3V (su sąlyga kad ši varža nestovi ant CAP'o plokštės plokštės pajungta į 5V). Jei pull-up stovi ant CAP'o plokštės, tai reiktų nuimti arba padaryti paprasčiausą varžų daliklį (2 varžos). Raspbery gali turėti savo konfiguruojamus pin'us su galimybe įjungti pull-up. Jei iš plokštelės išeina "tikras" output'as 5V (ne open drain), tai užtenka tik varžų daliklio pvz 100K || 200K arba 10K || 20K ir nereikia jokio level shifterio. Be to kartais input pin'ai gali priimti ir 5V signalus (5V compliant): reikia žiūrėti RPI konkretaus pin'o aprašymą datasheet'e. Level shifter bet kokiu atveju nereikalingas: užtenka dviejų varžų. PS.: Greičiausiai interrupt pin'as bus open collector (OC), nes galima dvi plokšteles sujungti lygiagrečiai (pagal tavo postą), o dviejų output pin'ų užtrumpinti negalima, jei jie nėra OC.
AtsakytiPanaikintiVisi rpi pinai nėra 5v tolerant. bet tu teisus, galima panaudoti voltage divider (porą rezistorių). Buvau tokį principą išsimėginęs ant maketo. Internete kiek radau, tai vieni naudoja level shifterius, kiti voltage divider, bet plokštės gamintojas rekomenduoja level shifterį.
AtsakytiPanaikintiKitas variantas, kurį dar svarstau, kadangi šiai plokštei užtektų ir 3.3v, tai pastatyti atskirą maitinimą joms..tada nereiktų sukt galvos kaip numušt įtampą iš interupto...
Nors mažai ką supratau, bet postas įkvepiantis - o ko gi kiek nepastudijavus atsisakyti elektriko ir name išsivedžioti elektrą ir pasijungti prietaisus pačiam.
AtsakytiPanaikinti