Daftar Isi:
- Langkah 1: Kiat untuk Diingat
- 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: Memasang ESP01
- Langkah 11: Pustaka dan Variabel
- Langkah 12: Pengaturan
- Langkah 13: Putaran
- Langkah 14: ParserData
- Langkah 15: Konfigurasi Port
- Langkah 16: WritePinData
- Langkah 17: WriteBlockData & SetupWiFi
- Langkah 18: Aplikasi
- Langkah 19: Unduh
Video: Otomatisasi Biaya Rendah Dengan ESP01: 19 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Hari ini, kita akan membahas otomatisasi menggunakan ESP01 dengan 16 relay. Ini adalah model desain super murah di mana Anda dapat melipatgandakan modul dan mendapatkan hingga 128 relai, karena dimungkinkan untuk memasang hingga delapan port expander di mikrokontroler ini.
Di sirkuit kami, Anda akan memiliki aplikasi pada smartphone yang berkomunikasi dengan ESP01. Ini akan memiliki expander dengan 16 port, masing-masing terhubung ke relai. Kami juga memiliki sumber yang dapat disesuaikan 3v3. Karena itu kami akan mengontrol modul relai 16 saluran menggunakan ESP01 melalui aplikasi Android, yang saya sediakan untuk Anda.
Langkah 1: Kiat untuk Diingat
Penting untuk dicatat, teman-teman, bahwa saya menggunakan chip ini di sirkuit yang disebut MCP23016. Penting juga bagi Anda untuk menonton video EXPANSOR IOS UNTUK ESP32, ESP8266 DAN ARDUINO, di mana saya menguji perangkat dan menunjukkan bahwa itu berfungsi untuk ketiga jenis papan ini.
Langkah 2: MCP23016
Di sini kita memiliki gambar MCP23016, yang merupakan chip dengan 28 pin. Penting untuk disebutkan juga ada model MCP23017, yang lebih umum dan tidak memerlukan resistor dan kapasitor, karena memiliki jam internal. Ini membuatnya lebih mudah, tetapi penyematannya berbeda dengan yang kami tampilkan di video ini.
Langkah 3: Alamat
Untuk menentukan alamat MCP23016, kami menggunakan pin A0, A1, dan A2. Anda bisa membiarkannya di TINGGI atau RENDAH untuk perubahan alamat.
Alamat akan terbentuk sebagai berikut:
MCP_Address = 20 + (A2 A1 A0)
Di mana A2 A1 A0 dapat mengambil nilai TINGGI / RENDAH, angka biner dari 0 hingga 7.
Sebagai contoh:
A2> GND, A1> GND, A0> GND (berarti 000, maka 20 + 0 = 20)
Atau sebaliknya, A2> TINGGI, A1> GND, A0> TINGGI (berarti 101, lalu 20 + 5 = 25)
Langkah 4: Perintah
Berikut adalah tabel dengan perintah untuk komunikasi:
Langkah 5: Kategori
GP0/ GP1 - Register Port Data
Ada dua register yang menyediakan akses ke dua port GPIO.
Pembacaan register memberikan status pin pada port tersebut.
Bit = 1> TINGGI Bit = 0> RENDAH
IODIR0 / IODIR1
Ada dua register yang mengontrol mode pin. (Masukan atau Keluaran)
Bit = 1> INPUT Bit = 0> OUTPUT
Langkah 6: Struktur untuk Komunikasi
Di sini kita berbicara tentang alamat chip, dan mengakses perintah dan data, yang merupakan semacam protokol yang perlu dilakukan untuk mengirim informasi.
Langkah 7: Program
Kami akan melakukan program yang terdiri dari mengkomunikasikan ESP01 dengan MCP23016 agar memiliki lebih banyak GPIO untuk digunakan. 16 GPIO baru yang akan kita miliki ini akan mengontrol modul relai 16 saluran.
Perintah akan dikirim ke ESP01 melalui aplikasi Android.
Langkah 8: MCP23016
Langkah 9: ESP-01
Ini adalah papan 16-relay.
Langkah 10: Memasang ESP01
Langkah 11: Pustaka dan Variabel
Kami akan menyertakan perpustakaan yang bertanggung jawab untuk komunikasi i2c, dan untuk membuat Titik Akses dan server web. Kami menentukan alamat chip dan port. Akhirnya, kami mendefinisikan variabel untuk menyimpan nilai pin MCP.
#include // responsável pela comunicação i2c.#include //respons por criar o accesspoint eo webserver WiFiServer server(80);//webserver para acessarmos através do aplicativo //endereço I2C do MCP23016 #define MCPAddressÇ0x20 DE REENDERTRAEDORESOS define GP0 0x00 // DATA PORT REGISTER 0 #define GP1 0x01 // DATA PORT REGISTER 1 #define IODIR0 0x06 // I/O DIRECTION REGISTER 0 #define IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos lakukan MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Langkah 12: Pengaturan
Kami menginisialisasi ESP01 dan mengkonfigurasi port. Kami juga mengkonfigurasi Access Point dan menginisialisasi server.
void setup() { Serial.begin(9600); penundaan (1000); Kawat.begin(0, 2); //ESP01 Kawat.setJam(2000000); configurePort(IODIR0, OUTPUT); configurePort(IODIR1, OUTPUT); writeBlockData(GP0, 0x00); writeBlockData(GP1, 0x00); setupWiFi(); //konfigurasi untuk melakukan Access Point server.begin();//inisialisasi server }
Langkah 13: Putaran
Di sini saya memeriksa apakah ada klien yang telah terhubung ke server. Kami juga membaca baris permintaan pertama. Kami mengekstrak data untuk manipulasi, menentukan header respons default, dan mengirimkan respons ini ke klien.
void loop() { klien WiFiClient = server.available(); // Verifikasi se um klien untuk koneksi jika (!klien) { kembali; } 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 } else{ Serial.println("permintaan tidak valid"); kembali; } klien.flush(); String s = "HTTP/1.1 200 OK\r\n"; // cabeçalho padrão de resposta client.print(s); // envia a resposta para o klien delay(1); } // akhiri putaran
Langkah 14: ParserData
Dari request tersebut, kita mencari data yang berhubungan dengan relay. Kami kemudian mengirim data ke MCP23016.
//a partir da requisição busca os dados referente aos relésvoid parserData(Data string) { uint8_t relai = -1; uint8_t gp = -1; nilai uint8_t = -1; int indeks = 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'; relai = data[indeks+4]-'0'; nilai = data[indeks+6]-'0'; //envia os dados para o MCP23016 //[relay-1] porque o MCP dengan 0-7 os pinos writePinData(relay-1, nilai, gp); } }
Langkah 15: Konfigurasi Port
Kami mengatur mode pin GPIO (GP0 atau GP1).
//konfigurasi untuk modo dos pinos GPIO (GP0 ou GP1)//como parametro passamos: // port: GP0 atau GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as 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, atau restante como saida void configurePort (port uint8_t, uint8_t custom) { if(custom == INPUT) { writeBlockData(port, 0xFF); } else if(custom == OUTPUT) { writeBlockData(port, 0x00); } else { writeBlockData(port, custom); } }
Langkah 16: WritePinData
Di bagian kode ini, kami mengubah status 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 melakukan MCP) void writePinData(int pin, int value, uint8_t gp) { uint8_t statusGP = 0; if(gp == GP0) statusGP = currentValueGP0; lain statusGP = currentValueGP1; if (nilai == 0) { statusGP &= ~(B0000001 << (pin)); // muda o pino para LOW } else if (nilai == 1) { statusGP |= (B0000001 << (pin)); // muda o pino para HIGH } if(gp == GP0) currentValueGP0 = statusGP; lain currentValueGP1 = statusGP; //envia os dados para o MCP writeBlockData(gp, statusGP); penundaan (10); }
Langkah 17: WriteBlockData & SetupWiFi
Di sini, kami mengirim data ke MCP23016 melalui bus i2c. Selanjutnya, kita mengkonfigurasi properti untuk mengaktifkan Access Point. Terakhir, kami mengkonfigurasi WiFi untuk mode Access Point dan membuat AP dengan SSID dan PASSWORD.
//envia dados untuk 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); Kawat.tulis(data); Kawat.endTransmisi(); penundaan (10); }
//konfigurasi sebagai proprieades para habilitar o ACCESS POINTvoid setupWiFi() { WiFi.mode(WIFI_AP); WiFi.softAP("ESP01_RELAY", "12345678"); }
Langkah 18: Aplikasi
Untuk membuat aplikasinya, kami menggunakan MIT App Inventor 2 yang dapat diakses melalui link:
ai2.appinventor.mit.edu/
Aplikasi ini terdiri dari dua layar yang masing-masing berisi delapan pasang tombol, yang menunjukkan status masing-masing relai.
Berikut ini adalah beberapa blok pemrograman yang digunakan:
PENTING: Alamat IP default ESP, karena Access Point adalah 192.168.4.1
1. Saat layar diinisialisasi, kami menyimpan IP dalam memori dan memanggil prosedur untuk memulihkan status tombol (ON / OFF).
2. Panggil layar lain
1. Saat mengklik tombol ON salah satu relai, kami akan membuat perubahan visual pada tombol (blok hijau). WebViewer1. GoToUrl membuat permintaan untuk ESP01 kami dengan menautkan data MR01 / 1 di URL.
2. Saat mengklik tombol OFF dari salah satu relay, kami akan membuat perubahan visual pada tombol (blok hijau). WebViewer1. GoToUrl membuat permintaan ke ESP01 kami dengan menautkan data MR01 / 0 di URL.
Prosedur ini digunakan untuk memulihkan status tombol (relai), karena saat mengubah layar, ia kembali ke pola pembuatan.
Blok kuning berulang untuk setiap pasangan tombol.
Langkah 19: Unduh
Berikut adalah file proyek untuk diunduh:
File proyek MIT App Inventor 2 - unduh
Aplikasi APK untuk diinstal di android - unduh
Unduh file lainnya:
SAYA TIDAK
Direkomendasikan:
Otomatisasi Rumah Biaya Rendah DIY Menggunakan Esp8266: 6 Langkah
Otomatisasi Rumah Murah DIY Menggunakan Esp8266: Hai semuanya,Hari ini dalam instruksi ini saya akan menunjukkan kepada Anda bagaimana saya menyiapkan otomatisasi rumah saya sendiri sebagai langkah menuju rumah pintar menggunakan modul ESP 8266 yang umumnya dikenal sebagai nodemcu jadi tanpa membuang waktu mari kita mulai
Buat Track Sensored Biaya Rendah dalam Menit!: 10 Langkah (dengan Gambar)
Buat Track Sensored Biaya Rendah dalam Menit!: Dalam Instructable saya sebelumnya, saya menunjukkan cara membuat tata letak kereta model dengan berpihak otomatis. Ini menggunakan segmen trek, bernama 'track bersensor'. Ini adalah hal yang cukup berguna untuk dimiliki dalam model tata letak kereta api. Saya dapat digunakan untuk hal berikut: Blok
Sup - Mouse untuk Orang Dengan Quadriplegia - Biaya Rendah dan Sumber Terbuka: 12 Langkah (dengan Gambar)
Sup - Mouse untuk Orang Dengan Quadriplegia - Biaya Rendah dan Sumber Terbuka: Pada musim semi 2017, keluarga sahabat saya bertanya apakah saya ingin terbang ke Denver dan membantu mereka dengan sebuah proyek. Mereka memiliki seorang teman, Allen, yang menderita quadriplegia akibat kecelakaan bersepeda gunung. Felix (teman saya) dan saya melakukan rese cepat
Bioprinter Biaya Rendah: 13 Langkah (dengan Gambar)
Bioprinter Biaya Rendah: Kami adalah tim peneliti yang dipimpin oleh sarjana di UC Davis. Kami adalah bagian dari BioInnovation Group, yang beroperasi di TEAM Molecular Prototyping dan BioInnovation Lab (Penasihat Dr. Marc Facciotti, dan Andrew Yao, M.S.). Laboratorium menyatukan siswa dari
LAMPU LED PORTABEL (Sederhana, Biaya Rendah, dan Dirancang dengan Indah): 5 Langkah (dengan Gambar)
LAMPU LED PORTABEL (Sederhana, Biaya Rendah, dan Dirancang dengan Indah): Ini adalah proyek berbiaya sangat rendah dan mudah dibuat. Itu dapat dibuat dengan mudah dengan biaya kurang dari 100 (kurang dari $2). Ini dapat digunakan di banyak tempat seperti dalam keadaan darurat, ketika ada pemadaman listrik, ketika Anda berada di luar ruangan….bla..bla.. bla..Jadi.. Apa yang kamu