Difference between revisions of "JBrain"

From RoboWiki
Jump to: navigation, search
(New page: Dostal som na vyskúšanie jednu z prvých dosiek jBrain (http://jbrain.c-bot.eu), ktorá sa v skutočnosti volá trocha ťažkopádne - jBotBrain. Po vybalení som si so záujmom prezrel...)
 
Line 1: Line 1:
 
 
Dostal som na vyskúšanie jednu z prvých dosiek jBrain (http://jbrain.c-bot.eu), ktorá sa v skutočnosti volá trocha ťažkopádne - jBotBrain. Po vybalení som si so záujmom prezrel doštičku s rozmermi 83 x 65 x 15 mm s hmotnosťou 50g. Na prvý pohľad zaujmú skrutkovacie svorkovnice na oboch okrajoch dosky. Na rozdiel od bežnejšieho pripájania pomocou kolíkových líšt poskytuje zvolený spôsob väčšiu robustnosť, ako sa na robotickú riadiacu jednotku patrí. Na jednom okraji je robustný USB-B konektor, ktorý je aj
 
Dostal som na vyskúšanie jednu z prvých dosiek jBrain (http://jbrain.c-bot.eu), ktorá sa v skutočnosti volá trocha ťažkopádne - jBotBrain. Po vybalení som si so záujmom prezrel doštičku s rozmermi 83 x 65 x 15 mm s hmotnosťou 50g. Na prvý pohľad zaujmú skrutkovacie svorkovnice na oboch okrajoch dosky. Na rozdiel od bežnejšieho pripájania pomocou kolíkových líšt poskytuje zvolený spôsob väčšiu robustnosť, ako sa na robotickú riadiacu jednotku patrí. Na jednom okraji je robustný USB-B konektor, ktorý je aj
 
najvyššou súčiastkou na doske. Použitím mini-USB by mohla byť celá doska asi o 1 mm nižšia. Takto však znesie viacnásobné vyťahovanie a zasúvanie. Rozhranie USB slúži na nahrávanie užívateľských programov, ale i na komunikáciu. Hneď vedľa je modul rozhrania Bluetooth, ktoré sa dá vypnúť prepínačom BT_SW, kvôli úspore energie. Celá doska sa dá napájať napätím v rozsahu  
 
najvyššou súčiastkou na doske. Použitím mini-USB by mohla byť celá doska asi o 1 mm nižšia. Takto však znesie viacnásobné vyťahovanie a zasúvanie. Rozhranie USB slúži na nahrávanie užívateľských programov, ale i na komunikáciu. Hneď vedľa je modul rozhrania Bluetooth, ktoré sa dá vypnúť prepínačom BT_SW, kvôli úspore energie. Celá doska sa dá napájať napätím v rozsahu  
Line 5: Line 4:
 
pri napájaní dosky z 12 V batérie sa nijako zvlášť neprehrieval.  
 
pri napájaní dosky z 12 V batérie sa nijako zvlášť neprehrieval.  
  
Na doske sa ďalej nachádzajú 4 užívateľské tlačidlá a 4 užívateľské LED diódy (v programe prístupné ako GREEN1, GREEN2, ORANGE a RED). Keďže doska je určená primárne pre roboty, nájdeme tu aj dvojnásobný H-mostík A3968 pre pripojenie dvoch jednosmerných motorčekov s prúdom do 1,3 A. Srdcom (či skôr mozgom) celej dosky je procesor Atmel postavený na ARM7 architektúre. Keďže počet vstupnovýstupných signálov autorom nestačil, doska obsahuje aj dcérsky procesor Atmel AVR ATmega 16L.  
+
Na doske sa ďalej nachádzajú 4 užívateľské tlačidlá a 4 užívateľské LED diódy (v programe prístupné ako GREEN1, GREEN2, ORANGE a RED). Keďže doska je určená primárne pre roboty, nájdeme tu aj dvojnásobný H-mostík A3968 pre pripojenie dvoch jednosmerných motorčekov s prúdom do 1,3 A. Srdcom (či skôr mozgom) celej dosky je procesor Atmel AT91SAM7S256 postavený na ARM7 architektúre. Keďže počet vstupnovýstupných signálov autorom nestačil, doska obsahuje aj dcérsky procesor Atmel AVR ATmega 16L.  
  
 
Na vstupnovýstupných svorkách je užívateľom k dispozícii stabilizované napájacie napätie 5 V (do 800 mA), 8 digitálnych vstupov,  
 
Na vstupnovýstupných svorkách je užívateľom k dispozícii stabilizované napájacie napätie 5 V (do 800 mA), 8 digitálnych vstupov,  
8 výstupov, 4 analógové vstupy, 2 výstupy pre pripojenie motorčekov, i2c rozhranie a sériové rozhranie. Okrem toho má užívateľ k dispozícii už spomínané 4 tlačidlá, 4 LED diódy a BT rozhranie.  
+
8 výstupov, 4 analógové vstupy, 2 výstupy pre pripojenie motorčekov, i2c rozhranie a sériové rozhranie v úrovni TTL. Okrem toho má užívateľ k dispozícii už spomínané 4 tlačidlá, 4 LED diódy a BT rozhranie.  
  
 
Bloková schéma zariadenia je na obrázku, podrobné schémy zapojenia zverejnili autori spolu s ostatnou dokumentáciou na stránkach projektu http://www.c-bot.eu
 
Bloková schéma zariadenia je na obrázku, podrobné schémy zapojenia zverejnili autori spolu s ostatnou dokumentáciou na stránkach projektu http://www.c-bot.eu
  
 
[[Image:jBrainBlockDiagram.png|300px|frame|Bloková schéma jBrainu.]]
 
[[Image:jBrainBlockDiagram.png|300px|frame|Bloková schéma jBrainu.]]
 +
 +
 +
Zatiaľ sme sa nezmienili o programovaní. Doska je už od autorov naprogramovaná, je v nej bootloader a Java Virtual Machine, takže je zrejmé, že programy budeme písať v Jave. Autori ponúkajú na stiahnutie kompletné vývojové prostredie Eclipse, ktoré je doplnené o špeciálne knižnice pre túto dosku. V balíku je okrem toho aj program jConsole - jednoduchý sériový terminál, ktorým môžete s doskou komunikovať. Na stránkach projektu je k dispozícii niekoľko vzorových programov, ktoré slúžia ako veľmi dobrý odrazový mostík.
 +
 +
Príklad programu:
 +
 +
<code src="java">
 +
package jBotBrain.Robot;
 +
 +
import jBotBrain.hw.I2CPort;
 +
import jBotBrain.hw.Led;
 +
import jBotBrain.hw.Motor;
 +
 +
public class RobotMain {
 +
 +
public static int getRange()
 +
    {
 +
        byte buffer[] = {0x00};
 +
 +
      //  I2CPort.i2cStart(0x50, 0, 1, buffer, 1, I2CPort.I2C_WRITE);
 +
 +
      // Toto je jedina konfiguracia, ktora cita rozumne!!!
 +
        I2CPort.i2cStart(0x50, 1, 0, buffer, 1, I2CPort.I2C_READ);
 +
 +
        int range = buffer[0] & 0x1F;  // len 5 bitov nas zaujima
 +
                                              // + 20 je kvoli prvej
 +
jednotke, inak sa nevypisu nevyznamne nuly
 +
        return range;
 +
    }
 +
 +
 +
public static void main(String[] args) throws InterruptedException
 +
{
 +
// Inicializacia
 +
    Led.GREEN2.set(Led.MODE_BLINK, 500);
 +
    Motor.A.setDirection(Motor.MOTOR_FORWARD);
 +
    Motor.B.setDirection(Motor.MOTOR_FORWARD);
 +
    Motor.A.setSpeed(0);
 +
        Motor.B.setSpeed(0);
 +
 +
        // Nekonecna slucka
 +
    while(true)
 +
      {
 +
            int dist = getRange();  // Zmeraj stav senzora
 +
 +
            switch (dist) {
 +
            case 27: // ciara v strede, chod rovno
 +
                Motor.A.setSpeed(250);
 +
                    Motor.B.setSpeed(250);
 +
                    break;
 +
            case  7: // ciara vlavo, chod vpravo
 +
            case 15:
 +
            case 19:
 +
            case 23:
 +
                Motor.A.setSpeed(50);
 +
                    Motor.B.setSpeed(250);
 +
                    break;
 +
            case 25: // ciara vpravo, chod vlavo
 +
            case 28:
 +
            case 29:
 +
            case 30:
 +
                Motor.A.setSpeed(250);
 +
                    Motor.B.setSpeed(50);
 +
                    break;
 +
            default: // vsetko ostatne -> STOP!
 +
                Motor.A.setSpeed(0);
 +
                        Motor.B.setSpeed(0);
 +
                        break;
 +
            }  // end of Switch
 +
        Thread.sleep(100);
 +
      } // end of while
 +
 +
} // end of Main
 +
 +
} // end of Class
 +
</code>

Revision as of 22:39, 8 December 2009

Dostal som na vyskúšanie jednu z prvých dosiek jBrain (http://jbrain.c-bot.eu), ktorá sa v skutočnosti volá trocha ťažkopádne - jBotBrain. Po vybalení som si so záujmom prezrel doštičku s rozmermi 83 x 65 x 15 mm s hmotnosťou 50g. Na prvý pohľad zaujmú skrutkovacie svorkovnice na oboch okrajoch dosky. Na rozdiel od bežnejšieho pripájania pomocou kolíkových líšt poskytuje zvolený spôsob väčšiu robustnosť, ako sa na robotickú riadiacu jednotku patrí. Na jednom okraji je robustný USB-B konektor, ktorý je aj najvyššou súčiastkou na doske. Použitím mini-USB by mohla byť celá doska asi o 1 mm nižšia. Takto však znesie viacnásobné vyťahovanie a zasúvanie. Rozhranie USB slúži na nahrávanie užívateľských programov, ale i na komunikáciu. Hneď vedľa je modul rozhrania Bluetooth, ktoré sa dá vypnúť prepínačom BT_SW, kvôli úspore energie. Celá doska sa dá napájať napätím v rozsahu 6,5 až 14V. Potešilo ma, že na mojej doske bol ako stabilizátor napätia použitý spínaný zdroj Traco Power TSR 1-2450, takže aj pri napájaní dosky z 12 V batérie sa nijako zvlášť neprehrieval.

Na doske sa ďalej nachádzajú 4 užívateľské tlačidlá a 4 užívateľské LED diódy (v programe prístupné ako GREEN1, GREEN2, ORANGE a RED). Keďže doska je určená primárne pre roboty, nájdeme tu aj dvojnásobný H-mostík A3968 pre pripojenie dvoch jednosmerných motorčekov s prúdom do 1,3 A. Srdcom (či skôr mozgom) celej dosky je procesor Atmel AT91SAM7S256 postavený na ARM7 architektúre. Keďže počet vstupnovýstupných signálov autorom nestačil, doska obsahuje aj dcérsky procesor Atmel AVR ATmega 16L.

Na vstupnovýstupných svorkách je užívateľom k dispozícii stabilizované napájacie napätie 5 V (do 800 mA), 8 digitálnych vstupov, 8 výstupov, 4 analógové vstupy, 2 výstupy pre pripojenie motorčekov, i2c rozhranie a sériové rozhranie v úrovni TTL. Okrem toho má užívateľ k dispozícii už spomínané 4 tlačidlá, 4 LED diódy a BT rozhranie.

Bloková schéma zariadenia je na obrázku, podrobné schémy zapojenia zverejnili autori spolu s ostatnou dokumentáciou na stránkach projektu http://www.c-bot.eu

Bloková schéma jBrainu.


Zatiaľ sme sa nezmienili o programovaní. Doska je už od autorov naprogramovaná, je v nej bootloader a Java Virtual Machine, takže je zrejmé, že programy budeme písať v Jave. Autori ponúkajú na stiahnutie kompletné vývojové prostredie Eclipse, ktoré je doplnené o špeciálne knižnice pre túto dosku. V balíku je okrem toho aj program jConsole - jednoduchý sériový terminál, ktorým môžete s doskou komunikovať. Na stránkach projektu je k dispozícii niekoľko vzorových programov, ktoré slúžia ako veľmi dobrý odrazový mostík.

Príklad programu:

package jBotBrain.Robot;

import jBotBrain.hw.I2CPort; import jBotBrain.hw.Led; import jBotBrain.hw.Motor;

public class RobotMain {

public static int getRange() { byte buffer[] = {0x00};

// I2CPort.i2cStart(0x50, 0, 1, buffer, 1, I2CPort.I2C_WRITE);

// Toto je jedina konfiguracia, ktora cita rozumne!!! I2CPort.i2cStart(0x50, 1, 0, buffer, 1, I2CPort.I2C_READ);

int range = buffer[0] & 0x1F; // len 5 bitov nas zaujima // + 20 je kvoli prvej jednotke, inak sa nevypisu nevyznamne nuly return range; }


public static void main(String[] args) throws InterruptedException { // Inicializacia Led.GREEN2.set(Led.MODE_BLINK, 500); Motor.A.setDirection(Motor.MOTOR_FORWARD); Motor.B.setDirection(Motor.MOTOR_FORWARD); Motor.A.setSpeed(0);

        Motor.B.setSpeed(0);
        // Nekonecna slucka

while(true) { int dist = getRange(); // Zmeraj stav senzora

switch (dist) { case 27: // ciara v strede, chod rovno

           	    Motor.A.setSpeed(250);
                   Motor.B.setSpeed(250);
                   break;

case 7: // ciara vlavo, chod vpravo case 15: case 19: case 23:

           	    Motor.A.setSpeed(50);
                   Motor.B.setSpeed(250);
                   break;

case 25: // ciara vpravo, chod vlavo case 28: case 29: case 30:

           	    Motor.A.setSpeed(250);
                   Motor.B.setSpeed(50);
                   break;

default: // vsetko ostatne -> STOP! Motor.A.setSpeed(0);

                       Motor.B.setSpeed(0);
                       break;

} // end of Switch Thread.sleep(100); } // end of while

} // end of Main

} // end of Class