- Απαιτούμενα στοιχεία
- Χρησιμοποιημένο λογισμικό
- Μονάδα πομπού και δέκτη RF 433MHz
- Διάγραμμα κυκλώματος
- Δημιουργία του έργου για Atmega 8 χρησιμοποιώντας το CodeVision
- ΚΩΔΙΚΟΣ και Επεξήγηση
- Ανεβάστε τον κωδικό στο Atmega8
Κάνοντας τα έργα μας ασύρματα το κάνει πάντα να φαίνεται δροσερό και επίσης επεκτείνει το εύρος στο οποίο μπορεί να ελεγχθεί. Ξεκινώντας από τη χρήση ενός κανονικού LED IR για ασύρματο έλεγχο μικρών αποστάσεων έως ένα ESP8266 για παγκόσμιο έλεγχο HTTP, υπάρχουν πολλοί τρόποι για να ελέγχετε κάτι ασύρματα. Σε αυτό το έργο μαθαίνουμε πώς να φτιάχνουμε ασύρματα έργα χρησιμοποιώντας μονάδα RF 433 MHz και μικροελεγκτή AVR.
Σε αυτό το έργο κάνουμε τα εξής: -
- Χρησιμοποιούμε το Atmega8 για τον πομπό RF και το Atmega8 για την ενότητα δέκτη RF.
- Διασυνδέουμε ένα LED και ένα κουμπί με μικροελεγκτές Atmega8.
- Από την πλευρά του πομπού, διασυνδέουμε το κουμπί με το Atmega και μεταδίδουμε τα δεδομένα. Από την πλευρά του δέκτη, θα λάβουμε τα δεδομένα ασύρματα και θα δείξουμε την έξοδο σε LED.
- Χρησιμοποιούμε κωδικοποιητή και αποκωδικοποιητή IC για τη μετάδοση δεδομένων 4 bit.
- Η συχνότητα λήψης είναι 433Mhz χρησιμοποιώντας φθηνή μονάδα RF TX-RX που διατίθεται στην αγορά.
Απαιτούμενα στοιχεία
- Μικροελεγκτής Atmega8 AVR (2)
- Προγραμματιστής USBASP
- Καλώδιο FRC 10 ακίδων
- Ψωμί (2)
- LED (2)
- Κουμπί (1)
- Ζεύγος HT12D και HT12E
- Ενότητα RX-TX RF
- Αντίσταση (10k, 47k, 1M)
- Καλώδια αλτών
- Τροφοδοσία 5V
Χρησιμοποιημένο λογισμικό
Χρησιμοποιούμε λογισμικό CodeVisionAVR για τη σύνταξη του κώδικα μας και το λογισμικό SinaProg για τη μεταφόρτωση του κωδικού μας στο Atmega8 χρησιμοποιώντας τον προγραμματιστή USBASP.
Μπορείτε να κατεβάσετε αυτά τα λογισμικά από τους δεδομένους συνδέσμους:
CodeVisionAVR :
SinaProg:
Πριν προχωρήσουμε στα σχήματα και τους κωδικούς, ας κατανοήσουμε τη λειτουργία της μονάδας RF με ICs Encoder-Decoder.
Μονάδα πομπού και δέκτη RF 433MHz
Αυτές είναι οι μονάδες πομπού και δέκτη που χρησιμοποιούμε στο έργο. Είναι η φθηνότερη διαθέσιμη μονάδα για 433 MHz. Αυτές οι μονάδες δέχονται σειριακά δεδομένα σε ένα κανάλι.
Αν δούμε τις προδιαγραφές των ενοτήτων, ο πομπός έχει βαθμολογία για λειτουργία 3,5-12V ως τάση εισόδου και η απόσταση μετάδοσης είναι 20-200 μέτρα. Μεταδίδει σε πρωτόκολλο AM (Audio Modulation) στα 433 MHz συχνότητα. Μπορούμε να μεταφέρουμε δεδομένα με ταχύτητα 4KB / S με ισχύ 10mW.
Στην επάνω εικόνα μπορούμε να δούμε το pin-out της μονάδας Transmitter. Από αριστερά προς τα δεξιά οι ακίδες είναι VCC, DATA και GND. Μπορούμε επίσης να προσθέσουμε την κεραία και να την κολλήσουμε στο σημείο που φαίνεται στην παραπάνω εικόνα.
Για τις προδιαγραφές του Παραλήπτη, ο Δέκτης έχει βαθμολογία 5V dc και 4MA Quiescent current ως είσοδο. Η συχνότητα λήψης είναι 433,92 MHz με ευαισθησία -105DB.
Στην παραπάνω εικόνα μπορούμε να δούμε το pin-out της μονάδας δέκτη. Οι τέσσερις ακίδες είναι από αριστερά προς τα δεξιά, VCC, DATA, DATA και GND. Αυτές οι μεσαίες δύο ακίδες συνδέονται εσωτερικά. Μπορούμε να χρησιμοποιήσουμε οποιοδήποτε ένα ή και τα δύο. Αλλά είναι καλή πρακτική να χρησιμοποιείτε και τα δύο για τη μείωση της ζεύξης θορύβου.
Επίσης, ένα πράγμα δεν αναφέρεται στο φύλλο δεδομένων, ο μεταβλητής επαγωγέας ή POT στο μέσο της μονάδας χρησιμοποιείται για βαθμονόμηση συχνότητας. Εάν δεν μπορούσαμε να λάβουμε τα μεταδιδόμενα δεδομένα, υπάρχουν πιθανότητες ότι οι συχνότητες μετάδοσης και λήψης δεν ταιριάζουν. Αυτό είναι ένα κύκλωμα RF και πρέπει να συντονίσουμε τον πομπό στο τέλειο μεταδιδόμενο σημείο συχνότητας. Επίσης, όπως και ο πομπός, αυτή η μονάδα διαθέτει επίσης θύρα κεραίας. μπορούμε να κολλήσουμε σύρμα σε κουλουριασμένη μορφή για μεγαλύτερη λήψη.
Το εύρος μετάδοσης εξαρτάται από την τάση που παρέχεται στον πομπό και το μήκος των κεραιών και στις δύο πλευρές. Για αυτό το συγκεκριμένο έργο δεν χρησιμοποιήσαμε εξωτερική κεραία και χρησιμοποιήσαμε 5V στην πλευρά του πομπού. Ελέγξαμε με απόσταση 5 μέτρων και λειτούργησε τέλεια.
Μάθετε περισσότερα για το ζεύγος RF στο κύκλωμα πομπού και δέκτη RF. Μπορείτε να καταλάβετε περισσότερα σχετικά με τη λειτουργία του RF ελέγχοντας τα ακόλουθα έργα που χρησιμοποιούν ζεύγος RF:
- Ρομπότ ελεγχόμενο με RF
- Κύκλωμα μετατροπέα IR σε RF
- RF τηλεχειριστήρια LED που χρησιμοποιούν Raspberry Pi
- Οικιακές συσκευές ελεγχόμενες με RF
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος για πλευρά πομπού RF
- Pin D7 του atmega8 -> Pin13 HT12E
- Pin D6 του atmega8 -> Pin12 HT12E
- Pin D5 του atmega8 -> Pin11 HT12E
- Pin D4 του atmega8 -> Pin10 HT12E
- Πιέστε το κουμπί Pin Pin του Atmega.
- Αντίσταση 1M-ohm μεταξύ pin15 και 16 του HT12E.
- Pin17 του HT12E σε ακροδέκτη δεδομένων της μονάδας πομπού RF.
- Καρφίτσα 18 του HT12E έως 5V.
- Καρφίτσα GND 1-9 και Pin 14 του HT12E και Pin 8 του Atmega.
Διάγραμμα κυκλώματος για πλευρά δέκτη RF
- Pin D7 του atmega8 -> Pin13 HT12D
- Pin D6 του atmega8 -> Pin12 HT12D
- Pin D5 του atmega8 -> Pin11 HT12D
- Pin D4 του atmega8 -> Pin10 HT12d
- LED στην καρφίτσα B0 του Atmega.
- Pin14 του HT12D σε πείρο δεδομένων της μονάδας δέκτη RF.
- 47 kohm αντίσταση μεταξύ pin15 και 16 του HT12D.
- Καρφίτσα GND 1-9 του HT12D και Pin 8 του Atmega.
- LED στον ακροδέκτη 17 του HT12D.
- 5V στον ακροδέκτη 7 του Atmega και τον ακροδέκτη 18 του HT12D.
Δημιουργία του έργου για Atmega 8 χρησιμοποιώντας το CodeVision
Μετά την εγκατάσταση αυτών των λογισμικών, ακολουθήστε τα παρακάτω βήματα για να δημιουργήσετε έργο και να γράψετε κώδικα:
Βήμα 1. Άνοιγμα CodeVision Κάντε κλικ στο Αρχείο -> Νέο -> Έργο . Θα εμφανιστεί το πλαίσιο διαλόγου επιβεβαίωσης. Κάντε κλικ στο Ναι
Βήμα 2. Θα ανοίξει το CodeWizard. Κάντε κλικ στην πρώτη επιλογή, δηλαδή AT90 , και κάντε κλικ στο OK.
Βήμα 3. Επιλέξτε το τσιπ μικροελεγκτή σας, εδώ θα πάρουμε το Atmega8 όπως φαίνεται.
Βήμα 4: - Κάντε κλικ στο Ports. Στο τμήμα πομπού, το πλήκτρο είναι η είσοδος μας και εξάγονται 4 γραμμές δεδομένων. Έτσι, πρέπει να προετοιμάσουμε 4 ακίδες του Atmega ως έξοδο. Κάντε κλικ στη θύρα D. Κάντε το Bit 7, 6, 5 και 4 εξαντλώντας κάνοντας κλικ πάνω του.
Βήμα 5: - Κάντε κλικ στο Πρόγραμμα -> Δημιουργία, αποθήκευση και έξοδος . Τώρα, περισσότερες από τις μισές εργασίες μας έχουν ολοκληρωθεί
Βήμα 6: - Δημιουργήστε έναν νέο φάκελο στην επιφάνεια εργασίας, έτσι ώστε τα αρχεία μας να παραμένουν σε φάκελο, διαφορετικά θα είναι διασκορπισμένα σε ολόκληρο το παράθυρο της επιφάνειας εργασίας. Ονομάστε το φάκελό σας όπως θέλετε και προτείνω να χρησιμοποιήσετε το ίδιο όνομα για να αποθηκεύσετε αρχεία προγράμματος.
Θα έχουμε τρία κουτιά διαλόγου το ένα μετά το άλλο για να αποθηκεύσουμε αρχεία. Κάντε το ίδιο με άλλα δύο πλαίσια διαλόγου που θα εμφανιστούν μετά την αποθήκευση του πρώτου.
Τώρα, ο χώρος εργασίας σας μοιάζει με αυτόν.
Το μεγαλύτερο μέρος της δουλειάς μας ολοκληρώνεται με τη βοήθεια του οδηγού. Τώρα, πρέπει να γράψουμε μόνο λίγες γραμμές κώδικα για μέρος πομπού και δέκτη και αυτό είναι…
Ακολουθήστε τα ίδια βήματα για να δημιουργήσετε αρχεία για το τμήμα δέκτη. Στο τμήμα του δέκτη, μόνο το Led είναι η έξοδος μας, οπότε κάντε το Port B0 λίγο έξω.
ΚΩΔΙΚΟΣ και Επεξήγηση
Θα γράψουμε κώδικα για εναλλαγή του LED ασύρματα χρησιμοποιώντας RF. Πλήρης κωδικός για αμφότερες τις πλευρές του πομπού και του δέκτη Atmega παρέχεται στο τέλος αυτού του άρθρου.
Κωδικός Atmega8 για πομπό RF:
Πρώτα συμπεριλάβετε το αρχείο κεφαλίδας delay.h για να χρησιμοποιήσετε καθυστέρηση στον κώδικα μας.
#περιλαμβάνω
Τώρα, ελάτε στις τελευταίες γραμμές κώδικα όπου θα βρείτε ένα βρόχο για λίγο . Ο κύριος κώδικας μας θα είναι σε αυτό το βρόχο.
Στο While loop, θα στείλουμε 0x10 byte στο PORTD όταν πατηθεί το κουμπί και, θα στείλουμε 0x20 όταν δεν πατηθεί το κουμπί. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε τιμή για αποστολή.
ενώ (1) { if (PINB.0 == 1) { PORTD = 0x10; } εάν (PINB.0 == 0) { PORTD = 0x20; } } }
Κωδικός Atmega για δέκτη RF
Πρώτα δηλώστε μεταβλητές πάνω από την κενή κύρια λειτουργία για την αποθήκευση εισερχόμενου χαρακτήρα από τη μονάδα RF.
#περιλαμβάνω
Τώρα έρχονται στο ενώ βρόχο. Σε αυτό το βρόχο, αποθηκεύστε τα εισερχόμενα byte σε ένα byte μεταβλητής char και ελέγξτε αν το εισερχόμενο byte είναι ίδιο με αυτό που γράφουμε στο τμήμα πομπού μας. Εάν τα byte είναι ίδια, κάντε το PortB.0 υψηλό και ΜΗΝ πάρτε το PORTB.0 για εναλλαγή του LED.
ενώ (1) { byte = PIND; εάν (PIND.7 == 0 && PIND.6 == 0 && PIND.5 == 0 && PIND.4 == 1) { PORTB.0 = ~ PORTB.0; καθυστέρηση_ms (1000); }}}
Δημιουργήστε το Έργο
Ο κωδικός μας έχει ολοκληρωθεί. Τώρα, πρέπει να χτίσουμε το έργο μας . Κάντε κλικ στο εικονίδιο Build the project όπως φαίνεται.
Μετά τη δημιουργία του έργου, δημιουργείται ένα αρχείο HEX στο φάκελο Debug-> Exe που μπορεί να βρεθεί στο φάκελο που είχατε δημιουργήσει προηγουμένως για να αποθηκεύσετε το έργο σας. Θα χρησιμοποιήσουμε αυτό το αρχείο HEX για αποστολή στο Atmega8 χρησιμοποιώντας το λογισμικό Sinaprog.
Ανεβάστε τον κωδικό στο Atmega8
Συνδέστε τα κυκλώματά σας σύμφωνα με το δεδομένο διάγραμμα στο πρόγραμμα Atmega8. Συνδέστε τη μία πλευρά του καλωδίου FRC στον προγραμματιστή USBASP και η άλλη πλευρά θα συνδεθεί με τις ακίδες SPI του μικροελεγκτή όπως περιγράφεται παρακάτω:
- Pin1 του θηλυκού συνδετήρα FRC -> Pin 17, MOSI του Atmega8
- Pin 2 συνδεδεμένο με Vcc του atmega8, δηλαδή Pin 7
- Το Pin 5 είναι συνδεδεμένο με το Reset του atmega8, δηλαδή το Pin 1
- Ο ακροδέκτης 7 συνδέεται με το SCK του atmega8, δηλαδή το Pin 19
- Pin 9 συνδεδεμένο με MISO του atmega8, δηλαδή Pin 18
- Ο ακροδέκτης 8 είναι συνδεδεμένος με το GND του atmega8, δηλαδή το Pin 8
Συνδέστε τα υπόλοιπα εξαρτήματα στο breadboard σύμφωνα με το διάγραμμα κυκλώματος και ανοίξτε το Sinaprog.
Θα ανεβάσουμε το παραπάνω αρχείο Hex που δημιουργήθηκε χρησιμοποιώντας το Sinaprog, οπότε ανοίξτε το και επιλέξτε Atmega8 από το αναπτυσσόμενο μενού Συσκευή. Επιλέξτε το αρχείο HEX από το φάκελο Debug-> Exe όπως φαίνεται.
Τώρα, κάντε κλικ στο Πρόγραμμα.
Ολοκληρώσατε και ο Μικροελεγκτής σας έχει προγραμματιστεί. Χρησιμοποιήστε τα ίδια βήματα για να προγραμματίσετε άλλο Atmega στην πλευρά του δέκτη.
Ο πλήρης κώδικας και το βίντεο επίδειξης δίνονται παρακάτω.