» »

Arduino Uno - kako do več GPIO

Arduino Uno - kako do več GPIO

levaky ::

LP!

V planu imam projekt za diplomsko nalogo, ki bi ga rad realiziral z Arduinotom... Ker pa za moj projekt Arduino Uno nima dovolj GPIO portov me zanima, kakšnih trikov se polastite, ko želite razširiti število portov...

Za več analognih vhodov sem našel rešitev na arduino strani in se lahko realizira s pomočjo Analog Multiplexer/Demultiplexer - 4051.

Kako je z digitalnimi izhodi in vhodi. Načeloma rabim čisto običajne digitalne porte, PWM-jev imam dovolj na arduinotu...
Se uporablja rešitve na I2C vodilu?
Se rešuje s pomočjo multiplexerjev?

Kar se tiče shieldov, razen etherneta, nebi rabil nobenega drugega, a že ethernet shield požre nekaj portov(mislim da 4, skupaj z SD slotom).

Gledam sem tudi v smeri Arduino Duo, ampak je tam podpore za knjižnice in hardware veliko manj. Doma imam tudi Olimex-ovo plato STM32-P103, ampak je tam s podporo še slabše. Comunity-a skoraj ni, examplov je pa tudi malo, pa še pri večini se mi je naredilo, da nekaj ni delalo. Da ne omenjam, da ULink programator stane goro denarja...

Matej

ingeniero ::

Kaj pa kakšen stm32 discovery kit? Ima debugger že onboard. Tudi cena je zelo ugodna.
Drugače pa sem sam uporabil port expander preko i2c-ja.

levaky ::

Za STM32 lahko sicer dobim ulink na posojo, ampak podpora HWju, knjižnice in podobno so na veliko slabšem nivoju kot pri Arduinu...

Arduino mi nekako ustreza zaradi dobre podpore hardweru kot ogromenega community...

Mogoče veš kateri port expander si uporabljal?

Matej

techfreak :) ::

Bi želel povedati malo več kaj točno delaš ter kaj potrebuješ od razvojne plošče?

Recimo preko I2C imaš kaj takšnega: https://www.google.si/search?q=i2c+pin+...

STM32F3 Discovery je precej zanima plošča je pa res manjši problem pri spravljanju gcc toolchaina na Windows (ostali so v brezplačnih variantah omejeni na 32 kB programa kar boš definitivno presegel.)
Če ethernet shield še vedno uporablja Wiznet 5100 potem boš brez težav na internetu kodo za uporabo iz discovery plošče, ostalo pa bi tako moralo delovati.

ingeniero ::

Se strinjam s techfreakom. Zna biti malo tezava z razvojnim okoljem. Wiznet5100 je preprost za uporabo in ne bi smelo biti vecjih tezav s priklopom na stm32.
Je pa bistvena razlika, v tem, ce se pri izdelavi diplomske naucis delati z ARM-i ali pa z 8bitnimi Atmeli...

i2c lahko najdes tu: http://www.ti.com/lsds/ti/interface/i2c...

levaky ::

Ja, tudi sam bi sicer zadevo rajši rešil z ARMom, ampak mi je za začetek lažje delati z ARduinotom zaradi supporta in lažjega reševanja problemov...

Kar se tiče STM32, imam tudi tukaj dobro podporo v službi, saj kar nekaj ljudi razvija na njih. A vseeno se mi zdi, da bo za osnovo arduino boljši, potem pa prehod na ARM...

Kar se tiče samega projekta, se planira delati kontroler za akvarij:
- Vklop/izklop luči, pump, gretja,...
- Kontrola svetilnosti
- povratne zanke za vse stvari, da sistem takoj javi, ko kaj ne dela
- urnik, kdaj se prižigajo luči
- simulacija vremena
- simulacija tokov
- simulacija letnih časov
- merjenje temperature in pH
- dodajanje CO2
....

Matej

Kar pa se tiče programiranja Arma, pa trenutno uporabljam uKeil...

Matej

Zgodovina sprememb…

  • spremenil: levaky ()

sumoborac ::

Zakaj pa ne Arduino Mega z 50 pini al kok jih ze je?

Sumoborac
Prid sm al pa tm ostan...

Aljaz1980 ::

Zgodovina sprememb…

levaky ::

Sumoborac:
Kaj pa vem, ne vem kako je potem z kompatibilnostjo različnih shieldov... Saj ne da bi jih veliko rabil, ampak vsaj Ethernet bom sigurno rabil. Kolikor berem, je potem potrebno ročno popravljati konfiguracijo pinov...

Grega: zanimiva predloga... Sicer sem pa že sedaj našel kar nekaj robe za razširitev telih GPIO-jev... Mislim da to ni več problem:))

Matej

beeone ::

Sam bi predlagal tudi uporabo dveh arduinotov, ki komunicirata preko izbrane komunikacije (običajni (strojni) serial, i2c, spi, 1-Wire, itd., kar ti pač najbolj odgovarja, vse knjižnice so že napisane).

