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

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

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

Príspevok od používateľa ITIaster » 05 Jún 2018, 03:47

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
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington

Používateľov profilový obrázok
Najgel
Ultimate člen
Ultimate člen
Príspevky: 1695
Dátum registrácie: 02 Júl 2010, 00:00
Bydlisko: Námestovo, Žilina(škola)
Vek: 29

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

Príspevok od používateľa Najgel » 05 Jún 2018, 06:06

0
Keď neodpisujem tak tu nie som, alebo som a neodpisujem :D

MPLAB & PIC
Texas Instruments DSP TMS320Fxxxxx
Tevo Tarantula 3D
Ponúkam 3D tlač.
Ponúkam návrh a vývoj elektroniky na zákazku.

UNIZA 5.ročník

alidedko
Ultimate člen
Ultimate člen
Príspevky: 3963
Dátum registrácie: 04 Feb 2013, 22:04
Bydlisko: U alibabky v Poprade
Vek: 32

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

Príspevok od používateľa alidedko » 05 Jún 2018, 07:37

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
0
Motto: Nikto nie je tak velky, aby sa nevosiel do truhly.

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

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

Príspevok od používateľa ITIaster » 05 Jún 2018, 08:52

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 :)
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington

Používateľov profilový obrázok
roboulbricht
Stály člen
Stály člen
Príspevky: 156
Dátum registrácie: 07 Jan 2015, 12:01
Bydlisko: Banská Bystrica
Vek: 54
Kontaktovať používateľa:

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

Príspevok od používateľa roboulbricht » 05 Jún 2018, 13:37

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.
0

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

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

Príspevok od používateľa ITIaster » 06 Jún 2018, 17:12

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í :)
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington

m6r3k
Stály člen
Stály člen
Príspevky: 133
Dátum registrácie: 29 Júl 2013, 21:16
Vek: 31

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

Príspevok od používateľa m6r3k » 06 Jún 2018, 18:19

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.
0

Používateľov profilový obrázok
jirka.jirka.
Ultimate člen
Ultimate člen
Príspevky: 1537
Dátum registrácie: 17 Okt 2008, 00:00
Bydlisko: Uherské Hradiště
Kontaktovať používateľa:

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

Príspevok od používateľa jirka.jirka. » 06 Jún 2018, 18:27

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
0

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

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

Príspevok od používateľa ITIaster » 23 Jún 2018, 23:08

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...
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

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

Príspevok od používateľa peterple » 24 Jún 2018, 09:38

Čí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
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
ITIaster
Stály člen
Stály člen
Príspevky: 177
Dátum registrácie: 01 Jún 2014, 13:00
Vek: 25

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

Príspevok od používateľa ITIaster » 24 Jún 2018, 14:59

ď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 :)
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington

Používateľov profilový obrázok
pablox
Ultimate člen
Ultimate člen
Príspevky: 1737
Dátum registrácie: 19 Júl 2006, 00:00
Bydlisko: Ruzomberok
Vek: 32
Kontaktovať používateľa:

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

Príspevok od používateľa pablox » 24 Jún 2018, 17:59

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...
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok