Bluetooth HC05 + KL25Z communicate with Bluetooth dongle in PC in both directions.

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
GerritPathuis
Date:
Sun Dec 03 13:49:58 2017 +0000
Parent:
0:0e236e004748
Child:
2:cbc675b0abd5
Commit message:
This version works with interrupt

Changed in this revision

MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODSERIAL.lib	Sun Dec 03 13:49:58 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Sissors/code/MODSERIAL/#a3b2bc878529
--- a/main.cpp	Sat Dec 02 13:21:04 2017 +0000
+++ b/main.cpp	Sun Dec 03 13:49:58 2017 +0000
@@ -17,43 +17,85 @@
  * dongle in the PC
  *
  * Make sute Tera Term uses 9600 baud
+ * http://www.wavesen.com
 */
 
 #include "mbed.h"
+#include "MODSERIAL.h"
 
+MODSERIAL  pc(USBTX, USBRX);
+MODSERIAL  blue(PTE0, PTE1);          // TX, RX
+
+DigitalOut myled1(LED1);    //Blue
+DigitalOut myled2(LED2);    //Green
+
+// This function is called when a character received from PC
+void pc_rxCallback(MODSERIAL_IRQ_INFO *q)
+{
+    char c;
 
-Serial pc(USBTX, USBRX);
-Serial blue(PTE0, PTE1);          // TX, RX
+    c= pc.getc();
+    blue.putc(c);   // Send from PC to Blue
+    pc.putc(c);     // Echo to PC
+}
 
-DigitalOut myled(LED1);
-DigitalOut myled2(LED2);
+// This function is called when a character received from Bluetooth
+void blue_rxCallback(MODSERIAL_IRQ_INFO *q)
+{
+    char b;
 
+    myled1 = !myled1;
+    b= blue.getc();
+    pc.putc(b);
+}
 
 int main()
 {
-    int i =0;
-    blue.baud(9600);               // Default Bluetooth Baudrate
-    pc.baud(9600);
+    pc.baud(115200);
+    blue.baud(38400);                // Default Bluetooth Baudrate
+
+    pc.printf("Bluetooth HC-05\r\n");
+    pc.printf("Make sure the terminal programm ends with CR-LF\r\n");
+    pc.printf("\r\n");
 
-    pc.printf("Bluetooth Start\r\n");
+    wait_ms(100);
+
+    // Char from PC, interrupt service routine
+    pc.attach(&pc_rxCallback, MODSERIAL::RxIrq);
+
+    // Char from Bluetooth, interrupt service routine
+    blue.attach(&blue_rxCallback, MODSERIAL::RxIrq);
+
 
-    // Write from Bluetooth to PC
-    for (i=0; i<10; i++) {
-        blue.printf("Hello PC this is the HC-05, %d\n\r", i);
-        myled = !myled;
-    }
-    wait(1);
+    // Set up
+    pc.puts("AT=");
+    blue.puts("AT\r\n");
+    wait_ms(100);
+
+    pc.puts("AT+VERSION?= ");
+    blue.puts("AT+VERSION?\r\n");
+    wait_ms(100);
 
-    // Echo back characters and toggle the LED
+    pc.puts("AT+ADDR?= ");
+    blue.puts("AT+ADDR?\r\n");
+    wait_ms(100);
+
+    pc.puts("AT+NAME?= ");
+    blue.puts("AT+NAME?\r\n");
+    wait_ms(100);
+
+    pc.puts("AT+Role?= ");
+    blue.puts("AT+Role? \r\n");
+    wait_ms(100);
+
+    // Echo back characters
     while (1) {
         if (blue.readable()) {
             pc.putc(blue.getc());
-            myled = !myled;
         }
         if (pc.readable()) {
             blue.putc(pc.getc());
-            myled2 = !myled2;
         }
-        wait_ms(10);
     }
+
 }
\ No newline at end of file