Ta možnost se mi zdi praktična, ker iz tvojega opisa vidim, da boš delal kar veliko različnih stvari, ki so bolj kot ne med seboj neodvisne in bi se tako lahko "računska moč" malo porazdelila, kar pa bi bilo skupnega, pa bi si delila preko povezave.

Takšna kombinacija je programsko malo zahtevnejša, vendar omogoča, da imaš dve fizično ločeni enoti, kar zna biti včasih priročno, ker ne potrebuješ toliko kablovja za vse senzorje peljati iz enega dela na drugega ampak pripelješ le komunikacijske kable in napajanje.

Pa še ena prednost je, da lahko izbereš dva arduino nano/mini (mogoče še pro verzijo po vrhu) in ti tako zavzame po vrhu še resnično minimalno prostora ter imaš vse na dveh že narejenih ploščicah, na katere samo prispajkaš kablovje brez dodatnih povezav in čipov.

Je res da malo "razmišljanje izven škatle" ampak se splača pomislit tudi na to možnost.

techfreak :) ::

Glede na to da boš uporabljal Ethernet ter še kakšen dodaten shield in glede na nalogo, ki si si jo zastavil, bi rekel da ti bo 32kB spomina za program premalo.

levaky ::

beeone: zanimiva opcija... Sem tudi sam že malo razmišljal o tem. Načeloma bi lahko naredil zadevo precej modularno in bi za vsak modularen kos uporabil 1 Arhuino ploščo, verjetno bi za večino modulov zadoščala že Nano izvedba...

Techfreak: bi premalo? Nimam najmanjše ideje, koliko taki programi zasedejo. Kaj pa če namesto Uno vzel Mega 2560 ali Mega ADK izvedbo? Kako je tam s kompatibilnostjo Shieldov?

lp, MAtej

beeone ::

Kako je s spominom ne bi vedel, samo sam program ne bi smel biti ne vem kako velik, za tiste simulacije letnih časov, urnike, itd. pa boš najverjetneje rabil nekakšne tabele, katere bi pa jaz na tvojem mestu shranil kar na SD kartico na ethernet shieldu. Je poceni in prostora imaš kolikor pač hočeš, ker SD kartice so dandanes že skoraj zastonj.

Predlagal sem samo dve ploščici, ker tako lahko uporabljaš tudi komunikacijske tehnike, ki so samo point-to-point. Če imaš veliko modulov, moraš imeti tako enega samo za posredovanje informacij, "router". Pa da ne omenimo še ceno, ker ena ploščica nanota stane samo mislim da 5-8€ ampak, če jih nabaviš 10, se pa že nabere...

Ima pa visoka modularnost prednost pri spremembi (dodajanje, odvzemanje funkcij). Ampak za izkoriščanje te prednosti mora biti tudi program dobro (funkcionalno) napisan.

levaky ::

Za začetek bom šel verjetno kar z Uno-tom, potem bom pa sproti videl. Sej načeloma, če bo program preobsežen, ali če bo zmanjkalo prostora za vse dodatne module, se bom tukaj malo omejil...

Projekt je bolj namenjen učenju in pridobivanju izkušenj. Če se izkaže, da bo 1 arduino premalo, pa bomo po potrebi dodali še enega in določene stvari premaknili tja...

Matej

rebro ::

Pozdravljeni!

Mene pa zanima, kakšno vmesno vezje potrebujem, da bi s pomočjo GPIO portov lahko krmilil en izhodni kontakt, na katerem bi lahko v različnih časovnih obdobjih nastavljal izhodno napetost 0, 5V in 12V. Tokovna obremenitev ni tako pomembna, ker bi bila to zadeva za programiranje mikrokrmilnikov. Na obstoječem vodilu mikrokrmilnika je isti pin uporaben za izbiro icja (5V) in pa za programiranje njegovega pomnilnika (12V). Releji ne pridejo v poštev, ker niso dovolj hitri.
Ideja je, da bi eden GPIO port uporabil za ON/OFF napetosti 5V, ki je že prisotna na Raspberry-u in pa z drugim GPIO preko zunanjega vezja vklapljal 12V zunanjega napajalnika.
Mikrokrmilniki, ki zahtevajo takšno vodilo so ST7.

DOOM_er ::

lahko uporabis pca9555 gpio expander na i2c vodilu, dobis dodatnih 16 digitalnih IO pinov. Pa se zelo preprosto jih je krmilit.
Robots will steal your job. But that's OK


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

6 pospeškometrov pri 1 kHz, kateri mikrokrmilnik?

Oddelek: Elektrotehnika in elektronika
171928 (1433) srus
»

Bi pivo ali računalnik Raspberry Pi Zero?

Oddelek: Novice / Procesorji
4516032 (10868) nikjozo
»

Arduino

Oddelek: Strojna oprema
71743 (1203) techfreak :)
»

Intel se podaja v vode Arduina

Oddelek: Novice / Procesorji
2612679 (8115) PrimozR
»

priklop lcd preko i2c

Oddelek: Elektrotehnika in elektronika
141495 (1264) cefizl88

Več podobnih tem