Εμφάνιση αποτελεσμάτων : 1 έως 4 από 4

Θέμα: Android & Arduino & Bluetooth

  1. #1
    Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Oct 2012
    Περιοχή
    Ηγουμενίτσα
    Μηνύματα
    32

    Προεπιλογή Android & Arduino & Bluetooth



    Ένα γρήγορο project με Android και Arduino συνδεδεμένο με Bluetooth Module HC-05, στο οποίο επικοινωνούν σειριακά μέσω Bluetooth.

    Το κύκλωμα είναι το ίδιο με το προηγούμενο project http://www.hlektronika.gr/forum/showthread.php?t=68881
    Αλλά τώρα το Arduino με το HC-05 είναι Slave και το Android είναι Master.

    Ο κώδικας για το Arduino είναι σχετικά απλός. Αφού ορίσουμε το HC-05 σαν Slave, περιμένουμε data από το Android.
    Αν έρθει το 99 ανάβει το led και αν έρθει το 98 σβήνει.
    Αν έρθουν τιμές 0-90 είναι το pitch από τον orientation sensor του κινητού τηλεφώνου, οπότε και εμφανίζονται στα 7-seg displays.

    Κώδικας:
    #include <SoftwareSerial.h>
    #define RxD 7
    #define TxD 8
    #define Reset 9
    #define PIO11 A2
    #define Led 13
    #define led_dec 10         
    #define led_mon 11  
    int BinaryPins[] = {3,4,5,6};
    unsigned int decades;   
    unsigned int monades; 
    SoftwareSerial blueToothSerial(RxD,TxD);
    void setup()
    {
       Serial.begin(38400);
       pinMode(RxD, INPUT);
       pinMode(TxD, OUTPUT);
       pinMode(Led, OUTPUT);
       pinMode(PIO11, OUTPUT);
       digitalWrite(PIO11, LOW);
       pinMode(Reset, OUTPUT);
       digitalWrite(Reset,HIGH);
       pinMode(3, OUTPUT);   
       pinMode(4, OUTPUT);
       pinMode(5, OUTPUT);
       pinMode(6, OUTPUT);
       pinMode(led_dec, OUTPUT);
       pinMode(led_mon,OUTPUT);
       digitalWrite(led_dec,HIGH);//decades 7-seg disp OFF
       digitalWrite(led_mon,HIGH);
       
       setupBlueToothConnection();
    }
    //-----------------------------------------------------//
    //----------Decades 7-seg disp driver------------------//
    void sevenSegWriteDec(int digit) {
        
      if (digit>0) digitalWrite(led_dec,LOW); else digitalWrite(led_dec,HIGH); //if value is 0 stays OFF
      digitalWrite(led_mon,HIGH);                                              //monades 7-seg disp OFF
      
      //convert dec number to 4 bits binary
      for (byte i = 0; i < 4; i++) {
        int dec_val=digit&1;                  //interested only for LSB of digit
        digitalWrite(BinaryPins[i],dec_val);  //set it to BinaryPin i=0 is LSB and goes to pin A of 74LS47 BCD-to-7-Segment
        digit=digit>>1;                       //shift right digit 1 bit 
      }
      
    }
    //-----------------------------------------------------//
    //----------Monades 7-seg disp driver------------------//
    void sevenSegWriteMon(int digit) {
      
      digitalWrite(led_dec,HIGH); //decades 7-seg disp OFF
      digitalWrite(led_mon,LOW);  //monades 7-seg disp ON
      
      //convert dec number to 4 bits binary
      for (byte i = 0; i < 4; i++) {
        int mon_val=digit&1;                   //interested only for LSB of digit
        digitalWrite(BinaryPins[i],mon_val);   //set it to BinaryPin i=0 is LSB and goes to pin A of 74LS47 BCD-to-7-Segment
        digit=digit>>1;                        //shift right digit 1 bit 
      }
    }
    void loop()
    {
       int recvChar,pitch;
      
       if (blueToothSerial.available())  
         recvChar = blueToothSerial.read();
       
       if(recvChar == 99){
       digitalWrite(Led, HIGH);
       }
       if(recvChar == 98){
       digitalWrite(Led, LOW);
       }
       
       pitch=recvChar;
      
       
       if ((pitch>=0) && (pitch<=90)){
         decades=pitch/10;
         monades=pitch%10;
       }
    
       sevenSegWriteDec(decades); //display decades to decades 7-seg disp
       delay(10);
       sevenSegWriteMon(monades); //display monades to monades 7-seg disp
       delay(10);
    }
    void setupBlueToothConnection()
    {
      
       enterATMode();
      
       
       sendATCommand("RESET");
       delay(1000);
       sendATCommand("ORGL");
       delay(1000);
       sendATCommand("UART=38400,0,0");
       delay(1000);
       sendATCommand("ROLE=0");
       delay(1000);
       sendATCommand("PSWD=1234");
       delay(1000);
       sendATCommand("CMODE=1");
       delay(1000);
      
       enterComMode();
    }
    void resetBT()
    {
       digitalWrite(Reset, LOW);
       delay(1000);
       digitalWrite(Reset, HIGH);
    }
    void enterComMode()
    {
       blueToothSerial.flush();
       delay(1000);
       digitalWrite(PIO11, LOW);
       resetBT();
       delay(1000);
       blueToothSerial.begin(38400);
    }
    void enterATMode()
    {
       blueToothSerial.flush();
       delay(1000);
       digitalWrite(PIO11, HIGH);
       resetBT();
       delay(1000);
       blueToothSerial.begin(38400);
    }
    void sendATCommand(char *command)
    {
       blueToothSerial.print("AT");
       if(strlen(command) > 1){
       blueToothSerial.print("+");
       blueToothSerial.print(command);
       }
       blueToothSerial.print("\r\n");
    }
    void sendATCommand()
    {
       blueToothSerial.print("AT\r\n");
    }
    Για το Android την εφαρμογή την έκανα με το M.I.T App Inventor http://appinventor.mit.edu/
    Ο σχεδιασμός και ο προγραμματισμός είναι σχετικά εύκολος και είναι κάπως έτσι:

    Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  MIT App Inventor2.jpg Εμφανίσεις:  290 Μέγεθος:  103,4 KBΠατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  MIT App Inventor.jpg Εμφανίσεις:  336 Μέγεθος:  115,0 KB

    Μπορείς να επιλέξεις με ποια συσκευή Bluetooth θέλεις να συνδεθείς, όταν πατάς το πλήκτρο ΟΝ στέλνει 99 και το OFF στέλνει 98 στο Arduino, επίσης διαβάζει το pitch του orientation sensor, το μετατρέπει σε τιμές από 0-90 και το στέλνει στο Arduino.
    Εδώ είναι τα source αρχεία για το MIT App Inventor
    Arduino_Android_bluetooth.zip
    Εδώ μπορείτε να κατεβάσετε το APP http://www.kokoras.com/ardandrblue/A..._bluetooth.zip

    Νομίζω ότι ο συνδιασμός των Android, Arduino και Bluetooth, μπορεί να μας δώσει πολλές δυνατότητες για την υλοποιήση εφαρμογών ασύρματου ελέγχου.

    Ευχαριστώ Κώστας.

    6 Not allowed! Not allowed!

  2. 10 μέλη ευχαρίστησαν τον guscokes για αυτό το χρήσιμο μήνυμα:

    αλπινιστης (29-12-13), aktis (05-04-13), JOHNY+ (03-03-13), manis13 (02-03-13), manolena (02-03-13), primeras (04-03-13), sakisr (03-03-13), spiroscfu (03-03-13), stavros_97s (03-03-13), xifias (03-03-13)

  3. #2
    Μέλος Το avatar του χρήστη stavros_97s
    Όνομα
    Σταύρος
    Εγγραφή
    Jan 2011
    Περιοχή
    θεσσαλονίκη
    Μηνύματα
    292

    Προεπιλογή

    Κώστα πολύ ωραίος, αυτές τις μέρες έψαχνα για πληροφορίες επικοινωνίας του arduino με Android συσκευές, και με βοήθησες πολύ!

    0 Not allowed! Not allowed!

  4. #3
    Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Oct 2012
    Περιοχή
    Ηγουμενίτσα
    Μηνύματα
    32

    Προεπιλογή

    Ξέχασα να γράψω ότι στο video, δεν ήταν ενεργοποιημένη η δυνατότητα να επιλέγεις συσκευή Bluetooth.
    Το έβαλα μετά. Στα source αρχεία για το M.I.T. app inventor όπως και στο apk έιναι ενεργοποιημένο.

    0 Not allowed! Not allowed!

  5. #4
    Μέλος
    Όνομα
    Κώστας
    Εγγραφή
    Oct 2012
    Περιοχή
    Ηγουμενίτσα
    Μηνύματα
    32

    Προεπιλογή

    Συγνώμη ρε παίδες αλλά δεν μπορούσα να κάνω edit το αρχικό post και άλλαξα λογαριασμό utube οπότε έπρεπε να ανανεώσω το link του video


    0 Not allowed! Not allowed!

Παρόμοια Θέματα

  1. Απαντήσεις: 19
    Τελευταίο Μήνυμα: 11-12-19, 20:25
  2. DS18B20 & arduino
    By Διογένης in forum Γενικά
    Απαντήσεις: 11
    Τελευταίο Μήνυμα: 01-09-17, 19:35
  3. Απαντήσεις: 12
    Τελευταίο Μήνυμα: 20-06-16, 13:24
  4. Arduino Bluetooth Remote Control toy car - Τηλεκατευθυνόμενο αυτοκίνητο με Bluetooth
    By guscokes in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 18
    Τελευταίο Μήνυμα: 29-12-13, 22:04
  5. Αγορά UPS | TV-Monitor & PC & Router & Laptop-if_possible
    By abstract3d in forum Κυκλώματα Τροφοδοτικών
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 30-07-10, 23:44

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας