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

NODEMCU LUA ESP8266 Με MCP23008 8 Bit θύρα Expander IC: 6 βήματα
NODEMCU LUA ESP8266 Με MCP23008 8 Bit θύρα Expander IC: 6 βήματα

Βίντεο: NODEMCU LUA ESP8266 Με MCP23008 8 Bit θύρα Expander IC: 6 βήματα

Βίντεο: NODEMCU LUA ESP8266 Με MCP23008 8 Bit θύρα Expander IC: 6 βήματα
Βίντεο: Introduction to NodeMCU ESP8266 WiFi Development board with HTTP Client example- Robojax 2024, Νοέμβριος
Anonim
NODEMCU LUA ESP8266 Με IC επέκτασης θύρας 8 bit MCP23008
NODEMCU LUA ESP8266 Με IC επέκτασης θύρας 8 bit MCP23008

Το MCP23008 είναι ένα 8-Bit I/O Expander με σειριακή διεπαφή και λειτουργεί μεταξύ 1,8 και 5,5 βολτ, επομένως είναι ιδανικό για τα ESP8266, Arduino, Raspberry Pi, PIC Chips και άλλα.

Αν έχετε δει το άλλο μου Instructable στο MCP23017, ίσως αναρωτιέστε γιατί κάνω επίσης ένα για το MCP23008, καθώς είναι πραγματικά μια μικρότερη έκδοση του ίδιου πράγματος.

Οι λόγοι είναι ότι οι καταχωρητές του είναι διαφορετικοί τόσο στο όνομα όσο και στον αριθμό και θα ήθελα να δείξω πώς να χρησιμοποιώ μια έτοιμη μονάδα βιβλιοθήκης. Δεν είναι όλοι έμπειροι όταν χρησιμοποιούν το NodeMCU lua, οπότε θα ήθελα να δείξω αυτήν την πτυχή του προγραμματισμού καθώς και τον τρόπο χρήσης του MCP23008.

Η βιβλιοθήκη και τα προγράμματα είναι διαθέσιμα στη διεύθυνση github.com.

Το φύλλο δεδομένων για το MCP23008 είναι διαθέσιμο από το Microchip.

Βήμα 1: Καλωδίωση του MCP23008

Καλωδίωση του MCP23008
Καλωδίωση του MCP23008

Το IC MCP23008 είναι απλής διάταξης και η κατασκευή ενός πίνακα είναι πραγματικά εύκολη γι 'αυτό. Μπορείτε επίσης να ρυθμίσετε το κύκλωμα σε μια σανίδα ψωμιού.

Συνδέσεις καρφιτσών στον πίνακα μου

  • Καρφίτσα 18 (VDD) σε 3v3
  • Καρφίτσα 9 (VSS) στο GND
  • Καρφίτσα 7 (NC) σε GND (Δεν είναι απαραίτητο)
  • Καρφίτσα 1 (SCL) στο ESP GPIO2
  • Καρφίτσα 2 (SDA) στο ESP GPIO0
  • Καρφίτσα 5 (A0) στο GND
  • Καρφίτσα 4 (A1) στο GND
  • Καρφίτσα 3 (A2) στο GND
  • Καρφίτσα 6 (ΕΠΑΝΑΦΟΡΑ) σε 3v3

Συνδέστε τις καρφίτσες για ανάγνωση στο Gnd στη θύρα Α (καρφίτσες 10 - 17)

Σημείωση: εδώ όλες οι ακίδες διευθύνσεων είναι συνδεδεμένες με το Gnd για χρήση του MCP23008 στη διεύθυνση 0x20 στο δίαυλο διευθύνσεων I2C.

Εάν χρησιμοποιούσατε τη διεύθυνση 0x21, τότε το A0 θα ήταν συνδεδεμένο σε 3.3V, με το A1 & A2 συνδεδεμένο στο Gnd.

Ομοίως, εάν χρησιμοποιείτε τη διεύθυνση 0x22, τότε το A1 θα πρέπει να συνδεθεί σε 3.3V με A0 και A2 συνδεδεμένο στο Gnd.

και τα λοιπά…

Βήμα 2: Κατασκευή πίνακα

Κατασκευή πίνακα
Κατασκευή πίνακα

Χρησιμοποίησα έναν πίνακα λωρίδας Vero 25 mm x 64 mm (9 σειρές x 25 οπές) για την κατασκευή της σανίδας μου. Είναι λίγο σφιχτό, αλλά καθώς οι περισσότερες καρφίτσες που χρειάζεστε βρίσκονται και στις δύο πλευρές του IC, είναι επαρκές για αυτό που πρέπει να κάνει.

Έχω χρησιμοποιήσει 8 ακίδες και 8 υποδοχές κεφαλίδας για τη θύρα Α, ώστε να μπορώ να συνδέσω τις διάφορες μονάδες μου, καθώς και άλλες καλωδιώσεις για διαφορετικά έργα. Έχω προσθέσει επιπλέον καρφίτσες Gnd και 3.3V καθώς διαπιστώνω ότι υπάρχει πάντα έλλειψη αυτών κατά τη σύνδεση των μονάδων μεταξύ τους.

