Arduino IDE ஐப் பயன்படுத்தி ESP32 இல் I2C முகவரியை ஸ்கேன் செய்வது எப்படி

Arduino Ide Aip Payanpatutti Esp32 Il I2c Mukavariyai Sken Ceyvatu Eppati



ESP32 என்பது மைக்ரோகண்ட்ரோலர் அடிப்படையிலான இயங்குதளமாகும், இது உள்ளீட்டின் படி வெவ்வேறு வெளியீடுகளைக் கட்டுப்படுத்த பல சாதனங்களுடன் இடைமுகம் செய்ய முடியும். UART, SPI மற்றும் I2C போன்ற அனைத்து தகவல்தொடர்பு நெறிமுறைகளும் ESP32 தகவல்தொடர்புகளில் குறிப்பிடத்தக்க பங்கைக் கொண்டுள்ளன. இந்த வழிகாட்டியில் Inter Integrated Circuit அல்லது I2C கம்யூனிகேஷன் புரோட்டோகால் மற்றும் சாதனத்தின் முகவரியை எப்படி ஸ்கேன் செய்வது என்பது பற்றி விவாதிப்போம்.

I2C தொடர்பு அறிமுகம்

மாற்றாக I2C அல்லது IIC என அழைக்கப்படும் I2C என்பது ஒரு ஒத்திசைவான மாஸ்டர்-ஸ்லேவ் கம்யூனிகேஷன் புரோட்டோகால் ஆகும், அங்கு ஒரு சிக்னல் மாஸ்டர் சாதனம் ஒரு கம்பியில் (SDA வரி) பல எண்ணிக்கையிலான அடிமை சாதனங்களைக் கட்டுப்படுத்த முடியும்.

I2C UART மற்றும் SPI நெறிமுறைகளின் செயல்பாட்டை ஒருங்கிணைக்கிறது, உதாரணமாக SPI ஆனது ஒரு மாஸ்டர் மீது பல அடிமை சாதனங்களின் கட்டுப்பாட்டை ஆதரிக்கிறது, I2C இதை ஆதரிக்கிறது, மறுபுறம் UART இரண்டு-வரி TX மற்றும் Rx ஐப் பயன்படுத்துகிறது. தொடர்பு.









SDA, SCL ஆகிய இரண்டு வரிகளிலும் புல் அப் ரெசிஸ்டர்களைப் பயன்படுத்தியிருப்பதை இங்கே காணலாம். ஏனெனில் இயல்பாக I2C குறைந்த அல்லது திறந்த சுற்று இரண்டு நிலைகளை மட்டுமே வெளியிடுகிறது. இயல்பாக, அனைத்து சில்லுகளிலும் I2C ஓபன் சர்க்யூட் பயன்முறையில் இருப்பதால், அவற்றை உயரமாக இழுக்க, நாங்கள் புல்-அப் ரெசிஸ்டரைப் பயன்படுத்தினோம்.



I2C பயன்படுத்தும் இரண்டு வரிகள் பின்வருமாறு:





  • SDA (தொடர் தரவு) : எஜமானரிடமிருந்து அடிமைக்கு தரவை அனுப்புவதற்கும் பெறுவதற்கும் வரி
  • SCL (தொடர் கடிகாரம்) : ஒரு குறிப்பிட்ட அடிமை சாதனத்தைத் தேர்ந்தெடுக்க கடிகார சமிக்ஞை வரி

ESP32 I2C பஸ் இடைமுகங்கள்

