İçindekiler:

IOT123 - I2C 2CH RÖLE TUĞLA: 5 Adım (Resimlerle)
IOT123 - I2C 2CH RÖLE TUĞLA: 5 Adım (Resimlerle)

Video: IOT123 - I2C 2CH RÖLE TUĞLA: 5 Adım (Resimlerle)

Video: IOT123 - I2C 2CH RÖLE TUĞLA: 5 Adım (Resimlerle)
Video: Lcd 20x4 i2c, waterproof sensor, HC-SR04, 3pushbutton(menu multi) 2ch relay 2024, Haziran
Anonim
IOT123 - I2C 2CH RÖLE TUĞLA
IOT123 - I2C 2CH RÖLE TUĞLA
IOT123 - I2C 2CH RÖLE TUĞLA
IOT123 - I2C 2CH RÖLE TUĞLA
IOT123 - I2C 2CH RÖLE TUĞLA
IOT123 - I2C 2CH RÖLE TUĞLA
IOT123 - I2C 2CH RÖLE TUĞLA
IOT123 - I2C 2CH RÖLE TUĞLA

IOT123 TUĞLALAR, bir düğüme veya giyilebilir cihaza işlevsellik eklemek için diğer IOT123 TUĞLALAR ile karıştırılabilen DIY modüler birimlerdir. Bunlar, birbirine bağlı açık deliklere sahip inç kare, çift taraflı protokollere dayanmaktadır.

Bu BRICKS'lerin bir kısmının bir sitede birden fazla düğümde (Ana MCU'lar - ESP8266 veya ATTINY84) olması beklenir. MCU'nun, sensörlerin amacı veya yazılım ihtiyaçları hakkında önceden bilgi sahibi olması gerekmez. I2C düğümlerini tarar ve ardından her bağımlıdan bir özellik dökümü (sensör verileri) ister. Bu BRICK'ler 5.0V, 3.3V ve özelleştirilebilir başka bir AUX hattı sağlar.

Bu I2C 2CH RELAY BRICK, I2C KY019 BRICK'in işlevselliğini genişletir ve iki okuma/yazma özelliğine sahiptir:

2CH RÖLELER[0] (doğru/yanlış)

2CH RÖLELER[1] (doğru/yanlış)

ATTINY85'e bitişik açık delikler, DIP8 PCB'ye lehimlenirken bir pogo pin programlayıcısını etkinleştirmek için kullanılmadan bırakılmıştır. Bir D1M WIFI BLOCK hub'ına takılan küçük silindirlerde BRICKS'leri paketleyen ve değerleri bir MQTT sunucusuna pompalayan başka bir soyutlama geliştirilmektedir.

Adım 1: Malzemeler ve Araçlar

Malzemeler ve Araçlar
Malzemeler ve Araçlar
Malzemeler ve Araçlar
Malzemeler ve Araçlar
Malzemeler ve Araçlar
Malzemeler ve Araçlar

Tam bir Malzeme Listesi ve Tedarik listesi var.

  1. 2 Kanal Röle (1)
  2. ATTINY85 20PU (1)
  3. 1" Çift taraflı protokol (1)
  4. Erkek Başlık 90º (3P, 3P)
  5. Erkek Başlık (2P, 2P)
  6. Jumper Şant (1)
  7. Bağlantı kablosu (~7)
  8. Lehim ve Demir (1)

Adım 2: ATTINY85'i hazırlayın

ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın
ATTINY85'i hazırlayın

NOT: Crouton entegrasyonuna sahip olmak istiyorsanız, lütfen buradan kütüphaneyi kullanın ve "attiny_2ch_relay" yüklü örneği kullanın.

Kurul Yöneticisinden AttinyCore gereklidir. Bootloader "EEPROM Retained", "8mHZ Internal" yazın (yukarıda gösterilen tüm yapılandırmalar).

Kod deposu burada bulunabilir.

Kütüphanenin bir ZIP'i burada bulunabilir.

"ZIP Kitaplığını İçe Aktarma" talimatları burada.

Kütüphane kurulduktan sonra "attiny_2ch_relay" örneğini açabilirsiniz.

Donanım yazılımını ATTINY85'e yüklemek için bu talimatlarda daha fazla ayrıntı bulabilirsiniz:

www.instructables.com/id/How-to-Program-A…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/Programming-the-…

Devam etmeden önce breadboard üzerinden test etmek en iyisidir.

Mevcut ASSIMILAT SENSÖRLERİNİZ varsa, bir SENSÖR/MCU Ana Bilgisayar kombinasyonunda bağımlı adresin farklı olduğundan emin olun, yani bir MCU/düğümde yalnızca bir Aktarma aktörünüz olduğu sürece tüm Aktarma aktörleri aynı adrese sahip olabilir.

Adım 3: Devreyi Birleştirin

Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
Devreyi Birleştirin
  1. Ön tarafa, ATTINY85 (1), 3P 90deg erkek başlıklar (2)(3), 3P erkek başlıklar (4)(5) bileşenlerini yerleştirin ve arka tarafa lehimleyin.
  2. Arkada, SARI1'den SARI2'ye kadar sarı bir kablo çizin ve lehimleyin.
  3. Arkada, TURUNCU1'den TURUNCU2'ye turuncu bir kablo çizin ve lehimleyin.
  4. Arkada, MAVİ1'den MAVİ2'ye kadar mavi bir kablo çizin ve lehimleyin.
  5. Arkada, YEŞİL1'den YEŞİL2'ye yeşil bir kablo çizin ve lehimleyin.
  6. Arkada, SİYAH1'den SİYAH2'ye siyah bir kablo çizin ve lehimleyin.
  7. Arkada, BLACK3'ten BLACK4'e siyah bir kablo çizin ve lehimleyin.
  8. Arkada, RED1'den RED2'ye kırmızı bir kablo çizin ve lehimleyin.
  9. Arkada, RED3'ten RED4'e çıplak bir kablo çizin ve lehimleyin.
  10. Arkada, GÜMÜŞ1'den GÜMÜŞ2'ye çıplak bir tel çizin ve lehimleyin.
  11. 5V veya 3V3 hattına bir jumper ekleyin.

Röle artık pinleri aracılığıyla doğrudan PCB'ye veya kablolar aracılığıyla pin sözleşmesinde gösterilen noktalara bağlanabilir.

4. Adım: Test Etme

Test yapmak
Test yapmak
Test yapmak
Test yapmak
Test yapmak
Test yapmak
Test yapmak
Test yapmak

Bu BRICKS'lerin bir kısmının bir ortamda birden çok düğümde (MCU'lar - ESP8266 veya ATTINY84) olması beklenir. Bu bir birim testidir: UNO'dan ATTINY'ye röleleri açan veya kapatan I2C komutları gönderir.

Daha önce Arduino için bir I2C SHIELD inşa etmiştik.

Bunun yerine breadboard yapmak istiyorsanız:

  1. UNO üzerindeki 5.0V'yi BRICK üzerindeki bir VCC'ye bağlayın.
  2. UNO üzerindeki GND'yi BRICK üzerindeki GND'ye bağlayın.
  3. UNO üzerindeki A5'i BRICK üzerindeki SCL'ye bağlayın.
  4. UNO üzerindeki A4'ü BRICK üzerindeki SDA'ya bağlayın.
  5. SDA'dan VCC'ye bir 4K7 çekme direnci bağlayın.
  6. SCL'den VCC'ye bir 4K7 çekme direnci bağlayın.

Testi çalıştırıyorum

  1. UNO'nuzu USB ile Dev PC'nize bağlayın.
  2. Kodu UNO'ya yükleyin.
  3. Arduino Konsolunu açın.
  4. 9600 baud'u seçin (UNO'yu yeniden başlatın ve gerekirse konsolu yeniden açın).
  5. Kölenin adresi konsola yazdırılacaktır.
  6. olduğunda, gönderme kutusuna 2 0:1 (yani 15 2 0:1) girin ve CH1 rölesi açılır.

  7. olduğunda, gönderme kutusuna 2 0:0 (yani 15 2 0:0) girin ve CH1 rölesi kapanır.
  8. olduğunda, gönderme kutusuna 2 1:1 (yani 15 2 1:1) girin ve CH2 rölesi açılır.
  9. olduğunda, gönderme kutusuna 2 1:0 (yani 15 2 0:0) girin ve CH2 rölesi kapanır.

UNO master'dan slave'ler için I2C BRICK adhoc komutları

