Isi kandungan:
- Langkah 1: Petua untuk Ingat
- Langkah 2: MCP23016
- Langkah 3: Alamat
- Langkah 4: Perintah
- Langkah 5: Kategori
- Langkah 6: Struktur untuk Komunikasi
- Langkah 7: Program
- Langkah 8: MCP23016
- Langkah 9: ESP-01
- Langkah 10: Pemasangan ESP01
- Langkah 11: Perpustakaan dan Pemboleh ubah
- Langkah 12: Persediaan
- Langkah 13: Gelung
- Langkah 14: ParserData
- Langkah 15: ConfigurePort
- Langkah 16: WritePinData
- Langkah 17: WriteBlockData & SetupWiFi
- Langkah 18: Aplikasi
- Langkah 19: Muat turun
Video: Automasi Kos Rendah Dengan ESP01: 19 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Hari ini, kita akan membincangkan automasi menggunakan ESP01 dengan 16 relay. Ini adalah model reka bentuk yang sangat murah di mana anda dapat melipatgandakan modul dan mendapatkan sehingga 128 relai, kerana mungkin untuk menempatkan sehingga lapan pengembang port dalam mikrokontroler ini.
Di litar kami, anda akan mempunyai aplikasi pada telefon pintar yang berkomunikasi dengan ESP01. Ia akan mempunyai expander dengan 16 port, masing-masing disambungkan ke relay. Kami juga mempunyai sumber laras 3v3. Oleh itu, kami akan mengawal modul relay 16 saluran menggunakan ESP01 melalui aplikasi Android, yang saya sediakan untuk anda.
Langkah 1: Petua untuk Ingat
Penting untuk diperhatikan, kawan-kawan, bahawa saya menggunakan cip ini dalam litar yang disebut MCP23016. Anda juga perlu menonton video EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO, di mana saya menguji peranti dan menunjukkan bahawa ia berfungsi untuk ketiga-tiga jenis papan ini.
Langkah 2: MCP23016
Di sini kita mempunyai gambar MCP23016, yang merupakan cip dengan 28 pin. Penting untuk disebutkan bahawa terdapat juga model MCP23017, yang lebih biasa dan tidak memerlukan perintang dan kapasitor, kerana ia mempunyai jam dalaman. Ini menjadikannya lebih mudah, tetapi penyematannya berbeza dengan yang kami tunjukkan dalam video ini.
Langkah 3: Alamat
Untuk menentukan alamat MCP23016, kami menggunakan pin A0, A1, dan A2. Anda boleh membiarkannya pada TINGGI atau RENDAH untuk pertukaran alamat.
Alamatnya akan dibentuk seperti berikut:
MCP_Address = 20 + (A2 A1 A0)
Di mana A2 A1 A0 dapat mengambil nilai TINGGI / RENDAH, nombor binari dari 0 hingga 7 bentuk.
Sebagai contoh:
A2> GND, A1> GND, A0> GND (bermaksud 000, kemudian 20 + 0 = 20)
Atau sebaliknya, A2> TINGGI, A1> GND, A0> TINGGI (bermaksud 101, kemudian 20 + 5 = 25)
Langkah 4: Perintah
Berikut adalah jadual dengan arahan untuk komunikasi:
Langkah 5: Kategori
GP0 / GP1 - Daftar Port Data
Terdapat dua daftar yang menyediakan akses ke dua port GPIO.
Bacaan daftar memberikan status pin pada port tersebut.
Bit = 1> Bit TINGGI = 0> RENDAH
IODIR0 / IODIR1
Terdapat dua register yang mengawal mod pin. (Input atau Output)
Bit = 1> INPUT Bit = 0> OUTPUT
Langkah 6: Struktur untuk Komunikasi
Di sini kita membincangkan alamat chip, dan mengakses perintah dan data, yang merupakan sejenis protokol yang perlu dilakukan untuk menghantar maklumat.
Langkah 7: Program
Kami akan melakukan program yang terdiri daripada menyampaikan ESP01 dengan MCP23016 agar lebih banyak GPIO dapat digunakan. 16 GPIO baru yang akan kita ada akan mengawal modul relay 16-saluran.
Perintah akan dihantar ke ESP01 melalui aplikasi Android.
Langkah 8: MCP23016
Langkah 9: ESP-01
Ini adalah papan 16-relay.
Langkah 10: Pemasangan ESP01
Langkah 11: Perpustakaan dan Pemboleh ubah
Kami akan memasukkan perpustakaan yang bertanggungjawab untuk komunikasi i2c, dan untuk membuat Titik Akses dan pelayan web. Kami menentukan alamat cip dan port. Akhirnya, kami menentukan pemboleh ubah untuk menyimpan nilai-nilai pin MCP.
#include // responsável pela comunicação i2c. # include // responsável por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREADRES 0X20 tentukan GP0 0x00 // DATA PORT PENDAFTAR 0 #tentukan GP1 0x01 // DATA PORT DEGISTER 1 #define IODIR0 0x06 // I / O DIRECTION DEGISTER 0 #define IODIR1 0x07 // I / O DIRECTION DEGISTER 1 // guarda os valores dos pinos lakukan MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Langkah 12: Persediaan
Kami memulakan ESP01 dan mengkonfigurasi port. Kami juga mengkonfigurasi Titik Akses dan memulakan pelayan.
batal persediaan () {Serial.begin (9600); kelewatan (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configurePort (IODIR0, OUTPUT); configurePort (IODIR1, OUTPUT); tulisBlockData (GP0, 0x00); tulisBlockData (GP1, 0x00); persediaanWiFi (); // configuração do Access Point server.begin (); // inicializa o server}
Langkah 13: Gelung
Di sini saya periksa sama ada pelanggan telah disambungkan ke pelayan. Kami juga membaca baris permintaan pertama. Kami mengekstrak data untuk manipulasi, menentukan tajuk respons lalai, dan mengirimkan respons ini kepada klien.
gelung void () {WiFiClient client = server.available (); // Verifica se um cliente juga conectado sekiranya (! Client) {return; } String req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha da requisição / * / MR o header prefixo para saber se a Requisição é a esperada para os relés * / if (req.indexOf ("/ MR")! = -1) {parserData (req); // a partir da requisição extrai os dados para manipulação} yang lain {Serial.println ("permintaan tidak sah"); kembali; } pelanggan.flush (); Rentetan s = "HTTP / 1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente delay (1); } // gelung akhir
Langkah 14: ParserData
Dari permintaan tersebut, kami mencari data yang berkaitan dengan relay. Kami kemudian menghantar data ke MCP23016.
// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relay = -1; uint8_t gp = -1; nilai uint8_t = -1; int index = data.indexOf ("/ MR"); // busca o index do prefixo MR if (data [index + 5] == '/') // / MR01 / 1, onde 0 = GP; 1 = RELE; 1 = ESTADO (hidup / mati) {gp = data [indeks + 3] - '0'; relay = data [indeks + 4] - '0'; nilai = data [indeks + 6] - '0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, nilai, gp); }}
Langkah 15: ConfigurePort
Kami menetapkan mod pin GPIO (GP0 atau GP1).
// configura o modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos seperti portas do GP trabalharem como saida // custom um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configurePort (port uint8_t, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } lain jika (custom == OUTPUT) {writeBlockData (port, 0x00); } lain {writeBlockData (port, custom); }}
Langkah 16: WritePinData
Di bahagian kod ini, kami mengubah keadaan pin yang diinginkan dan mengirim data ke MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; nilai = 0/1 (hidup / mati); gp = 0/1 (PORT do MCP) batal writePinData (pin int, nilai int, uint8_t gp) {uint8_t statusGP = 0; jika (gp == GP0) statusGP = currentValueGP0; status lainGP = currentValueGP1; jika (nilai == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} lain jika (nilai == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para TINGGI} jika (gp == GP0) currentValueGP0 = statusGP; lain-lain currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); kelewatan (10); }
Langkah 17: WriteBlockData & SetupWiFi
Di sini, kami menghantar data ke MCP23016 melalui bas i2c. Seterusnya, kami mengkonfigurasi sifat untuk mengaktifkan Titik Akses. Akhirnya, kami mengkonfigurasi WiFi untuk mod Titik Akses dan membuat AP dengan SSID dan PASSWORD.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (port uint8_t, data uint8_t) {Wire.beginTransmission (MCPAddress); Wire.write (port); Wire.write (data); Wire.endTransmission (); kelewatan (10); }
// configura as propriedades para habilitar o ACCESS POINHindari setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Langkah 18: Aplikasi
Untuk membuat aplikasi, kami menggunakan MIT App Inventor 2, yang dapat diakses melalui pautan:
ai2.appinventor.mit.edu/
Aplikasi ini terdiri daripada dua skrin yang mengandungi lapan pasang butang di masing-masing, menunjukkan status setiap geganti.
Berikut adalah beberapa blok pengaturcaraan yang digunakan:
PENTING: Alamat IP lalai ESP, kerana Titik Akses adalah 192.168.4.1
1. Apabila skrin dimulakan, kita menyimpan IP dalam memori dan memanggil prosedur untuk memulihkan keadaan butang (ON / OFF).
2. Panggil skrin lain
1. Apabila mengklik butang ON salah satu relay, kita akan membuat perubahan visual pada butang (blok hijau). WebViewer1. GoToUrl membuat permintaan untuk ESP01 kami dengan menghubungkan data MR01 / 1 dalam URL.
2. Apabila mengklik butang OFF salah satu relay, kita akan membuat perubahan visual pada butang (blok hijau). WebViewer1. GoToUrl membuat permintaan ke ESP01 kami dengan menghubungkan data MR01 / 0 di URL.
Prosedur ini digunakan untuk memulihkan keadaan butang (relay), kerana ketika mengubah layar, ia kembali ke pola penciptaan.
Blok kuning berulang untuk setiap pasangan butang.
Langkah 19: Muat turun
Berikut adalah fail projek untuk dimuat turun:
Fail projek MIT App Inventor 2 - muat turun
APK Aplikasi untuk dipasang di android - muat turun
Muat turun fail lain:
INO
Disyorkan:
Automasi Rumah Kos Rendah DIY Menggunakan Langkah Esp8266: 6
Automasi Rumah Kos Rendah DIY Menggunakan Esp8266: Hai semua, Hari ini dalam instruksional ini saya akan menunjukkan kepada anda bagaimana saya menyiapkan automasi rumah saya sendiri sebagai langkah menuju rumah pintar menggunakan modul ESP 8266 yang umumnya dikenali sebagai nodemcu jadi tanpa membuang masa Mari kita mulakan:)
Sup - Tikus untuk Orang Dengan Quadriplegia - Kos Rendah dan Sumber Terbuka: 12 Langkah (dengan Gambar)
Sup - Tikus untuk Orang Dengan Quadriplegia - Kos Rendah dan Sumber Terbuka: Pada musim bunga tahun 2017, keluarga sahabat saya bertanya kepada saya jika saya mahu terbang ke Denver dan membantu mereka menjalankan projek. Mereka mempunyai seorang teman, Allen, yang mengalami quadriplegia akibat kemalangan berbasikal gunung. Felix (rakan saya) dan saya melakukan kajian cepat
CAHAYA LED PORTABLE (Ringkas, Kos Rendah dan Direka dengan Cantik): 5 Langkah (dengan Gambar)
Lampu LED PORTABLE (Ringkas, Kos Rendah dan Direka dengan Cantik): Ini adalah projek yang sangat rendah dan mudah dibuat. Ia boleh dibuat dengan mudah dengan kos kurang dari ₹ 100 (kurang dari $ 2). Ini boleh digunakan di banyak tempat seperti dalam keadaan kecemasan, apabila berlaku pemadaman elektrik, semasa anda berada di luar rumah …. bla..bla .. bla..Jadi .. Apa khabar
Robot Lukisan Kos Rendah, Sesuai dengan Arduino: 15 Langkah (dengan Gambar)
Robot Lukisan Berkos rendah, Arduino: Nota: Saya mempunyai versi baru robot ini yang menggunakan papan litar bercetak, lebih senang dibina, dan mempunyai pengesanan halangan IR! Lihat di http://bit.ly/OSTurtleSaya merancang projek ini untuk bengkel 10 jam untuk ChickTech.org yang tujuannya adalah untuk
UDuino: Lembaga Pembangunan Sesuai dengan Arduino Kos Rendah: 7 Langkah (dengan Gambar)
UDuino: Lembaga Pembangunan Sesuai dengan Arduino Kos Sangat Rendah: Papan Arduino sangat bagus untuk membuat prototaip. Walau bagaimanapun, ia menjadi lebih mahal apabila anda mempunyai banyak projek serentak atau memerlukan banyak papan pengawal untuk projek yang lebih besar. Terdapat beberapa alternatif yang hebat dan lebih murah (Boarduino, Freeduino) tetapi