ESP32 ஆனது இரண்டு I2C பஸ் இடைமுகங்களைக் கொண்டுள்ளது, இதன் மூலம் I2C தொடர்பு ESP32 உடன் இணைக்கப்பட்ட சாதனத்தைப் பொறுத்து முதன்மையாகவோ அல்லது அடிமையாகவோ செய்யப்படுகிறது. ESP32 தரவுத்தாள் படி ESP32 போர்டு I2C இடைமுகம் பின்வரும் உள்ளமைவை ஆதரிக்கிறது:

  • 100 Kbit/s விகிதத்தில் நிலையான முறை I2C தொடர்பு
  • 400 Kbit/s வேகத்தில் வேகமான அல்லது மேம்பட்ட பயன்முறை I2C தொடர்பு
  • இரட்டை முகவரி முறை 7-பிட் மற்றும் 10-பிட்
  • கட்டளை பதிவேடுகளை நிரலாக்குவதன் மூலம் பயனர்கள் I2C இடைமுகத்தை கட்டுப்படுத்தலாம்
  • ESP32 I2C பஸ் இடைமுகம் கட்டுப்படுத்துவதில் மிகவும் நெகிழ்வானது

I2C சாதனங்களை ESP32 உடன் இணைக்கிறது

I2C நெறிமுறையைப் பயன்படுத்தி ESP32 உடன் சாதனங்களை இடைமுகப்படுத்துவது UART போலவே மிகவும் எளிமையானது, SDA மற்றும் SCL கடிகார வரிசையை இணைக்க நமக்கு இரண்டு கோடுகள் மட்டுமே தேவை.



ESP32 ஐ மாஸ்டர் மற்றும் ஸ்லேவ் பயன்முறையில் உள்ளமைக்க முடியும்.

ESP32 I2C மாஸ்டர் பயன்முறை

இந்த பயன்முறையில் ESP32 ஒரு கடிகார சமிக்ஞையை உருவாக்குகிறது, இது இணைக்கப்பட்ட அடிமை சாதனங்களுடன் தொடர்பைத் தொடங்குகிறது.

I2C தகவல்தொடர்புக்காக முன் வரையறுக்கப்பட்ட ESP32 இல் உள்ள இரண்டு GPIO பின்கள்:

  • SDA : GPIO பின் 21
  • எஸ்சிஎல் : ஜிபிஐஓ பின் 22

ESP32 I2C ஸ்லேவ் பயன்முறை

அடிமை பயன்முறையில் கடிகாரம் முதன்மை சாதனத்தால் உருவாக்கப்படுகிறது. I2C தகவல்தொடர்புகளில் SCL லைனை இயக்கும் ஒரே சாதனம் மாஸ்டர் மட்டுமே. அடிமைகள் மாஸ்டருக்கு பதிலளிக்கும் ஆனால் தரவு பரிமாற்றத்தைத் தொடங்க முடியாத சாதனங்கள். ESP32 I2C பேருந்தில், சாதனங்களுக்கு இடையே தரவு பரிமாற்றத்தை மாஸ்டர் மட்டுமே தொடங்க முடியும்.

மாஸ்டர்-ஸ்லேவ் உள்ளமைவில் இரண்டு ESP32 பலகைகளை படம் காட்டுகிறது.

தற்போது ESP32 இல் I2C பயன்முறையின் செயல்பாட்டைப் புரிந்து கொண்டுள்ளோம், கொடுக்கப்பட்ட குறியீட்டைப் பதிவேற்றுவதன் மூலம் எந்த சாதனத்தின் I2C முகவரியையும் எளிதாகக் கண்டறியலாம்.

Arduino IDE ஐப் பயன்படுத்தி ESP32 இல் I2C முகவரியை ஸ்கேன் செய்வது எப்படி

ESP32 உடன் இணைக்கப்பட்ட சாதனங்களின் I2C முகவரியைக் கண்டறிவது முக்கியமானது, ஏனென்றால் ஒரே I2C முகவரியுடன் சாதனங்களைப் பயன்படுத்தினால், ஒரு பேருந்து பாதையில் அவற்றைத் தொடர்பு கொள்ள முடியாது.

