Archive for 2013-08-25

Arduino fejlesztési környezet beállítása Eclipse C++-ban

Ezt, a kis szösszenetet magamnak fordítottam le (szabad fordításban ebből a forrásból), hogy meglegyen a wikim-ben későbbi felhasználás céljából. Sokat kutakodtam mire ráleltem, de megérte mert működik.

Tesztalanyunk egy Win7 64bit PC, + Arduino Duemilanove lap. Mással nem teszteltem!  Kéretik figyelembe venni! Ha valaki mégis mással is kipróbálná, és nem megy, de rájön miért nem, kérem, ossza meg és frissítem a cikket.

ÉS a lépések:

  1. Eclipse telepítése – letölt-> kitömörít -> örül 🙂 Ez most egy Eclipse Juno lett nálam.
  2. Eclipse AVR Plugin telepítése
    1. Eclipse-ben, menüsor: Help -> Install New Software
      update site: http://avr-eclipse.sourceforge.net/updatesite 

      1.  A plugin hely neve legyen mondjuk: Eclipse AVR Plugin
      2. Elfogadjuk a license-ket és, hogy digitálisan nem aláírt cuccot telepítünk.
      3. majd, telepítés, eclipse restart (File –Restart).
  3. Arduino SDK letöltése
    1. URL: http://arduino.cc/en/Main/Software (jelenleg (2013.08.25): v1.0.5 a legfrissebb
    2. Kitömörítjük: nálam pl: M:\arduino\  <- Az elérési utat jegyezzük meg, később kelleni fog!
  4. Eclipse AVR Plugin beállítása
    1. Eclipse-ben, menüsor: Window -> Preferences -> AVR szekció oldalon, Paths
      1. Válasszuk az AVR-GCC sort, kattintsunk az Edit-reA megnyíló ablakon belül Path source:-t állítsuk Custom-ra a lenyílóban, majd Browse. Az elérési út (Custom value): <arduino_base_path>\hardware\tools\avr\bin ami az AVR fordítóhoz az elérés (avr-gcc.exe) az arduino SDK mappában. Nálam ez így néz ki:
        M:\arduino\hardware\tools\avr\bin
      2. Válasszuk a GNU Make, sort, kattintsunk az Edit-reA megnyíló ablakon belül Path source:-t állítsuk Custom-ra a lenyílóban, majd Browse. Az elérési út (Custom value): <arduino_base_path>\hardware\tools\avr\utils\bin ami a make elérése az arduino SDK mappában. Nálam ez:
        M:\arduino\hardware\tools\avr\utils\bin
      3. Válasszuk az AVR Header Files, sort, kattintsunk az Edit-re. A megnyíló ablakon belül Path source:-t állítsuk Custom-ra a lenyílóban, majd Browse. Az elérési út (Custom value): <arduino_base_path>\hardware\tools\avr\avr\include ami az elérési út az AVR toolchain headers fájlok az arduino SDK könyvtárban. Nálam ez így néz ki:
        M:\arduino\hardware\tools\avr\avr\include
      4. Válasszuk az AVRDude, sort, kattintsunk az Edit-reA megnyíló ablakon belül Path source:-t állítsuk Custom-ra a lenyílóban, majd Browse. Az elérési út (Custom value): <arduino_base_path>\hardware\tools\avr\bin ami az elérés az  AVRDude binárisokhoz (ezeket használjuk az Arduino lapon való futtatáshoz) az arduino SDK könyvtárban. Nálam ez:
        M:\arduino\hardware\tools\avr\bin
      5. Kattinsunk az Apply, majd az OK gombra.
  5. ArduinoCore könyvtár (projekt) létrehozása

The ArduinoCore library will contain all the basic functionalities to deal with the Arduino board, this library can be seen as the standard c library equivalent for Arduino. If you write some code for Arduino in the Arduino IDE, this library is silently linked to your code, but if you plan to use Eclipse you have to manually link the library to each of our projects before deploying them on the Arduino board.
Here are the steps to create the ArduinoCore library (which is just the name I gave it):

    1. Az eclipse-ben New -> C++ Project majd AVR Cross Target Static Library majd válasszuk az Empty Project-et.
      1. Állítsuk a Project Name: mezőt ArduinoCore-ra majd kattintsunk a Next gombra.
      2. Debug mellől a pipát vegyük ki majd Next.
      3. Állítsuk az MCU Type és az MCU Frequency értékét. Ez lap specifikus az én Arduino Duemilanove lapom ATmega328P chip-pel szerelt, ami 16MHz (16000000 Hz). Ha nem vagy biztos az értékben menj az arduino weboldal Hardware szekciójában. Válasszuk ki a hardware-ünket, és nézzük meg a technikai specifikációját (tech specs). URL: http://arduino.cc/en/Main/Boards
      4. Kattintsunk Finish gombra.
      5. Most van egy üres könyvtár projektünk, amibe most bele fogjuk importálni az Arduino core fájlokat az Arduino SDK mappából.
    2. Eclipse-ben jobb klikk az ArduinoCore projektre, majd Properties -> C/C++ Build -> Settings majd listában
    3. az AVR Compiler listaelemben válasszuk a Directories-t.
      1. Adjuk hozzá az arduno core fájlokat tartalmazó útvonalat. Ez az arduino SDK belül található a következő helyen: <arduino_base_path>\hardware\arduino\cores\arduino. Nálam:
        M:\arduino\hardware\arduino\cores\arduino\
      2. Majd adjuk hozzá a pins_arduino.h header fájl elérhetőségét is. Ez megint lap specifikus (ne aggódj, alább jön egy kis magyarázat is). Az alábbi elérhetőségen található egy pár pins_arduino.h header fájl, de mind specifikus mappán belül.  A gyökér mappa helye <arduino_base_path>\hardware\arduino\variants\ Specifikus mappák a következőek
        1. <arduino_base_path>\hardware\arduino\variants\standard: Én ezt használom a Arduino Duemilanove lapomhoz.
        2. <arduino_base_path>\hardware\arduino\variants\mega: Úgy gondolom, hogy az Arduino Mega lapokhoz tudod használni
        3. <arduino_base_path>\hardware\arduino\variants\leonardo: Talán az Arduino Leonardo lapokhoz használható
        4. <arduino_base_path>\hardware\arduino\variants\micro: passz :/
      3. A B) lépést ismételjük meg az AVR C++ Compiler listaelem esetében is majd klikk az OK-ra.
      1. Jobb klikk az ArduinoCore projekten -> Import -> General -> File System. A felugró ablakban keressük meg core fájlokat az arduino SDK mappán belül. Helyük: <arduino_base_path>\hardware\arduino\cores\arduino
        1. Válasszuk ki minden fájlt kivéve a main.cpp-t!!!.
        2. Advanced gombra katt, majd válasszuk a Create links in workspace opciót. Ekkor a fájlok ténylegesen nem lesznek másolta a workspace-be, csak hivatkozás készül rájuk. Előnye, ha frissítjük az arduino SDK-t, akkor a hivatkozott könyvtárak is frissülnek automatikusan.
        3. Katt a Finish-re.

Ha minden rendben ment, akkor le tudjuk fordítani az ArduinoCore könyvtárat (projektet). Próbáljuk is meg: jobb klikk az ArduinoCore projekten -> Build Project

  1. Próba projekt létrehozása

Let’s now create a test project to check that everything’s fine.
Remember that these steps must be done with every new project that you create.

  1. A.  Eclipse-be New -> C++ Project majd AVR Cross Target Application és válasszuk az Empty Project-et.
    1. Project Name: legyen TestProject. Katt Next
    2. Debug pipáját vegyük ki! majd katt Next
    3. Állítsuk az MCU Type és az MCU Frequency értékeket ugyanarra, mint az ArduinoCore esetében tettük, majd Finish
    4. Jobb klikk a TestProject-re majd állítsuk be ugyanazokat a könyvtár eléréseket, mint az 5B és az 5C pontban tettük.

Right click on the “ArduinoCore” project, go to “Properties” and then “C/C++ Build” and in both “AVR Compiler” and “AVR C++ Compiler” add the same include paths that were added in the ArduinoCore library project plus the include path for the test project itself which is not added by default and can be added with this magic string: “${workspace_loc:/NULL}” which simply expands to your workspace directory followed by the test project directory.

  1. Ugyanúgy a listában található egy AVR C++ Linker az AVR Compiler, az AVR C++ Compiler alatt. A parancssor-t ez alábbi értékre állítsuk
    NULL --cref -s -Os NULLNULLNULL NULL -lm NULL

     

  2. Most kattintsunk a Libraries alelemre.
    1. In the “Libraries path” box add the path to the ArduinoCore library by clicking on the “Add” button on the top right corner of the box, then select “Workspace” and point it to the “Release” folder inside the ArduinoCore project. You can also directly insert this magic string:“${workspace_loc:/ArduinoCore/Release}” which is the same thing.

