Mundarija:
- 1 -qadam: Materiallar va asboblar
- 2 -qadam: ATTINY85 ni tayyorlang
- 3 -qadam: Ko'rsatkichlarni yig'ish
- 4 -qadam: Asosiy sxemani yig'ish
- 5 -qadam: Sinov
- 6 -qadam: Keyingi qadamlar
Video: IOT123 - I2C yurak urish g'isht: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
IOT123 BRICKS - bu modulli DIY birliklari bo'lib, ularni boshqa IOT123 BRICKS bilan maydalash mumkin, bu tugunga funksionallik qo'shish yoki taqish mumkin. Ular dyuymli kvadrat, teshiklari orqali o'zaro bog'langan ikki tomonlama protoboardlarga asoslangan.
Bir qator BRICKS saytdagi bir nechta tugunlarda bo'lishi kerak (Master MCU - ESP8266 yoki ATTINY84). MCU datchiklarning maqsadi yoki dasturiy ta'minot ehtiyojlari haqida oldindan bilishga muhtoj emas. U I2C tugunlarini skanerlaydi, so'ngra har bir quldan xususiyatli dampingni (sensor ma'lumotlarini) so'raydi. Bu BRICKlar 5.0V, 3.3V va sozlanishi mumkin bo'lgan boshqa AUX liniyasini etkazib beradi.
Bu I2C HEARTBEAT BRICK ATTINY qulining tirikligini, shuningdek I2C trafikini va bitta xususiyatga ega ekanligini ko'rsatadi:
STATUS ("Tirik")
PB1 (oq) ATTINY sog'lig'ini ko'rsatadi.
PB3 (sariq) ustadan I2C so'rovlari bilan almashadi.
PB4 (to'q sariq) masterdan I2C qabul qilish bilan almashadi.
ATTINY85-ga ulashgan teshiklar ishlatilmay qoldi, shuning uchun DIP8 PCBga lehimli bo'lsa, pogo pinli dasturchini yoqish mumkin. D1M WIFI BLOCK uyasiga ulanadigan, MQTT serveriga yuklaydigan kichik tsilindrlarga BRICKSni qadoqlashning yana bir mavhumligi ishlab chiqilmoqda.
1 -qadam: Materiallar va asboblar
Materiallar va manbalar ro'yxatining to'liq ro'yxati mavjud.
- Qog'oz PCB (7 x 7 teshik)
- LEDlar (qizil, yashil, ko'k)
- Rezistorlar (3 ta 1K)
- ATTINY85 20PU (1)
- 1 "Ikki tomonlama protoboard (1)
- Erkaklar sarlavhasi 90º (3P, 3P)
- Erkaklar sarlavhasi (2P, 2P)
- Jumper shanti (1)
- Ulanish simlari (~ 7)
- Lehim va temir (1)
2 -qadam: ATTINY85 ni tayyorlang
QAYD: Agar Crouton bilan integratsiyalashmoqchi bo'lsangiz, kutubxonadan shu erdan foydalaning va o'rnatilgan "attiny_heartbeat" misolidan foydalaning.
Kengashlar menejeridan AttinyCore kerak. Bootloader "EEPROM Retained", "8mHZ Internal" yozing (hamma konfiguratsiya yuqorida ko'rsatilgan).
Kodlar omborini bu erda topishingiz mumkin.
Bu erda kutubxonaning zipini topishingiz mumkin.
Bu erda "ZIP kutubxonasini import qilish" bo'yicha ko'rsatmalar.
Kutubxona o'rnatilgach, "attiny_heartbeat" misolini ochishingiz mumkin.
Dasturiy ta'minotni ATTINY85 -ga yuklash uchun siz batafsil ko'rsatmalarni quyidagi ko'rsatmalarda topishingiz mumkin:
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-…
Davom etishdan oldin non paneli orqali test qilish yaxshiroqdir.
Agar sizda ASSIMILATE SENSORS mavjud bo'lsa, SENSOR/MCU Xost kombinatsiyasida qul manzili boshqacha ekanligiga ishonch hosil qiling. Agar siz MCU/tugunida faqat bitta Relay aktyoriga ega bo'lsangiz, barcha Relay aktyorlari bir xil manzilga ega bo'lishlari mumkin.
3 -qadam: Ko'rsatkichlarni yig'ish
Ko'rsatkichlar to'liq moslashtirilishi kerak. Bu yurak urishi sifatida ko'riladigan asosiy sxemadan voqea signallari. Ushbu qurilish uchun biz LED ko'rsatkichlaridan foydalanamiz; sizning qurilmangiz o'rni (ha VCC buzilgan) yoki boshqa vizual/signalga asoslangan indikatordan foydalanishi mumkin. Rezistorlarning qiymatlari siz xohlagan yorqinlikka bog'liq.
- Yuqorida, RED1 (+) va BLACK1 (G) ga ko'k LEDni, pastda esa lehimni joylashtiring.
- Pastki qismida, RED1 -dan simni egib oling, shunda u SILVER8 -dagi mis yostiqqa tegadi va qirqiladi.
- Pastki qismida, lehim ustidagi BLACK1 -dan qo'rg'oshinni kesing.
- Yuqoridan, RED2 (+) va BLACK2 (G) ga yashil rangli LEDni, pastda esa lehimni joylashtiring.
- Pastki tomonda, RED2 -dan simni egib oling, shunda u SILVER9 -dagi mis yostiqqa tegadi va qirqiladi.
- Pastki qismda, lehim ustidagi BLACK2 qo'rg'oshini kesing.
- Yuqoridan, qizil LEDni RED3 (+) va BLACK3 (G) ga joylashtiring, pastda esa lehim.
- Pastki qismida, RED3 -dan qo'rg'oshini egib oling, shunda u SILVER10 -dagi mis yostiqqa tegadi va qirqiladi.
- Pastki tomonda, lehim ustidagi BLACK3 dan qo'rg'oshinni kesing.
- Yuqoridan, SILVER1 va SILVER4 teshiklariga 1K rezistorni joylashtiring.
- Pastki qismida qo'rg'oshinni SILVER1 dan BLACK1 ga kuzatib, qirqib oling va lehimlang.
- Yuqoridan, SILVER2 va SILVER4 teshiklariga 1K rezistorni joylashtiring.
- Pastki qismida qo'rg'oshinni SILVER2 dan BLACK2 ga kuzatib boring, kesing va lehimlang.
- Yuqoridan, SILVER3 va SILVER4 teshiklariga 1K rezistorni joylashtiring.
- Pastki qismida qo'rg'oshinni SILVER3 dan BLACK3 ga qarang, kesing va lehimlang.
- Pastki tomonda, SILVER4 -dagi lehim simlari va taxminan 5 mm cho'zilgan.
- Pastki qismida qora simni SILVER4 ga lehimlang.
- Pastki qismda oq simni SILVER5 ga lehimlang, bu esa RED1 dan uzluksiz uzluksizlikni ta'minlaydi.
- Pastki qismida, sariq telni SILVER6 ga lehimlang, bu esa RED2 dan uzluksiz uzluksizlikni ta'minlaydi.
- Pastki qismida to'q sariq simni SILVER7 ga lehimlang, bu esa RED3 dan uzluksiz uzluksizlikni ta'minlaydi.
4 -qadam: Asosiy sxemani yig'ish
O'rnatish:
- Old tomonga ATTINY85 (1), 3P 90deg erkak sarlavhalari (2) (3), 3P erkaklar sarlavhalari (4) (5) va orqa tarafdagi lehimlarni joylashtiring.
- Orqa tomonda sariq telni YELLOW1dan SARI2gacha va lehimni izlang.
- Orqa tomondan, ORANGE1 dan ORANGE2 gacha bo'lgan to'q sariq simni va lehimni izlang.
- Orqa tomonda, ko'k simni BLUE1dan BLUE2gacha va lehimni izlang.
- Orqa tomonda, GREEN1dan GREEN2gacha bo'lgan yashil simni va lehimni izlang.
- Orqa tomonda, oq simni WHITE1 dan WHITE2 gacha va lehimni izlang.
- Orqa tomonda, qora simni BLACK1 dan BLACK2 gacha va lehimni izlang.
- Orqa tomondan, BLACK3 dan BLACK4 gacha qora simni va lehimni izlang.
- Orqa tomonda RED1 dan RED2 gacha bo'lgan qizil simni va lehimni izlang.
- Orqa tomondan, RED3 dan RED4 gacha bo'lgan yalang'och simni va lehimni izlang.
- Orqa tomondan, SILVER1 dan SILVER2 gacha bo'lgan yalang'och simni va lehimni izlang.
- 5V yoki 3V3 liniyasiga o'tish moslamasini qo'shing.
Agar yuqoridagi indikatorlardan foydalansangiz (ulash sxemasiga qarang):
- Orqa tomonda oq simni PB1 ga lehimlang.
- Orqa tomonda sariq simni PB3 ga lehimlang.
- Orqa tomonda to'q sariq simni PB4 ga lehimlang.
- Orqa tomonda qora simni GND ga lehimlang.
5 -qadam: Sinov
Bir qator BRICKS muhitda bir nechta tugunlarda (MCU - ESP8266 yoki ATTINY84) bo'lishi kutilmoqda. Bu birlik sinovi: UNO dan AT2 ga I2C buyruqlarini yuboradi, bu esa Qabul qilish LEDini o'zgartiradi. ATTINY ALIVE LED yonadi.
Biz ilgari Arduino uchun I2C SHIELD qurganmiz.
Agar siz uni taxtaga joylashtirmoqchi bo'lsangiz:
- UNO -dagi 5.0V -ni BRICK -dagi VCC -ga ulang.
- UNO -dagi GND -ni BRICK -dagi GND -ga ulang.
- UNO -dagi A5 -ni BRICK -dagi SCL -ga ulang.
- A4 -ni UNO -da, BRICK -dagi SDA -ga ulang.
- SDA-dan VCC-ga 4K7 tortish qarshiligini ulang.
- SCL-dan VCC-ga 4K7 tortish qarshiligini ulang.
Sinovdan o'tish
- UNO -ni shaxsiy kompyuteringizga USB orqali ulang.
- Kodni UNOga yuklang.
- Arduino konsolini oching.
- 9600 bodni tanlang (agar kerak bo'lsa, UNOni qayta ishga tushiring va konsolni qayta oching).
- Qulning manzili konsolda chop etiladi.
- Qachon yuborish qutisiga 2 1 kiriting (16 2 1) va Qabul qilish LEDi yonadi.
- Qachon, yuborish maydoniga 2 0 kiriting (shunda 16 2 0) va Qabul qilish LEDi o'chadi.
UNO xo'jayinining qullari uchun I2C BRICK adhoc buyruqlari
#qo'shing |
const bayt _num_chars = 32; |
char _received_chars [_num_chars]; // olingan ma'lumotlarni saqlash uchun massiv |
boolean _has_new_data = noto'g'ri; |
voidsetup () { |
Serial.begin (9600); |
Serial.println (); |
Serial.println ("IOT ACTOR/SENSOR EEPROM EDITORINI ASSIMILASH"); |
Serial.println ("konsol oynasida yangi qator tanlanganligini ta'minlash"); |
Serial.println (); |
Serial.println ("MANZIL 1 METADATA RECIPIPTI YO'Q (M2M uchun) tasdiqlang"); |
Serial.println ("MANZIL 2 AKTOR KOMANDASI"); |
Serial.println (); |
Serial.println ("Avtobusdagi manzillar:"); |
scan_i2c_addresses (); |
Serial.println (); |
Serial.println (""); |
} |
voidscan_i2c_addresses () { |
int device_count = 0; |
uchun (bayt manzili = 8; manzil <127; manzil ++) |
{ |
Wire.beginTransmission (manzil); |
const bayt xatosi = Wire.endTransmission (); |
agar (xato == 0) |
{ |
Serial.println (manzil); |
} |
} |
} |
voidloop () { |
recv_with_end_marker (); |
send_to_i2c (); |
} |
voidrecv_with_end_marker () { |
statik bayt ndx = 0; |
char end_marker = '\ n'; |
char rc; |
while (Serial.available ()> 0 && _has_new_data == false) { |
rc = Serial.read (); |
agar (rc! = end_marker) { |
_received_chars [ndx] = rc; |
ndx ++; |
agar (ndx> = _num_chars) { |
ndx = _num_chars - 1; |
} |
} |
boshqa { |
_received_chars [ndx] = '\ 0'; // qatorni tugatish |
ndx = 0; |
_has_new_data = rost; |
} |
} |
} |
voidsend_to_i2c () { |
char param_buf [16]; |
const String qabul_string = String (_received_chars); |
agar (_has_new_data == rost) { |
int idx1 = qabul qilingan_string.indexOf (''); |
String manzili = qabul qilingan_string.substring (0, idx1); |
int address_int = address.toInt (); |
agar (manzil_int <8 || manzil_int> 127) { |
Serial.println ("ADRESS INVALID INPALID:"); |
Serial.println (manzil); |
qaytish; |
} |
int idx2 = qabul qilingan_string.indexOf ('', idx1+1); |
String kodi; |
agar (idx2 == -1) { |
kod = qabul qilingan_string.substring (idx1+1); |
} boshqa { |
kod = qabul qilingan_string.substring (idx1+1, idx2+1); |
} |
int code_int = code.toInt (); |
agar (code_int <0 || code_int> 5) { |
Serial.println ("YANGI KOD KIRISHI:"); |
Serial.println (kod); |
qaytish; |
} |
bool has_parameter = idx2> -1; |
String parametri; |
agar (has_parametr) { |
parametr = qabul qilingan_string.substring (idx2 + 1, idx2 + 17); // Maksimal 16 ta belgi |
if (parametr.length () <1) { |
Serial.println ("PARTAMETER MIN. LENGTH 1"); |
_has_new_data = noto'g'ri; |
qaytish; |
} |
} boshqa { |
agar (kod_int> 1) { |
Serial.println ("PARAMETR KERAK!"); |
_has_new_data = noto'g'ri; |
qaytish; |
} |
} |
Serial.println (); |
Serial.print ("kirish orig ="); |
Serial.println (qabul qilingan_string); |
Serial.print ("manzil ="); |
Serial.println (manzil); |
Serial.print ("kod ="); |
Serial.println (kod); |
Serial.print ("parametr ="); |
Serial.println (parametr); |
// I2C orqali yuboring |
Wire.beginTransmission (manzil_int); |
Wire.write (code_int); |
agar (has_parametr) { |
parametr.trim (); |
strcpy (param_buf, parameter.c_str ()); |
Wire.write (param_buf); |
} |
Wire.endTransmission (); |
Serial.println (); |
Serial.println ("I2C VIA YUBORILDI!"); |
Serial.println (); |
Serial.println (""); |
_has_new_data = noto'g'ri; |
} |
} |
rawuno_i2c_command_input.ino ni GitHub ❤ tomonidan joylashtirilganini ko'rish
6 -qadam: Keyingi qadamlar
Bu g'ishtdan foydalanadigan ASSIMILATE ACTOR: HEARTBEAT, ATTINY85-da o'rnatilgan metadata orqali Crouton uchun avtomatik konfiguratsiyaga ega. Crouton -ga yuborilgan JSON paketi ICOS10 uchun eng yangi dasturiy ta'minot orqali yuboriladi. Agar konstruktsiya hozircha juda ko'p bo'lsa, siz oddiy ESP8266-da kontseptsiyani tasdiqlashingiz mumkin.
Sinovda ishlatiladigan UNO eskizi ATTINY85 -da EEPROM -ga yangi qul manzilini saqlash funktsiyasiga ega, agar siz maqsadli I2C avtobusida to'qnashuvga duch kelsangiz.
Tavsiya:
Arduino yordamida yurak urish sensori (yurak urish tezligi monitor): 3 qadam
Arduino yordamida yurak urishi sensori (yurak urish tezligi o'lchagichi): yurak urish sensori - bu yurak urish tezligini, ya'ni yurak urish tezligini o'lchash uchun ishlatiladigan elektron qurilma. Tana harorati, yurak urish tezligi va qon bosimini kuzatish - bizni sog'lom saqlash uchun qiladigan asosiy ishimiz. Yurak urishi tez bo'lishi mumkin
Oksimetr va yurak urish tezligi bilan DIY Fitness Tracker aqlli soati - TinyCircuits -dan modulli elektron modullar - Eng kichik arkada: 6 qadam
Oksimetr va yurak urish tezligi bilan DIY Fitness Tracker aqlli soati | TinyCircuits -dan modulli elektron modullar | Eng kichik arja: Hey, nima bo'ldi, bolalar! Akarsh bu erda CETech -dan. Bugungi kunda bizda kundalik hayotda juda foydali bo'lgan sensor modullari bor, lekin ularning kichik versiyasida. Bugungi kunda bizda mavjud bo'lgan datchiklar o'lchamiga qaraganda juda kichik
STONE LCD displeyidagi yurak urish tezligi: 7 qadam
STONE LCD -dagi yurak urish tezligi: Bir muncha vaqt oldin, men onlayn xarid qilishda MAX30100 yurak urish tezligi sensori modulini topdim. Bu modul foydalanuvchilarning kislorod va yurak urish tezligi ma'lumotlarini to'plashi mumkin, bu ham ishlatish uchun qulay va qulaydir.Ma'lumotlarga ko'ra, men M kutubxonalari borligini aniqladim
DIY yurak urish tezligi monitor (logger): 4 qadam
DIY yurak urish tezligi o'lchagichi (logger): Ushbu loyihada men sizga tijorat aqlli soati sizning yurak urish tezligingizni qanday o'lchashini va kuzatib borishini ko'rsataman, shundan so'ng men sizga qanday qilib DIY sxemasini yaratish kerakligini ko'rsataman, u ham xuddi shunday qila oladi yurak urish tezligi ma'lumotlarini saqlash
Yurak urish tezligini o'lchash barmog'ingiz uchida: yurak tezligini aniqlashning fotopletizmografiya usuli: 7 qadam
Yurak urish tezligini o'lchash barmoq uchida: fotopletizmografiya yurak urish tezligini aniqlash usuli: fotopletizmografiya (PPG)-bu oddiy va arzon optik usul bo'lib, u ko'pincha to'qimalarning mikrovaskulyar to'shagidagi qon hajmining o'zgarishini aniqlash uchun ishlatiladi. U asosan terining sirtini o'lchash uchun invaziv bo'lmagan holda ishlatiladi, odatda