ஒவ்வொரு I2C சாதனமும் ஒரு தனிப்பட்ட முகவரி மற்றும் HEX இல் 0 முதல் 127 வரை அல்லது (0 முதல் 0X7F வரை) முகவரி வரம்பைக் கொண்டிருக்க வேண்டும். எடுத்துக்காட்டாக, நாம் ஒரே மாதிரி எண் அல்லது தயாரிப்பின் இரண்டு OLED டிஸ்ப்ளேக்களைப் பயன்படுத்தினால் இரண்டும் ஒரே I2C முகவரியைக் கொண்டிருக்கும், எனவே ESP32 இல் இரண்டையும் ஒரே I2C வரிசையில் பயன்படுத்த முடியாது.

ஐசி முகவரியைக் கண்டுபிடிக்க ஒரு உதாரணத்தை எடுத்துக் கொள்வோம்.

திட்டவட்டமான

I2C தொடர்பு நெறிமுறையைப் பயன்படுத்தி ESP32 போர்டுடன் OLED டிஸ்ப்ளே இடைமுகத்தின் திட்ட வரைபடத்தை கீழே உள்ள படம் காட்டுகிறது.

OLED உடன் ESP32 இணைப்பில் பின்வருவன அடங்கும்:

OLED காட்சி ESP32 பின்
வி.சி.சி 3V3/VIN
GND GND
எஸ்சிஎல் GPIO 22
SDA ஜிபிஐஓ 21

குறியீடு
Arduino எடிட்டரைத் திறந்து, கொடுக்கப்பட்ட I2C ஸ்கேனிங் குறியீட்டை ESP32 போர்டில் பதிவேற்றவும். ESP32 இணைக்கப்பட்டுள்ளதை உறுதிசெய்து, COM போர்ட் தேர்ந்தெடுக்கப்பட்டது.

//***************
****************
linuxhint.com
****************
*******************

#include  /*வயர் நூலகம் சேர்க்கப்பட்டுள்ளது*/

வெற்றிட அமைப்பு ( ) {
கம்பி.தொடங்கு ( ) ; /* I2C தொடர்பு தொடங்குகிறது */
தொடர்.தொடங்கு ( 115200 ) ; /* Baud விகிதம் வரையறுக்கப்பட்டுள்ளது க்கான தொடர் தொடர்பு */
Serial.println ( ' \n I2C ஸ்கேனர்' ) ; /* தொடர் மானிட்டரில் அச்சு ஸ்கேனர் */
}

வெற்றிட வளையம் ( ) {
பைட் பிழை, முகவரி;
int n சாதனங்கள்;
Serial.println ( 'ஸ்கேனிங்...' ) ; /* ESP32 கிடைக்கக்கூடிய I2C சாதனங்களை ஸ்கேன் செய்யத் தொடங்குகிறது */
சாதனங்கள் = 0 ;
க்கான ( முகவரி = 1 ; முகவரி < 127 ; முகவரி++ ) { /* க்கான சாதனங்களின் எண்ணிக்கையைச் சரிபார்க்க வளையம் 127 முகவரி */
Wire.beginTransmission ( முகவரி ) ;
பிழை = Wire.endTransmission ( ) ;
என்றால் ( பிழை == 0 ) { /* என்றால் I2C சாதனம் கண்டறியப்பட்டது */
தொடர்.அச்சு ( 'I2C சாதனம் 0x முகவரியில் கண்டறியப்பட்டது' ) ; /* இந்த வரியை அச்சிடுங்கள் என்றால் I2C சாதனம் கண்டறியப்பட்டது */
என்றால் ( முகவரி < 16 ) {
தொடர்.அச்சு ( '0' ) ;
}
Serial.println ( முகவரி, ஹெக்ஸ் ) ; /* I2C முகவரியின் HEX மதிப்பை அச்சிடுகிறது */
nசாதனங்கள்++;
}
வேறு என்றால் ( பிழை == 4 ) {
தொடர்.அச்சு ( '0x முகவரியில் தெரியாத பிழை' ) ;
என்றால் ( முகவரி < 16 ) {
தொடர்.அச்சு ( '0' ) ;
}
Serial.println ( முகவரி, ஹெக்ஸ் ) ;
}
}
என்றால் ( n சாதனங்கள் == 0 ) {
Serial.println ( 'I2C சாதனங்கள் எதுவும் இல்லை \n ' ) ; /* I2C சாதனம் இணைக்கப்படவில்லை என்றால், இந்த செய்தியை அச்சிடவும் */
}
வேறு {
Serial.println ( 'முடிந்தது \n ' ) ;
}
தாமதம் ( 5000 ) ; /* தாமதம் வழங்கப்பட்டது க்கான ஒவ்வொரு முறையும் I2C பேருந்தைச் சரிபார்க்கிறது 5 நொடி */
}