In the “Libraries” box add the ArduinoCore library by clicking on the “Add” button on the top right corner of the box and simply type “ArduinoCore”, this instructs the linker to link against “libArduinoCore.a” when linking the final executable.

In the project properties window, click on “Project references” in the left menu and check“ArduinoCore”, so the library will be automatically built (and re-built if needed) when building the test project.

In the test project create a new main.cpp file and paste the following code into it.
This is the classic Blink code sample that blinks the led linked on pin 13 of the Arduino board once every second:

#include <Arduino.h>

 

int ledPin =  13;    // LED connected to digital pin 13

 

// The setup() method runs once, when the sketch starts

void setup()   {

// initialize the digital pin as an output:

pinMode(ledPin, OUTPUT);

}

 

// the loop() method runs over and over again,

// as long as the Arduino has power

 

void loop()

{

digitalWrite(ledPin, HIGH);   // set the LED on

delay(1000);                  // wait for a second

digitalWrite(ledPin, LOW);    // set the LED off

delay(1000);                  // wait for a second

}

 

int main(void) {

 

init();

setup();

 

while(true) {

loop();

}

}

You’ll notice that there are some difference between this code and the usual code that you write for Arduino, the next post will focus on these differences, for now just take it as it comes. No questions. Or this post will never end.

Deploy on the Arduino board

After compiling and linking the binary a tool named AVRDude will deploy it on the Arduino board.
AVRDude must be configured to work with Arduino.
What we are going to do now is stealing the AVRDude configuration from the Arduino SDK.

From Eclipse go to “Window” then “Preferences” and select the “AVR” section on the left, then select “AVRDude”.
Check “Use custom configuration file for AVRDude” and set “AVRDude config file” to the one provided with the Arduino SDK: it can be found under<arduino_base_path>\hardware\tools\avr\etc\avrdude.conf.
Click “Apply” and then “OK”.

From Eclipse select the test project and open the project properties once more (right click->“Properties”).
Select the “AVR” section and the click on “AVRDude”
You now have to create a new programmer configuration for your board, this must be done only once.
Click “New”, in the window that appears insert these data:

  • “Configuration Name” : “Arduino”
  • “Programmer Hardware” : “Arduino”
  • “Override default baudrate” : 57600

And set “Override default port” to the COM port that you use to work with the Arduino board. If you do not know what this value is, plug your Arduino board in and start the Default IDE, the COM port is showed at the bottom of the IDE window, my Arduino IDE says:

Arduino Duemilanove w/ ATMega328 on COM10

My COM port is COM10 so my “Override default port” field is set to:

//./COM10

Don’t ask me what the “//./” prefix means, I don’t know.
Click “OK”

Back in the “AVRDude” window select the “Advanced” tab.
Check “Disable Device signature check” and click “OK”.

First deploy

It’s time. Plug your Arduino board in.

Select the test project and build it, then right click on it and select “AVR” and then “Upload project to target device”, the deploy will start and if everything’s fine you should have your program running on the Arduino board after a few seconds. Look at the led at PIN 13 and it should be blinking. Mine blinks.
That’s all, hope this guide is useful.
Again, let me know any problem you had so I can update the tutorial with your info.

Hava fun! 🙂

Kis alap main_cpp.

 

Wifi dongle driver fordítás

My wireless dongle is ath9k_htc driver needs. So download the backports package.

Unzip.

make clean

than

make defconfig-ath9k

than

make && make modules && make modules_install

Old:

Mert már eljátszottam párszor, de mindig elfelejtem:

3.0.36-os kernelnek jó a compat-2.6 (elérhető itt) is de pl. 3.10.7-nek már nem. ezért töltsük le csak a driver-t. link

ha megvan, akkocs csomagoljuk ki.

Majd válasszunk driver-t. (Én egy TP-LINK TL-WN422G v2 -et használok. drivere: ath9k_htc)

Belelépünk a kicsomagolt könyvtárba, majd:

./scripts/driver-select ath9k_htc

Ezek után:

make

majd feltesszük a lefordított driver-t:

make install

Ezt követően, elindítjuk a drivert:

modprobe ath9k_htc

Majd ne felejtsük el elindítani az eszközt és a hostapd-t:

/etc/init.d/net.wlan0 restart && /etc/init.d/hostapd restart