Difference between revisions of "JBrain"

From RoboWiki
Jump to: navigation, search
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  
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
+
6,5 až 14V. Potešilo ma, že na mojej doske bol ako stabilizátor napätia použitý spínaný zdroj Traco Power [http://hw.cz/produkty/nove-soucastky/art2494-nove-menice-traco.html TSR 1-2450], takže aj 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 32-bitový procesor Atmel [http://www.atmel.com/dyn/products/product_card.asp?part_id=3524 AT91SAM7S256] postavený na ARM7 architektúre s 256kB Flash pamäti. Keďže počet vstupnovýstupných signálov autorom nestačil, doska obsahuje aj dcérsky procesor Atmel [http://www.atmel.com/dyn/products/Product_card.asp?part_id=2010 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 [http://www.allegromicro.com/en/Products/Part_Numbers/3968/ A3968] pre pripojenie dvoch jednosmerných motorčekov s prúdom do 1,3 A. Srdcom (či skôr mozgom) celej dosky je 32-bitový procesor Atmel [http://www.atmel.com/dyn/products/product_card.asp?part_id=3524 AT91SAM7S256] postavený na ARM7 architektúre s 256kB Flash pamäti. Keďže počet vstupnovýstupných signálov autorom nestačil, doska obsahuje aj dcérsky procesor Atmel [http://www.atmel.com/dyn/products/Product_card.asp?part_id=2010 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,  

Revision as of 23:06, 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 32-bitový procesor Atmel AT91SAM7S256 postavený na ARM7 architektúre s 256kB Flash pamäti. 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