மேலே உள்ள குறியீடு கிடைக்கும் I2C சாதனங்களை ஸ்கேன் செய்யும். I2C தகவல்தொடர்புக்கான கம்பி நூலகத்தை அழைப்பதன் மூலம் குறியீடு தொடங்கப்பட்டது. அடுத்த தொடர் தொடர்பு பாட் வீதத்தைப் பயன்படுத்தி தொடங்கப்படுகிறது.

I2C ஸ்கேனிங் குறியீட்டின் லூப் பகுதியில் இரண்டு மாறி பெயர்கள், பிழை மற்றும் முகவரி வரையறுக்கப்பட்டுள்ளன. இந்த இரண்டு மாறிகளும் சாதனங்களின் I2C முகவரியைச் சேமிக்கின்றன. அடுத்து 0 முதல் 127 சாதனங்கள் வரையிலான I2C முகவரியை ஸ்கேன் செய்யும் ஒரு for loop துவக்கப்பட்டது.

I2C முகவரியைப் படித்த பிறகு, வெளியீடு HEX வடிவத்தில் தொடர் மானிட்டரில் அச்சிடப்படும்.

வன்பொருள்

OLED 0.96-இன்ச் I2C டிஸ்ப்ளே GPIO பின்கள் 21 மற்றும் 22 இல் ESP32 போர்டுடன் இணைக்கப்பட்டிருப்பதை இங்கே பார்க்கலாம். Vcc மற்றும் GND டிஸ்ப்ளே ESP32 3V3 மற்றும் GND பின் உடன் இணைக்கப்பட்டுள்ளது.

வெளியீடு
வெளியீட்டில், ESP32 போர்டுடன் இணைக்கப்பட்ட OLED டிஸ்ப்ளேவின் I2C முகவரியைக் காணலாம். இங்கே I2C முகவரி 0X3C ஆகும், எனவே அதே முகவரியுடன் வேறு எந்த I2C சாதனத்தையும் நாம் பயன்படுத்த முடியாது, அதற்கு முதலில் அந்த சாதனத்தின் I2C முகவரியை மாற்ற வேண்டும்.

ESP32 போர்டுடன் இணைக்கப்பட்ட OLED டிஸ்ப்ளேயின் I2C முகவரியை வெற்றிகரமாகப் பெற்றுள்ளோம்.

முடிவுரை

பல சாதனங்களை ESP32 உடன் இணைக்கும் போது I2C முகவரியைக் கண்டறிவது முக்கியம், ஏனெனில் ஒரே I2C முகவரியைப் பகிர்ந்து கொள்ளும் சாதனங்கள் ஒரு I2C பஸ்ஸில் இணைக்கப்பட முடியாது. மேலே உள்ள குறியீட்டைப் பயன்படுத்தி ஒருவர் I2C முகவரியைக் கண்டறியலாம் மற்றும் ஏதேனும் இரண்டு சாதனங்களின் முகவரி பொருந்தினால், சாதனத்தின் விவரக்குறிப்புகளைப் பொறுத்து அதை மாற்றலாம்.