İçindekiler:
- Adım 1: Hatırlanması Gereken İpucu
- 2. Adım: MCP23016
- 3. Adım: Adres
- Adım 4: Komutlar
- Adım 5: Kategoriler
- Adım 6: İletişim Yapısı
- Adım 7: Program
- Adım 8: MCP23016
- Adım 9: ESP-01
- Adım 10: ESP01'i Monte Etme
- Adım 11: Kitaplıklar ve Değişkenler
- Adım 12: Kurulum
- Adım 13: Döngü
- Adım 14: ParserData
- Adım 15: ConfigurePort
- Adım 16: WritePinData
- Adım 17: WriteBlockData ve KurulumWiFi
- Adım 18: Uygulama
- Adım 19: İndir
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bugün, 16 röleli ESP01 kullanarak otomasyonu tartışacağız. Modülleri çoğaltabileceğiniz ve 128 adede kadar röle alabileceğiniz süper ucuz bir tasarım modelidir, çünkü bu mikrodenetleyiciye sekiz adede kadar port genişletici koymak mümkündür.
Devremizde, ESP01 ile haberleşen bir akıllı telefon üzerinde bir uygulamanız olacak. Her biri bir röleye bağlı 16 portlu bir genişleticiye sahip olacaktır. Ayrıca 3v3 ayarlanabilir bir kaynağımız var. Bu nedenle, size sunduğum Android uygulaması üzerinden ESP01 kullanarak 16 kanallı bir röle modülünü kontrol edeceğiz.
Adım 1: Hatırlanması Gereken İpucu
Bu çipi MCP23016 isimli bir devrede kullandığımı belirtmekte fayda var yegenlerim. Ayrıca cihazı test ettiğim ve bu üç tip anakart için çalıştığını gösterdiğim EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO videosunu izlemeniz de önemli.
2. Adım: MCP23016
Burada 28 pinli bir çip olan MCP23016'nın bir görüntüsü var. Daha yaygın olan ve dahili bir saate sahip olduğu için direnç ve kapasitör gerektirmeyen MCP23017 modelinin de bulunduğunu belirtmekte fayda var. Bu daha kolay hale getirir, ancak sabitlemesi bu videoda gösterdiğimizden farklıdır.
3. Adım: Adres
MCP23016'nın adresini tanımlamak için A0, A1 ve A2 pinlerini kullanırız. Adres değişikliği için onları YÜKSEK veya DÜŞÜK olarak bırakabilirsiniz.
Adres aşağıdaki gibi oluşturulacaktır:
MCP_Adresi = 20 + (A2 A1 A0)
A2 A1 A0 YÜKSEK / DÜŞÜK değerleri alabilirken, 0'dan 7'ye kadar bir ikili sayı oluşur.
Örneğin:
A2> GND, A1> GND, A0> GND (000 anlamına gelir, sonra 20 + 0 = 20)
Ya da, A2> YÜKSEK, A1> GND, A0> YÜKSEK (101 anlamına gelir, sonra 20 + 5 = 25)
Adım 4: Komutlar
İşte iletişim komutlarını içeren bir tablo:
Adım 5: Kategoriler
GP0 / GP1 - Veri Bağlantı Noktası Kayıtları
İki GPIO bağlantı noktasına erişim sağlayan iki kayıt vardır.
Kayıt okuması, o port üzerindeki pinlerin durumunu sağlar.
Bit = 1> YÜKSEK Bit = 0> DÜŞÜK
IODIR0 / IODIR1
Pin modunu kontrol eden iki kayıt vardır. (Giriş veya Çıkış)
Bit = 1> GİRİŞ Bit = 0> ÇIKIŞ
Adım 6: İletişim Yapısı
Burada çipin adresi hakkında konuşuyoruz ve bilgi göndermek için yapılması gereken bir tür protokol olan komut ve verilere erişiyoruz.
Adım 7: Program
Kullanılacak daha fazla GPIO'ya sahip olmak için ESP01'i MCP23016 ile iletişim kurmaktan oluşan bir program yapacağız. Sahip olacağımız bu 16 yeni GPIO, 16 kanallı bir röle modülünü kontrol edecek.
Komutlar, bir Android uygulaması aracılığıyla ESP01'e gönderilecektir.
Adım 8: MCP23016
Adım 9: ESP-01
Bu 16 röle kartıdır.
Adım 10: ESP01'i Monte Etme
Adım 11: Kitaplıklar ve Değişkenler
i2c iletişiminden ve Erişim Noktası ve web sunucusunun oluşturulmasından sorumlu kitaplıkları dahil edeceğiz. Chip adresini ve portları tanımlıyoruz. Son olarak MCP pinlerinin değerlerini saklayacak değişkenleri tanımlıyoruz.
#include // i2c ile iletişim için yanıtlar.#include // erişim noktası için yanıtlar ve ağlar WiFiServer sunucusu(80);//uygulamalar için web sunucusu // MCP23016 için I2C'yi tanımlayın #define MCPAddress #DEX20GISTRADOÇRESENDEREOS 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 MCP yapmak uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Adım 12: Kurulum
ESP01'i başlatıyoruz ve portları yapılandırıyoruz. Ayrıca Erişim Noktasını yapılandırır ve sunucuyu başlatırız.
geçersiz kurulum() { Serial.begin(9600); gecikme(1000); tel.başla(0, 2); //ESP01 Wire.setClock(200000); configurePort(IODIR0, OUTPUT); configurePort(IODIR1, OUTPUT); writeBlockData(GP0, 0x00); writeBlockData(GP1, 0x00); kurulumWiFi(); //Erişim Noktası sunucusunu yapılandırın.begin();//sunucu için sunucu }
Adım 13: Döngü
Burada herhangi bir istemcinin sunucuya bağlı olup olmadığını kontrol ediyorum. İlk istek satırını da okuduk. Manipülasyon için verileri çıkarırız, varsayılan yanıt başlığını tanımlarız ve bu yanıtı istemciye göndeririz.
void loop() { WiFiClient client = server.available(); // Eğer (!client) { return; } String req = client.readStringUntil('\r');// Zamansız bir istek değil /* /MR é o başlık öneki para saber se a requisição é bir esperada para os relés */ if(req.indexOf ("/MR") != -1) { parserData(req); //bir partir da requisição ekstrai os dados para manipulação } else{ Serial.println("geçersiz istek"); dönüş; } client.flush(); String s = "HTTP/1.1 200 TAMAM\r\n"; // istemci.baskı(lar); // müşteri gecikmesi için bir yanıt gönder (1); } // döngüyü sonlandır
Adım 14: ParserData
İstekten, rölelerle ilgili verileri ararız. Daha sonra verileri MCP23016'ya göndeririz.
//busca os dados referente aos relésvoid parserData(Dize verisi) { uint8_t geçiş = -1; uint8_t gp = -1; uint8_t değeri = -1; int indeks = data.indexOf("/MR"); //busca o index do öneki MR if(data[index+5] == '/') // /MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO(açık/kapalı) { gp = veri[index+3]-'0'; röle = veri[indeks+4]-'0'; değer = veri[index+6]-'0'; //envia os dados para o MCP23016 //[röle-1] porque o MCP vai de 0-7 os pinos writePinData(röle-1, değer, gp); } }
Adım 15: ConfigurePort
GPIO pin modunu (GP0 veya GP1) ayarladık.
//modo dos pinos GPIO (GP0 veya GP1) yapılandırması//parametro passamos: // port: GP0 veya GP1 // GP trabalharem ortak girişleri için INPUT para todos // GP trabalharem como dedia için ÇIKIŞ para todos // modo das portas için özel değer 0-255 göstergesi (1=GİRİŞ, 0=ÇIKIŞ) // örn: 0x01 veya B00000001 veya 1: GPX.0 trabalhará como giriş, o restante komo dedia void configurationPort (uint8_t bağlantı noktası, uint8_t özel) { if(özel == GİRİŞ) { writeBlockData(bağlantı noktası, 0xFF); } else if(özel == OUTPUT) { writeBlockData(port, 0x00); } else { writeBlockData(port, özel); } }
Adım 16: WritePinData
Kodun bu kısmında istenilen pinin durumunu değiştirip MCP'ye veri gönderiyoruz.
//muda o estado de um pino desejado, passando como parametro://pin = pino desejado; değer = 0/1 (açık/kapalı); gp = 0/1 (PORT do MCP) geçersiz writePinData(int pin, int değeri, uint8_t gp) { uint8_t statusGP = 0; if(gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (değer == 0) { statusGP &= ~(B00000001 << (pin)); // muda o pino para LOW } else if (değer == 1) { statusGP |= (B00000001 << (pin)); // muda o pino para YÜKSEK } if(gp == GP0) currentValueGP0 = statusGP; yoksa currentValueGP1 = statusGP; //envia os dados para o MCP writeBlockData(gp, statusGP); gecikme(10); }
Adım 17: WriteBlockData ve KurulumWiFi
Burada MCP23016'ya i2c bus üzerinden veri gönderiyoruz. Ardından, Erişim Noktasını etkinleştirmek için özellikleri yapılandırıyoruz. Son olarak, WiFi'yi Erişim Noktası modu için yapılandırdık ve SSID ve ŞİFRE ile bir AP oluşturduk.
//envia dados para o MCP23016 barramento i2c//reg: REGISTRADOR //veri: dados (0-255) void writeBlockData(uint8_t bağlantı noktası, uint8_t verisi) { Wire.beginTransmission(MCPAddress); Wire.write(port); Wire.write(veri); Wire.endTransmission(); gecikme(10); }
//propriedes para habilitar olarak yapılandırma o ERİŞİM NOKTASIvoid setupWiFi() { WiFi.mode(WIFI_AP); WiFi.softAP("ESP01_RELAY", "12345678"); }
Adım 18: Uygulama
Uygulamayı oluşturmak için aşağıdaki bağlantıdan erişilebilen MIT App Inventor 2'yi kullanıyoruz:
ai2.appinventor.mit.edu/
Uygulama, her rölenin durumunu gösteren, her birinde sekiz çift düğme içeren iki ekrandan oluşur.
Aşağıda kullanılan programlama bloklarından bazıları verilmiştir:
ÖNEMLİ: Erişim Noktası olarak ESP'nin varsayılan IP adresi 192.168.4.1'dir
1. Ekran başladığında, IP'yi hafızaya kaydediyoruz ve düğmelerin durumunu (ON / OFF) kurtarmak için prosedürü çağırıyoruz.
2. Diğer ekranı arayın
1. Rölelerden birinin ON butonuna tıklandığında butonda (yeşil bloklar) görsel değişiklikler yapacağız. WebViewer1. GoToUrl, URL'deki MR01 / 1 verilerini bağlayarak ESP01'imiz için bir istekte bulunur.
2. Rölelerden birinin OFF butonuna tıklandığında butonda (yeşil bloklar) görsel değişiklikler yapacağız. WebViewer1. GoToUrl, URL'deki MR01 / 0 verilerini bağlayarak ESP01'imize bir istekte bulunur.
Bu prosedür, düğmelerin (rölelerin) durumunu kurtarmak için kullanılır, çünkü ekran değiştirilirken oluşturma modeline döner.
Sarı blok, düğme çiftlerinin her biri için tekrarlanır.
Adım 19: İndir
İşte indirebileceğiniz proje dosyaları:
MIT App Inventor 2 proje dosyası - indir
Android'e yüklemek için uygulama APK'sı - indir
Diğer dosyaları indirin:
BEN HAYIR
Önerilen:
Ultra Düşük Güçlü WiFi Ev Otomasyon Sistemi: 6 Adım (Resimlerle)
Ultra Düşük Güçlü WiFi Ev Otomasyon Sistemi: Bu projede, birkaç adımda temel bir yerel ev otomasyon sistemini nasıl kurabileceğinizi gösteriyoruz. Merkezi bir WiFi cihazı olarak görev yapacak bir Raspberry Pi kullanacağız. Uç düğümler için ise bir pil gücü yapmak için IOT Cricket kullanacağız
Düşük Maliyetli Reometre: 11 Adım (Resimlerle)
Düşük Maliyetli Reometre: Bu talimatın amacı, bir sıvının viskozitesini deneysel olarak bulmak için düşük maliyetli bir reometre oluşturmaktır. Bu proje, Brown Üniversitesi lisans ve yüksek lisans öğrencilerinden oluşan bir ekip tarafından Mekanik Sistemlerin Titreşimi sınıfında oluşturuldu.
Düşük Maliyetli Bir EKG Cihazı Nasıl Yapılır: 26 Adım
Düşük Maliyetli Bir EKG Cihazı Nasıl Yapılır: Herkese merhaba! Benim adım Mariano ve ben bir biyomedikal mühendisiyim. Birkaç hafta sonunu, Bluetooth aracılığıyla bir Android cihaza (akıllı telefon veya tablet) bağlı Arduino kartına dayalı düşük maliyetli bir EKG cihazının prototipini tasarlamak ve gerçekleştirmek için harcadım. İsterim
Arduino, Esp8266 veya Esp32 için Düşük Maliyetli E32 (sx1278/sx1276) Cihazı ile LoRa 3Km - 8Km Kablosuz İletişim: 15 Adım
Arduino, Esp8266 veya Esp32 için Düşük Maliyetli E32 (sx1278/sx1276) Cihazı ile LoRa 3Km - 8Km Kablosuz İletişim: Semtech serisi LoRa cihazına dayalı, çok güçlü, basit ve ucuz bir cihaz olan EBYTE E32'yi yönetmek için bir kütüphane oluşturuyorum. 3Km versiyon burada, 8Km versiyon burada 3000m ile 8000m arasında bir mesafede çalışabilirler ve bir çok özelliği ve
Konuşkan Otomasyon -- Arduino'dan Ses -- Ses Kontrollü Otomasyon -- HC - 05 Bluetooth Modülü: 9 Adım (Resimli)
Konuşkan Otomasyon || Arduino'dan Ses || Ses Kontrollü Otomasyon || HC - 05 Bluetooth Modülü:…………………………… Daha fazla video için lütfen YouTube kanalıma ABONE OLUN…. …. Bu videoda Konuşkan Otomasyon kurduk.. Mobilden sesli komut göndereceğiniz zaman ev cihazlarını açıp geri bildirim gönderecektir