اتصال سنسور دما و رطوبت به پین های دلخواه I2C در برد رسپبری پای پیکو Pico

10 ماه قبل
156 بازدید

0

سلام وقت بخیر؛

یک سنسور دما و رطوبت SHTC3 با ارتباط I2C از طریق پایه های  (I2C0 SDA) GP0 و (I2C0 SCL) GP1 به بُرد رسپبری پای پیکو Pico متصل کردم.

با برنامه زیر مقادیر دما و رطوبت محیط در پنجره سریال دیده میشود.  

همانطور که در تصویر زیر مشخص است رسپبری پای پیکو دارای دو درگاه I2C0 و  I2C1 است که در پایه‏ های مختلف بُرد قابل دسترسی و برنامه ریزی هستند.

Atduino IDE به صورت پیش فرض GP0 و GP1 را به عنوان ورودی I2C0 می شناسد.

سوال اول: اگر بخواهم سنسور را به درگاه I2C1 وصل کنم. مثلا GP14  و GP15 چه تغییری باید در کد انجام بدهم؟

یعنی چطور به میکرو اطلاع بدم که خروجی سنسور رو از این دو پایه بخونه. راه های زیادی رو امتحان کردم که این دو پین رو به عنوان SDA و SCL سنسو معرفی کنم ولی در خروجی سنسور رو پیدا نمیکنه.

به طور کل از درگاه I2C1 نتونستم خروجی بگیرم ولی از همه درگاه های I2C0 میتونم استفاده کنم.

سوال دوم: چطور می توان دو ماژول را جداگانه  به I2C0 و I2C1 وصل کنیم. یعنی موازی نباشند از دو درگاه جدا استفاده کنند. 

ممنون میشم راهنمایی بفرمایید.

کد برنامه: 

/****************************************************
  I2C Connection For Raspberry pi pico connect 
    SHTC3 pin3/SDA to RP GPIO4/I2C0 SDA 
                     & 
    SHTC3 pin4/SCL to RP GPIO5/I2C0 SCL
 ****************************************************/

Adafruit_SHTC3 shtc3 = Adafruit_SHTC3();

void setup() {

  Serial.begin(115200);

  while (!Serial)
    delay(10);    

  Serial.println("SHTC3 test");
  if (! shtc3.begin()) {
    Serial.println("Couldn't find SHTC3");
    while (1) delay(1);
  }
  Serial.println("Found SHTC3 sensor");
}

void loop() {
  sensors_event_t humidity, temp;
    
  shtc3.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
  
  Serial.print("Temp: "); Serial.print(temp.temperature); Serial.print(" *C      ");
  Serial.print("Hum: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");

  delay(1000);
}
26 بهمن 02 در 12:09
حسین میرزاپور
111

افزودن دیدگاه

1 پاسخ ثبت شده است
1

با سلام.

باید در کتابخانه Adafruit_SHTC3 ، به دنبال عبارت Wire بگردید.

برد رزبری پای پیکو دارای دو I2C است که I2C0 آن، با Wire و I2C1 آن با Wire1 شناخته می شود.

برای مشخص کردن شماره پایه ای که میخواهید برای I2C0 استفاده کنید، از دستورات زیر استفاده کنید:

Wire.setSDA(Pin No.);

Wire.setSCL(Pin No.);

 یا برای I2C1، باید از دستورات زیر استفاد کنید:

Wire1.setSDA(Pin No.);

Wire1.setSCL(Pin No.);

برای جزئیات بیشتر از مطالب این سایت استفاده کنید

29 بهمن 02 در 01:46
مجید مرآتی
609

سلام . ممنون از توضیحات خوبتون  – حسین میرزاپور 02-11-29 در 08:00

خواهش می کنم  – مجید مرآتی 02-11-30 در 04:40

افزودن دیدگاه


انجمن کافه‌ربات © 1400