I2C പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് രണ്ട് Arduino എങ്ങനെ ആശയവിനിമയം നടത്താം?
I2C പ്രോട്ടോക്കോൾ ആശയവിനിമയം സ്ഥാപിക്കുന്നതിന് ഇലക്ട്രോണിക്സ് മേഖലയിൽ ഇത് വ്യാപകമായി ഉപയോഗിക്കുന്നു ഉപകരണങ്ങൾക്കിടയിൽ. Arduino ബോർഡുകളുടെ കാര്യത്തിൽ, രണ്ടോ അതിലധികമോ ബോർഡുകൾ പരസ്പരം ബന്ധിപ്പിക്കാനും ആശയവിനിമയം നടത്താനും നിങ്ങൾ ആഗ്രഹിക്കുമ്പോൾ ഈ സാങ്കേതികവിദ്യ പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്. ഈ ലേഖനത്തിൽ, ഞങ്ങൾ I2C പ്രോട്ടോക്കോളിൻ്റെ അടിസ്ഥാനകാര്യങ്ങൾ പര്യവേക്ഷണം ചെയ്യുകയും ഈ പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് രണ്ട് ആർഡ്വിനോകൾക്കിടയിൽ വിജയകരമായ ആശയവിനിമയം സ്ഥാപിക്കുന്നതിന് വിശദമായ ഘട്ടം ഘട്ടമായി നൽകുകയും ചെയ്യും.
എന്താണ് I2C പ്രോട്ടോക്കോൾ?
I2C പ്രോട്ടോക്കോൾ, ഇൻ്റർ-ഇൻ്റഗ്രേറ്റഡ് സർക്യൂട്ട് എന്നും അറിയപ്പെടുന്നു, ഇത് രണ്ട് വരികളിലൂടെ ഉപകരണങ്ങൾക്കിടയിൽ ഡാറ്റ കൈമാറ്റം ചെയ്യാൻ അനുവദിക്കുന്ന ഒരു സമന്വയ സീരിയൽ കമ്മ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോളാണ്: ഒരു ഡാറ്റാ ലൈൻ (എസ്ഡിഎ), ഒരു ക്ലോക്ക് (എസ്സിഎൽ) കാരണം ഇത് വ്യാപകമായി ഉപയോഗിക്കുന്നു ഒരേ ബസിൽ ബന്ധിപ്പിച്ചിരിക്കുന്ന ഒന്നിലധികം ഉപകരണങ്ങളുമായി ആശയവിനിമയം നടത്തുന്നതിനുള്ള ലാളിത്യവും കാര്യക്ഷമതയും.
Configuración de hardware
I2C പ്രോട്ടോക്കോളുമായി പ്രവർത്തിക്കാൻ തുടങ്ങുന്നതിനുമുമ്പ്, നിങ്ങൾക്ക് അനുയോജ്യമായ ഹാർഡ്വെയർ ഉണ്ടെന്ന് ഉറപ്പാക്കേണ്ടത് പ്രധാനമാണ്, അവ ബന്ധിപ്പിക്കുന്നതിന് ഞങ്ങൾക്ക് രണ്ട് Arduino ബോർഡുകളും ആവശ്യമായ കേബിളുകളും ആവശ്യമാണ്. കൂടാതെ, ഏത് ബോർഡാണ് യജമാനനായി പ്രവർത്തിക്കേണ്ടതെന്നും ആശയവിനിമയത്തിൽ ഏതാണ് അടിമയെന്നും ഞങ്ങൾ നിർണ്ണയിക്കണം.
Configuración de software
ഹാർഡ്വെയർ കോൺഫിഗറേഷൻ തയ്യാറായിക്കഴിഞ്ഞാൽ, ഞങ്ങൾ ആർഡ്വിനോ ബോർഡുകളിൽ സോഫ്റ്റ്വെയർ തയ്യാറാക്കേണ്ടതുണ്ട്. ഇത് ചെയ്യുന്നതിന്, ഞങ്ങൾ Arduino IDE-യിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന Wire ലൈബ്രറി ഉപയോഗിക്കും, അത് I2C പ്രോട്ടോക്കോൾ നടപ്പിലാക്കുന്നതിന് ആവശ്യമായ പ്രവർത്തനങ്ങൾ നൽകുന്നു. ഓരോ ബോർഡിലും, I2C ആശയവിനിമയം ആരംഭിക്കുന്ന ഒരു പ്രോഗ്രാം ഞങ്ങൾ ലോഡ് ചെയ്യണം, അത് യജമാനനോ അടിമയോ ആയി പ്രവർത്തിക്കുമോ എന്ന് നിർവചിക്കുന്നു.
Comunicación I2C
രണ്ട് ബോർഡുകളിലും ഞങ്ങൾ ഹാർഡ്വെയറും സോഫ്റ്റ്വെയറും കോൺഫിഗർ ചെയ്തുകഴിഞ്ഞാൽ, ഞങ്ങൾക്ക് SDA, SCL ലൈനുകളിൽ ഡാറ്റ അയയ്ക്കുന്നതും സ്വീകരിക്കുന്നതും ഉൾപ്പെടുന്നതാണ് I2C ആശയവിനിമയം. സ്ലേവിന് ഒരു ലക്ഷ്യസ്ഥാന വിലാസം അയച്ചുകൊണ്ട് മാസ്റ്റർ ആശയവിനിമയം ആരംഭിക്കുന്നു, രണ്ട് ഉപകരണങ്ങൾക്കും ദ്വിദിശയിൽ ഡാറ്റ കൈമാറാനും സ്വീകരിക്കാനും കഴിയും.
ഉപസംഹാരമായി, രണ്ട് Arduino ബോർഡുകൾക്കിടയിൽ ആശയവിനിമയം സ്ഥാപിക്കുന്നതിനുള്ള മികച്ച ഓപ്ഷനാണ് I2C പ്രോട്ടോക്കോൾ. ഈ ലേഖനത്തിലൂടെ, ഈ പ്രോട്ടോക്കോളിൻ്റെ അടിസ്ഥാനകാര്യങ്ങൾ ഞങ്ങൾ പര്യവേക്ഷണം ചെയ്യുകയും ഒരു നൽകുകയും ചെയ്തു ഘട്ടം ഘട്ടമായി വിജയകരമായ ആശയവിനിമയം സ്ഥാപിക്കുന്നതിനും സ്ഥാപിക്കുന്നതിനും. ഇപ്പോൾ, ഈ അറിവ് പ്രയോഗത്തിൽ വരുത്താനും ഒന്നിലധികം Arduino ഉപകരണങ്ങൾ കണക്റ്റുചെയ്യേണ്ട കൂടുതൽ സങ്കീർണ്ണമായ പ്രോജക്റ്റുകൾ നിർമ്മിക്കാനുമുള്ള നിങ്ങളുടെ ഊഴമാണ്.
- Arduino-ലെ I2C പ്രോട്ടോക്കോളിലേക്കുള്ള ആമുഖം
I2C പ്രോട്ടോക്കോൾ, ഇൻ്റർ-ഇൻ്റഗ്രേറ്റഡ് സർക്യൂട്ട് എന്നും അറിയപ്പെടുന്നു, ഒരു സാധാരണ ബസിൽ ഒന്നിലധികം ഇലക്ട്രോണിക് ഉപകരണങ്ങളെ ബന്ധിപ്പിക്കുന്നതിന് ഉപയോഗിക്കുന്ന ഒരു സീരിയൽ കമ്മ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോൾ ആണ്. രണ്ടോ അതിലധികമോ ആർഡ്വിനോ ബോർഡുകൾ ബന്ധിപ്പിക്കുന്നതിന് നമുക്ക് ഈ പ്രോട്ടോക്കോൾ ഉപയോഗിക്കാം, കൂടാതെ ഡാറ്റ കൈമാറാൻ രണ്ട് കേബിളുകൾ മാത്രമേ ആവശ്യമുള്ളൂ എന്നതിനാൽ, കുറച്ച് ദൂരത്തേക്ക് ഉപകരണങ്ങൾ കണക്റ്റുചെയ്യാൻ നോക്കുമ്പോൾ അവ പരസ്പരം ആശയവിനിമയം നടത്താൻ അനുവദിക്കും കൂടാതെ, ഇത് ഇലക്ട്രോണിക് വ്യവസായത്തിൽ വളരെ വിശ്വസനീയവും വ്യാപകമായി ഉപയോഗിക്കുന്നതുമായ ഒരു പ്രോട്ടോക്കോൾ ആണ്.
രണ്ട് Arduino ബോർഡുകൾക്കിടയിൽ I2C ആശയവിനിമയം സ്ഥാപിക്കുന്നതിന്, ഞങ്ങൾ ഒരു മാസ്റ്ററെയും ഒന്നോ അതിലധികമോ അടിമകളെയും കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട്. ആശയവിനിമയം ആരംഭിക്കുന്നതിനും നിയന്ത്രിക്കുന്നതിനും യജമാനൻ ഉത്തരവാദിയായിരിക്കും, അതേസമയം അടിമകൾ യജമാനൻ്റെ അഭ്യർത്ഥനകളോട് പ്രതികരിക്കും. കണക്ഷൻ സ്ഥാപിച്ചുകഴിഞ്ഞാൽ, ഉപകരണങ്ങൾക്കിടയിൽ ഞങ്ങൾക്ക് ഡാറ്റ അയയ്ക്കാനും സ്വീകരിക്കാനും കഴിയും. I2C ബസിലെ ഓരോ ഉപകരണത്തിനും ഒരു അദ്വിതീയ വിലാസം നൽകിയിരിക്കണം എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്, ഇത് മാസ്റ്ററെ തിരിച്ചറിയാനും ആവശ്യാനുസരണം അവരുമായി ആശയവിനിമയം നടത്താനും അനുവദിക്കുന്നു.
I2C പ്രോട്ടോക്കോളിൻ്റെ ഒരു നേട്ടം, അത് ടു-വേ കമ്മ്യൂണിക്കേഷൻ അനുവദിക്കുന്നു, അതായത് യജമാനനും അടിമകൾക്കും ഡാറ്റ അയയ്ക്കാനും സ്വീകരിക്കാനും കഴിയും. ഉപകരണങ്ങൾ തമ്മിലുള്ള വിവര കൈമാറ്റത്തിൻ്റെ കാര്യത്തിൽ ഇത് "സാധ്യതകളുടെ ലോകം" തുറക്കുന്നു. കൂടാതെ, ഈ പ്രോട്ടോക്കോൾ കാസ്കേഡ് ആശയവിനിമയത്തിനും അനുവദിക്കുന്നു, അതായത് ഞങ്ങൾക്ക് ഒന്നിലധികം അടിമകളെ ഒരൊറ്റ മാസ്റ്ററുമായി ബന്ധിപ്പിക്കാൻ കഴിയും, അങ്ങനെ ഞങ്ങളുടെ സിസ്റ്റത്തിൻ്റെ കഴിവുകൾ വിപുലീകരിക്കുകയും ചില അടിസ്ഥാന പ്രോഗ്രാമിംഗ് പരിജ്ഞാനവും ആർഡ്വിനോയിലെ I2C-യ്ക്കായി പ്രത്യേക ലൈബ്രറികളുടെ ഉപയോഗവും ഉപയോഗിച്ച്, ഒരു കണക്ഷൻ സ്ഥാപിക്കുന്നതും ഉപയോഗിക്കുന്ന ഉപകരണങ്ങൾക്കിടയിൽ ഡാറ്റ കൈമാറ്റം ചെയ്യാൻ ആരംഭിക്കുന്നതും താരതമ്യേന ലളിതമാണ്. ഈ പ്രോട്ടോക്കോൾ.
- I2C ആശയവിനിമയത്തിനുള്ള Arduino കോൺഫിഗറേഷൻ
രണ്ട് ആർഡ്വിനോകൾ തമ്മിൽ ആശയവിനിമയം നടത്തുന്നതിനുള്ള ഏറ്റവും കാര്യക്ഷമമായ മാർഗ്ഗം I2C പ്രോട്ടോക്കോൾ അല്ലെങ്കിൽ ഇൻ്റർ-ഇൻ്റഗ്രേറ്റഡ് സർക്യൂട്ട് ആണ്. ഈ പ്രോട്ടോക്കോൾ രണ്ട് കേബിളുകൾ മാത്രം ഉപയോഗിച്ച് ഒന്നിലധികം ഉപകരണങ്ങൾക്കിടയിൽ സിൻക്രണസ് സീരിയൽ ആശയവിനിമയം അനുവദിക്കുന്നു, ഒന്ന് ഫോർ ഡാറ്റാ ട്രാൻസ്മിഷൻ (എസ്ഡിഎ), മറ്റൊന്ന് ഫോർ ക്ലോക്ക് സിൻക്രൊണൈസേഷൻ (എസ്സിഎൽ). I2C പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നതിന് Arduinos ക്രമീകരിക്കുന്നത് വളരെ ലളിതമാണ് കൂടാതെ ലാളിത്യത്തിൻ്റെയും ആശയവിനിമയ കാര്യക്ഷമതയുടെയും കാര്യത്തിൽ നിരവധി നേട്ടങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു.
I2C കമ്മ്യൂണിക്കേഷനായി Arduino കോൺഫിഗർ ചെയ്യുന്നതിന്, നമ്മൾ ആദ്യം ഓരോ Arduino-യുടെയും പങ്ക് നിർവചിക്കേണ്ടതുണ്ട്, അതായത്, അത് ഒരു യജമാനനായോ അടിമയായോ പ്രവർത്തിക്കുമോ എന്ന്. അടുത്തതായി, ഓരോ ഉപകരണത്തിനും അനുയോജ്യമായ SDA, SCL കേബിളുകൾ ഉപയോഗിച്ച് ഞങ്ങൾ രണ്ട് Arduinos-ഉം ബന്ധിപ്പിക്കുന്നത് ഒരു പൊതു വോൾട്ടേജ് റഫറൻസ് സ്ഥാപിക്കുന്നതിന് രണ്ട് Arduino-കളും ഗ്രൗണ്ടുമായി (GND) ബന്ധിപ്പിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കേണ്ടത് പ്രധാനമാണ്.
നമ്മൾ Arduinos ഫിസിക്കൽ ആയി കണക്ട് ചെയ്തു കഴിഞ്ഞാൽ, ഓരോന്നിലും അതിനനുസരിച്ചുള്ള കോഡ് നമ്മൾ പ്രോഗ്രാം ചെയ്യണം. Arduino മാസ്റ്ററിൽ, I2C ആശയവിനിമയം ആരംഭിക്കാൻ ഞങ്ങൾ Wire.h ലൈബ്രറി ഉപയോഗിക്കുന്നു, ആവശ്യമുള്ള ആശയവിനിമയ ആവൃത്തി സജ്ജീകരിക്കുന്നു, തുടർന്ന്, ഒരു ട്രാൻസ്മിഷൻ ആരംഭിക്കുന്നതിന് Wire.beginTransmission() പോലുള്ള ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് ഞങ്ങൾക്ക് ഡാറ്റ അയയ്ക്കാനും സ്വീകരിക്കാനും കഴിയും. ഡാറ്റ അയയ്ക്കാൻ () എഴുതുക. അടിമയായ ആർഡ്വിനോയിൽആശയവിനിമയം ആരംഭിക്കുന്നതിനും ഒരു I2C ട്രാൻസ്മിഷൻ ലഭിക്കുമ്പോൾ പ്രവർത്തനക്ഷമമാക്കുന്ന ഒരു ഇൻ്ററപ്റ്റ് ഫംഗ്ഷൻ കോൺഫിഗർ ചെയ്യുന്നതിനും ഞങ്ങൾ Wire.h ലൈബ്രറി ഉപയോഗിക്കുന്നു. ഈ ഫംഗ്ഷനിൽ, ഡാറ്റ ലഭ്യമാണോയെന്ന് പരിശോധിക്കാൻ Wire.available() ഫംഗ്ഷനും മാസ്റ്റർ അയച്ച ഡാറ്റ സ്വീകരിക്കുന്നതിന് Wire.read() ഫംഗ്ഷനും ഉപയോഗിക്കാം.
I2C ആശയവിനിമയത്തിനായി Arduinos ക്രമീകരിക്കുന്നത് ഒന്നിലധികം ഉപകരണങ്ങൾക്കിടയിൽ സീരിയൽ ആശയവിനിമയം സ്ഥാപിക്കുന്നതിനുള്ള കാര്യക്ഷമവും ലളിതവുമായ മാർഗമാണ്. ഈ പ്രോട്ടോക്കോൾ താരതമ്യേന ഉയർന്ന ആശയവിനിമയ വേഗത വാഗ്ദാനം ചെയ്യുന്നു, കൂടാതെ ഏറ്റവും കുറഞ്ഞ എണ്ണം കേബിളുകൾ ആവശ്യമാണ്, കണക്ഷൻ ലളിതമാക്കുകയും സർക്യൂട്ടുകളുടെ വലുപ്പം കുറയ്ക്കുകയും ചെയ്യുന്നു. മുകളിൽ സൂചിപ്പിച്ച ഘട്ടങ്ങൾ പിന്തുടർന്ന്, I2C പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് two Arduino തമ്മിൽ സുഗമവും സുരക്ഷിതവുമായ ആശയവിനിമയം സ്ഥാപിക്കാൻ നമുക്ക് കഴിയും. തമ്മിൽ ആശയവിനിമയം ആവശ്യമുള്ള കൂടുതൽ സങ്കീർണ്ണമായ പ്രോജക്റ്റുകൾ വികസിപ്പിക്കാൻ നിങ്ങൾ ഇപ്പോൾ തയ്യാറാണ് ഒന്നിലധികം ഉപകരണങ്ങൾ!
- I2C ഉപയോഗിച്ച് ആർഡ്വിനോ ഉപകരണങ്ങളുടെ ഫിസിക്കൽ കണക്ഷൻ
I2C പ്രോട്ടോക്കോൾ a കാര്യക്ഷമമായ മാർഗം Arduino ഉപകരണങ്ങൾ പരസ്പരം ബന്ധിപ്പിക്കുന്നതിനുള്ള ജനപ്രിയ മാർഗവും. രണ്ട് കേബിളുകൾ മാത്രം ഉപയോഗിച്ച് ദ്വി-ദിശ ഡാറ്റാ ആശയവിനിമയം ഇത് അനുവദിക്കുന്നു, ഒരു നെറ്റ്വർക്കിൽ ഒന്നിലധികം ഉപകരണങ്ങൾ കണക്റ്റുചെയ്യുന്നത് എളുപ്പമാക്കുന്നു. I2C വഴിയുള്ള ഈ ഫിസിക്കൽ കണക്ഷൻ ഒരു ജോടി കേബിളുകളെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, ഒന്ന് ഡാറ്റാ ട്രാൻസ്ഫറിനും (എസ്ഡിഎ) മറ്റൊന്ന് ക്ലോക്കിനും (എസ്സിഎൽ). ഈ കണക്ഷൻ ഉപയോഗിച്ച്, രണ്ട് ആർഡ്വിനോകൾക്കിടയിൽ തത്സമയ ആശയവിനിമയം വേഗത്തിലും എളുപ്പത്തിലും സ്ഥാപിക്കാൻ സാധിക്കും.
Arduino-യിൽ I2C പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നതിന്, ഒന്ന് കോൺഫിഗർ ചെയ്യേണ്ടത് ആവശ്യമാണ്. ഉപകരണങ്ങളുടെ യജമാനനായും മറ്റേയാൾ അടിമയായും. ആശയവിനിമയം ആരംഭിക്കുന്നതിനും നിയന്ത്രിക്കുന്നതിനും യജമാനന് ഉത്തരവാദിത്തമുണ്ട്, അതേസമയം അടിമ യജമാനൻ്റെ നിർദ്ദേശങ്ങൾക്കായി കാത്തിരിക്കുകയും അതിനനുസരിച്ച് പ്രതികരിക്കുകയും ചെയ്യുന്നു. ആശയവിനിമയ വൈരുദ്ധ്യങ്ങൾ ഒഴിവാക്കാൻ I2C നെറ്റ്വർക്കിലെ ഓരോ സ്ലേവ് ഉപകരണത്തിനും ഒരു അദ്വിതീയ വിലാസം സ്ഥാപിക്കേണ്ടത് പ്രധാനമാണ്.
ഫിസിക്കൽ കണക്ഷനും മാസ്റ്റർ-സ്ലേവ് റോളുകളും കോൺഫിഗർ ചെയ്തുകഴിഞ്ഞാൽ, Arduino ഉപകരണങ്ങൾക്ക് I2C പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് ഡാറ്റ കൈമാറാൻ കഴിയും. കണക്റ്റുചെയ്ത ഉപകരണങ്ങളുടെ പ്രവർത്തനത്തിന് ആവശ്യമായ സെൻസർ മൂല്യങ്ങൾ, കമാൻഡുകൾ, മറ്റേതെങ്കിലും തരത്തിലുള്ള ഡാറ്റ എന്നിവ പോലുള്ള വിവരങ്ങൾ അയയ്ക്കാനും സ്വീകരിക്കാനും ഇത് അനുവദിക്കുന്നു. കൂടാതെ, I2C പ്രോട്ടോക്കോൾ ഒരേ നെറ്റ്വർക്കിൽ നിരവധി സ്ലേവ് ഉപകരണങ്ങളുടെ കണക്ഷൻ അനുവദിക്കുന്നു, ഇത് ആർഡ്വിനോയുടെ കഴിവുകൾ അളക്കാവുന്നതും വഴക്കമുള്ളതുമായ രീതിയിൽ വികസിപ്പിക്കാനുള്ള സാധ്യത നൽകുന്നു.
- Arduinos തമ്മിൽ I2C ആശയവിനിമയം സ്ഥാപിക്കൽ
രണ്ടോ അതിലധികമോ ആർഡ്വിനോ ഉപകരണങ്ങൾക്കിടയിൽ ആശയവിനിമയം സ്ഥാപിക്കുന്നതിനുള്ള ലളിതവും കാര്യക്ഷമവുമായ മാർഗമാണ് I2C (ഇൻ്റർ-ഇൻ്റഗ്രേറ്റഡ് സർക്യൂട്ട്) പ്രോട്ടോക്കോൾ. ഈ പ്രോട്ടോക്കോൾ ഒരു മാസ്റ്റർ-സ്ലേവ് കോൺഫിഗറേഷനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, അവിടെ ആർഡ്വിനോകളിൽ ഒരാൾ ആശയവിനിമയം ആരംഭിക്കുകയും നിയന്ത്രിക്കുകയും ചെയ്യുന്ന മാസ്റ്ററായി പ്രവർത്തിക്കുന്നു, മറ്റുള്ളവർ യജമാനനിൽ നിന്നുള്ള കമാൻഡുകൾ സ്വീകരിക്കുകയും പ്രതികരിക്കുകയും ചെയ്യുന്ന അടിമകളായി പ്രവർത്തിക്കുന്നു. അടുത്തതായി, രണ്ട് ആർഡ്വിനോകൾക്കിടയിൽ I2C ആശയവിനിമയം എങ്ങനെ സ്ഥാപിക്കാമെന്ന് ഞങ്ങൾ കാണിച്ചുതരാം.
ആരംഭിക്കുന്നതിന്, നിങ്ങൾ ഉപയോഗിച്ച് Arduinos ബന്ധിപ്പിക്കേണ്ടതുണ്ട് el bus I2C. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ ഓരോ Arduino-യുടെയും SDA (സീരിയൽ ഡാറ്റ), SCL (സീരിയൽ ക്ലോക്ക്) പിന്നുകൾ ബന്ധിപ്പിക്കണം. ഡാറ്റ അയയ്ക്കാനും സ്വീകരിക്കാനും SDA പിൻ ഉപയോഗിക്കുന്നു, ആശയവിനിമയം സമന്വയിപ്പിക്കാൻ SCL പിൻ ഉപയോഗിക്കുന്നു. നിങ്ങൾ കേബിളുകൾ കണക്റ്റുചെയ്തുകഴിഞ്ഞാൽ, നിങ്ങൾ ഉപകരണങ്ങളുടെ വിലാസങ്ങൾ സജ്ജീകരിക്കേണ്ടതുണ്ട്. ഓരോ ആർഡ്വിനോയ്ക്കും അവയെ വേർതിരിച്ചറിയാൻ ഒരു അദ്വിതീയ വിലാസം ഉണ്ടായിരിക്കണം. ഫംഗ്ഷൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഓരോ ഉപകരണത്തിൻ്റെയും കോഡിൽ ഈ വിലാസങ്ങൾ നൽകാം Wire.begin().
നിങ്ങൾ കണക്ഷനുകളും ഉപകരണ വിലാസങ്ങളും സ്ഥാപിച്ചുകഴിഞ്ഞാൽ, നിങ്ങൾക്ക് I2C പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് Arduinos തമ്മിൽ ആശയവിനിമയം നടത്താൻ കഴിയും. ഫംഗ്ഷൻ ഉപയോഗിച്ച് സ്ലേവിൽ നിന്ന് മാസ്റ്ററിന് ഡാറ്റ അഭ്യർത്ഥിക്കാൻ കഴിയും Wire.requestFrom(), കൂടാതെ ഫംഗ്ഷൻ ഉപയോഗിച്ച് ഡാറ്റ അയച്ചുകൊണ്ട് സ്ലേവിന് പ്രതികരിക്കാനാകും Wire.write(). കൂടാതെ, നിങ്ങൾക്ക് ഫംഗ്ഷനുകൾ ഉപയോഗിക്കാം Wire.available() y Wire.read() ലഭിച്ച ഡാറ്റ വായിക്കാൻ. പൂർണ്ണസംഖ്യകൾ, പ്രതീകങ്ങൾ, ബൈറ്റ് അറേകൾ എന്നിങ്ങനെ വ്യത്യസ്ത തരങ്ങളുടെ ഡാറ്റ കൈമാറാൻ I2C ആശയവിനിമയം നിങ്ങളെ അനുവദിക്കുന്നു.
– I2C ആശയവിനിമയത്തിനുള്ള കോഡിൻ്റെ നടപ്പാക്കൽ
La കോഡ് നടപ്പിലാക്കൽ രണ്ട് Arduino തമ്മിലുള്ള I2C ആശയവിനിമയത്തിന് ഇത് ഒരു പ്രക്രിയയാണ് രണ്ട് ഉപകരണങ്ങൾക്കിടയിലും ഫലപ്രദമായ ഇടപെടൽ നേടുന്നതിന് അത്യാവശ്യമാണ്. I2C (ഇൻ്റർ-ഇൻ്റഗ്രേറ്റഡ് സർക്യൂട്ട്) പ്രോട്ടോക്കോൾ ആശയവിനിമയത്തിൻ്റെ ലളിതവും കാര്യക്ഷമവുമായ ഒരു രൂപമാണ്, അതിൽ ഒരു മാസ്റ്റർ ഉപകരണത്തിന് ബൈഡയറക്ഷണൽ ഡാറ്റ ബസ് വഴി ഒന്നിലധികം സ്ലേവ് ഉപകരണങ്ങളെ നിയന്ത്രിക്കാനാകും. ഈ ആശയവിനിമയം സ്ഥാപിക്കുന്നതിന് ആവശ്യമായ കോഡ് എങ്ങനെ നടപ്പിലാക്കണം എന്നതിൻ്റെ ഒരു ഉദാഹരണം ചുവടെയുണ്ട്.
ആരംഭിക്കുന്നതിന്, അത് ആവശ്യമാണ് പിന്നുകൾ നിർവ്വചിക്കുക ഓരോ Arduino-യിലും I2C ആശയവിനിമയത്തിന് ഇത് ഉപയോഗിക്കും. കൺവെൻഷൻ പ്രകാരം, ക്ലോക്ക് സിഗ്നലിനായി (SCL) അനലോഗ് പിൻ A4 ഉപയോഗിക്കുന്നു, ഡാറ്റ സിഗ്നലിനായി (SDA) പിൻ A5 ഉപയോഗിക്കുന്നു. ഈ പിന്നുകൾ കോഡിൽ യഥാക്രമം ഇൻപുട്ടുകളും ഔട്ട്പുട്ടുകളും ആയി ക്രമീകരിച്ചിരിക്കണം. കൂടാതെ, I2C പ്രോട്ടോക്കോൾ കൈകാര്യം ചെയ്യുന്നതിന് ആവശ്യമായ പ്രവർത്തനങ്ങളും രീതികളും ലഭിക്കുന്നതിന് Wire.h ലൈബ്രറി ഉൾപ്പെടുത്തിയിരിക്കണം.
പിന്നുകളും ലൈബ്രറിയും ക്രമീകരിച്ചുകഴിഞ്ഞാൽ, അത് ആവശ്യമാണ് I2C ആശയവിനിമയം ആരംഭിക്കുക ആർഡ്വിനോ രണ്ടിലും. ഇത് ചെയ്യുന്നതിന്, ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നു Wire.begin() കോഡിൽ. ആശയവിനിമയം ശരിയായി സ്ഥാപിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കാൻ, ഓരോ ആർഡ്വിനോയുടെയും സജ്ജീകരണത്തിൽ () ഈ ഫംഗ്ഷൻ വിളിക്കണം. ആശയവിനിമയം ആരംഭിച്ചുകഴിഞ്ഞാൽ, ലൈബ്രറിയിൽ ലഭ്യമായ ഫംഗ്ഷനുകൾ ഉപയോഗിച്ച് Arduino മാസ്റ്ററിന് I2C ബസിലൂടെ ഡാറ്റ അയയ്ക്കാനും സ്വീകരിക്കാനും കഴിയും.
- I2C ആശയവിനിമയത്തിലെ ട്രാൻസ്ഫർ നിരക്ക് പരിഗണനകൾ
I2C കമ്മ്യൂണിക്കേഷനിൽ ട്രാൻസ്ഫർ റേറ്റ് പരിഗണനകൾ
I2C പ്രോട്ടോക്കോൾ അതിൻ്റെ ലാളിത്യവും കാര്യക്ഷമതയും കാരണം രണ്ട് Arduinos തമ്മിലുള്ള ആശയവിനിമയത്തിനുള്ള ഒരു ജനപ്രിയ തിരഞ്ഞെടുപ്പാണ്. എന്നിരുന്നാലും, ഈ പ്രോട്ടോക്കോളുമായി പ്രവർത്തിക്കുമ്പോൾ, ട്രാൻസ്ഫർ വേഗത പരിഗണിക്കേണ്ടത് പ്രധാനമാണ്. ഉപകരണങ്ങൾക്കിടയിൽ വിവരങ്ങൾ കൈമാറുന്നതിനുള്ള സമയത്തെ വേഗത നേരിട്ട് ബാധിക്കുന്നു. രണ്ട് ഉപകരണങ്ങൾ, അങ്ങനെ അത്യാവശ്യമാണ് വിശ്വസനീയമായ ആശയവിനിമയം ഉറപ്പാക്കാൻ ഈ പരാമീറ്റർ വിശകലനം ചെയ്യുകയും ഉചിതമായി ക്രമീകരിക്കുകയും ചെയ്യുക.
ആദ്യം, I2C പ്രോട്ടോക്കോളിൽ ട്രാൻസ്ഫർ സ്പീഡ് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് മനസ്സിലാക്കേണ്ടത് പ്രധാനമാണ്.. ഈ വേഗത സെക്കൻഡിൽ പ്രക്ഷേപണം ചെയ്യാൻ കഴിയുന്ന ബിറ്റുകളുടെ എണ്ണത്തെ സൂചിപ്പിക്കുന്നു. രണ്ട് ആർഡ്വിനോകൾ തമ്മിലുള്ള ആശയവിനിമയത്തിൻ്റെ കാര്യത്തിൽ, രണ്ട് ഉപകരണങ്ങളും ഒരേ വേഗതയിൽ ക്രമീകരിച്ചിരിക്കണം, അതുവഴി അവയ്ക്ക് ശരിയായി ആശയവിനിമയം നടത്താൻ കഴിയും, കൂടാതെ, ഉപയോഗിക്കുന്ന ആർഡ്വിനോ മോഡലിനെ ആശ്രയിച്ച് വേഗത വ്യത്യാസപ്പെടാം, അതിനാൽ ഇത് അറിയാൻ ഔദ്യോഗിക ഡോക്യുമെൻ്റേഷൻ പരിശോധിക്കേണ്ടത് പ്രധാനമാണ്. ഓരോ ഉപകരണത്തിൻ്റെയും വേഗത പരിമിതികൾ.
കണക്കിലെടുക്കേണ്ട മറ്റൊരു വശം ട്രാൻസ്ഫർ വേഗതയെ ബാധിക്കുന്ന ശാരീരിക പരിമിതികളാണ്.. ഉപകരണങ്ങളെ ബന്ധിപ്പിക്കാൻ ഉപയോഗിക്കുന്ന കേബിളുകളുടെ ദൈർഘ്യം, അതുപോലെ തന്നെ വൈദ്യുതകാന്തിക ഇടപെടൽ, ഉയർന്ന വേഗതയിൽ ആശയവിനിമയത്തിൻ്റെ വിശ്വാസ്യതയെ സ്വാധീനിക്കും. ചില സന്ദർഭങ്ങളിൽ, ഇത്തരം പ്രശ്നങ്ങൾ കുറയ്ക്കുന്നതിന് ചെറിയ കേബിളുകൾ ഉപയോഗിക്കേണ്ടിവരാം അല്ലെങ്കിൽ ഷീൽഡിംഗ് ടെക്നിക്കുകൾ ഉപയോഗിക്കേണ്ടി വന്നേക്കാം. ട്രാൻസ്ഫർ വേഗത ഉപകരണങ്ങളുടെ വൈദ്യുതി ഉപഭോഗത്തെ ബാധിക്കുമെന്നത് പരിഗണിക്കേണ്ടതും പ്രധാനമാണ്, അതിനാൽ പ്രോജക്റ്റിൻ്റെ പ്രത്യേക ആവശ്യകതകളെ അടിസ്ഥാനമാക്കി ഇത് ക്രമീകരിക്കുന്നത് നല്ലതാണ്.
ചുരുക്കത്തിൽ, I2C പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് രണ്ട് Arduinos ആശയവിനിമയം നടത്തുമ്പോൾ, ഈ പരാമീറ്റർ ശരിയായി ക്രമീകരിക്കുന്നത് വിശ്വസനീയമായ ആശയവിനിമയത്തിന് ഉറപ്പുനൽകുന്നു, മാത്രമല്ല സിസ്റ്റം പ്രകടനം ഒപ്റ്റിമൈസ് ചെയ്യുകയും ചെയ്യുന്നു. ട്രാൻസ്ഫർ നിരക്ക് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് മനസിലാക്കുകയും ഭൗതിക പരിമിതികൾ കണക്കിലെടുക്കുകയും ചെയ്യുന്നതിലൂടെ, I2C പ്രോട്ടോക്കോൾ ശരിയായി ക്രമീകരിക്കാനും ഉപകരണങ്ങൾക്കിടയിൽ വിജയകരമായ ആശയവിനിമയം നേടാനും സാധിക്കും.
- I2C ആശയവിനിമയത്തിനുള്ള ട്രബിൾഷൂട്ടിംഗും ശുപാർശകളും
I2C ആശയവിനിമയത്തിനുള്ള ട്രബിൾഷൂട്ടിംഗും ശുപാർശകളും
ഈ പോസ്റ്റിൽ, രണ്ട് Arduino ബോർഡുകൾക്കിടയിലുള്ള I2C ആശയവിനിമയ പ്രശ്നങ്ങൾക്കുള്ള ചില പൊതുവായ പരിഹാരങ്ങളും ഫലപ്രദമായ ഡാറ്റ ട്രാൻസ്മിഷൻ ഉറപ്പാക്കുന്നതിനുള്ള ചില ശുപാർശകളും ഞങ്ങൾ നിങ്ങൾക്ക് കാണിച്ചുതരാം.
I2C ആശയവിനിമയത്തിലെ ഏറ്റവും സാധാരണമായ പ്രശ്നങ്ങളിലൊന്ന് ഫിസിക്കൽ കണക്ഷൻ്റെ അഭാവമാണ്. പുൾ-അപ്പ് റെസിസ്റ്ററുകൾ എസ്ഡിഎ, എസ്സിഎൽ പിന്നുകൾക്കും സപ്ലൈ വോൾട്ടേജിനുമിടയിൽ ശരിയായി ബന്ധിപ്പിച്ചിട്ടുണ്ടോ എന്നും പരിശോധിക്കുക.
സാധ്യമായ മറ്റൊരു പ്രശ്നം തെറ്റായ I2C വിലാസമായിരിക്കാം. I2C ബസുമായി ബന്ധിപ്പിച്ചിരിക്കുന്ന ഓരോ ഉപകരണത്തിനും ഒരു അദ്വിതീയ വിലാസം ഉണ്ടായിരിക്കണം. നിങ്ങൾ ഒരേ ബസിൽ ഒന്നിലധികം ഉപകരണങ്ങൾ ഉപയോഗിക്കുന്നുണ്ടെങ്കിൽ, ഓരോ ഉപകരണത്തിനും ഒരു അദ്വിതീയ വിലാസമുണ്ടെന്നും ആ വിലാസം നിങ്ങളുടെ കോഡിൽ ശരിയായി ക്രമീകരിച്ചിട്ടുണ്ടെന്നും ഉറപ്പാക്കുക. ഉപകരണ വിലാസങ്ങൾ തമ്മിലുള്ള വൈരുദ്ധ്യങ്ങളും പരിശോധിച്ച് ഡ്യൂപ്ലിക്കേഷൻ ഇല്ലെന്ന് ഉറപ്പാക്കുക.
I2C ആശയവിനിമയം മെച്ചപ്പെടുത്തുന്നതിനുള്ള ചില ശുപാർശകൾ ഇതാ:
1. ഹ്രസ്വവും ഗുണനിലവാരമുള്ളതുമായ കേബിളുകൾ ഉപയോഗിക്കുക: ദൈർഘ്യമേറിയതോ മോശം നിലവാരമുള്ളതോ ആയ കേബിളുകൾക്ക് I2C സിഗ്നലിലേക്ക് ഇടപെടാൻ കഴിയും, ഈ ഇടപെടൽ കുറയ്ക്കുന്നതിന് ഹ്രസ്വവും നല്ലതുമായ കേബിളുകൾ ഉപയോഗിക്കുക.
2. പുൾ-അപ്പ് റെസിസ്റ്ററുകൾ സ്ഥാപിക്കുക: പുൾ-അപ്പ് റെസിസ്റ്ററുകൾ എസ്ഡിഎ, എസ്സിഎൽ പിന്നുകൾ സജീവമായി പ്രവർത്തിക്കാത്തപ്പോൾ ലോജിക് ഹൈ സ്റ്റേറ്റ് സജ്ജമാക്കാൻ സഹായിക്കുന്നു. ഇത് സ്ഥിരമായ ഒരു സിഗ്നൽ നിലനിർത്താനും ആശയവിനിമയ പ്രശ്നങ്ങൾ ഒഴിവാക്കാനും സഹായിക്കുന്നു.
3. നിങ്ങൾക്ക് മതിയായ കാത്തിരിപ്പ് സമയം ഉണ്ടെന്ന് ഉറപ്പാക്കുക: I2C ബസിലൂടെ ഡാറ്റ കൈമാറുമ്പോൾ, ട്രാൻസ്മിഷനുകൾക്കിടയിൽ മതിയായ കാത്തിരിപ്പ് സമയം ഉണ്ടെന്ന് ഉറപ്പാക്കേണ്ടത് പ്രധാനമാണ്. പുതിയ ഡാറ്റ ലഭിക്കുന്നതിന് മുമ്പ് ലഭിച്ച ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്നതിന് ആവശ്യമായ സമയം ഉപകരണങ്ങൾക്ക് ഇത് അനുവദിക്കുന്നു.
I2C ആശയവിനിമയം ഒന്നിലധികം Arduino ഉപകരണങ്ങളെ ബന്ധിപ്പിക്കുന്നതിനുള്ള ഒരു ഫലപ്രദമായ മാർഗമാണെന്ന് ഓർമ്മിക്കുക, എന്നാൽ ഈ പൊതുവായ പ്രശ്നങ്ങളെക്കുറിച്ച് അറിഞ്ഞിരിക്കുകയും സുഗമമായ ആശയവിനിമയം ഉറപ്പാക്കുന്നതിന് മുകളിൽ സൂചിപ്പിച്ച ശുപാർശകൾ പാലിക്കുകയും ചെയ്യേണ്ടത് പ്രധാനമാണ്.
- Arduino-യിൽ I2C പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നതിൻ്റെ ഗുണങ്ങളും ദോഷങ്ങളും
Arduino-യിൽ I2C പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നതിൻ്റെ പ്രയോജനങ്ങൾ
Arduino-യിൽ I2C പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നതിൻ്റെ പ്രധാന നേട്ടങ്ങളിലൊന്ന് ഒരു കമ്മ്യൂണിക്കേഷൻ ബസിൽ ഒന്നിലധികം ഉപകരണങ്ങൾ ബന്ധിപ്പിക്കാനുള്ള കഴിവാണ്. ഇതിനർത്ഥം നമുക്ക് നിരവധി ആർഡ്വിനോകൾ പരസ്പരം ഇടപഴകുകയും വിവരങ്ങൾ പങ്കിടുകയും ഏകോപിപ്പിച്ച് പ്രവർത്തിക്കുകയും ചെയ്യാം. കൂടാതെ, ഡാറ്റ കൈമാറ്റത്തിൽ I2C പ്രോട്ടോക്കോൾ വളരെ കാര്യക്ഷമമാണ്, ഇത് വേഗത്തിലും വിശ്വസനീയമായും വിവരങ്ങൾ കൈമാറാൻ ഞങ്ങളെ അനുവദിക്കുന്നു.
മറ്റൊരു പ്രധാന നേട്ടം അതിൻ്റെ നടപ്പാക്കലിൻ്റെ ലാളിത്യമാണ്. ആശയവിനിമയത്തിനായി I2C പ്രോട്ടോക്കോൾ രണ്ട് കണക്റ്റിംഗ് വയറുകൾ (SDA, SCL) മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ, ഇത് കോൺഫിഗർ ചെയ്യാനും ബന്ധിപ്പിക്കാനും എളുപ്പമാക്കുന്നു. കൂടാതെ, ഡാറ്റാ ട്രാൻസ്മിഷൻ വേഗതയുടെ കാര്യത്തിൽ പ്രോട്ടോക്കോൾ മികച്ച വഴക്കം പ്രദാനം ചെയ്യുന്നു, ഇത് ഞങ്ങളുടെ പ്രത്യേക ആവശ്യങ്ങൾക്ക് അനുയോജ്യമാക്കാൻ ഞങ്ങളെ അനുവദിക്കുന്നു.
Arduino-യിൽ I2C പ്രോട്ടോക്കോൾ ഉപയോഗിക്കുന്നതിൻ്റെ ദോഷങ്ങൾ
I2C പ്രോട്ടോക്കോൾ നിരവധി ഗുണങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നുണ്ടെങ്കിലും, ഇതിന് ചില പരിമിതികളും ഉണ്ട്, അത് നമ്മൾ കണക്കിലെടുക്കണം. കമ്മ്യൂണിക്കേഷൻ ബസിൻ്റെ ദൈർഘ്യം ഉപയോഗിക്കുന്ന കേബിളുകളുടെ പ്രതിരോധവും ശേഷിയും കൊണ്ട് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു എന്നതാണ് ഒരു പോരായ്മ. അതായത് കേബിളിൻ്റെ നീളം കൂടുന്നതിനനുസരിച്ച് ആശയവിനിമയത്തിലെ പിഴവുകളുടെ സാധ്യതയും വർദ്ധിക്കുന്നു.
SPI പോലുള്ള മറ്റ് ആശയവിനിമയ പ്രോട്ടോക്കോളുകളുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ അതിൻ്റെ കുറഞ്ഞ ഡാറ്റാ ട്രാൻസ്ഫർ വേഗതയാണ് മറ്റൊരു പോരായ്മ. വലിയ അളവിലുള്ള വിവരങ്ങൾ കൈമാറേണ്ട ആപ്ലിക്കേഷനുകളിൽ ഇത് ഒരു പോരായ്മയാണ്. തത്സമയം.
നിഗമനങ്ങൾ
ചുരുക്കത്തിൽ, ഒന്നിലധികം കണക്ഷൻ്റെ ഗുണങ്ങൾ, ഡാറ്റാ കൈമാറ്റത്തിലെ കാര്യക്ഷമത, നടപ്പാക്കലിൻ്റെ ലാളിത്യം എന്നിവ കാരണം രണ്ട് ആർഡ്വിനോകൾ ആശയവിനിമയം നടത്തുന്നതിനുള്ള മികച്ച ഓപ്ഷനാണ് I2C പ്രോട്ടോക്കോൾ. എന്നിരുന്നാലും, ബസിൻ്റെ ദൈർഘ്യത്തിൻ്റെയും ട്രാൻസ്ഫർ വേഗതയുടെയും കാര്യത്തിൽ അതിൻ്റെ പരിമിതികൾ നാം കണക്കിലെടുക്കണം. ഞങ്ങളുടെ ആപ്ലിക്കേഷനുകൾക്ക് വലിയ അളവിലുള്ള തൽസമയ ഡാറ്റ ആവശ്യമില്ലെങ്കിലോ ദീർഘദൂര ആശയവിനിമയം ആവശ്യമില്ലെങ്കിലോ, I2C പ്രോട്ടോക്കോൾ അനുയോജ്യമായ ചോയിസായിരിക്കാം. ഞങ്ങളുടെ Arduino പ്രോജക്റ്റുകൾക്കായി ഉചിതമായ ആശയവിനിമയ പ്രോട്ടോക്കോൾ തിരഞ്ഞെടുക്കുന്നതിന് മുമ്പ് ഞങ്ങളുടെ പ്രത്യേക ആവശ്യങ്ങൾ കണക്കിലെടുക്കേണ്ടത് പ്രധാനമാണ്.
ഞാൻ സെബാസ്റ്റ്യൻ വിഡാൽ, സാങ്കേതികവിദ്യയിലും DIYയിലും അഭിനിവേശമുള്ള ഒരു കമ്പ്യൂട്ടർ എഞ്ചിനീയറാണ്. കൂടാതെ, ഞാൻ അതിൻ്റെ സ്രഷ്ടാവാണ് tecnobits.com, ടെക്നോളജി കൂടുതൽ ആക്സസ് ചെയ്യാനും എല്ലാവർക്കും മനസ്സിലാക്കാനും കഴിയുന്ന തരത്തിൽ ഞാൻ ട്യൂട്ടോറിയലുകൾ പങ്കിടുന്നു.