raspberry pi - napäťová tolerancia na I2C pinoch
Moderátori: psichac, Moderátori
raspberry pi - napäťová tolerancia na I2C pinoch
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 vďaka
Mimochodom, kde mám pridávať príspevky o Raspberry ? Mám ešte dosť veľa otázok vďaka
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington
Chester Bennington
- Najgel
- 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
0
Keď neodpisujem tak tu nie som, alebo som a neodpisujem
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
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
-
- 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
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
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.
Re: raspberry pi - napäťová tolerancia na I2C pinoch
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ý ) 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é potom by som to skúšal do nemoty, kým by som nenašiel riešenie lebo teraz vďaka tomu článku mám pochyby či to bude fungovať :/
Ešte raz ďakujem za vašu rýchlu odozvu
č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é potom by som to skúšal do nemoty, kým by som nenašiel riešenie 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
Chester Bennington
- roboulbricht
- 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
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
Arduino tools: AVR Timer Calculator, AVR Register Table
YouTube: Arduino
Moja hudba: SoundCloud, MuseScore
YouTube: Arduino
Moja hudba: SoundCloud, MuseScore
Re: raspberry pi - napäťová tolerancia na I2C pinoch
pozri, budem hnusný, keby som to chcel cez USB tak si to tak zapojím a nepíšem sem ... 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 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 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 tak sa radšej pýtam tu už teraz 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é ? (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í
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 tak sa radšej pýtam tu už teraz 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é ? (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
Chester Bennington
Re: raspberry pi - napäťová tolerancia na I2C pinoch
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.
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
- jirka.jirka.
- Ultimate člen
- Príspevky: 1538
- 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
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.
https://playground.arduino.cc/Main/I2CB ... velShifter
No a když jsem to tam zadal, tak jsem otevřel první odkaz a výsledek je dokonce i pro ShitDuino.
https://playground.arduino.cc/Main/I2CB ... velShifter
0
Re: raspberry pi - napäťová tolerancia na I2C pinoch
zdravím vás takže vraciam sa späť k tejto téme 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 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 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:
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
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" tak som stiahol novú) v raspberry a pythone som úplný začiatočník (č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
-- Spojený príspevok 23 Jún 2018, 23:03 --
okej po celodennom trápení som napísal chybový kód do uja gogela 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 aspoň niečo som sa naučil no po nahodení tabov aby som nemal tie chyby už mi vyskočila dalšia a tiež si neviem rady...
vyzerá to takto :
v tom riadku sa nachádza toto :
skúšal som meniť tie čárečky hore za všetko možné no vždy mam tú istú chybu...
č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 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
Kód: Vybrať všetko
File "i2c_test.py", line 15
bus.write_byte(address, value)
^
IndentationError: expected an indented block
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
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" tak som stiahol novú) v raspberry a pythone som úplný začiatočník (č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
-- Spojený príspevok 23 Jún 2018, 23:03 --
okej po celodennom trápení som napísal chybový kód do uja gogela 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 aspoň niečo som sa naučil 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;
Kód: Vybrať všetko
var = input('Enter 1 – 9: ')
0
"Nemôžete sa báť ľudí, že vám ublížia, pretože ak sa budete obávať života, nikdy nebudete žiť..."
Chester Bennington
Chester Bennington
-
- 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
Čí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
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í.
Re: raspberry pi - napäťová tolerancia na I2C pinoch
ď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ť
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 takže dnes sa idem pustiť do vlastného projektu 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
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 diki ešte raz
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 takže dnes sa idem pustiť do vlastného projektu 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
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 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
Chester Bennington
- pablox
- 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
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
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 17 Odpovedí
- 2414 Zobrazení
-
Posledný príspevok od používateľa Sani1
-
- 7 Odpovedí
- 3337 Zobrazení
-
Posledný príspevok od používateľa wreathlover