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   164 / 863
(#) Net_Boy_debr hozzászólása Nov 2, 2015 /
 
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!
(#) csatti2 válasza Net_Boy_debr hozzászólására (») Nov 2, 2015 / 1
 
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
(#) ALI hozzászólása 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
(#) csatti2 válasza ALI hozzászólására (») Nov 2, 2015 /
 
Ú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.
(#) Kera_Will válasza ALI hozzászólására (») Nov 2, 2015 /
 
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 ezek egyike nem jó csak a másik.
A millis lesz jó !!!
A hozzászólás módosítva: Nov 2, 2015
(#) ALI válasza csatti2 hozzászólására (») Nov 2, 2015 /
 
Ez a delay miatt méri másodpercenként. Hogy lehet beolvastatni 5 percenként?

  1. #include <LiquidCrystal.h>
  2.  
  3. // initialize the library with the numbers of the interface pins
  4. LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
  5.  
  6. //declare variables
  7. float tempC;
  8. float tempF;
  9. int tempPin = 1;
  10.  
  11. void setup(){
  12.   // set up the LCD's number of columns and rows:
  13.   lcd.begin(16, 2);
  14.   lcd.print("Temp1=");
  15.   lcd.setCursor(0, 1);
  16.   lcd.print("Temp2=");
  17. }
  18.  
  19. void loop(){
  20.   tempC = analogRead(tempPin);           //read the value from the sensor
  21.   tempC = (5.0 * tempC * 100.0)/1024.0;  //convert the analog data to temperature
  22.   tempF = ((tempC*9)/5) + 32;            //convert celcius to farenheit
  23.  
  24.   // print result to lcd display
  25.   lcd.setCursor(6, 0);
  26.   lcd.print(tempC,1);
  27.   lcd.print("'C");
  28.  
  29.   lcd.setCursor(6, 1);
  30.   lcd.print(tempF,1);
  31.   lcd.print("'F");
  32.  
  33.   // sleep...
  34.   delay(1000);
  35. }
(#) Bell válasza Net_Boy_debr hozzászólására (») Nov 2, 2015 /
 
Wifi-vel csinálnám és tennék bele Androidos elérhetőséget is.
(#) csatti2 válasza ALI hozzászólására (») Nov 2, 2015 /
 
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.
(#) Kera_Will válasza ALI hozzászólására (») Nov 2, 2015 /
 
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
(#) ALI válasza csatti2 hozzászólására (») Nov 2, 2015 /
 
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?
(#) csatti2 válasza ALI hozzászólására (») Nov 2, 2015 /
 
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
(#) Kera_Will válasza ALI hozzászólására (») Nov 2, 2015 /
 
Ezért kell a millis -t .
Mellette más is futhat közben.
(#) ALI hozzászólása Nov 2, 2015 /
 
Köszönöm mindenkinek millis-el sikerült megoldanom.
A hozzászólás módosítva: Nov 2, 2015
(#) icserny válasza Net_Boy_debr hozzászólására (») Nov 3, 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.
(#) Net_Boy_debr válasza csatti2 hozzászólására (») Nov 3, 2015 /
 
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
(#) csatti2 válasza Net_Boy_debr hozzászólására (») Nov 3, 2015 / 1
 
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.
(#) Bell válasza Net_Boy_debr hozzászólására (») Nov 3, 2015 / 1
 
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
(#) andykaaa hozzászólása Nov 3, 2015 /
 
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
(#) csatti2 válasza andykaaa hozzászólására (») 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
(#) morzsa15 hozzászólása 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
(#) andykaaa válasza csatti2 hozzászólására (») Nov 3, 2015 /
 
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
(#) Bell válasza morzsa15 hozzászólására (») Nov 4, 2015 /
 
Ennyiért kettőt vennék Bővebben: Link
(#) csatti2 válasza andykaaa hozzászólására (») Nov 4, 2015 /
 
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.
(#) andykaaa válasza csatti2 hozzászólására (») Nov 4, 2015 /
 
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
(#) dannu hozzászólása 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 .
  1. /*
  2. #include <Stepper.h>
  3.  
  4. const int stepsPerRevolution = 3;  // change this to fit the number of steps per revolution
  5. // for your motor
  6.  
  7. // initialize the stepper library on pins 8 through 11:
  8. Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
  9. long randNumber1;
  10.  
  11.  
  12. void setup() {
  13.   // set the speed at 60 rpm:
  14.   myStepper.setSpeed(randNumber1);
  15.   // initialize the serial port:
  16.   Serial.begin(9600);
  17. }
  18.  
  19. void loop() {
  20.     for(int i=1; i<9; i++){
  21.   randNumber1 = random(1, 1000);
  22.   }
  23.   // step one revolution  in one direction:
  24.   Serial.println("clockwise");
  25.   myStepper.step(stepsPerRevolution);
  26.   delay(1);
  27.  
  28.   // step one revolution in the other direction:
  29.   Serial.println("counterclockwise");
  30.   myStepper.step(-stepsPerRevolution);
  31.   delay(1);
  32. }
(#) andykaaa válasza dannu hozzászólására (») Nov 4, 2015 /
 
Szerintem ha nem hasznalsz for ciklust, csak siman a „randNumber1 = random(1, 1000);” -t.
(#) dannu válasza andykaaa hozzászólására (») Nov 4, 2015 /
 
De az csak egyszer generál 1 számot a legelején vagy tévedek ? mert 100-1000ig kellene kb .
(#) dannu hozzászólása Nov 4, 2015 /
 
Ez a probléma látod ? próbáltam mindennel .

cxcxcx.png
    
(#) Balázs válasza dannu hozzászólására (») Nov 4, 2015 /
 
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.
(#) Balázs válasza dannu hozzászólására (») Nov 4, 2015 /
 
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.
Következő: »»   164 / 863
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