Strana 1 z 1

raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 05 Jún 2018, 03:47
od používateľa ITIaster
Zdravím vás, chcem sa opýtať, chcel by som pripojiť arduino ako master ku raspberry pi 3B pomocou I2C, budem cez to posielať rôzne hodnoty nasnímané na analógových pinoch... začal som študovať ako to zrealizovať a kdesi som sa dočítal že Raspberry pi 2 má HW pull up rezistory pripojené k 3V3 vetve a pripojením arduina ako master by som mohol poškodiť raspberry pi 5V z arduina... ale naopak by to vraj malo fungovať... (teda ak bude Raspberry master a arduino slave) tak sa teda pýtam či toto platí aj pre Raspberry pi 3B ak áno či to tu už niekto riešil alebo ako to spraviť? Pre lepšie porozumenie, chcem obojstrannú komunikáciu kedy napr. arduino pošle teplotu nasnímanú z termistora a z raspberry pošlem povel na spustenie ventilátora...

Mimochodom, kde mám pridávať príspevky o Raspberry ? Mám ešte dosť veľa otázok :D :D :D vďaka :D

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 05 Jún 2018, 06:06
od používateľa Najgel

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 05 Jún 2018, 07:37
od používateľa alidedko
Ak uz nic

1pcs 4 channel IIC I2C Logic Level Converter Bi-Directional Module 5V to 3.3V For Arduino
http://s.aliexpress.com/Rfuu63MV?fromSns=Copy to Clipboard

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 05 Jún 2018, 08:52
od používateľa ITIaster
oukej, ďakujem, aj keď pravdupovediac túto možnosť som videl ešte pred založením témy, skôr by som potreboval iné riešenie, taktiež z priložených schém mi to príde tak že by to komunikovalo len v jednom smere (ale možno som ešte príliš zaspatý :D ) no a ja potrebujem obojstrannú komunikáciu... no a nakoniec, v článku kde som presne tento spôsob našiel bolo že pokiaľ bolo pripojené raspberry ako master bez prevodníkov tak to fungovalo bezproblémovo, no po pripojení tohto prevodníka to vyhadzovalo odveci hodnoty...
článok zde : https://oscarliang.com/raspberry-pi-ard ... ected-i2c/ - je to na konci

btw: stačilo by ak by ste niekto povedali že to máte odskúšané :D potom by som to skúšal do nemoty, kým by som nenašiel riešenie :D lebo teraz vďaka tomu článku mám pochyby či to bude fungovať :/

Ešte raz ďakujem za vašu rýchlu odozvu :)

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 05 Jún 2018, 13:37
od používateľa roboulbricht
Na obojstranné spojenie je najjednoduchšie použiť USB port. Normálne zastrčíš Arduino do jedného USB na Raspberry a komunikuješ s tým cez Serial, ako keby si bol za normálnym počítačom. Nemusíš potom riešiť žiadne špeciálne prepájačky a všetko ide jedným káblom.

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 06 Jún 2018, 17:12
od používateľa ITIaster
pozri, budem hnusný, keby som to chcel cez USB tak si to tak zapojím a nepíšem sem ... :D možno iný druh komunikácie by bol lepší ale nie USB ani Serial, serial už využívam a USB porty mam taktiež plné a už len čakám do výplaty nech si objednám USB HUB :D prosto I2C mi prišla ako najlepšia voľba, viacmenej v arduine už je aj program všetko je pripravené na I2C... a verím vám tak som objednal ten logic level converter uvidíme o mesiac či to pôjde :D potom mám ďalšiu otázku, dúfam že mi odpoviete nech nezakladám ďalšie témy ... :/
k tej tolerancii na pinoch sa chcem opýtať od koľkých V registruje raspberry ako logickú 1 ? ako napríklad pri arduine je 5V logika ale registruje mi 3V signály ako log. 1 a bod zlomu je okolo 2,5V +- .... no a zaujíma ako je to na raspberry, kde je ten bod zlomu kedy je to medzi 1 a 0 (negooglil som zatiaľ ale mam takého tušáka že sú 1,8V tolerant ale radšej by som to počul od niekoho kto to skúšal a je si tým istý... )
a posledná otázka, keď budem všetky tie srandy mať, arduino -> LLC -> Raspberry PI, nebude sa raspberry stále zapínať keď ho vypnem štýlom "sudo halt" ? lebo momentálne mám pripojené 2 tlačítka jedno na I2C pine a jedno na normálnom bežnom pine, prvé slúži ako on/off a druhé ako reset... po stlačení on/off mi vykoná to "sudo halt" a raspberry sa vypne, no keďže na I2C pinoch sú HW pull up rezistory tak keď ho stlačím ešte raz tak sa raspberry prebudí nabootuje a funguje... na to druhé nereaguje lebo je pripojené na bežnom GPIO pine... doteraz mi to nevadilo práve naopak, vyhovovalo mi to, ale keď k nemu pripojím to arduino tak sa obávam že po vypnutí sa hneď naspäť zapne... samozrejme aby som tomu zabránil tak raspberry budem vypínať pomocou toho arduina cez I2C povel a po odoslaní toho povelu sa arduino hneď prepne do sleep módu (už je to tak naprogramované) dúfam že sa to nestane ale keďže budem čakať ešte mesiac kým sa to dozviem :D tak sa radšej pýtam tu už teraz :D samozrejeme koho by napadlo že ak vypnem raspberry pi priamo cez terminal a že arduino sa nevypne, to je tiež ošetrené tak že GPIO pin ide do arduina a hneď po nabootovaní ho dá na HIGH, čiže v programe to je riešené štýlom:
"if GPIO_pin == HIGH {odošli hodnoty}
else if GIPO_pin != HIGH {prepni sa do sleep módu a aktivuj interrupt: tlačítko na zapínanie}"
no a tak ako by som nechcel aby sa kedykoľvek raspberry samo zaplo pomocou I2C tak tak by som chcel aby sa zapínalo keď to budem ja chcieť, bude to možné ? :D (ale myslím si že to bude malina, pošlem random command po I2C a raspberry sa zapne, viac sa bojím toho aby sa nezapínalo samo kedykoľvek....)

a ďakujem za radu ohľadom toho LLC, potom sem dám feedback keď mi to dorazí :)

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 06 Jún 2018, 18:19
od používateľa m6r3k
V prvom rade si nastudujte ako funguje I2C. Shit*Duino má je AVR core a AVR podporuje ako 5 tak 3,3V logiku, takže dáš pull up rezistor na 3,3V aby si nezosmazil malinu (open colector).
Malina bude master, Shit*duino slave, I2C komunikacia je obojsmerna ale master rozhoduje čo sa kedy bude diať. Master riadi START aj STOP, ak posielas data zo slave do mastra tak master posle poziadavku slave prebere kontrolu a zacne sypat data.
Ak chces aby slave samovolne, kedy sa mu zachce posielal data do maliny tak zas iba osetris aby sa na malinu nedostalo 5V ( zenerka, odpor), maline posles signal na I/O ona spusti komunikaciu - vyziada data - shit*duino jej to posle. Hlavne na shit*duine vypni interne pull up nech tam nedas 5V.

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 06 Jún 2018, 18:27
od používateľa jirka.jirka.
Zadal jsem si do googlu: I2C voltage level shifter. Zkoušel jsi to?

No a když jsem to tam zadal, tak jsem otevřel první odkaz a výsledek je dokonce i pro ShitDuino. :thumbup:

https://playground.arduino.cc/Main/I2CB ... velShifter

Obrázok

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 23 Jún 2018, 23:08
od používateľa ITIaster
zdravím vás takže vraciam sa späť k tejto téme :D teraz už so SW problémami, dúfam že mi tu niekto odpovie aby som nezakladal 100tém...
čiže, LLC z číny dorazil, prebehol som ho merakom (testoval som tú obojsmernosť pripojením pinov na log1 alebo log0), všetko bolo OK... tak som teda popripájal všetko ako má byť a pustil sa do SW časti... hovorím si, začnem s nejakým basicom či to vôbec bude fungovať, odtiaľ sa naučím čo a ako funguje a postupne si vytvorím vlastné programy pre duino aj malinku :D vybral som sa asi do prvého čo som nšiel na googli https://oscarliang.com/raspberry-pi-ard ... ected-i2c/ lebo tam bolo video postup a dokonca to využívalo obojsmernú komunikáciu tak by som aspoň vedel či sa pri prenose data nepoškodili...
pomocou inej stránky : https://www.abelectronics.co.uk/kb/arti ... bian-linux som pozapínal a nainštaloval v raspberry všetko ohľadom I2C a SMBus (blacklist som mal prázdny tak som tam nič ani nepísal) potom som sa vrátil na tú prvú stránku, skopíroval programy a nahral ... keď som zadal

Kód: Vybrať všetko