Βήμα 3: Χρήση μονάδας βιβλιοθήκης

Χρήση μονάδας βιβλιοθήκης
Χρήση μονάδας βιβλιοθήκης

Οι ενότητες βιβλιοθήκης συνήθως περιέχουν μια επιλογή από υπορουτίνες, συναρτήσεις και μεταβλητές στις οποίες μπορεί να έχει πρόσβαση ένα άλλο πρόγραμμα. Το ίδιο το πρόγραμμα δεν εκτελείται, αλλά οι λειτουργίες του είναι προσβάσιμες από το πρόγραμμα κλήσης. Αυτό σημαίνει ότι μπορείτε να έχετε τις υπορουτίνες σας μέσα στη βιβλιοθήκη και να τις καλείτε όποτε τις χρειάζεστε, δημιουργώντας ένα μικρό πρόγραμμα κλήσεων. Γίνεται πιο πολύτιμο εάν έχετε πολλά διαφορετικά προγράμματα που χρησιμοποιούν τις ίδιες υπορουτίνες, δεν χρειάζεται να συμπεριλάβετε τις υπορουτίνες σε κάθε πρόγραμμα.

Σημείωση: το πρόγραμμα mcp23008.lua πρέπει να φορτωθεί στη μνήμη ESP8266 όπως και τα άλλα προγράμματα.

Έχω συμπεριλάβει τα προγράμματα github.com εδώ καθώς και ένα απλό πρόγραμμα (test.lua) για να δείξω ότι η βιβλιοθήκη λειτουργεί.

Υπάρχουν τουλάχιστον 2 τρόποι για να συμπεριλάβετε τη βιβλιοθήκη στο πρόγραμμά σας.

απαιτούν ("mcp23008")

mcp23008. αρχή (0x0, gpio2, gpio0, i2c. SLOW)

ή

mcp = απαιτεί ("mcp23008")

mcp.begin (0x0, gpio2, gpio0, i2c. SLOW)

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

Βήμα 4: Πρόγραμμα Kitt Car

Πρόγραμμα Kitt Car
Πρόγραμμα Kitt Car

Έχω συμπεριλάβει το πρόγραμμα KittCar23008.lua και το KittLib.lua που χρησιμοποιεί τη βιβλιοθήκη για να δείξει τις διαφορές στον τρόπο γραφής προγραμμάτων με αυτόν τον τρόπο. Και τα δύο προγράμματα κάνουν το ίδιο πράγμα.

Το 8 LED plug -in διατίθεται από το Ebay ως κιτ και είναι γνωστό ως 8 DIY Kit Flowing Water Light LED DIY Kit, 99p από την Κίνα. Πρέπει να το κολλήσετε μόνοι σας.

Σημείωση: Εάν αντιμετωπίζετε πρόβλημα κατά την προσπάθεια εκτέλεσης του προγράμματος KittLib.lua, δοκιμάστε να συνδέσετε στιγμιαία τον ακροδέκτη MCP23008 RESET στο Gnd. Ξέρω ότι αυτό θα δώσει ένα άμεσο βραχυκύκλωμα (καθώς είναι συνδεδεμένο σε 3.3V) και πρέπει να επαναφέρετε όλα τα άλλα. Λειτουργεί επίσης συνδέοντας το Gnd μέσω αντίστασης 10 ohm, πιθανότατα ένας καλύτερος τρόπος για να το κάνετε.

Διαπίστωσα επίσης ότι το KittLib.lua θα λειτουργούσε χωρίς προβλήματα μετά τη λειτουργία του test.lua (Μην με ρωτήσετε γιατί;)

Δοκίμασα διάφορους τρόπους για να επιλύσω το πρόβλημα του προγράμματος KittLib.lua, αλλά μέχρι στιγμής δεν μπορώ να βρω κάποιον λογικό λόγο για τον οποίο να καταρρέει. Έχει κανείς ιδέα;

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

Βήμα 5: 7 LED τμήμα

7 τμήμα LED
7 τμήμα LED

Όπως και με το πρόγραμμα KittCar.lua παραπάνω, έχω συμπεριλάβει ένα αυτόνομο και ένα πρόγραμμα που εξαρτάται από τη βιβλιοθήκη για την οδήγηση μιας οθόνης LED 7 τμημάτων.

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

Βήμα 6: Συμπέρασμα

συμπέρασμα
συμπέρασμα

Προσπάθησα να δείξω πώς να χρησιμοποιώ μονάδες κώδικα μέσα στο περιβάλλον Lua και να το εφαρμόζω σε ένα συγκεκριμένο IC ταυτόχρονα.

Παρόλο που είχα πρόβλημα να το κάνω αυτό, νομίζω ότι υπάρχουν αρκετά για να δείξουμε πώς λειτουργούν αυτές οι ενότητες, καθώς και η επίδειξη μιας πραγματικής εφαρμογής.

Συνιστάται: