Arduino-Bluetooth-Android-Amarino probléma

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
sgabicsek
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2012. január 16. hétfő, 7:00

Arduino-Bluetooth-Android-Amarino probléma

Hozzászólás Szerző: sgabicsek »

Sziasztok!

Nem tudom valaki hozzá tud-e szólni a témához, mindenesetre egy próbát megér. Alapjában véve egy LED-et szeretnék kapcsolgatni az Arduino panelemen Androidos telefon segítségével Bluetooth-on keresztül.

Megpróbálom a lehető legpontosabban leírni mit csináltam, és kérlek Titeket keressetek benne hibát.

1. Feltelepítettem a telefonomra az Amarino alkalmazást, továbbá letöltöttem a gépemre a MeetAndroid könyvtárat az Arduino-hoz.

2. A MeetAndroid egy példáját (Test) ráraktam az Arduino Duemilanove-omra.

3. Ezután az usb-s kapcsolatot megszüntettem a gép és a mikrokontroller között, rádugtam egy usb-s tápra, ezután usb-n keresztül kapta a duemilanove az áramot.

4. Rácsatlakoztattam a Webshop-ban található Bluetooth modult a mikrokontrollerre. A két jumpert a modulon a következőképp helyeztem el: az egyiket a jobb alsó sarokba, tehát felette volt egy üres vég, a másikat közvetlen tőle balra, viszont úgy, hogy alatta legyen szabad vég.

5. Párosítottam a telefonom a modullal, majd az Amarino-ban elküldtem az 'A' utasítást. A BlueTooth modulon kivillan a piros led, viszont nem villan ki a 13-as kivezetésen található led, tehát megkapja a modul az utasítást, viszont valahol eltéved.

Ennyi. A vicc az egészben az, hogy egyszer már sikerült. Ezután kihúztam az áramból, 5 perc múlva átraktam egy másikba, viszont ott már ne sikerült.

Ötletek?

köszi:)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A kódot meg lehetne kapni?

A BT sebessége: 19200 bps alapban.
A jobboldali helyen van a jumper és azzal mész az Arduino felé.

A hibáid száma 10-12 lehet :). Az Arduino lapon RESET nyomva tart. Jumperek ellenkező állásba átraknak. Így a PC fele sorosporton visszajön küldött adat. Én ezzel kezdeném a tesztet...
Avatar
sgabicsek
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2012. január 16. hétfő, 7:00

Hozzászólás Szerző: sgabicsek »

Szia, másolom. Annyira már rájöttem, hogy át kell állítani a sebességet 19200-ra.

/*
Receives Test Events from your phone.
After it gets a test message the led 13 will blink
for one second.
*/

#include <MeetAndroid.h>

MeetAndroid meetAndroid;
int onboardLed = 13;

void setup()
{
// use the baud rate your bluetooth module is configured to
// not all baud rates are working well, i.e. ATMEGA168 works best with 57600
Serial.begin(57600);

// register callback functions, which will be called when an associated event occurs.
// - the first parameter is the name of your function (see below)
// - match the second parameter ('A', 'B', 'a', etc...) with the flag on your Android application
meetAndroid.registerFunction(testEvent, 'A');

pinMode(onboardLed, OUTPUT);
digitalWrite(onboardLed, HIGH);

}

void loop()
{
meetAndroid.receive(); // you need to keep this in your loop() to receive events
}

/*
* This method is called constantly.
* note: flag is in this case 'A' and numOfValues is 0 (since test event doesn't send any data)
*/
void testEvent(byte flag, byte numOfValues)
{
flushLed(300);
flushLed(300);
}

void flushLed(int time)
{
digitalWrite(onboardLed, LOW);
delay(time);
digitalWrite(onboardLed, HIGH);
delay(time);
}
Avatar
sgabicsek
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2012. január 16. hétfő, 7:00

Hozzászólás Szerző: sgabicsek »

Írom az új tapasztalatokat.

Ha a Jumpereket megfordítom, akkor fel tudom tölteni a programom a kontrollelre (amúgy hibát jelez), ezután kihúzom a gépből, bedugom a tápba, megfordítom a jumpereket, és így egyszer működött. Kipróbáltam, hogy meddig él a kapcsolat (távolság), majd amikor megszakadt, hiába csináltam újra az egészet ugyan így, nem fut le normálisan. Mit lehet ilyenkor tenni? :D
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

meetandroid() függvényeket dobd ki.
Egyszerre elég 1 hiba.


Maradj az alapoknál:

Kód: Egész kijelölése

/*
  SerialLED
  Soros porton kapcsolgathato LED
  60 nap alatt arduino tanfolyam
  (c) TavIR http://avr.tavir.hu
 */ 

int inByte = 0;                   // bejovo adat
int adatjott =0;                  //eddig hany adatot kaptam?
char be ='B';                     // Valtozo definilasa Bekapcsolashoz
char ki ='K';                     // Valtozo definialasa Kikapcsolashoz


void setup()
{
  Serial.begin(19200);             // start serial port 9600 bps
  pinMode(13, OUTPUT);            //A 13-as lab kimenet mert gyarilag ezen van LED 
  Serial.println("Start...");
  
}

void loop()
{
  if (Serial.available() > 0) {   // var adat feldolgozasra?
    inByte = Serial.read();       // 1 byte beolvasasa
    delay(100);                   // 100 ms szunet
    adatjott++;                   // szamlalo novelese
    if (inByte == be) {
      digitalWrite(13, HIGH);     // Ha B jon, bekapcsol
    }
    if (inByte == ki) {
      digitalWrite(13, LOW);      // Ha K jon, kikapcsol
    }
    
    Serial.print("Eddig jott: "); // Soroson visszairjuk mi is volt
    Serial.println(adatjott, DEC);
  }
}

Bejön az a kód is hogy connect ill disconnect. Ez kapcsolatvesztés és úgrafelépülés esetén van. De a BT-ben ki tudod kapcsolni.
Ha területen kívül mész, akkor a BT-ben és a túloldalban is az autoreconnect engedélyezve van - újrakapcsolódik. BT-ben ez egyszerű:
- kapcsolat elvesztésekor üzenet: disconnect....
- utána kiadni az AT<enter>, ATO0 <enter>, ATD=elveszetteszközHEXkód<enter> utasításokat. Amint megjelenik újra a slave, automatikusan kapcsolódik...
Avatar
sgabicsek
Újonc
Újonc
Hozzászólások: 14
Csatlakozott: 2012. január 16. hétfő, 7:00

Hozzászólás Szerző: sgabicsek »

Köszönöm, ez stabilan működik.

Lenne még egy kérdésem.
Mathematica programot használok különböző számolásokhoz. Ezt összeillesztettem még egy fél éve kb. soros porton keresztül az arduino panelemmel. Ha a gépemhez vettem külön usb-s bluetooth modult, plusz az arduino-hoz is, hogyan lehetne "átverni" a programot, hogy valóban soros porton keresztül kommunikálnak az arduino-val?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

2 út van:
1, PC a BT Master (alaphelyzet). Arduino a slkave, PCről kezdeményezed a kapcsolatot. Összefütyülés után a sorosporton nem látszik, hogy BT vagy sima. Ehhez az kell, hogy a BT-n a kapcsolatvisszajelzést kikapcsold (Connect/Disconnect) Kikapcsolás : ATQ1 (Fontos! Az OK, ERROR visszaírás is megszűnik. Visszakapcsolás: ATQ0)
2, A BT panelből lesz a master és a PC kapcsolódik rá. Na ezt nem próbáltam még :) . ATR0 - master, ATR1 - slave.

Trükk: a PIN kódegyeztetést is kikapcsolhatod.
Válasz küldése