Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   613 / 848
(#) proba válasza sargarigo hozzászólására (») Ápr 3, 2020 /
 
Mindkét információt egy irányba kellene terelgetni ez mondjuk elhatározás kérdése. Az ESP vagy szerver legyen vagy kliens folyamatosan. Kérdés mekkora adatforgalom legyen, és milyen reakcióidő.
A te esetedben az ESP rendszeresen küld hőmérséklet adatokat lekérdezés formában, ha kell ha nem, és rendszeresen kérdezgeti a gomb állapotát ( késleltetéssel reagál) .
Fordított esetben a számítógép megkérdezi hány fok van, amikor kíváncsi rá, és a gomb változásakor küld egy kérést a gomb állapotával, késleltetés nélkül.
Aztán még a rendszertől is függhet, hány ESP, hány számítógép...
(#) sargarigo válasza proba hozzászólására (») Ápr 3, 2020 /
 
Jah! A ló ugyanaz, csak nem mindegy merre megy! Igazából a feladat dönti el hogy mire van szüksége! Pl lehet hogy nem is akar bele számítógépet.. Én pl ahol lehet kerülöm.
(#) proba válasza sargarigo hozzászólására (») Ápr 4, 2020 /
 
Ami még eszembe jutott, bár nagy valószínűséggel nem számít, egy esetleges router a "közlekedési" útvonalban el döntheti az irányt.
(#) sargarigo válasza proba hozzászólására (») Ápr 4, 2020 /
 
Ezt kifejtenéd?
(#) david10 hozzászólása Ápr 4, 2020 /
 
Sziasztok,
Két Arduino Nano között hogyan lehet adatot megosztani?
Konkrétan egy kb. 80 bájtból álló adatfolyamot szeretnék egyik Arduinoról átküldeni a másikra 5 másodpercenként, ha lassan megy át az adat, az se gond, a lényeg hogy odaérjen. A nehezítés az az, hogy a hardware-es UART és az I2C már le van foglalva a vevő oldalon, az SPI lábakon lévő dolgokat csak akkor szeretném más helyre tenni ha nincs más megoldás az SPI-n kívül. A küldő oldalon egyedül az I2C van lefoglalva.
A SW-es UART-tal nincsenek túl jó tapasztalataim, így azt kerülni szeretném.
A két arduino pár cm-re van egymástól, azért van szükség a másodikra is mivel az elsőre van kötve 2 darab olyan szenzor, amelyiknek csak 2 féle I2C címet lehet adni.
A választ előre is köszönöm.
(#) Feri007 válasza david10 hozzászólására (») Ápr 4, 2020 /
 
virtualwire? Ez rádiós modulok közti kommunikációra találták ki, de rádió nélkül is működik.
Kicsit nagy az overhead, stb. De a softwareserial-nak is illene működni.
(#) david10 válasza Feri007 hozzászólására (») Ápr 4, 2020 /
 
Köszönöm a válaszodat, jó ötletnek tűnik a virtualwire, ahogyan nézem közben nevet váltott és radiohead lett belőle.
Amint kipróbáltam jelentkezek az eredménnyel.
Az overhead az mit jelent?
(#) Feri007 válasza david10 hozzászólására (») Ápr 4, 2020 /
 
overhead = a szükségesnél jóval több adat átvitele.
Ez a rádióhoz szükséges, itt felesleges lenne.
(#) KoblogPerGyok válasza david10 hozzászólására (») Ápr 4, 2020 /
 
i2c miért nem jó? 255 cím mehet. Nem értem pontosan.
(#) david10 válasza Feri007 hozzászólására (») Ápr 4, 2020 /
 
Úgy néz ki hogy jó lesz ez a megoldás
Egyedüli gond az, hogy a 83 byte-os üzenetet nem küldi el, csak a max. a kb. 60 betüset, de megoldom a csomag felosztását 2 részre.
Köszönöm szépen a segítségedet.

KoblogPerGyok: Azért nem jó, mert két eszköznek egyforma címe van.
(#) Kovidivi válasza david10 hozzászólására (») Ápr 4, 2020 /
 
Ezt én nem értem. Az eszközök címét te tudod megadni!
(#) KoblogPerGyok válasza david10 hozzászólására (») Ápr 4, 2020 /
 
Értem. És ezért használsz két nanot? Mert többnyire egy kontaktust kell megszakítani az eszközökön és akkor változik a címe. Melyik eszközön van ugyan az a cím? Be tudod linkelni?
(#) david10 válasza KoblogPerGyok hozzászólására (») Ápr 4, 2020 /
 
Texas Instruments gyártja, bq27200 az IC neve, ez egy akkumulátor energia figyelő IC, fix 0x55 a címe, ezt sajnos nem lehet változtatni, nekem 2 ilyen IC-m van és egy kijelzőn kell megjelenjenek mindkettőnek az értékei.

Az a megoldás, amelyiket Feri007 ajánlotta az egésszen jó (már a programot átírtam arra), azt leszámítva hogy ha egyszerre csak 1 bájtot szeretnék elküldeni, akkor azt hogyan tudok?

Egyedül ezzel a programmal sikerült elérnem azt, hogy 0x00 0x61 kijőjjön, de én csak 0x61-et szeretnék kapni:
  1. #include <RH_ASK.h>
  2. #ifdef RH_HAVE_HARDWARE_SPI
  3. #include <SPI.h> // Not actually used but needed to compile
  4. #endif
  5. RH_ASK driver(2000, 9, 10, 0); // ESP8266 or ESP32: do not use pin 11 or 2
  6. char *msg = "";
  7.  
  8. void setup()
  9. {
  10.     Serial.begin(9600);   // Debugging only
  11.     driver.init();
  12.     Serial.println("inited");
  13. }
  14.  
  15. void loop()
  16. {
  17.     byte vvv=0x61;
  18.     msg[1] = vvv;
  19.     driver.send((uint8_t *)vvv, 2);
  20.     driver.waitPacketSent();
  21.     delay(200);
  22. }
A hozzászólás módosítva: Ápr 4, 2020
(#) Massawa válasza david10 hozzászólására (») Ápr 4, 2020 /
 
Itt van néhány link hogyan lehet kezelni Arduinoval több modult azonos cimen:

I2C address conflict
I2c address 2
A hozzászólás módosítva: Ápr 4, 2020
(#) david10 válasza Massawa hozzászólására (») Ápr 4, 2020 /
 
Köszönöm szépen ezeket a videókat.
Hasznosnak tűnnek, fogok rendelni olyan modult, mint amelyik az első videón van.
(#) david10 válasza david10 hozzászólására (») Ápr 4, 2020 /
 
Tehát jelenleg átvínni 83 bájtot szükség van 6 másodperce. A valóságban ennek a duplája (166 bájt) megy át, mivel a 0x00-t is elküldi fölöslegesen.
Lenne-e esély, hogy gyorsabban küldje? Most jöttem rá, hogy ameddig fogadja az adatokat, addig nem tudja elküldeni a többi változókat UART-on, az pedig fontos hogy másodpercenként elküldje az adatokat.
(#) david10 válasza david10 hozzászólására (») Ápr 4, 2020 /
 
Végül megtaláltam, az inicializáláskor kell a speed paramétert beállítani. Kíváncsi vagyok, hogy mekkora a leggyorsabb sebesség.
(#) Kovidivi válasza david10 hozzászólására (») Ápr 4, 2020 /
 
Nem tudsz egy szoftveres I2C-t használni? Csak egy plusz Pin kell az Arduinoról, az SCL maradhatna az eredeti analóg pin.
(#) Massawa válasza david10 hozzászólására (») Ápr 4, 2020 /
 
Van még egy sereg a szoftwares I2C- re is, csak keresgélni kell.
(#) KoblogPerGyok válasza Kovidivi hozzászólására (») Ápr 5, 2020 /
 
Kicsit gondolkodtam, de lehet blődséget találtam ki. Tőletek kérdezem, hogy ilyen I2C cím ütközés esetén nem lehet azt csinálni, hogy egy sima npn tranzisztorral lekapcsolom a hálózatról az egyik azonos című I2C eszközt?

Tranzisztor mint kapcsoló:
"Example of NPN Transistor as a Switch"

https://www.electronicshub.org/transistor-as-a-switch/

Arra gondoltam, hogy az egyiket egy ilyenre kellene kötni. Pontosabban az SDA vonalat a VCC-re a busz felől, míg a Vout mehetne az eszköz felé, mint SDA. A Vin meg az Arduino egyik szabad digit pin-re. A logikai ábráról látszik, hogy ha az adott Arduino pin magas, akkor a Vout alacsony. A programban meg mielőtt olvasnám az egyiket, digitpin high meg egy kis delay. Egy szabad digit pin elég is lenne.

Nagy hülyeség? Összeomlasztaná az I2C buszt? Szerintem nem, mert amíg nincs adattovábbítás addig le lehet kapcsolgatni az eszközöket. (Pontosabban az SDA vonalat)

Csak próbálkozok mert később segíthet hasonló problémák megoldásánál esetleg. Ha nagy sületlenség, akkor bocs.
(#) david10 válasza david10 hozzászólására (») Ápr 5, 2020 /
 
Köszönöm a segítséget!
Tegnap (azaz ma) éjjel jött az ötlet, hogy az első Arduino-nak csak az UART TX lába van használva, az RX nincs, így HW-es UART-tal sikerült megoldani.
A tegnap legalább tanultam 2 dolgot:
VirtualWire-el adatot átvinni és kaptam pár ötletet arra hogy hogyan lehetne az I2C-t kapcsolgatni.

Szoftveres I2C-t is próbáltam, de az nem látta az IC-t még felhúzó ellenállásal se.

Ez egy határidős projekt, itt csak az számított hogy minden minél hamarabb készen legyen.

További szép napot mindenkinek.
A hozzászólás módosítva: Ápr 5, 2020
(#) vargham válasza KoblogPerGyok hozzászólására (») Ápr 5, 2020 / 1
 
(#) KoblogPerGyok válasza vargham hozzászólására (») Ápr 5, 2020 /
 
Hasonlót már gondoltam, ezek szerint a saját ötletem nem megvalósítható. Azért gondoltam ilyesmire, mert az könnyen kivitelezhető (lenne, ha jó), és nem kell raktározni ilyen multiplexert. No meg 6-8 hét mire ideér!
(#) vargham válasza KoblogPerGyok hozzászólására (») Ápr 5, 2020 /
 
EU disztribútortól 1 héten belül.
(#) Rober_4 hozzászólása Ápr 5, 2020 /
 
Sziasztok! Bocs, hogy megint belekontárkodom a fórumba!
Arduino due-val szeretnék meghajtani szabványos hd44780 kompatibilis kétsoros lcd-t, minél gyorsabban.
i2c kizárva.
Ugye van a klasszikus 4bites bekötés sima arduinora:
Link
Kérdéseim:
1. Ugyanazon lábkiosztásra mehet, mint az Unonál, Nanonál?
2. Létezik-e 8 bites bekötés, ami lehet gyorsabb? Tehát ha több 4 vezetékkel, az nem olyan gáz, ha cserébe kétszer olyan gyors...
3. A LiquidCrystal könyvtár lekezeli a 8 bites módot?
Válaszotokat köszönöm!
(#) KoblogPerGyok válasza Rober_4 hozzászólására (») Ápr 5, 2020 / 1
 
Amit küldtél linket ott azt írja, hogy igen tudja. Automatikusan érti, ha csak 4-el használod. Ha 8-al akkor azt is tudnia kell. Gondolom ki is használja. Ekkor kell a többi pin is szerintem.

Bár példát nem ír hozzá.
(#) mateatek válasza Rober_4 hozzászólására (») Ápr 5, 2020 / 1
 
Kezeli a LiquidCrystal könyvtár. A 8 bites mód körül-belül 1/3-nyi sebességgel lesz gyorsabb.
(#) Rober_4 válasza mateatek hozzászólására (») Ápr 5, 2020 /
 
Az is rengeteg!
Közben ránéztem a forrásra, úgy látom többféleképpen paraméterezhető, tehát a paraméterek megadásától függ, hogy melyik módban megy...
Bővebben: Link
Tehát a lábkiosztás meg kb. mindegy, nincs spéci sebességű láb?
Eddig is köszönöm!
(#) Kovidivi válasza Rober_4 hozzászólására (») Ápr 5, 2020 /
 
Azt kellene fontolóra venned, hogy az LCD meghajtása bit banging módon történik, tehát várakozás van beiktatva. Ha ezt a várakozást nem delay-jel, hanem mondjuk állapotgéppel esetleg interrupttal oldod meg, máris "gyorsabb" lesz a kommunikáció. Nem a kijelző frissítése, csak a procinak több ideje jut más feladatra.
Ha azt szeretnéd, hogy a kijelzőn gyorsabban jelenjenek meg a szövegek, akkor trükköznöd kell, csak azt a karaktert frissíted, ami változik. Tehát hol akarsz gyorsítani?
A hozzászólás módosítva: Ápr 5, 2020
(#) Kovidivi válasza Rober_4 hozzászólására (») Ápr 5, 2020 /
 
"nincs spéci sebességű láb" - itt valami félreértést vélek felfedezni. Szerintem te mást akarsz, mint amire gondolsz. A 8 bites kommunikáció dupla olyan gyors, mert az adat 8 lábon megy, 4 láb esetén kétszer egymás után küldi el az adatot (elfelezve). De ha ez a kommunikáció is bit bangig történik, akkor is ott lesz a delay a programban, a kijelző pedig eleve lassú, mindegy, hogy 4 vagy 8biten hajtod meg, alig fogsz észrevehető gyorsulást a kijelzésnél tapasztalni. Ha túl gyorsan változnak a karakterek, te is észrevetted már biztosan, hogy elmosódnak a pixelek, nem tudják se ők, se a szemed a változást követni.
Az Arduino Due elég gyors lap, itt ismét az LCD kommunikációs protokollja a lassító tényező, fix időzítésekkel dolgozik!
A hozzászólás módosítva: Ápr 5, 2020
Következő: »»   613 / 848
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem