Isi kandungan:

NODEMCU LUA ESP8266 Dengan MCP23008 8 Bit Port Expander IC: 6 Langkah
NODEMCU LUA ESP8266 Dengan MCP23008 8 Bit Port Expander IC: 6 Langkah

Video: NODEMCU LUA ESP8266 Dengan MCP23008 8 Bit Port Expander IC: 6 Langkah

Video: NODEMCU LUA ESP8266 Dengan MCP23008 8 Bit Port Expander IC: 6 Langkah
Video: Получение дополнительных выходов на NodeMCU (ESP8266) с помощью сдвигового регистра 74HC595. 2024, November
Anonim
NODEMCU LUA ESP8266 Dengan MCP23008 8 Bit Port Expander IC
NODEMCU LUA ESP8266 Dengan MCP23008 8 Bit Port Expander IC

MCP23008 adalah 8-Bit I / O Expander dengan Serial Interface dan beroperasi antara 1.8 dan 5.5 volt, jadi sangat sesuai untuk ESP8266, Arduino, Raspberry Pi, PIC Chips dan banyak lagi.

Sekiranya anda telah melihat Instructable saya yang lain di MCP23017, anda mungkin tertanya-tanya mengapa saya juga melakukan satu untuk MCP23008, kerana ia adalah versi yang lebih kecil dari perkara yang sama.

Sebabnya adalah kerana daftarnya berbeza dari segi nama dan nombor dan saya ingin menunjukkan cara menggunakan modul perpustakaan siap pakai. Tidak semua orang mahir ketika menggunakan NodeMCU lua, jadi saya ingin menunjukkan aspek pengaturcaraan ini dan juga cara menggunakan MCP23008.

Perpustakaan dan program boleh didapati di github.com.

Lembar data untuk MCP23008 tersedia dari Microchip.

Langkah 1: Pendawaian MCP23008

Pendawaian MCP23008
Pendawaian MCP23008

IC MCP23008 adalah susun atur yang sederhana dan membina papan sangat mudah untuknya. Anda juga boleh memasang litar di papan roti.

Pin Sambungan di papan saya

  • Pin 18 (VDD) hingga 3v3
  • Pin 9 (VSS) ke GND
  • Pin 7 (NC) ke GND (Tidak perlu)
  • Pin 1 (SCL) ke ESP GPIO2
  • Pin 2 (SDA) ke ESP GPIO0
  • Pin 5 (A0) ke GND
  • Pin 4 (A1) ke GND
  • Pin 3 (A2) ke GND
  • Pin 6 (RESET) hingga 3v3

Sambungkan pin untuk dibaca ke Gnd di Port A (pin 10 - 17)

Catatan: di sini semua pin alamat disambungkan ke Gnd untuk menggunakan MCP23008 di alamat 0x20 pada bas alamat I2C.

Sekiranya anda menggunakan alamat 0x21 maka A0 akan disambungkan ke 3.3V, dengan A1 & A2 disambungkan ke Gnd.

Begitu juga jika menggunakan alamat 0x22 maka A1 harus disambungkan ke 3.3V dengan A0 dan A2 disambungkan ke Gnd.

dan lain-lain…

Langkah 2: Membina Papan

Membina Papan
Membina Papan

Saya menggunakan papan jalur Vero 25 mm x 64 mm (9 baris x 25 lubang) untuk membina papan saya. Ia agak ketat, tetapi kerana kebanyakan pin yang anda perlukan berada di kedua-dua sisi IC, ia cukup untuk apa yang harus dilakukan.

Saya telah menggunakan 8 pin dan 8 soket header untuk port A supaya saya dapat memasang pelbagai modul saya dan juga pendawaian lain untuk projek yang berbeza. Saya telah menambah pin Gnd dan 3.3V tambahan kerana saya mendapati selalu kekurangan ini semasa menyambungkan modul bersama-sama.

Langkah 3: Menggunakan Modul Perpustakaan

Menggunakan Modul Perpustakaan
Menggunakan Modul Perpustakaan

Modul perpustakaan biasanya mengandungi pilihan sub-rutin, fungsi dan pemboleh ubah yang dapat diakses oleh program lain. Program itu sendiri tidak berjalan, tetapi fungsinya dapat diakses oleh program panggilan. Ini bermaksud bahawa anda dapat memiliki sub-rutin di dalam perpustakaan dan memanggilnya setiap kali anda memerlukannya, membuat program panggilan kecil. Ini menjadi lebih berharga jika anda mempunyai banyak program yang menggunakan sub-rutin yang sama, anda tidak perlu memasukkan sub-rutin dalam setiap program.

Catatan: program mcp23008.lua perlu dimuat ke dalam memori ESP8266 seperti program lain.

Saya telah memasukkan program github.com di sini dan juga program mudah (test.lua) untuk menunjukkan bahawa perpustakaan berfungsi.

Terdapat sekurang-kurangnya 2 cara untuk memasukkan perpustakaan dalam program anda.

memerlukan ("mcp23008")

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

atau

mcp = memerlukan ("mcp23008")

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

Kedua-dua perkara di atas melakukan perkara yang sama, tetapi kaedah kedua membolehkan anda menggunakan pemboleh ubah anda sendiri dan bukannya nama program.

Langkah 4: Program Kereta Kitt

Program Kereta Kitt
Program Kereta Kitt

Saya telah memasukkan program KittCar23008.lua dan KittLib.lua yang menggunakan perpustakaan untuk menunjukkan perbezaan cara menulis program dengan cara ini. Kedua-dua program melakukan perkara yang sama.

Palam masuk 8 LED boleh didapati dari Ebay sebagai kit dan dikenali sebagai Kit DIY LED 8 Saluran Aliran Air Aliran, 99 p dari China. Anda mesti menyelesaikannya sendiri.

Catatan: Sekiranya anda menghadapi masalah semasa menjalankan program KittLib.lua, cuba sambungkan pin RESET MCP23008 ke Gnd sebentar. Saya tahu ini akan memberi litar pintas langsung (kerana disambungkan ke 3.3V) dan anda harus menetapkan semula yang lain. Ia juga berfungsi dengan menghubungkan ke Gnd melalui perintang 10 ohm, mungkin cara yang lebih baik untuk melakukannya.

Saya juga mendapati bahawa KittLib.lua akan berjalan tanpa masalah setelah menjalankan test.lua (Jangan tanya saya mengapa?)

Saya telah mencuba pelbagai cara untuk menyelesaikan masalah program KittLib.lua, tetapi setakat ini tidak dapat mencari alasan logik mengapa ia terhenti. Adakah seseorang mempunyai idea?

Saya tidak menulis semua program ini sendiri, jadi saya tidak dapat mengatakan mengapa ada masalah, walaupun setelah melihat pengekodan, nampaknya tidak ada yang jelas salah.

Langkah 5: 7 Segmen LED

LED Segmen 7
LED Segmen 7

Seperti program KittCar.lua di atas, saya telah memasukkan program yang bergantung kepada perpustakaan dan mandiri untuk memacu paparan LED 7 segmen.

Sekali lagi, kedua-dua program melakukan perkara yang sama, tetapi menunjukkan bagaimana menggunakan modul perpustakaan sama ada yang ditulis oleh anda sendiri atau orang lain.

Langkah 6: Kesimpulannya

Kesimpulannya
Kesimpulannya

Saya telah cuba menunjukkan cara menggunakan modul kod dalam lingkungan Lua, dan menerapkannya pada IC tertentu pada masa yang sama.

Walaupun saya menghadapi masalah untuk melakukan ini, saya rasa cukup untuk menunjukkan bagaimana modul ini berfungsi dan juga menunjukkan aplikasi kehidupan sebenar.

Disyorkan: