Arduino-Bluetooth-Android-Amarino probléma
Arduino-Bluetooth-Android-Amarino probléma
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:)
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:)
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...
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
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);
}
/*
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);
}
Í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?
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?
meetandroid() függvényeket dobd ki.
Egyszerre elég 1 hiba.
Maradj az alapoknál:
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...
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);
}
}
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...
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?
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?
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.
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
Trükk: a PIN kódegyeztetést is kikapcsolhatod.