i2cdetect -y 1
tak na danej adrese sa ukazalo číslo, teda vedel som že kablovačka je OK a všetko beží ( + vedel som že smbus používa i2c 1 a nie i2c 0 ) tak som napísal povel na spustenie scriptu v raspberry a vždy mi to vypisuje:

Kód: Vybrať všetko

File "i2c_test.py", line 15
    bus.write_byte(address, value)
      ^
IndentationError: expected an indented block
dokonca keď som to spustil priamo cez python idle tak mi to označilo v tom riadku "bus" ....

program som niekoľkokrát skontroloval preletel som podobné príklady hľadal som na google, skúšal som ručne prepísať všetky premenne (pri arduine ak sa pomýlim tak mi to pomôže) no zakaždým sa programu nepáči to SMBus... preletel som niekoľko návodov ako to nainštalovať správne, všetko čo zadám do terminalu mi vyhodí iba že používam najnovšiu verziu... no proste strávil som nad tým celú sobotu ale nepohol som sa :crying: :crying: :crying: :crying:
tak už som sa rozhodol napísať sem...

btw.: používam raspberry pi 3 model B (predposledná verzia), najnovší raspbian (ver. 2017 mi dnes kľakla po "apt get upgrade" :D tak som stiahol novú) v raspberry a pythone som úplný začiatočník :D (čiže jednajte so mnou ako s blbcom keď by som nerozumel) v arduine si trúfam už na extrémy (limitovaný som wiringom pretože čisté C neovládam...)

budem vám vďačný za akúkoľvek pomoc pretože si s tým už neviem rady :D

-- Spojený príspevok 23 Jún 2018, 23:03 --

okej po celodennom trápení som napísal chybový kód do uja gogela :D a ten ma naučil že keď mam nejakú funkciu s ":" tak musím pred veci ktoré do nej patria dávať tab. no som proste génius :D aspoň niečo som sa naučil :D no po nahodení tabov aby som nemal tie chyby už mi vyskočila dalšia a tiež si neviem rady...
vyzerá to takto :

Kód: Vybrať všetko

SyntaxError: Non-ASCII character '\xe2' in file i2c_test.py on line 23, but no encoding declared;
v tom riadku sa nachádza toto :

Kód: Vybrať všetko

var = input('Enter 1 – 9: ')
skúšal som meniť tie čárečky hore za všetko možné no vždy mam tú istú chybu...

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 24 Jún 2018, 09:38
od používateľa peterple
Čím to edituješ? Nekóduje to v UTF-8? Pozri si ten file nejakým hex editorom a hneď zbadáš kde je ten blbý znak pichnutý.
Ale nie je to náhodou runtime chyba ako odozva na ten inut? Teda sa do premennej ukladá neznámy znak.
Pripadne sa dá pytonu povedať že je to kódované v UTF-8.
https://stackoverflow.com/questions/105 ... rns-%C2%A3

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 24 Jún 2018, 14:59
od používateľa ITIaster
ďakujem za odpoveď, vyriešil som to ešte včera v noci len som sem už nepísal, akonáhle sa to rozbehlo tak som išiel spokojne spať :D
spravil som presne to čo radíš prebehol som to cez online converter a tá pomlčka čo je tam nepatrila do ASCII tak som ju nahradil slovíčkom "to" a celé to ožilo a začalo fungovať správne :D takže dnes sa idem pustiť do vlastného projektu :D dúfam že všetko pôjde... no určite budem mať nejaké nové otázky čiže onedlho pribudnú nové témy odomňa :D

V rámci mojej základnej otázky ste mi odpovedali, objednal som si teda LLC všetko funguje ako má, ďakujem vám :)
najviac som vďačný m6r3k za perfektné vysvetlenie, ešte sa sem určite zastavím po nejaké rady od teba ;) btw. potom mi došlo že I2C je open colector ale keď som tam pripojil LCD s I2C backplatom tak som mal okamžite 5V na pinoch lebo ten backplate ma HW pullup na sebe... takže radšej som tam dal aj ten LLC potom časom keď skončím s testovaní a pokusmi tak ho zrejme vyhodím, lebo to čo je teraz na LCD sa má zobrazovať v maline :D diki ešte raz :)

Re: raspberry pi - napäťová tolerancia na I2C pinoch

Napísané: 24 Jún 2018, 17:59
od používateľa pablox
Síce už kúsok OT, ale dávaj pozor, aby sa ti na GPIO nedostalo viac ako tých 3,3V - raz som robil pokusy s RPi 1 a UART a nechtiac som pustil do Rx pinu 5V úroveň z MCU - a bolo po RPi...