Πίνακας περιεχομένων:

Παγκόσμιος σύνδεσμος μικροελεγκτών για βήματα κάτω από $ 20: 15
Παγκόσμιος σύνδεσμος μικροελεγκτών για βήματα κάτω από $ 20: 15

Βίντεο: Παγκόσμιος σύνδεσμος μικροελεγκτών για βήματα κάτω από $ 20: 15

Βίντεο: Παγκόσμιος σύνδεσμος μικροελεγκτών για βήματα κάτω από $ 20: 15
Βίντεο: Τι είναι το Internet of Things (iOT) - Εφαρμογές στην Βιομηχανία Live Streaming Event - Ε04 2021 2024, Ιούλιος
Anonim
Παγκόσμιος σύνδεσμος μικροελεγκτών για κάτω από $ 20
Παγκόσμιος σύνδεσμος μικροελεγκτών για κάτω από $ 20

Ελέγξτε τον θερμοστάτη του σπιτιού σας από την εργασία. Ενεργοποιήστε έναν ψεκαστήρα από οπουδήποτε στον κόσμο πατώντας ένα διακόπτη. Αυτό το Instructable δείχνει πώς να συνδέσετε δύο ή περισσότερους μικροελεγκτές $ 4 χρησιμοποιώντας τη ραχοκοκαλιά του διαδικτύου και κάποιο απλό κώδικα VB. Net. Αυτό βασίζεται σε ένα προηγούμενο Instructable που δείχνει πώς να συνδέσετε έναν μικροελεγκτή με έναν υπολογιστή και να χρησιμοποιήσετε ένα δοχείο για τον έλεγχο ενός σερβο https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ Αυτή τη φορά έχουμε έναν μικροελεγκτή που μιλά με ένα πρόγραμμα VB. Net στη συνέχεια με έναν ιστότοπο ftp, πίσω σε άλλο VB. Net πρόγραμμα και από εκεί έναν δεύτερο μικροελεγκτή οπουδήποτε στον κόσμο, με ή χωρίς ανθρώπινη παρέμβαση. Πώς αλλιώς υποτίθεται ότι αναλαμβάνουν τα μηχανήματα στο The Matrix αν δεν μπορούν να μιλήσουν μεταξύ τους;

Βήμα 1: Συγκεντρώστε τα μέρη

Συγκεντρώστε τα Μέρη
Συγκεντρώστε τα Μέρη

Πολλά από τα μέρη είναι τα ίδια όπως στο PC Control Instructable https://www.instructables.com/id/Control-real-world-devices-with-your-PC/ και προτείνεται να ολοκληρωθεί πρώτα πριν επιχειρήσετε για σύνδεση δύο μικροελεγκτών. Ενώ είναι πολύ πιθανό να χρησιμοποιήσετε ένα δοχείο για τον έλεγχο ενός σερβο, αυτή τη φορά θα πάμε για κάτι πιο απλό - έναν διακόπτη που ανοίγει ένα led. Ο διακόπτης θα μπορούσε εύκολα να είναι ένας αισθητήρας στάθμης δεξαμενής και το led θα μπορούσε να είναι μια αντλία κάτω από έναν ποταμό, αλλά ας αρχίσουμε να κάνουμε κάτι απλό. Μέρη - Δύο μάρκες Picaxe 08M - διατίθενται από πολλές πηγές, συμπεριλαμβανομένου του Rev Ed https://www.rev- ed.co.uk/picaxe/ (Ηνωμένο Βασίλειο), PH Anderson https://www.phanderson.com/ (ΗΠΑ) και Microzed https://www.microzed.com.au/ (Αυστραλία). Αυτά τα τσιπ είναι κάτω από $ 4US. Δύο από: Protoboard, μπαταρία 9V και συνδετήρες μπαταρίας, αντίσταση 10k, αντίσταση 22k, πυκνωτής 33uF 16V, πυκνωτής 0.1uF, ρυθμιστής 5V χαμηλής ισχύος 7805L, καλώδια (καλώδιο τηλεφώνου/δεδομένων σταθερού πυρήνα π.χ. Cat5/6), LED, αντίσταση 1k. 1 από: Θηλυκή πρίζα και κάλυμμα D9 και 2 μέτρα καλώδιο δεδομένων 3 (ή 4) πυρήνα (για λήψη) και διακόπτη εναλλαγής. 2 υπολογιστές με σειριακές θύρες 9 ακίδων (μπορούν όμως να διορθωθούν σε έναν υπολογιστή) και σύνδεση στο Διαδίκτυο. Για υπολογιστές χωρίς σειριακή θύρα, μια USB σε σειριακή συσκευή https://www.rev-ed.co.uk/docs/axe027.pdf και μια μικρή στερεοφωνική πρίζα.

Βήμα 2: Λήψη και εγκατάσταση κάποιου λογισμικού

Κατεβάστε και εγκαταστήστε κάποιο λογισμικό
Κατεβάστε και εγκαταστήστε κάποιο λογισμικό

Θα χρειαστούμε το δωρεάν VB. Net και το λογισμικό ελεγκτή picaxe και αν έχετε κάνει τον ελεγκτή PC Instructable θα τα έχετε ήδη. Το VB. Net (Visual Basic Express) διατίθεται από τη διεύθυνση https://msdn2.microsoft.com/en -us/express/aa718406.aspxΤο λογισμικό picaxe είναι διαθέσιμο στη διεύθυνση https://www.rev-ed.co.uk/picaxe/Θα χρειαστεί να εγγραφείτε στη Microsoft για να λάβετε τη λήψη -εάν πρόκειται για πρόβλημα, χρησιμοποιήστε ψεύτικο email ή κάτι. Πραγματικά το βρήκα χρήσιμο να δίνω το πραγματικό μου email καθώς στέλνουν περιστασιακές ενημερώσεις. Θα αναφέρω επίσης το φόρουμ picaxe https://www.picaxeforum.co.uk/ καθώς αυτό είναι το είδος του φόρουμ που στελεχώνεται από εκπαιδευτικούς και εκπαιδευτικούς και όπου οι μαθητές μπορούν συνήθως να λάβουν απαντήσεις σε ερωτήσεις μέσα σε λίγες ώρες. Το φόρουμ είναι πολύ κατανοητό ακόμη και για τις πιο απλές ερωτήσεις, καθώς μερικοί από τους μαθητές είναι ακόμα στο επίπεδο του δημοτικού σχολείου. Μην φοβάστε να ζητήσετε βοήθεια!

Βήμα 3: Δημιουργήστε ένα κύκλωμα λήψης

Δημιουργήστε ένα κύκλωμα λήψης
Δημιουργήστε ένα κύκλωμα λήψης

Αυτό το κύκλωμα λήψης χρησιμοποιεί ένα τσιπ picaxe, μερικές αντιστάσεις, έναν ρυθμιστή και μια μπαταρία 9V. Περισσότερες πληροφορίες είναι διαθέσιμες στην τεκμηρίωση/βοήθεια picaxe που εμφανίζεται στο μενού βοήθειας του προγράμματος. Το κύκλωμα θα χρειαστεί μόνο λίγα λεπτά για να κατασκευαστεί μόλις όλα τα μέρη είναι στο χέρι. Μόλις προγραμματιστεί ένα τσιπ, διατηρεί το πρόγραμμά του στο EEPROM ακόμη και όταν η τροφοδοσία είναι απενεργοποιημένη. Δεδομένου ότι προγραμματίζουμε δύο μάρκες, ίσως αξίζει την επισήμανση των μάρκων, ώστε να γνωρίζετε ποια είναι ποια. Μπορείτε πάντα να επιστρέψετε και να επαναπρογραμματίσετε ένα τσιπ αφαιρώντας έναν σύνδεσμο και μετακινώντας μια αντίσταση.

Θα μπορούσα επίσης να προσθέσω ότι τα πικάξ λειτουργούν ευτυχώς με 3 μπαταρίες ΑΑ. Μια ρυθμιζόμενη παροχή 5V είναι χρήσιμη για τη λειτουργία αναλογικών εισόδων καθώς οι τάσεις αναφοράς δεν αλλάζουν, αλλά για απλά κυκλώματα on/off δεν απαιτείται ρυθμιζόμενη παροχή. Το 5V reg μπορεί να μείνει εκτός σε αυτές τις περιπτώσεις.

Βήμα 4: Προγραμματίστε τα τσιπ

Προγραμματίστε τα τσιπ
Προγραμματίστε τα τσιπ

Θα καλέσουμε ένα πρόγραμμα Tx και ένα Rx. Το Tx είναι το τσιπ ελέγχου και διαθέτει διακόπτη και led. Το Rx έχει επίσης led. Όταν αλλάζει ο διακόπτης, το σήμα μεταβαίνει από Tx σε Rx, αλλάζει το led και αλλάζει επίσης μια δεύτερη μεταβλητή η οποία στη συνέχεια επιστρέφει στην Tx. Έτσι, χτυπήστε το διακόπτη και σε λιγότερο από ένα λεπτό το led αλλάζει και στα δύο κυκλώματα, υποδεικνύοντας ότι το μήνυμα έφτασε εκεί και το Rx λειτουργεί στη νέα θέση του διακόπτη. Στο απλούστερο επίπεδο, το picaxe έχει 14 καταχωρητές single-byte. Όταν δημιουργείται ένα εικονικό δίκτυο συνδέουμε όλους αυτούς τους καταχωρητές μαζί, οπότε αν αλλάξει ένα byte σε ένα picaxe αλλάζει σε όλα τα picaxes. Είναι σαφές ότι εάν δύο picax προσπαθούν να αλλάξουν το ίδιο byte, τότε θα είναι πολύ μπερδεμένο, αλλά εάν κάθε picaxe αλλάξει μόνο ένα byte, τότε όλα τα άλλα picaxes μπορούν να δουν αυτήν την αλλαγή και μπορούν να ενεργήσουν σε αυτό. Τα απλά μηνύματα μπορούν να μεταβιβαστούν προς τα εμπρός και προς τα εμπρός εάν ένα συγκεκριμένο byte αλλάξει μόνο με ένα πικάξ. Ένα δοχείο μπορεί να αλλάξει την τιμή σε έναν καταχωρητή και ένα ή περισσότερα άλλα picax μπορεί να αισθανθεί ότι αλλάζει και μετακινεί ένα σερβο ή οτιδήποτε άλλο και ενεργοποιεί μια θερμάστρα. Ένας δεύτερος καταχωρητής θα μπορούσε να στείλει πίσω τη θερμοκρασία στο δωμάτιο. Αντιγράψτε και επικολλήστε τα προγράμματα με τη σειρά τους στον προγραμματιστή picaxe και κατεβάστε τα σε κάθε ένα από τα αντίστοιχα τσιπ χρησιμοποιώντας το μπλε βέλος λήψης από τον προγραμματιστή picaxe. Tx: main: serin 3, N2400, ("Data"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13 'get packet from computer if pin2 = 0 στη συνέχεια «δοκιμάστε το διακόπτη και ορίστε τον καταχωρητή b0 ανάλογα με την κατάσταση b0 = 0 αλλιώς b0 = 1 endif αν b1 = 0 τότε« άλλα σύνολα picaxe b1 ανάλογα με το b0 χαμηλό 1 »οδήγησε από άλλο υψηλό 1» led στο endif serout 0, N2400, ("Data", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) 'send back to computer goto mainand Rx: main: serin 3, N2400, ("Δεδομένα"), b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13 'get packet from computer b1 = b0' change register b1 to ίσου καταχωρητή b0 if b1 = 0 τότε χαμηλό 1 'led off άλλο υψηλό 1' led στο endif serout 0, N2400, ("Δεδομένα", b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) 'Αποστολή πίσω στον υπολογιστή πήγα κύρια

Βήμα 5: Δημιουργήστε το κύκλωμα Tx

Δημιουργήστε το κύκλωμα Tx
Δημιουργήστε το κύκλωμα Tx

Εάν γυρίζετε μπρος -πίσω μεταξύ ενός κυκλώματος εργασίας και ενός κυκλώματος προγραμματισμού, φροντίστε να αλλάξετε τη σύνδεση στο σκέλος 2 και τη θέση της αντίστασης 22k από το σκέλος 2 στο πόδι 4. Or μπορείτε να δημιουργήσετε ένα αποκλειστικό κύκλωμα λήψης και να μετακινήσετε τα τσιπ απέναντι. Απλώς σημειώστε εάν ένα κύκλωμα τρέχει ή κατεβάζει καθώς μπορεί να μπερδευτεί. Συγκεκριμένα, σημειώστε ότι ένα κύκλωμα λειτουργίας δεν θα λειτουργήσει εάν το σκέλος 2 παραμείνει αιωρούμενο - πρέπει να γειωθεί. Το πόδι 2 είναι ο ακροδέκτης λήψης και αν αφεθεί να επιπλέει, παίρνει αδέσποτο RF από φώτα φθορίου και το τσιπ πιστεύει ότι γίνεται λήψη άλλου προγράμματος.

Αξίζει επίσης να αναφερθεί η ονοματολογία picaxe που ονομάζει μια φυσική καρφίτσα πόδι και μια εικονική καρφίτσα pin. Έτσι, μια έξοδος στον ακροδέκτη 2 στον κώδικα είναι στην πραγματικότητα μια έξοδος στο φυσικό σκέλος 5. Αυτό μπορεί να φαίνεται περίεργο, αλλά σημαίνει ότι ο κώδικας μπορεί να μεταφερθεί σε μεγαλύτερες επιλογές όπως οι εκδόσεις 28 και 40 ακίδων και εξακολουθεί να λειτουργεί.

Βήμα 6: Δημιουργήστε το κύκλωμα Rx

Δημιουργήστε το κύκλωμα Rx
Δημιουργήστε το κύκλωμα Rx

Αυτό το κύκλωμα είναι σχεδόν το ίδιο με τον πομπό - απλά δεν έχει διακόπτη.

Βήμα 7: Γράψτε λίγο κώδικα VB. Net

Γράψτε λίγο κώδικα VB. Net
Γράψτε λίγο κώδικα VB. Net

Θα μπορούσα να έχω συντάξει τον κώδικα και να διαθέσω αυτό το πρόγραμμα ως μεταγλωττισμένο.exe, αλλά η εκμάθηση κάποιου VB. Net είναι τόσο απίστευτα χρήσιμη που αξίζει να το περνάτε βήμα βήμα. Εάν το χρησιμοποιείτε σε δύο διαφορετικούς υπολογιστές, μπορείτε να δημιουργήσετε το πρόγραμμα σε.exe που δημιουργεί ένα μικρό πρόγραμμα εγκατάστασης που μπορεί να εγκατασταθεί στον δεύτερο υπολογιστή. Or μπορείτε να βάλετε το VB. Net και στους δύο υπολογιστές και να εκτελέσετε τα προγράμματα μέσα από το VB. Net. Ας υποθέσουμε ότι γνωρίζετε πώς να ανοίξετε ένα νέο έργο VB.net από τα βήματα 7 και 8 του https://www.instructables.com/id/S1MMU2XF82EU2GT /Στην κενή φόρμα ας προσθέσουμε τα ακόλουθα στοιχεία από τη γραμμή εργαλείων και τα τοποθετούμε στη φόρμα στις τοποθεσίες όπως φαίνεται. Για τις ετικέτες και τα πλαίσια κειμένου, αλλάξτε την ιδιότητα κειμένου (πάνω κάτω δεξιά) σε αυτό που χρειάζεται. Μην ανησυχείτε για τις ρυθμίσεις του χρονοδιακόπτη - θα τις αλλάξουμε στον κώδικα, αλλά φροντίστε να βάλετε ένα χρονόμετρο. Μπορείτε να μετακινήσετε τα πράγματα και δεν υπάρχουν πραγματικοί κανόνες σχετικά με την τοποθεσία. Το μεγάλο πλαίσιο κειμένου είναι ένα RichTextBox και τα τρία μικρότερα είναι συνηθισμένα Textboxes. Όσον αφορά τη σειρά, ξεκινάμε από την κορυφή της φόρμας και προχωράμε προς τα κάτω. Εάν αφήσετε κάτι έξω, θα υπάρξει ένα σφάλμα στον κώδικα που θα πρέπει να δώσει κάποια ένδειξη. Επιλέξτε ένα τυχαίο όνομα αρχείου για το Textbox3 - αυτό είναι το όνομα της μοναδικής ομάδας επιλογών σας στον διακομιστή ftp και προφανώς αν όλοι χρησιμοποιούμε ίδιο όνομα τότε τα δεδομένα θα μπερδευτούν! Συγγνώμη για τις παύλες σε αυτόν τον πίνακα-η τοποθέτηση κενών χάνει τη μορφοποίηση στον πίνακα. ------------------------------ NotesLabel1 ------------------ Picaxe CommunicationsLabel2 ------------------ FTP StatusLabel3 ------------------ StatusLabel4 ---------- -------- Καταχωρητές PicaxeLabel5 ------------------ Εγγραφή 0-13Label6 ------------------ Τιμή 0-255Label7 ------------------ Όνομα αρχείου συνδέσμου FTPTextbox1 ---------------- 0 -------- ------------------------------------------ 0 είναι μηδέν και όχι OTextbox2 ----- ----------- 0Textbox3 ---------------- Όνομα αρχείου --------------------- ---------- Αλλαγή ώστε να μην υπάρχουν συγκρούσεις! Button1 ------------------ ModifyRichtextbox1 Picturebox1 Picturebox2 Timer1

Βήμα 8: Προσθέστε κάποιο κώδικα

Προσθήκη κάποιου κώδικα
Προσθήκη κάποιου κώδικα

Δείτε το βήμα 12 του άλλου οδηγού για τη θέση του κουμπιού που περιστρέφεται μεταξύ προβολής φόρμας και προβολής κώδικα. Μεταβείτε στην προβολή κώδικα και επικολλήστε τον ακόλουθο κώδικα. Τα χρώματα θα πρέπει να εμφανιστούν ξανά όλα όπως στο στιγμιότυπο οθόνης. Εάν μια γραμμή δεν έχει αντιγραφεί σωστά λόγω προβλήματος με την αναδίπλωση λέξεων, τότε διαγράψτε τα κενά μέχρι να εξαφανιστεί το μήνυμα σφάλματος. Προσπάθησα να σχολιάσω τις περισσότερες γραμμές, ώστε ο κώδικας να έχει τουλάχιστον νόημα. Διαγράψτε το bit της δημόσιας τάξης, ώστε το κείμενο να είναι κενό πριν το επικολλήσετε - αυτός ο κώδικας έχει ήδη μια δημόσια τάξη. Εάν ένα αντικείμενο όπως ένα πλαίσιο κειμένου δεν έχει τοποθετηθεί στη φόρμα ή έχει λάθος όνομα, τότε θα εμφανιστεί στον κώδικα κειμένου με μια περίεργη μπλε γραμμή από κάτω. πράγματα όπως αριστερά (και δεξιά (για stringsPublic Class1 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) "for statement sleep Καθώς το Byte «καταχωρεί b0 σε b13 Dim ModifyFlag As Boolean Private Sub Form1_Load (Αποστολέας ByVal ως αντικείμενο, ByVal e As System. EventArgs) χειρίζεται το Me. Load» χρειάζεται όλα αυτά τα σκουπίδια -.net το τοποθετεί αυτόματα όταν πηγαίνετε form1events παραπάνω/φόρτωση Timer1. Enabled = True "βάλτε τον κωδικό ως προεπιλογή σε false όταν δημιουργείται Timer1. Interval = 20000" κάθε 20 δευτερόλεπτα PictureBox1. BackColor = Color. Gray "ξεκινά με τα κουτιά comms γκρι PictureBox2. BackColor = Color. Gray ModifyFlag = False" εάν τροποποιήσετε μια τιμή χειροκίνητα, τότε s kip download RichTextBox1. Multiline = True 'έτσι μπορεί να εμφανίζονται περισσότερες από μία γραμμές Call DisplayPicaxeRegisters ()' εμφανίζει τους 14 καταχωρητές Call ReadFTPFilename () 'διαβάζει το όνομα αρχείου από το δίσκο (αποθηκεύεται κάθε 20 δευτερόλεπτα) Τέλος υποδιαιρέσεως SerialTxRx () Dim DataPacket () 0 έως 17) Ως Byte "ολόκληρο το πακέτο δεδομένων" Δεδομένα "+14 byte Dim i Ως ακέραιος" i είναι πάντα χρήσιμο για βρόχους κλπ. Για i = 0 έως 3 DataPacket (i) = Asc (Mid ("Data", i + 1, 1)) 'προσθέστε τη λέξη "Δεδομένα" στο πακέτο Next For i = 0 To 13 DataPacket (i + 4) = PicaxeRegisters (i)' προσθέστε όλα τα byte στο πακέτο Next If serialPort. IsOpen Στη συνέχεια serialPort. Close () 'μόνο σε περίπτωση που έχει ήδη ανοίξει Τέλος αν δοκιμάσετε με serialPort. PortName = "COM1"' Οι περισσότεροι νέοι υπολογιστές προεπιλεγμένοι στο com1 αλλά κάθε υπολογιστής πριν από το 1999 με σειριακό ποντίκι πιθανότατα θα είναι προεπιλεγμένος σε com2. BaudRate = 2400 '2400 είναι η μέγιστη ταχύτητα για μικροί πικαξ. ds λήγει σε 1 δευτερόλεπτο εάν δεν υπάρχει απόκριση. Ανοίξτε () 'ανοίξτε τη σειριακή θύρα. DiscardInBuffer ()' διαγράψτε το buffer εισόδου. Γράψτε (DataPacket, 0, 18) 'στείλτε τον πίνακα πακέτου δεδομένων Call Sleep (300)' 100 χιλιοστά του δευτερολέπτου ελάχιστη αναμονή για την επιστροφή των δεδομένων και περισσότερα εάν η ροή δεδομένων είναι μεγαλύτερη. Διαβάστε (DataPacket, 0, 18) "διαβάστε ξανά στον πίνακα πακέτων δεδομένων. Κλείστε ()" κλείστε τη σειριακή θύρα Τέλος με Για i = 4 έως 17 PicaxeRegisters (i - 4) = DataPacket (i) 'μετακινήστε το νέο πακέτο δεδομένων στον πίνακα καταχωρητών Next PictureBox1. BackColor = Color. GreenYellow' working Catch ex As Exception PictureBox1. BackColor = Color. Red 'not End End Try End Sub Sub FTPUpload (Όνομα αρχείου ByVal ως συμβολοσειρά) Dim localFile As String «τόπος αποθήκευσης δεδομένων Dim remoteFile As String» το όνομα του αρχείου είναι κεφαλαίο, αυτό είναι πραγματικά σημαντικό Const host As String = "ftp://ftp.0catch.com" "σημειώστε ότι το 0 είναι μηδέν χαρακτήρας O Const username As String = "picaxe.0catch.com" Const password As String = "picaxetester" Dim URI As String localFile = Όνομα αρχείου 'ίσως δεν χρειάζεται, αλλά αν ορίσετε μια τοποθεσία π.χ. c: / mydirectory μπορείτε να προσθέσετε εύκολα με αυτόν τον τρόπο. Net. FtpWebRequest = CType (System. Net. FtpWebRequest. Create (URI), System. Net. FtpWebRequest) ftp. Credentials = New System. Net. NetworkCredential (όνομα χρήστη, κωδικός πρόσβασης) 'log in ftp. KeepAlive = False' θα είναι αποσύνδεση μόλις τελειώσει ftp. UseBinary = Αληθινή «χρήση δυαδικών comms ftp. Timeout = 9000» χρονικό όριο μετά από 9 δευτερόλεπτα - πολύ χρήσιμο καθώς το ftp μερικές φορές πεθαίνει »(και η συχνότητα ρολογιού των 20 δευτερολέπτων) μπορεί να χρειαστεί να είναι πιο αργή για συνδέσεις κλήσης ftp. Μέθοδος = System. Net. WebRequestMethods. Ftp. UploadFile 'ξεκινήστε την αποστολή του αρχείου Dim fs As New FileStream (localFile, FileMode. Open)' ανοιχτό τοπικό αρχείο Dim αρχείο αρχείων περιεχομένου (fs. Length) As Byte 'διαβάζεται στη μνήμη fs. Read (filecontents, 0, fs. Length) fs. Close () 'κλείστε το αρχείο Dim requestStream As Stream = ftp. GetRequestStream ()' έναρξη αίτησης συνδέσμου ftpSt ream. Write (filecontents, 0, filecontents. Length) 'send it requestStream. Close ()' κλείστε το σύνδεσμο PictureBox2. BackColor = Color. GreenYellow 'αλλάξτε το πλαίσιο σε πράσινο για να πείτε ότι λειτούργησε εντάξει Label2. Text = "FTP Connected" κείμενο που λέει ότι συνδέεται Πιάστε 'δεν μπορεί να συνδέσει PictureBox2. BackColor = Color. Red' πλαίσιο στο κόκκινο χωρίς σύνδεση Label2. Text = "Αποτυχία μεταφόρτωσης FTP" κείμενο που λέει ότι η σύνδεση απέτυχε Τέλος Δοκιμάστε Τέλος Sub Sub FTPDownload (Όνομα αρχείου ByVal ως συμβολοσειρά) 'downloads remotefile to localfile Dim localFile As String' χώρος για αποθήκευση δεδομένων Dim remoteFile As String 'το όνομα του αρχείου είναι κεφαλαίο, αυτό είναι πραγματικά σημαντικό Const host As String = "ftp://ftp.0catch.com" Const username As String = "picaxe.0catch.com "Const password As String =" picaxetester "Dim URI As String 'localFile =" C: / " + Filename' αποθηκεύεται στον ριζικό κατάλογο, αλλά μπορεί να αλλάξει αυτό το localFile = Filename ', ώστε να μπορεί να προσθέσει c: / αν χρειάζεται πραγματική τοποθεσία πλήρης διεύθυνση Δοκιμάστε Dim ftp As System. Net. FtpWebRequest = CType (System. Net. FtpWebRequest. Create (URI), System. Net. FtpWebRequest) ftp. Credentials = New System. Net. Net. NetworkCredential (όνομα χρήστη, κωδικός πρόσβασης) 'log in ftp. KeepAlive = False 'θα αποσυνδεθεί μετά την ολοκλήρωση του ftp. UseBinary = True' δυαδική λειτουργία ftp. Timeout = 9000 'χρονικό όριο μετά από 9 δευτερόλεπτα ftp. Method = System. Net. WebRequestMethods. Ftp. DownloadFile' λήψη αρχείου 'διαβασμένο σε κομμάτια ως δεν ξέρω πόσο μεγάλο είναι το αρχείο Χρησιμοποιώντας την απάντηση ως System. Net. FtpWebResponse = CType (ftp. GetResponse, System. Net. FtpWebResponse) Χρήση της απάντησης IO. FileMode. Create) Dim buffer (2047) As Byte Dim read As Integer = 0 Do read = respondStream. Read (buffer, 0, buffer. Length) 'piece from ftp fs. Write (buffer, 0, read)' και εγγραφή στο αρχείο Loop Μέχρι την ανάγνωση = 0 'έως ότου δεν υπάρχουν περισσότερα κομμάτια respondStream. Close ()' κλείστε το αρχείο ftp fs. Flush () 'ξεπλύνετε το fs. Close ()' και κλείστε το e αρχείο Τέλος Χρήση της απάντησης λειτούργησε End Using Catch 'βάλτε κωδικούς σφάλματος εδώ PictureBox2. BackColor = Color. Red' κόκκινο πλαίσιο καθώς δεν λειτούργησε Label2. Text = "FTP Download Fail" (Αποτυχία λήψης FTP) "και μήνυμα για να το πείτε Τέλος Δοκιμάστε End End Private Sub Timer1_Tick (Αποστολέας ByVal Ως System. Object, ByVal e As System. EventArgs) χειρίζεται το χρονόμετρο 1.. Tick If ModifyFlag = False Στη συνέχεια 'αν ο χρήστης άλλαξε ένα byte τότε μην κατεβάσετε το Label3. Text = "Λήψη" System. Windows. Forms. Application. DoEvents () 'τόσο νέο κείμενο ετικέτας εμφανίζει κλήση FTPDownload (TextBox3. Text)' λήψη απομακρυσμένου αρχείου Label3. Text = "Κατεβάστηκε" System. Windows. Forms. Application. DoEvents () Call ReadRemoteFileToRegisters () "αποθηκεύστε τους αριθμούς αρχείων στον πίνακα καταχώρισης Label3. Text = "Talking to picaxe" System. Windows. Forms. Application. DoEvents () Else ModifyFlag = Επαναφορά λανθασμένης σημαίας Τερματισμός αν η κλήση SerialTxRx () 'στείλτε την στο picaxe και διαβάστε την ξανά Label3. Text = "Στάλθηκε και παραλήφθηκε από το picaxe" System. Windows. Forms. Application. DoEvents () Καλέστε DisplayPicaxeRegisters () Καλέστε SaveRegistersToLocalFile () για αποθήκευση αριθμών στο αρχείο Label3. Text = "Uploading" System. Windows. Forms. Application. DoEvents () Call FTPUpload (TextBox3. Text) 'send back up to ftp site called my name Label3. Text = "Resting" Call SaveFTPFilename ()' so read in κατά την επανεκκίνηση End Sub Sub DisplayPicaxeRegisters () Dim i As Integer Dim registernumber As String RichTextBox1. Multiline = True 'έτσι μπορεί να εμφανίσει περισσότερες από μία γραμμές στο πλαίσιο κειμένου RichTextBox1. Clear ()' διαγραφή του πλαισίου κειμένου Για i = 0 έως 13 registernumber = Περικοπή (Str (i)) 'περικοπή κεντρικών κενών Εάν i <10 Τότε registernumber = "0" + registernumber' προσθέστε 0 σε αριθμούς κάτω από 10 Τέλος Εάν RichTextBox1. AppendText (registernumber + "=" + Str (PicaxeRegisters (i)) + Chr (13)) Επόμενο 'chr (13) είναι η επιστροφή μεταφοράς, έτσι η νέα γραμμή Τέλος υπο ιδιωτικού δευτερεύοντος κουμπιού1_Click (αποστολέας ByVal Ως System. Object, ByVal e As System. EventArgs) Κουμπί χειρίζεται 1. Κάντε κλικ στο Dim i As Integer 'έξω από το εύρος πρώτα i = Val (TextBox1. Text) Εάν i <0 Or i> 13 Στη συνέχεια TextBox1. Text = 0 Τέλος εάν i = Val (TextBox2. Text) Εάν i <0 i i> 255 Τότε TextBox2. Text = 0 Τέλος εάν PicaxeRegisters (Val (TextBox1. Text)) = Val (TextBox2. Text) 'αλλάξτε την τιμή Call DisplayPicaxeRegisters ()' και ανανεώστε την οθόνη ModifyFlag = True 'και επόμενος σύνδεσμος ftp παραλείψτε τη λήψη End Sub Sub SaveRegistersToLocalFile ()' αποθηκεύστε τον πίνακα καταχωρητών σε ένα τοπικό αρχείο κειμένου Dim i As Integer FileOpen (1, TextBox3. Text, OpenMode. Output) 'ανοίξτε το αρχείο κειμένου με όνομα στο πλαίσιο κειμένου Για i = 0 έως 13 PrintLine (1, Str (PicaxeRegisters (i))) 'save 14 values Next FileClose (1)' κλείστε το αρχείο End Sub Sub ReadRemoteFileToRegisters () 'διαβάστε το τοπικό αρχείο κειμένου στον πίνακα μητρώου Dim i As Integer Dim LineOfText As String Δοκιμάστε το FileOpen (1, TextBox3. Text, OpenMode. Input) 'διαβάστε το όνομα του απομακρυσμένου αρχείου Για i = 0 έως 13 LineOfText = LineInput (1)' που διαβάζεται στη γραμμή 14 es PicaxeRegisters (i) = Val (LineOfText) 'μετατροπή κειμένου σε τιμές Επόμενο FileClose (1) Catch ex As Exception FileClose (1)' δεν υπάρχει, οπότε μην κάνετε τίποτα Τέλος Δοκιμάστε Τέλος Sub Sub ReadFTPFilename () 'έτσι το όνομα του το απομακρυσμένο αρχείο ftp είναι το ίδιο την επόμενη φορά που θα εκτελεστεί αυτό το πρόγραμμα Dim LineOfText As String Δοκιμάστε το FileOpen (1, "FTPFilename.txt", OpenMode. Input) "ανοίξτε το αρχείο LineOfText = LineInput (1) TextBox3. Text = LineOfText" διαβάστε το όνομα FileClose (1) Catch ex ως Εξαίρεση FileClose (1) Τέλος Δοκιμάστε το Τέλος Sub Sub SaveFTPFilename () FileOpen (1, "FTPFilename.txt", OpenMode. Output) 'αποθηκεύστε το απομακρυσμένο όνομα αρχείου ftp PrintLine (1, TextBox3. Text) FileClose (1) Τέλος κατηγορίας SubEnd

Βήμα 9: Εκτελέστε το πρόγραμμα και στους δύο υπολογιστές

Εκτελέστε το πρόγραμμα και στους δύο υπολογιστές
Εκτελέστε το πρόγραμμα και στους δύο υπολογιστές

Ξεκινήστε να τρέχετε το πρόγραμμα κάνοντας κλικ στο πράσινο τρίγωνο στο πάνω μέρος της οθόνης - το κουμπί "Έναρξη εντοπισμού σφαλμάτων". Τίποτα δεν θα συμβεί για 20 δευτερόλεπτα και στη συνέχεια το πρόγραμμα θα επιχειρήσει να συνδεθεί με τον διακομιστή ftp και θα επιχειρήσει να συνδεθεί με την επιλογή. Τα κιβώτια εικόνων θα γίνουν κόκκινα ή πράσινα. Η τοποθεσία ftp είναι ένας δωρεάν ιστότοπος και ο καθένας μπορεί να το χρησιμοποιήσει, αλλά πρέπει να χρησιμοποιήσετε διαφορετικό όνομα αρχείου ftp εργασίας (το δικό μου είναι DoctorAcula1) αλλιώς θα μπορούσαμε όλοι να καταλήξουμε στα δεδομένα του άλλου εάν χρησιμοποιούμε το ίδιο όνομα αρχείου! Αν σας αρέσει, μπορείτε τελικά να αποκτήσετε τον δικό σας ιστότοπο ftp - απλώς αλλάξτε την τοποθεσία ftp, το όνομα χρήστη και τον κωδικό πρόσβασης σε δύο σημεία στον κώδικα από τον ιστότοπό μου 0Catch. Οι περισσότεροι ιστότοποι επιτρέπουν ftp. Πολλοί υπολογιστές μπορούν να έχουν πρόσβαση στο ίδιο αρχείο ftp - ο διακομιστής αρχείων ftp ταξινομεί με τη σειρά που συμβαίνουν αυτά. Περιστασιακά υπάρχουν συγκρούσεις δεδομένων ή αναστολή λειτουργίας και αυτά φαίνεται να συμβαίνουν κάθε 20 αρχεία που διαβάζονται. Υπάρχει ένα χρονικό όριο στον κώδικα εάν συμβεί αυτό, ώστε να μην επιστρέψει δεδομένα παρά κατεστραμμένα δεδομένα. Η χρήση ευρυζωνικής σύνδεσης με ταχύτητα μεταφόρτωσης 128kbs σημαίνει ότι η μεταφόρτωση αρχείου διαρκεί περίπου 3 δευτερόλεπτα, αλλά μερικές φορές έως και 8 δευτερόλεπτα, τα περισσότερα εκ των οποίων αναλαμβάνονται στη χειραψία και όχι στη μεταφορά δεδομένων. Αυτό ρυθμίζει το χρονοδιακόπτη1 τουλάχιστον 20 δευτερόλεπτα, λαμβάνοντας υπόψη τη λήψη, τη μεταφόρτωση και τη συνομιλία με την επιλογή. Με πολύ γρήγορη ευρυζωνική σύνδεση μπορεί να μπορείτε να συντομεύσετε τον χρόνο κύκλου. Μπορείτε να αλλάξετε μητρώο χειροκίνητα στο πρόγραμμα VB. Εάν το κάνετε, ο επόμενος κύκλος χρονοδιακόπτη παραλείπει τη λήψη από τον ιστότοπο ftp και στέλνει τα νέα δεδομένα στην επιλογή και μετά τα διαβάζει και τα ανεβάζει. Τα νέα δεδομένα βρίσκουν έτσι τον δρόμο τους σε όλα τα picax που συνδέονται με αυτήν την ομάδα. Αυτό είναι χρήσιμο για τον εντοπισμό σφαλμάτων και/ή για τη σύνδεση λογισμικού υπολογιστή στον βρόχο υλικού του μικροελεγκτή. Οι ιστότοποι μπορούν επίσης να έχουν πρόσβαση στον βρόχο υλικού χρησιμοποιώντας σενάριο PERL ή παρόμοιο για να γράψουν ένα νέο αρχείο στον ιστότοπο ftp. Αυτό το στιγμιότυπο οθόνης τραβήχτηκε με το τσιπ Tx, ο διακόπτης ήταν ενεργοποιημένος και ο καταχωρητής b0 = to 1 είχε σταλεί στο τσιπ Rx το οποίο είχε επίσης αλλάξει τον καταχωρητή b1 σε 1 επίσης. Το led ανάβει και στις δύο σανίδες. Αυτή είναι μια ασήμαντη εφαρμογή, αλλά είναι εύκολο να ενεργοποιήσετε μια αντλία 3,6Kw αντί για led. Μερικές ακόμη ιδέες βρίσκονται στη διεύθυνση https://drvernacula.topcities.com/, συμπεριλαμβανομένης της σύνδεσης επιλογών μέσω ραδιοφωνικών συνδέσεων με ηλιακή ενέργεια. Με ραδιοφωνικούς συνδέσμους συν το Διαδίκτυο, είναι δυνατό οι «Μηχανές» να φτάσουν σε πολλές γωνιές του πλανήτη. Υπάρχουν μερικές ιδέες γύρω από το φόρουμ picaxe σχετικά με την περαιτέρω προώθηση αυτής της ιδέας και την αντικατάσταση του υπολογιστή και του ιστότοπου ftp με ειδικά τσιπ διακομιστή ιστού που συνδέονται απευθείας σε δρομολογητή. Σαφώς αυτό θα μείωνε την κατανάλωση ενέργειας ενός συνδέσμου. Εάν ενδιαφέρεστε για περαιτέρω συζητήσεις, δημοσιεύστε στα σχόλια Intstructable και/ή στο φόρουμ picaxe. Dr James MoxhamΑδελαΐδα, Νότια Αυστραλία

Βήμα 10: Στιγμιότυπα οθόνης του κώδικα

Στιγμιότυπα οθόνης του Κώδικα
Στιγμιότυπα οθόνης του Κώδικα

Κατόπιν αιτήματος, εδώ είναι μια σειρά από στιγμιότυπα οθόνης του κώδικα vb.net με όλη τη μορφοποίηση στη θέση του. Αυτός ο κώδικας στην πραγματικότητα αντιγράφηκε πίσω από αυτό το εκπαιδευτικό και η μορφοποίηση εμφανίστηκε ξανά αυτόματα. Θα ήταν καλύτερο να αντιγράψετε και να επικολλήσετε το κείμενο παρά να προσπαθήσετε να διαβάσετε αυτές τις εικόνες, αλλά αυτές θα είναι χρήσιμες εάν βρίσκεστε σε ένα internet cafe και δεν μπορείτε να εγκαταστήσετε το vb.net.

Βήμα 11: Στιγμιότυπο οθόνης2

Στιγμιότυπο οθόνης2
Στιγμιότυπο οθόνης2

Στιγμιότυπο οθόνης 2

Βήμα 12: Στιγμιότυπο οθόνης 3

Στιγμιότυπο οθόνης 3
Στιγμιότυπο οθόνης 3

Στιγμιότυπο οθόνης 3

Βήμα 13: Στιγμιότυπο οθόνης 4

Στιγμιότυπο οθόνης 4
Στιγμιότυπο οθόνης 4

Στιγμιότυπο οθόνης 4

Βήμα 14: Στιγμιότυπο οθόνης 5

Στιγμιότυπο οθόνης 5
Στιγμιότυπο οθόνης 5

Στιγμιότυπο οθόνης 5

Βήμα 15: Στιγμιότυπο οθόνης 6

Στιγμιότυπο οθόνης 6
Στιγμιότυπο οθόνης 6

Στιγμιότυπο οθόνης 6

Συνιστάται: