Fórum témák
» Több friss téma |
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Sziasztok!
Egy szakdolgozat témához szeretnék ötleteket gyűjteni. A feladat egy hőmérő olvasása PC-s adatgyűjtéssel, hálózati kapcsolattal és azon gondolkodtam, hogy építenék egy kis áramkört a PC köré. A választásom az Arduino-ra esett, mert viszonylag könnyen és gyorsan lehet rá szoftvert készíteni. A feladat körébe tartozik áramkör tervezés is. Az lenne a kérdésem, hogy szerintetek az Arduino-s hardveres környezetet rá lehet-e tervezni áramkörre? Az Arduino elvileg tudomásom és olvasataim szerint nyílt forráskódú és nyílt hardverű eszköz, de hogyan lehet beépíteni egy nyomtatott áramkörre? Nem a technikai megvalósítása érdekelne, hanem inkább az, hogy szoftveresen hogyan lehet feléleszteni az Arduinos oldalt? A válaszotokat előre is köszönöm!
Elég könnyű megvalósítani. Kell egy olyan mikrokontroller, amit az arduino lehetőleg natívan támogat. Pl. ATMEGA328p (Arduino Uno, ebből kapható DIP-es kivitel is), ATMEGA2560 (Arduino Mega). Ezután köré tervezhető az áramkör (lehetőleg 16MHz-es külső kristályt használj, akkor nem kell módosítani az alapkönyvtárakat). Amire szükség van, az egy olyan programozó, amit támogat az Arduino és akkor egy ICSP csatlakozón keresztül feltöltheted a programodat a mikrokontrollerre.
Kicsit jobban átgondolva, mivel a PC-s adatkapcsolat is fontos ezért rátennék egy soros illesztő chipet is (pl. az olcsó CH340, vagy egy drágább de natívan támogatott FT232-t), a bekötését pedig lekoppinthatod egy publikus arduino rajzról. Ha ezután ráégeted a bootloader-t az ICSP-n keresztül, akkor onnantól akár hagyományos módon is programozhatod az Arduino fejlesztőszoftverből. A hozzászólás módosítva: Nov 2, 2015
Sziasztok. Azt hogy tudom meg oldani, hogy LM35-el mérek és csak 5 percenkét legyen mérés?
Előre is köszi
Úgy, hogy öt percenként olvasod csak az analog inputot, amire kötötted...
Picit több infót, enélkül nehéz jobb választ adni. ![]()
Időzítesz.
Ha mást is szeretnél csinálni akkor nem várakozó függvényt használsz. akkor mást nem fog csinálni a uController. Hanem azt amivel a rendszer power on időt lehet lekérdezni. Aztán meg eltárolod az értékét. Ha ennek a következő olvasásnál az értéke több mint az 5percnyi akkor olvasod a hőmérőt. Visszább olvasva megleled a jó függvény nevét. valami millis meg a párja a delay ![]() A millis lesz jó !!! A hozzászólás módosítva: Nov 2, 2015
Ez a delay miatt méri másodpercenként. Hogy lehet beolvastatni 5 percenként?
Wifi-vel csinálnám és tennék bele Androidos elérhetőséget is.
Hát ha jó ez az egyszerű megoldás akkor beleteszed a delay-t egy for ciklusba, ami 300 -ig számol és kész is van. Ha igényes(ebb) megoldást akarsz, akkor pedig a millis függvény értékét veszed és amikor az 300000-el nagyobb, mint az utolsó frissítésnél tárolt értéke, akkor frissítesz egyet.
Beviszel egy ido változot.
Annak adsz értéket millis fügvénnyel. Ezt az értéket hasonlítod össze az előző millis lekérdezéssel és komparálod , eltelt e 5 percnyi idő ha nem akkor kilépsz a ciklusból.ha meg igen akkor hívod a mérést
delay-t nem akarok használni mert fut mellette más is. Ezt csak példának tettem be.
Ha for ciklusba teszek egy számlálót akkor minden mást csinál mellette?
Dehogy is. Akkor a millis megoldást kell használnod (vagy megszakítást). A mérést viszont végezd el többször is, és dobd el az első értéket, különben elég pontatlan lesz ha mást is csinálsz (feltételezve más analóg értéket is).
A hozzászólás módosítva: Nov 2, 2015
Ezért kell a millis -t
![]() Mellette más is futhat közben.
Köszönöm mindenkinek millis-el sikerült megoldanom.
![]() A hozzászólás módosítva: Nov 2, 2015
Ennél egyszerűbb megoldás egy ESP8266 WiFi modul használata, ami - a rátöltött firmware-től függően - Lua vagy Arduino/Wiring nyelven programozható, s PC nélkül is képes a hálózaton kommunikálni.
Kedves Csatti2!
Köszönöm a válaszod! Tehát ha jól értem, akkor csak egy ICSP programozót kell vennem, amivel rátöltöm a bootloader-t? Most jelenleg rendelkezek egy UNO fejlesztővel, valamint a hozzá tartozó perifériákkal és USB kábellel (még régebben vettem). Erre már elég sok programot írtam, kicsit gyakorlott vagyok benne. A bootloader-t le lehet tölteni a gyártó honlapjáról? Köszi! Szia
Ha van egy UNO-d, akkor nem kell venned semmit. Nyisd meg a példák között az ArduinoISP progit, töltsd rá az UNO-dra. Kösd be a saját áramköröd az utasításoknak megfelelően az Arduino-ba. Válaszd ki a programozó eszköznek (Tools/programmer) az "Arduino as ISP"-t. Innentől maga az UNO az AVR programozód.
Írd fel a saját áramkörödben lévő mikrokontrollerre a bootloader-t a "Burn bootloader" menüponttal (Tools menü). Innentől ha van USB-s kapcsolatod az áramköröddel (arduino módra bekötve persze), akkor máris Arduino-ként működik az áramköröd és innentől direktbe programozhatod az UNO nélkül.
Az Arduino-val betöltöd a bootloadert az üres IC-be, eléteszel egy USB-UART modult és van egy saját gyártmányú Arduinó-d. Bővebben: Link
Sziasztok
Nemregiben rendeltem az ebay-rol egy par Atmega328-ast (na jo 5 darab 328-as helyett kuldtek 2 db. 328-ast es 3 db. 8-ast). Ettol eltekintve, amikor a 328-asra akarom feltolteni a bootloadert, az IDE a kovetkezo hibavallaszt adja: Idézet: „avrdude: Expected signature for ATmega328P is 1E 95 0F Double check chip, or use -F to override this check. Nem megfelelő mikrokontroller lett kiválasztva. Pontosítani az Eszközök > Alappanelek menüben lehet. ” Mi a gond ?, valamit en rontok el ? Kulomben arra amit itthon vettem jo penzert arra felmegy ugyanazzal a modszerrel a bootloader. Pedig mindketton „Atmega328P-PU” felirat van. A hozzászólás módosítva: Nov 3, 2015
Zárd be az Arduino-t. Keresd meg a c:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf fájlt. Készíts róla biztonsági másolatot. Keresd meg benne a "0x1e 0x95 0x0F" részt. Írd át 0x1e 0x95 0x14-re. Indítsd el az Arduino-t. Próbáld meg újra feltölteni. Ezután viszont a rendes Arduino-id nem mennek majd. A fájl visszaállításával tudod majd azokat feléleszteni.
A hozzászólás módosítva: Nov 3, 2015
Sziasztok!
A lent említett modulhoz kell bármilyen szint illesztes vagy csak ra kotom az arduino unora és mukodik is? Bővebben: Link
Ok
Mukszi, koszonom. De egy kis magyarazat lehetne melleje ?, miert van ez, hogy tanuljak is valamit. A hozzászólás módosítva: Nov 3, 2015
Ennyiért kettőt vennék Bővebben: Link
Mert az egyik picopower kivitel a másik pedig nem. Egyéb tekintetben ugyanolyanok, viszont a hardware azonosítójuk különbözik és ezért nem tetszett az Arduino-nak.
Koszi. Kapisgalom a dolgot.
Meg egy kerdes, ez: „0x1e 0x95 0x0F” lenne a PicoPower es a: „0x1e 0x95 0x14” nem PicoPower ? (pedig mint irtam mind a ketto P jelzesu, az olcso = made in China) A hozzászólás módosítva: Nov 4, 2015
Olyan kérésem lenne hogy ebbe a program kódba a for ciklust végtelenné tenni hogyan kell ? Megadott idő közönként mondjuk a delayal késleltetve idő közönként fusson le generáljon új számot .
Szerintem ha nem hasznalsz for ciklust, csak siman a „randNumber1 = random(1, 1000);” -t.
De az csak egyszer generál 1 számot a legelején vagy tévedek ? mert 100-1000ig kellene kb .
Több sebből vérzik ez a kód. A setup() függvény a loop() első lefutása előtt hívódik meg. Tehát amikor a setupban felhasználtad a randNumber1 változót, akkor az értéke nulla volt (mivel inicializálatlan globális változó). Ezután a loop() végtelenszer hívódik, de te azon belül is nyolcszor felülírod a randNumber1 tartalmát, hogy aztán fel se használd semmire. Az már csak szőrszálhasogatás, hogy erre az értéktartományra pazarlás a long típusú változó. A syntax highlighting pedig azért nem működik, mert lezáratlan kommenttel kezdődik az egész kód.
Ezzel meg az a baj, hogy a véletlenszámgenerálás a setup() függvényben történik, ami ugye csak egyetlen egyszer fut le, az egész program elején, ezért nem változik a szám értéke.
|
Bejelentkezés
Hirdetés |