İçindekiler:

IOT123 - I2C HEARTBEAT TUĞLA: 6 Adım
IOT123 - I2C HEARTBEAT TUĞLA: 6 Adım

Video: IOT123 - I2C HEARTBEAT TUĞLA: 6 Adım

Video: IOT123 - I2C HEARTBEAT TUĞLA: 6 Adım
Video: Arduino Heart Rate Monitor || Pulse Sensor Health Tracking system || Heart beat sensor 2024, Kasım
Anonim
IOT123 - I2C KALP ATEŞİ TUĞLA
IOT123 - I2C KALP ATEŞİ TUĞLA
IOT123 - I2C KALP ATEŞİ TUĞLA
IOT123 - I2C KALP ATEŞİ TUĞLA
IOT123 - I2C KALP ATEŞİ TUĞLA
IOT123 - I2C KALP ATEŞİ 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 HEARTBEAT BRICK, ATTINY bağımlı biriminin ve ayrıca I2C trafiğinin canlı olup olmadığını gösterir ve bir özelliği vardır:

DURUM ("CANLI")

PB1 (beyaz) ATTINY sağlığını gösterir.

PB3 (sarı), master'dan I2C istekleri ile geçiş yapar.

PB4 (turuncu), master'dan alınan I2C ile geçiş yapar.

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
Malzemeler ve Araçlar
Malzemeler ve Araçlar

Tam bir Malzeme Listesi ve Tedarik listesi var.

  1. Kağıt PCB (7 x 7 delik)
  2. LED'LER (Kırmızı, Yeşil, Mavi)
  3. Dirençler (3 kapalı 1K)
  4. ATTINY85 20PU (1)
  5. 1" Çift taraflı protokol (1)
  6. Erkek Başlık 90º (3P, 3P)
  7. Erkek Başlık (2P, 2P)
  8. Jumper Şant (1)
  9. Bağlantı kablosu (~7)
  10. 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
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_heartbeat" 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_heartbeat" ö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/Programming-the-….

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

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

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

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

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

Mevcut ASSİMİLAT SENSÖRLERİNİZ varsa, bir SENSÖR/MCU Ana Bilgisayar kombinasyonunda bağımlı adresin farklı olduğundan emin olun, örn. bir MCU/düğüm üzerinde yalnızca bir Geçiş aktörünüz olduğu sürece, tüm Geçiş aktörleri aynı adrese sahip olabilir.

Adım 3: Göstergelerin Birleştirilmesi

Göstergelerin Montajı
Göstergelerin Montajı
Göstergelerin Montajı
Göstergelerin Montajı
Göstergelerin Montajı
Göstergelerin Montajı

Göstergelerin tamamen özelleştirilebilir olması amaçlanmıştır. Kalp Atışı olarak görülen, ana devreden gelen olay sinyalleridir. Bu yapı için LED göstergeleri kullanacağız; yapınız röleleri (evet VCC bozuldu) veya başka bir görsel/sinyal tabanlı göstergeyi kullanabilir. Direnç değerleri, ne kadar parlak olmasını istediğinize bağlı olarak kişisel tercihinize bağlı olacaktır.

  1. Üstte, KIRMIZI1 (+) ve SİYAH1'e (G) mavi bir LED takın ve altta lehimleyin.
  2. Altta, RED1'den gelen ucu SILVER8 üzerindeki bakır altlığa değecek şekilde bükün ve düzeltin.
  3. Altta, lehimin üstündeki SİYAH1'den ucu kesin.
  4. Üstte, KIRMIZI2 (+) ve SİYAH2'ye (G) yeşil bir LED yerleştirin ve altta lehimleyin.
  5. Altta, RED2'den gelen ucu SILVER9 üzerindeki bakır altlığa değecek şekilde bükün ve düzeltin.
  6. Altta, lehimin üstündeki BLACK2'den ucu kesin.
  7. Üstte, KIRMIZI3 (+) ve SİYAH3'e (G) kırmızı bir LED takın ve altta lehimleyin.
  8. Altta, RED3'ten gelen ucu SILVER10 üzerindeki bakır altlığa değecek şekilde bükün ve düzeltin.
  9. Altta, lehimin üstündeki BLACK3'ten ucu kesin.
  10. Üstte, GÜMÜŞ1 ve GÜMÜŞ4 geçiş deliklerine 1K direnç takın.
  11. Altta, SILVER1'den BLACK1'e kurşun çizin, düzeltin ve lehimleyin.
  12. Üstte, GÜMÜŞ2 ve GÜMÜŞ4 geçiş deliklerine 1K direnç takın.
  13. Altta, SILVER2'den BLACK2'ye kurşun çizin, düzeltin ve lehimleyin.
  14. Üstte, GÜMÜŞ3 ve GÜMÜŞ4 geçiş deliklerine 1K direnç takın.
  15. Altta, SILVER3'ten BLACK3'e kurşun çizin, düzeltin ve lehimleyin.
  16. Altta, telleri SILVER4 üzerine lehimleyin ve yaklaşık 5 mm uzatarak kesin.
  17. Altta, SILVER4 üzerine siyah bir tel lehimleyin.
  18. Altta, beyaz bir teli SILVER5'e lehimleyin ve RED1'den kurşun için süreklilik sağlayın.
  19. Altta, sarı bir kabloyu SILVER6'ya lehimleyin, RED2'den kurşun için süreklilik sağlayın.
  20. Altta, turuncu bir teli SILVER7'ye lehimleyerek KIRMIZI3'ten kurşunun sürekliliğini sağlayın.

Adım 4: Ana Devrenin Montajı

Ana Devrenin Montajı
Ana Devrenin Montajı
Ana Devrenin Montajı
Ana Devrenin Montajı
Ana Devrenin Montajı
Ana Devrenin Montajı

Toplantı:

  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, BEYAZ1'den BEYAZ2'ye beyaz bir kablo çizin ve lehimleyin.
  7. Arkada, SİYAH1'den SİYAH2'ye siyah bir kablo çizin ve lehimleyin.
  8. Arkada, BLACK3'ten BLACK4'e siyah bir kablo çizin ve lehimleyin.
  9. Arkada, RED1'den RED2'ye kırmızı bir kablo çizin ve lehimleyin.
  10. Arkada, RED3'ten RED4'e çıplak bir kablo çizin ve lehimleyin.
  11. Arkada, GÜMÜŞ1'den GÜMÜŞ2'ye çıplak bir tel çizin ve lehimleyin.
  12. 5V veya 3V3 hattına bir jumper ekleyin.

Yukarıdaki Göstergeleri kullanıyorsanız (pin şemasına bakın):

  1. Arka tarafta beyaz kabloyu PB1'e lehimleyin.
  2. Arka tarafta sarı kabloyu PB3'e lehimleyin.
  3. Arka tarafta, turuncu kabloyu PB4'e lehimleyin.
  4. Arka tarafta siyah kabloyu GND'ye lehimleyin.

Adım 5: 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 I2C komutları gönderir, bu da Alma LED'ini değiştirir. ATTINY ALIVE LED'i açık kalır.

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 1 (yani 16 2 1) girin ve Alma LED'i yanar.
  7. olduğunda, gönderme kutusuna 2 0 (yani 16 2 0) girin ve Alma LED'i söner.

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

6. Adım: Sonraki Adımlar

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

Takip eden ASSIMILATE AKTÖR: Bu tuğlayı kullanan HEARTBEAT, 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.

Önerilen: