Acties:
  • 0 Henk 'm!

Anoniem: 504415

Topicstarter
JY-MCU bluetooth module
door Arjen » Zo Feb 17, 2013 9:52 pm

Hallo,

Ik ben nieuw hier op dit forum en hoop hier veel te kunnen leren.
Ik heb een arduino uno Rev 3 en een JY-MCU bluetooth module.(http://dx.com/p/jy-mcu-ar...serial-port-module-104299)
Nu wil ik ten minste een ledje kunnen laten branden dmv de computer via bluetooth.
Ik heb de bluetooth module als volgt aangesloten op de arduino:

module - arduino
vcc - 5v
GND - GND
RX - TX
TX - RX

Ik gebruik de volgende code:
Code:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* Include the software serial port library */
#include <SoftwareSerial.h>

/* DIO used to communicate with the Bluetooth module's TXD pin */
#define BT_SERIAL_TX_DIO 0
/* DIO used to communicate with the Bluetooth module's RXD pin */
#define BT_SERIAL_RX_DIO 1

/* Initialise the software serial port */
SoftwareSerial BluetoothSerial(BT_SERIAL_TX_DIO, BT_SERIAL_RX_DIO);

#define lampje 13

void setup()  
{
  /* Set the baud rate for the hardware serial port */
  Serial.begin(9600);
  /* Set the baud rate for the software serial port */
  BluetoothSerial.begin(9600);

  pinMode(lampje, OUTPUT);
 }


/* Main loop that will pass any data to and from the Bluetooth mode to the
   host PC */
void loop()
{
  /* If data is available from the Bluetooth module then pass it on to the 
     hardware serial port. */
  if (BluetoothSerial.available())
    Serial.write(BluetoothSerial.read());
 
   /* If data is available from the hardware serial port then pass it on 
      to the Bluetooth module. */
  if (Serial.available())
    BluetoothSerial.write(Serial.read());
  int val = Serial.read() - '0';
      
      if(val == 1)
      {
        digitalWrite(lampje, HIGH);
       delay(1000);
      }
      if(val == 2)
      {
        digitalWrite(lampje, LOW);
        delay(1000);
      }
      
      
}



Als ik 1 verzend via de serial monitor moet het lampje dus aangaan en als in een 2 verzend moet deze uit gaan.

Nu het probleem waar ik al lang tegen aanloop:

Ik zie bluetooth module wel op mijn laptop(ingebouwde bluetooth). Ook heb ik eenmalig de code op moeten geven(1234).
Ik heb 4 com poorten staan in het lijstje van seriele poort in het arduino programma(versie 1.0.1. namelijk: 2,7,12 en 14. com 2 gebruik ik voor het programmeren van de arduino. com 7 en 12 weet ik niet. Ik denk dat ik com 14 nodig heb om te communiceren via bluetooth. com 5 en com 14 kwamen namelijk in beeld toen de laptop bezig was met de stuurprogramma's te installeren.
Als ik in de serial monitor een 1 of 2 wil verzenden gebeurt er niets en bij com 14 loopt het programma zelfs vast. Als baudrate in de serial monitor heb ik 9600 staan.
Ook blijft het lampje van de bluetooth module gewoon knipperen terwijl deze constant zou moeten branden als hij verbonden is.

Wie weet wat ik fout doe. Ligt het aan de code of zijn de instellingen van mijn laptop of bluetooth module niet goed?
Ik hoor het graag

Groeten,
Arjen

Acties:
  • 0 Henk 'm!

  • Infant
  • Registratie: Januari 2008
  • Laatst online: 07-07 21:55

Infant

It's a floating Dino!

Als je dan toch code gaat dumpen, doe het dan in code tags: [code=c]Code![code]. Dat leest wat fijner.
C:
1
Code!


Ik heb voldoende gezeik gehad met de standaard Windows bluetooth drivers, daar begint het meestal. Heb je die of een driver van de notebook/bluetooth fabrikant?

Ik heb ze ook wel eens gezien, waar je ze eerst moest pairen (Dus met je code 1234). En dan vervolgens apart in Windows danwel een meegeleverd stuk software voor je bluetooth stick, de compoort moest activeren. Daarna kon je hem pas openen zonder dat software ging hangen.
Als ik 1 verzend via de serial monitor
Wat is "de serial monitor" precies?

[ Voor 13% gewijzigd door Infant op 06-03-2013 11:02 ]


Acties:
  • 0 Henk 'm!

Anoniem: 504415

Topicstarter
ik heb de volgende laptop http://www.utwente.nl/ict...213/HighendModel1213.doc/
bluetooth is ingebouwd en naar mijn idee van de notebook fabrikant.

hoe kan ik de compoort activeren? bij apparaat beheer zie ik de com-poorten wel staan. ik verwacht dus dat deze al geactiveerd zijn.
ik heb de volgende informatie nog kunnen vinden over de com-poort:
com 14: binnenkomend
com 5: uitgaand
moet ik dus com 5 kiezen als ik iets naar de arduino wil versturen?

de serial monitor is om te communiceren met de arduino het is het volgens mij het zelfde als telnet.
de serial monitor zit alleen al in het programma waarmee ik de arduino programmeer.(http://arduino.cc/en/Reference/serial)

misschien stel ik domme vragen excuus daarvoor. ik heb tot nu toe alleen maar basis dingen van de arduino geprogrammeerd en veel met voorbeelden gewerkt.
alvast bedankt voor je hulp

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 18:09

Rmg

Anoniem: 504415 schreef op dinsdag 05 maart 2013 @ 20:01:
com 14: binnenkomend
com 5: uitgaand
moet ik dus com 5 kiezen als ik iets naar de arduino wil versturen?
Ja je moet com5 hebben maar niet om de reden dat je waarschijnlijk denkt. binnenkomend en uitgaand is bij de seriële bluetooth adapters de aanduiding voor wie de verbinding initieert (Uitgaand is host (pc) bouwt de verbinding op en inkomend is device (arduino) bouwt de verbinding op. De verbinding is daarna bi-directioneel

Als je de virtual comports hebt aangemaakt moet je nogmaals vanuit het icoontje in je taskbar verbinden, hij word dan blauw met een groen logo. Daarna zou je com5 moeten kunnen openen.

Ook moet je even kijken of de BT stick wel juist geconfigureerd is waarschijnlijk moet dat via een arduino programma gebeuren zoiets als deze: http://playground.arduino.cc/Learning/ChangeBtName

Het makkelijkste is trouwens (vanuit windows) om niet de standaard stack gebruiken van windows maar bluesoleil bijvoorbeeld (niet gratis).

Acties:
  • 0 Henk 'm!

  • WouterKvG
  • Registratie: Oktober 2009
  • Laatst online: 18:27
Daarnaast moet je uitkijken met twee keer Serial.read() achter elkaar gebruiken.
code:
1
2
BluetoothSerial.write(Serial.read());
int val = Serial.read() - '0';

Bij de eerste Serial.read() lees je de buffer al uit en wordt deze geflusht. De tweede Serial.read() zal dus alleen maar nieuwe data te zien krijgen. Om dit te voorkomen kun je Serial.peak() gebruiken of het gewoon even in een variabele opslaan.

- Somnox, 's werelds eerste slaaprobot