#Dahil etmek
const bayt _num_chars = 32;
char _alınan_chars[_num_chars]; // alınan verileri depolamak için bir dizi
boolean _has_new_data = yanlış;
voidsetup() {
Seri.başla(9600);
Seri.println();
Serial.println("ASSIMILE IOT AKTÖR/SENSÖR EEPROM EDİTÖRÜ");
Serial.println("konsol penceresinde yeni satırın seçili olduğundan emin olun");
Seri.println();
Serial.println("ADRES 1 DOĞRULAMA META VERİ ALINDI N/A (M2M İÇİN)");
Serial.println("ADRES 2 AKTÖR KOMUTU");
Seri.println();
Serial.println("BUS ÜZERİNDEKİ ADRESLER:");
scan_i2c_addresses();
Seri.println();
Seri.println("");
}
vidscan_i2c_addresses(){
int cihaz_sayısı = 0;
için (bayt adresi = 8; adres < 127; adres++)
{
Wire.beginTransmission(adres);
const bayt hatası = Wire.endTransmission();
if (hata == 0)
{
Serial.println(adres);
}
}
}
boşluk döngüsü() {
recv_with_end_marker();
send_to_i2c();
}
voidrecv_with_end_marker() {
statik bayt ndx = 0;
char end_marker = '\n';
karakter rc;
while (Serial.available() >0 && _has_new_data == false) {
rc = Seri.read();
if (rc != end_marker) {
_received_chars[ndx] = rc;
ndx++;
if (ndx >= _num_chars) {
ndx = _num_chars - 1;
}
}
Başka {
_received_chars[ndx] = '\0'; // stringi sonlandır
ndx = 0;
_has_new_data = doğru;
}
}
}
vidsend_to_i2c() {
char param_buf[16];
const String alınan_string = String(_received_chars);
if (_has_new_data == doğru) {
int idx1 = alınan_string.indexOf('');
Dize adresi = alınan_string.substring(0, idx1);
int address_int = adres.toInt();
if (address_int < 8 || address_int >127){
Serial.println("GEÇERSİZ ADRES GİRİŞİ:");
Serial.println(adres);
dönüş;
}
int idx2 = alınan_string.indexOf('', idx1+1);
dize kodu;
if (idx2 == -1){
kod = alınan_string.substring(idx1+1);
}Başka{
kod = alınan_string.substring(idx1+1, idx2+1);
}
int code_int = code.toInt();
if (code_int < 0 || code_int >5){
Serial.println("GEÇERSİZ KOD GİRİŞİ:");
Seri.println(kod);
dönüş;
}
bool has_parameter = idx2 > -1;
dize parametresi;
if (has_parameter){
parametre = alınan_string.substring(idx2 + 1, idx2 + 17); // maksimum 16 karakter
if (parameter.length() < 1){
Serial.println("PARTAMETRE MIN. UZUNLUK 1");
_has_new_data = yanlış;
dönüş;
}
}Başka{
if (code_int >1){
Serial.println("PARAMETRE GEREKLİ!");
_has_new_data = yanlış;
dönüş;
}
}
Seri.println();
Serial.print("giriş kaynağı = ");
Serial.println(alınan_string);
Serial.print("adres = ");
Serial.println(adres);
Serial.print("kod = ");
Seri.println(kod);
Serial.print("parametre = ");
Seri.println(parametre);
// I2C İLE GÖNDER
Wire.beginTransmission(adres_int);
Wire.write(code_int);
if (has_parameter){
parametre.trim();
strcpy(param_buf, parametre.c_str());
Wire.write(param_buf);
}
Wire.endTransmission();
Seri.println();
Serial.println("I2C İLE GÖNDERİLDİ!");
Seri.println();
Seri.println("");
_has_new_data = yanlış;
}
}

GitHub tarafından ❤ ile barındırılan rawuno_i2c_command_input.ino'yu görüntüleyin

Adım 5: Sonraki Adımlar

Sonraki adımlar
Sonraki adımlar
Sonraki adımlar
Sonraki adımlar
Sonraki adımlar
Sonraki adımlar
Sonraki adımlar
Sonraki adımlar

Takip eden ASSIMILATE ACTOR: Bu tuğlayı kullanan 2CH RELAY, burada ATTINY85'te zaten yüklü olan meta veriler aracılığıyla Crouton için otomatik yapılandırmaya sahiptir. Crouton'a gönderilen JSON paketi, ICOS10 için en son üretici yazılımı aracılığıyla gönderilir. Yapı şimdilik çok fazlaysa, sıradan bir ESP8266'da Kavram Kanıtı yapabilirsiniz.

Testte kullanılan UNO taslağı, hedef I2C veriyolunuzda bir çakışma varsa ATTINY85'teki EEPROM'a yeni bir bağımlı adresi kaydetme işlevine sahiptir. Birkaç şema eklendi, ancak ne elde etmek istediğinize bağlı olarak aşağı akım devresini bağlamanın çeşitli yolları var, bu yüzden bunu size bırakacağım:)

Önerilen: