JBrain

From RoboWiki
Jump to: navigation, search
Doska jBrain.

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.


Takúto dosku by bolo škoda nevyskúšať aj na robotovi. Preto sme použili jedno šasi zo šuflíka a spravili z neho jBrain Robot


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


Čo sa vám bude páčiť:

  • Výkon dosky, pamäť, java. Všetko poskytuje dostatočnú kapacitu aj na pokročilé robotické projekty.
  • Spínaný stabilizátor, malá spotreba.
  • Množstvo periférií, doska je šitá na mieru robotickým aplikáciám.
  • Bluetooth rozhranie s vypínačom.
  • Zaujímavá dokumentácia (nie je ešte dokonalá, ale autori sú veľmi ústretoví).
  • Veľmi rýchly upload

Čo sa vám nebude páčiť:

  • Chýbajúci vypínač a resetovacie tlačidlo na doske
  • Neoddelené napájanie pre motory a procesory
  • Že vám v manuáloch tykajú
  • Zatiaľ slabá dokumentácia
  • Nepopísané prerušenia a časovače
  • Mojim WinXP sa nepáčilo prepínanie medzi režimom upload a comm.
  • Nerovnaké intenzity LEDiek - modrá je strašne silná
  • ze v jConsole nefunguje Copy&Paste



Iné riadiace jednotky programovateľné v Jave

  • Javelin
  • Intellibrain
  • NanoVM (AVR)
  • Mindstorms NXT (LejOS)