Σελίδα 3 από 3 ΠρώτηΠρώτη 1 2 3
Εμφάνιση αποτελεσμάτων : 21 έως 27 από 27

Θέμα: Aπορίες σχετικά με arduino και VirtualWire παραδείγματα

  1. #21
    Μέλος
    Όνομα
    ΑΛΕΞΑΝΔΡΟΣ
    Εγγραφή
    Jan 2012
    Περιοχή
    Άνω Αχαρναί
    Μηνύματα
    717

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από sotron1 Εμφάνιση μηνυμάτων
    Διαβάζοντας λένε πολλοί ότι τα 433 δε είναι για πολλά πράγματα. Οπότε τα εγκατέλειψα και ασχολήθηκα με αυτό nRF24L01+.
    2,5 χρόνια δουλεύουν ακατάπαυστα 3 πομποδέκτες στους 433 MHz (ένα master στο ισόγειο, ένας σταθμός στον 1ο όροφο και άλλος ένας σταθμός στον 2ο όροφο) και ποτέ μα ποτέ δεν είχα ούτε ένα κόλλημα. Είναι θέμα καθαρά του κώδικα και του πρωτοκόλλου επικοινωνίας, στο να αντιλαμβάνεται πότε υπάρχει πρόβλημα (πχ collision) και να κάνει επανάληψη εκπομπής πακέτου.

    Όσο για τους 2,4 GHz δεν θα το συνιστούσα γιατί έχει πήξει η συχνότητα από τα πολλά access points. Για παράδειγμα μόνο στο σπίτι μου υπάρχουν 3 διαφορετικά access points, οπότε ο θόρυβος της μπάντας των 433 MHz είναι αστείος μπροστά στο θόρυβο των 2,4 GHz.

    0 Not allowed! Not allowed!

  2. #22
    Μέλος
    Όνομα
    Μάκης
    Εγγραφή
    Sep 2016
    Περιοχή
    Καλλιθέα
    Μηνύματα
    38

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από thanasis 1 Εμφάνιση μηνυμάτων
    Ευχαριστω μακη,κοιτα ετοιμος κωδικας να επικοινωνει πομπος και δεκτης ειναι τα παραδειγματα που εχει η virtualwire(transmitter,receiver) απλα στο παραδειγμα αυτο στελνει ενα string και οχι καποιον αριθμο.
    Εσυ απλα πρεπει να τον αριθμο αυτον που δειχνει το αισθητηρια να το μετατρεψεις σε string ωστε να το λαβει ο δεκτης.
    Το υγρομετρο πχ στέλνει αυτά:
    . Serial.print(SHT2x.GetHumidity());
    . Serial.print(SHT2x.GetTemperature());
    Πως θα μετατραπούν σε string και θα μπουν στον κώδικα του virtualwire(transmitter,receiver);

    0 Not allowed! Not allowed!

  3. #23
    Μέλος Το avatar του χρήστη thanasis 1
    Όνομα
    Θανάσης
    Εγγραφή
    Jul 2010
    Περιοχή
    ΑΘΗΝΑ
    Μηνύματα
    1.382

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από maki Εμφάνιση μηνυμάτων
    Το υγρομετρο πχ στέλνει αυτά:
    . Serial.print(SHT2x.GetHumidity());
    . Serial.print(SHT2x.GetTemperature());
    Πως θα μετατραπούν σε string και θα μπουν στον κώδικα του virtualwire(transmitter,receiver);
    Ενας τροπος ειναι να χρησιμοποιησεις την "dtostrf" στον πομπο και την "atof" ή την "sscanf" στον δεκτη,ενα παραδειγμα που ειχα κανει εγω ειναι αυτο.

    πομπος

    Spoiler: 
    Κώδικας:
    #include <VirtualWire.h>
    
    const int led_pin = 13;
    const int transmit_pin = 1;
    const int receive_pin = 0;
    const int transmit_en_pin = 3;
    
    char msg[6];
    float number = 56.7; Αυτος ο αριθμος μπορει να ειναι η θερμοκρασια σου ή υγρασια σου,εναν τυχαιο αριθμο εβαλα.
    
    void setup()
    {
        pinMode(led_pin, OUTPUT);
        vw_set_ptt_inverted(true); 
        vw_setup(2000);                 
        vw_set_tx_pin(transmit_pin); 
    }
    
    void loop()
    {
      digitalWrite(led_pin, HIGH);
      dtostrf(number, 4, 1, msg);
      vw_send((uint8_t *)msg, strlen(msg));
      vw_wait_tx(); 
      digitalWrite(led_pin, LOW);
      delay(1000);
    }


    δεκτης

    Spoiler: 
    Κώδικας:
    #include <LiquidCrystal.h>
    #include <VirtualWire.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    
    byte message[VW_MAX_MESSAGE_LEN]; 
    byte messageLength = VW_MAX_MESSAGE_LEN;
                                                                                                                                       
    const int led_pin = 13;
    const int transmit_pin = 1;
    const int receive_pin = 0;
    const int transmit_en_pin = 3;
    
    char Input1CharMsg[30];
    float Input1Data;
    
    void setup()
    {
      
        lcd.begin(16, 2);
        lcd.setCursor(0, 0);
        lcd.print("Read temp sensor");
        delay(500);
        lcd.clear();
    
        vw_set_tx_pin(transmit_pin);
        vw_set_rx_pin(receive_pin);
        vw_set_ptt_pin(transmit_en_pin);
        vw_set_ptt_inverted(true); 
        vw_setup(2000);     
    
        vw_rx_start();      
    
        pinMode(led_pin, OUTPUT);
    }
    
    void loop()
    {
        if (vw_get_message(message, &messageLength))
        {
            digitalWrite(led_pin, HIGH); 
          
        for (int i = 0; i < messageLength; i++)
        {      
                  Input1CharMsg[i] = char(message[i]);
        }
            
           * sscanf(Input1CharMsg, "%1.2f",&Input1Data); Αν θες τον αριθμο απλα μονο για να τον εμφανισεις στην οθονη.
    
           ** Input1Data = atof (Input1CharMsg); Αν θες να τον εμφανισεις στην οθονη αλλα και να μπορεις να τον χρησιμοποιησεις π.χ. για υπολογισμους.
            
    
            lcd.setCursor(0, 0);
            lcd.print(Input1Data);
           
            digitalWrite(led_pin, LOW);
            
            
        }
         
    }

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη thanasis 1 : 21-01-17 στις 14:57

  4. #24
    Μέλος Το avatar του χρήστη sotron1
    Όνομα
    Σωτήρης
    Εγγραφή
    Aug 2007
    Περιοχή
    Αθήνα, Περιστέρι.
    Μηνύματα
    950

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από alefgr Εμφάνιση μηνυμάτων
    2,5 χρόνια δουλεύουν ακατάπαυστα 3 πομποδέκτες στους 433 MHz (ένα master στο ισόγειο, ένας σταθμός στον 1ο όροφο και άλλος ένας σταθμός στον 2ο όροφο) και ποτέ μα ποτέ δεν είχα ούτε ένα κόλλημα. Είναι θέμα καθαρά του κώδικα και του πρωτοκόλλου επικοινωνίας, στο να αντιλαμβάνεται πότε υπάρχει πρόβλημα (πχ collision) και να κάνει επανάληψη εκπομπής πακέτου.

    Όσο για τους 2,4 GHz δεν θα το συνιστούσα γιατί έχει πήξει η συχνότητα από τα πολλά access points. Για παράδειγμα μόνο στο σπίτι μου υπάρχουν 3 διαφορετικά access points, οπότε ο θόρυβος της μπάντας των 433 MHz είναι αστείος μπροστά στο θόρυβο των 2,4 GHz.
    Δεν μας δίνεις τον κώδικα να το δοκιμάσουμε και εμείς. Ίσως είσαι σε ένα πιο καθαρό περιβάλλον από εδώ.

    0 Not allowed! Not allowed!

  5. #25
    Μέλος
    Όνομα
    ΑΛΕΞΑΝΔΡΟΣ
    Εγγραφή
    Jan 2012
    Περιοχή
    Άνω Αχαρναί
    Μηνύματα
    717

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από sotron1 Εμφάνιση μηνυμάτων
    Δεν μας δίνεις τον κώδικα να το δοκιμάσουμε και εμείς. Ίσως είσαι σε ένα πιο καθαρό περιβάλλον από εδώ.
    Η αλήθεια είναι ότι εδώ που μένω δεν υπάρχουν αφενός πολυκατοικίες και αφετέρου είναι σχετικά αραιοκατοικημένη η περιοχή μου. Πάντως ακόμα και έτσι στους 2,4 GHz γίνεται χαμός.

    Τώρα ο κώδικας που δουλεύω, χρησιμοποιεί σαν βασική βιβλιοθήκη την Scheduler, (την οποία την ανέπτυξα στο ξεκίνημα της ασχολίας μου με το arduino), η οποία μπορώ να πω ότι είναι η βάση σε όλες τις εφαρμογές που έχω αναπτύξει μέχρι τώρα. Για παράδειγμα, να μπορώ να ορίζω πότε πρέπει να κληθεί μια ρουτίνα όταν υπάρχει timeout αλλά και ακύρωση της κλήσης όταν φτάσει πακέτο ACK, σκανάρισμα ανά τακτά διαστήματα για το αν έχει φτάσει πακέτο προς επεξεργασία, χρονική ουρά για την μετάδοση πακέτων ανάλογα με σειρά προτεραιότητας καθώς και πολλά άλλα.

    Κατά αρχή πρέπει να φτιάξεις ένα πίνακα, ένα πρωτόκολλο, όπου θα συγκεκριμενοποιείς το τι είδους πακέτο εκπέμπεται ή λαμβάνεται κάθε φορά, από ποιον σε ποιόν, τι πληροφορίες και σε ποια συγκεκριμένη θέση βρίσκονται στο πακέτο, καθώς και ποια πρέπει να είναι η αντίδραση του παραλήπτη. Αν πρέπει να απαντήσει στο request ή να το αγνοήσει στην περίπτωση που πρόκειται για απλό πακέτο info.

    Για παράδειγμα στην δική μου περίπτωση για την επικοινωνία ανάμεσα σε μια βάση και τους περιφερειακούς σταθμούς, που μπορούν να φτάσουν τον αριθμό 8, καθώς και προς ένα ATS (για να παίρνω πληροφορίες από αυτό καθώς και να μπορεί να δέχεται εντολές μέσω του δικτύου και μέσω της βάσης, για την εκτέλεση του μηνιάτικου start test της γεννήτριας), βασίζεται σε αυτό το πρωτόκολλο.

    Κώδικας:
    Message Command                                   Data           Dir.  Bytes Note                             Return Back Message
    ---------------------------------------------------------------------------------------------------------------------------------------------
     0 = WRA_MESSAGE_RECEIVED_OK                      REQ_COMMAND    <->   1     ACK for the requested command    -
     1 = WRA_MESSAGE_STATION_ALIVE                    -              S2M   12    (see note below)                 WRA_MESSAGE_RECEIVED_OK
     2 = WRA_MESSAGE_STATION_REQUEST_STATUS           -              M2S   -     -                                WRA_MESSAGE_STATION_RESPONT_STATUS
     3 = WRA_MESSAGE_STATION_RESPONT_STATUS           SSSSSSSS       S2M   12    (see note below)                 WRA_MESSAGE_RECEIVED_OK
     4 = WRA_MESSAGE_STATION_REQUEST_CHANGE_SOCKETS   SSSSSSSS       M2S   1     every bit display socket state   WRA_MESSAGE_STATION_RESPONT_CHANGE_SOCKETS
     5 = WRA_MESSAGE_STATION_RESPONT_CHANGE_SOCKETS   SSSSSSSS       S2M   1     every bit display socket state   WRA_MESSAGE_RECEIVED_OK
     6 = WRA_MESSAGE_STATION_REQUEST_CHANGE_SOCKET    S0000NNN       M2S   1     N = socket nr (0-7), S = state   WRA_MESSAGE_STATION_RESPONT_CHANGE_SOCKET
     7 = WRA_MESSAGE_STATION_RESPONT_CHANGE_SOCKET    S0000NNN       S2M   1     N = socket nr (0-7), S = state   WRA_MESSAGE_RECEIVED_OK
     8 = WRA_MESSAGE_STATION_EVENT_SOCKETS            SSSSSSSS       S2M   1     every bit display socket state   WRA_MESSAGE_RECEIVED_OK
     9 = WRA_MESSAGE_STATION_EVENT_SOCKET             SxxxxNNN       S2M   1     N = socket nr (0-7), S = state   WRA_MESSAGE_RECEIVED_OK
    10 = WRA_MESSAGE_STATION_EVENT_STARTUP            -              S2M   8     (see note below)                 -
    11 = WRA_MESSAGE_STATION_REQUEST_SYSINFO          -              M2S   -     -                                WRA_MESSAGE_STATION_RESPONT_SYSINFO
    12 = WRA_MESSAGE_STATION_RESPONT_SYSINFO          -              S2M   8     (see note below)                 WRA_MESSAGE_RECEIVED_OK
    13 = WRA_MESSAGE_ATS_REQUEST_INFO_SETTING         NNNNNNNN       M2A   1     (DATA 1 = the setting nr)        WRA_MESSAGE_ATS_RESPONT_INFO_SETTING
    14 = WRA_MESSAGE_ATS_RESPONT_INFO_SETTING         -              A2M   3     (see note below)                 WRA_MESSAGE_RECEIVED_OK
    15 = WRA_MESSAGE_ATS_REQUEST_SET_SETTING          -              M2A   3     (see note below)                 WRA_MESSAGE_ATS_RESPONT_SET_SETTING
    16 = WRA_MESSAGE_ATS_RESPONT_SET_SETTING          NNNNNNNN       A2M   3     (see note below)                 WRA_MESSAGE_RECEIVED_OK
    17 = WRA_MESSAGE_ATS_REQUEST_INFO                 NNNNNNNN       M2A   1     (DATA 1 = info type)             WRA_MESSAGE_ATS_RESPONT_INFO
    18 = WRA_MESSAGE_ATS_RESPONT_INFO                 -              A2M   5     (see note below)                 WRA_MESSAGE_RECEIVED_OK
    19 = WRA_MESSAGE_ATS_REQUEST_COMMOP               NNNNNNNN       M2A   1     (DATA 1 = command op type)       WRA_MESSAGE_RECEIVED_OK
    20 = WRA_MESSAGE_ATS_EVENT                        -              A2M   2     (see note below)                 -
    21 = WRA_MESSAGE_ATS_REQUEST_INFO_SETTINGS        -              M2A   -     -                                WRA_MESSAGE_ATS_RESPONT_INFO_SETTINGS
    22 = WRA_MESSAGE_ATS_RESPONT_INFO_SETTINGS        -              A2M   30    (DATA = all Settings)            WRA_MESSAGE_RECEIVED_OK
    23 = WRA_MESSAGE_ATS_REQUEST_INFOS                -              M2A   -     -                                WRA_MESSAGE_ATS_RESPONT_INFOS
    24 = WRA_MESSAGE_ATS_RESPONT_INFOS                -              A2M   36    (DATA = all Infos)               WRA_MESSAGE_RECEIVED_OK
    ---------------------------------------------------------------------------------------------------------------------------------------------

    0 Not allowed! Not allowed!

  6. #26
    Μέλος
    Όνομα
    Μάκης
    Εγγραφή
    Sep 2016
    Περιοχή
    Καλλιθέα
    Μηνύματα
    38

    Προεπιλογή

    Ευχαριστώ Θαναση. Θα δοκιμάσω και ελπίζω να καταφέρω κάτι.


    Παράθεση Αρχικό μήνυμα από sotron1 Εμφάνιση μηνυμάτων
    Διαβάζοντας λένε πολλοί ότι τα 433 δε είναι για πολλά πράγματα. Οπότε τα εγκατέλειψα και ασχολήθηκα με αυτό nRF24L01+.
    Αυτός είναι ο πομπός;



    Ο δέκτης;

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη maki : 24-01-17 στις 14:09

  7. #27
    Μέλος Το avatar του χρήστη sotron1
    Όνομα
    Σωτήρης
    Εγγραφή
    Aug 2007
    Περιοχή
    Αθήνα, Περιστέρι.
    Μηνύματα
    950

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από maki Εμφάνιση μηνυμάτων
    Ευχαριστώ Θαναση. Θα δοκιμάσω και ελπίζω να καταφέρω κάτι.




    Αυτός είναι ο πομπός;



    Ο δέκτης;
    Αυτά έχω βάλει πομπός και δέκτης είναι το ίδιο.

    https://www.cableworks.gr/ilektronik...e-for-arduino/

    Αυτό που δείχνεις είναι το ίδιο με το άνω αλλά πιο ισχυρό.

    https://www.cableworks.gr/ilektronik...m-for-arduino/

    Πομπός και δέκτης είναι ίδια, αλλάζουν την δουλειά τους με το software.

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη sotron1 : 24-01-17 στις 15:00

Σελίδα 3 από 3 ΠρώτηΠρώτη 1 2 3

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

  1. Απορίες σχετικά με κυκλωμα
    By Skywaker in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 20-03-15, 18:12
  2. Απορίες σχετικά με το arduino
    By xl_31 in forum Μικροελεγκτές
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 09-07-11, 01:29
  3. Απορίες σχετικά με CB
    By kanibalfase in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 28-05-11, 23:30
  4. Απορίες σχετικά με το ARDUINO
    By val_mike in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 12
    Τελευταίο Μήνυμα: 16-05-11, 09:27

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

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