A rádió nagyon megbízhatatlan csatorna. Azt feltételezed, hogy mindig, minden byte a megfelelő helyen érkezik. Pedig a két eszköz nincs szinkronizálva.
Szerintem nem jó ötlet folyamatosan küldeni az adatokat. Ha lemarad egy-egy byte, azt honnan tudja a vevő?
Először készíts belőle adatcsomagokat (packet).
Adj hozzá headert, footert, esetleg CRC-t.
A vevő oldal pedig keresse ki a stream-ből a csomagot, dekódolja, és utána adjon értéket a tömb elemeinek.
Ha kétirányú a rádiód:
Utána legyen mindig nyugtázás. Amíg nem jött a másik féltől nyugtázás, addig ne küldje a következő csomagot.
Röviden: A rádiós library annyit tesz, hogy a kapott adatokat ráülteti a fizikai rétegre. Nem ellenőriz, nem szinkronizál, stb. Ezeket neked kell megoldanod.
Nem volt időm alaposan átrágni magam rajta. Első körben a Serial.print a megoldáshoz vezető első kulcs a változók kiírásával. A kódfejtésben mondjuk némi segítség lenne a void.Setup().
Persze mindez az adó és a vevő oldalon is (szívás, mert ugye két futó terminálképernyő kell hozzá, és nem tudom, hogy ez megvalósítható-e, soha nem próbáltam).
Egy mozgásérzékelőt kötöttem egy Nano-ra, s a kapott adatokat RF24 rádióval átlőni egy másik RF24-gyel felszerelt Uno-ra. A következő kódom van adó oldalon:
Az a gondom vele, hogy a mozgást simán átlövi, és annak megfelelően a vevő rendesen megkapja az adatokat. Tehát az első if lefut. A második és harmadik feltétel is lefut, de ott a rádió már nem küld jelet. A Nano-n látom felvillanni a 13. kimenethez csatlakozó ledet, ami jelzi, hogy rádiókommunikáció van. A vevő mégis csak az első feltétel teljesülése esetén fogadja az adatokat. A vevő lényes kódja:
done = radio.read( joystick, sizeof(joystick) );
Ugyanazt a tömböt használom, a tömb minden eleme mindig integer, mégsem kapom meg a két másodpercenkénti bejelentkező jelet. A bejelentkezést néha akkor kapom meg véletlenszerűen, ha megmozgatom a szenzort, s akkor több csomag között esetleg megy egy bejelentkezés is. Van valakinek esetleg ötlete? Próbáljak más libraryt a rádiókhoz?
Tippem szerint (nem mértem) táp-gond lesz. A 3 ultrahang plusz ez a negyedik opto már határra húzhatja a Nano-t. Bár a specifikációk szerint összesen nincs ki 100 mA, de jobb kétszer mérni. Feszültséget és áramokat is mérj, külön-külön és egybe is.
Plusz nem lenne nagyon hátrány egy Fritzing rajz sem a bekötésről.
Nem vagyok guru, de nem is értem a problémát. Az ultrahangos szenzorokkal nem távolságot mérsz? Akkor miért kell ez a cucc? Vagy ezzel elmozdulást akarsz érzékelni? A specifikáció egyébként 10 uF-ot javasol, és az eszköz közelében.
Arduino nano-ra van rákötve 3 ultrahangos szenzor, amik jól is működnek, míg rá nem csatlakoztatom ezt:
http://www.sharpsma.com/webfm_send/1487 Ekkor ugyanis elkezdek hibás értékeket kapni az ultrahangos szenzorok felől. 100 nF -os kondit kötöttem az 5V és a GND közé. Mi lehet a hiba?
Az arduinohoz, zenét lejátszani, csak az mp3 shield, el lehet? Mármint azt valahogy nem lehet megoldani, hogy egy mp3 fájlt, küldjek ki az arduinora, az meg továbbítsa, egy hangszóróra?
Sziasztok, keresek egy illetőt aki segítene nekünk, először is néhány kérdés megválaszolásával. Aki úgy érzi elég toppon van az elektronikában és az arduino világában, írjon erre az emailcímre: zlapser@gmail.com.
Röviden kis motorok vezérléséről lenne szó majd, remélem lesz pár érdeklődő aki segítene.
Utánanéztem, van egyszerűbb megoldás is. A legtöbb terminál program tudja ezt, bár ez nem kényemes. De találtam egy Gobetwino nevű programot, az többek között ezt is tudja, valószínűleg azt fogom használni.
Az Arduino alapja egy Processing nevű szoftver. Valamivel komplexebb, mint az Arduino IDE, de alapvetően hasonló elveken működik. Ebben lehet olyan szoftvert írni, amelyik ezt meg tudja csinálni (mondjuk kell hozzá már némi programozási ismeret). Van rá pár egyéb szoftver is.
Azzal kell vigyázni, hogy:
1. a baud rate a mintavételezést is befolyásolja sajnos,
2. ha magas baud rate-tel dolgozol, akkor kegyetlen nagy lesz a redundanciád (ami lehet jó is), illetve hatalmas fájlok fognak keletkezni nagyon gyorsan.
Elvileg ezzel a felállással, ha elég stabil a géped, elég komplex telemetriát lehet csinálni, ha a grafikai részt leprogramozod, akár F1-szinten is. Riasztásokkal, szélsőértékekkel, ilyen-olyan mérési adatokkal. Sőt, a számításigényesebb műveletekre (pl. PID-szabályozás) simán lehet a gépet használni és csak az analóg/digitális vezérlőjelet visszaküldeni. ez esetben az arduino csak egy sima A/D konverterként működik (a D/A konverzióhoz az UNO kevés, ilyen emlékeim szerint csak a Due-n van, már külön D/A konverter és valódi analóg kimenet).
De van pár megoldás erre az arduino.cc oldal tudástárában (kommunikáció PC-vel rész alatt).
Én is kérdeznék: hogy lehet azt Win 7 alatt megoldani, hogy a terminálra küldött adatokat egy file-be mentsük. Mondjuk a turbinán mért hőmérséklet értékeket szeretném naplózni.
Üdv a fórumnak! Nemrég vettem egy Arduino Uno-t, elkezdtem az ismerkedést vele. A célom egy ECU építése egy gázturbinához, amit szintén én építek. (Akit érdekel, megnézheti a Gázturbina építés topikot.) Először csak mérném a turbina paramétereit, (hőmérsékletek, nyomások, furdulatszám) utána vezérelném is a cuccot. Nem tudom hogy egy UNO elég lesz-e, majd elválik.
Ehhez felesleges az arduino, illetve amiért érdemes lenne használni, az nincs benne a specifikációban (pl. folyamatos működtetés és/vagy pwm -- fordulatszámszabályozás -- stb.)
Ez bőven elég rá, az alkatrészigénye max 2000 forint, és ebben már a próbapanel, kábelek is benne vannak.
A tranzisztorokat valósznű helyettesíteni kell, de ez nem egy nagy történet.
Egyébkétn az arduinoval való funkcionalitáshoz majdnem ugyanez a felállás kell, lényegében a két nyomógombot váltja ki az arduino egy-egy optocsatolón keresztül.
Egy olyan kérdésem lenne, arduinoval szeretnék működtetni egy egyszerű DC motort, ez a motor képes arra, hogy 2 irányba forogjon, attól függően, hogy kötöd rá az elemet, na én ezt szeretném megoldani arduinoval, hogy ne keljen fordítgatni az elemet hanem egy gomb nyomásra történjen. Ha lehet valami olcsó megoldás legyen, ne keljen túl sok extrém alkatrész hozzá. (ha lehet ne keljen külföldről rendelni se ebayröl, se hasonló oldalakról, maradjunk Magyar o.-n belül.)
Amíg nem tudjuk, hogy mi az, amit vezérelni kell, milyenek a kapcsolási idők, van-e valami speciális elvárás, nehéz jó döntést hozni. Napi használatban lévő holmit én elvből nem rakok össze próbapanelen. Legalább egy tesztnyák, rendes forrasztásokkal.
Én a korrekt galvanikus leválasztást hiányolom róla kicsit, egyébként tök alap megoldás, nem cifrázták túl.
Megnéztem a SainSmart oldalát. Nekem vannak tőlük cuccaim és a legtöbb egészen korrekt. De ez: Jaj, sírtam. :-)
Én is úgy látom, hogy simán megoldható, és még csak nem is a hardver a nagy költség -- azt legjobb modulokból összevásárolni, ha lehet, pl. port expander modul, 8-as relé modul vagy SSR modul, gondolom 10-20-30 ezerből megvan.
Én, ha lehet, nem szórakoznék egyedi alkatrészekkel, NYÁKokkal.
Persze az is kérdés, hogy mihez lesz, eladásra, nem eladásra, életvédelem, tanúsítványok, stb?
8-Channel 5V Solid State Relay Module - Blue + Black + Green (250V / 2A)
Bár nem biztos, hogy érdemes a legolcsóbb kínait venni, bár itt látszólag megvan a szakszerű légrés a nyákon.
Na de utána? Ha valakinek rámegy 2 hét munkája, hogy elkészítse a vezérlőprogramot, az a nagy tétel. Bár ha leonardoatis megcsinálja, akkor ez már az ő költsége.