اطلاعیه

Collapse
No announcement yet.

راه اندازی AHT10

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی AHT10

    سلام خدمت کاربران عزیز
    من مدتی قبل سنسور ATH10 را از فروشگاه ECA خریداری کردم اما با کد نمونه (در گیت هاب) موفق به راه اندازی آن نشدم پس تصمیم گرفتن از صفر و بدون کتابخانه راه اندازی را انجام دهم. این سنسور یک سنسور دما و رطوبت دیجیتال با رابط I2C است. راه اندازی با برد آردینو Due صورت گرفته است. دقت کنید از سایر بردها مثل UNO و MEGA استفاده نشود چرا که رابط I2C این سنسور در سطح 3.3 ولت کار می کند و با ولتاژ بیشتر دچار مشکل خواهد شد. (احتمالا) همچنین دیتاشیت این سنسور یکی از گنگ ترین دیتاشیت های عالم هستی است!!!

    تصویر سنسور

    و اما کد راه اندازی (برای آردینو Due)

    // IN THE NAME OF ALLAH //
    // ATH10 Humidity & Temperature I2C Sensor //
    // Code by : Javad Moosavi //
    // www.ECA.ir //


    #include <Wire.h>
    int result[6];
    int Humidity;
    int temp;
    float B;
    float Q;
    int i;




    void setup()
    {
    Serial.begin(9600); //Begin Serial Communication for show data
    Serial.println("IN THE NAME OF ALLAH");
    Serial.println("AHT 10 T/H Sensor");
    Serial.println("www.ECA.ir");
    Wire.begin(); //Begin I2C Communication
    }




    void loop()
    {
    Wire.beginTransmission(0x38); //Send Slave address to I2C bus
    Wire.write(byte(0xAC)); //Send Measure command
    Wire.write(byte(0x33)); //Command 1
    Wire.write(byte(0x00)); //Command 2
    Wire.endTransmission(); //Send data and wait for response

    delay(1000);


    Wire.requestFrom(0x38, 6); //Request Slave Response (accodrding to datasheet it is 6 bytes)


    int C = Wire.available(); //Get bytes!
    if(C != 6) { Serial.println("incompelete data!");} //Check if data is compelete or not!

    //Put result in an array
    for(i = 0; i <= 5; i++)
    {
    result[i] = Wire.read();
    }


    int M = result[3] & 0xF;
    //Note! we get 6 bytes from sensor
    //first 8 bits are status
    //other 40 bits are for humidity and temp
    //first 20 bits issuing hiumidity
    //second 20 bits issuinig temp
    //formulas are expressed in datasheet


    //Humidity
    Humidity = (result[1] << 12) | (result[2] << 4) | (result[3] >> 4);



    Q = float(Humidity) / 1048576;
    Q = Q * 100;
    Serial.print("Humidity : ");
    Serial.print(Q,2);
    Serial.print(" %");


    //Temperature
    temp = (M << 16) | (result[4] << 8) | (result[5]);
    B = float(temp) / 1048576;
    B = B * 200;
    B = B -50;
    Serial.print(" | Temp : ");
    Serial.print(B, 2);
    Serial.println(" C");

    delay(2000);
    }


    موفق باشید
    جدیدترین ویرایش توسط Javad Moosavi; ۲۱:۵۷ ۱۳۹۸/۰۵/۱۳.
    STM32 واقعا یه چیز دیگه است...

    #2
    پاسخ : راه اندازی AHT10

    سلام من این سنسور رو با همین کد، ورودی رو به ۵ ولت، زمین رو به زمین آردینو، سریال دیتا رو به A5 و سریال کلاک رو به A4 روی برد آرینو اونو R3 وصل کردم. اما ارور incompelete data میگیرم. آیا سیم کشی اشتباهه؟
    جدیدترین ویرایش توسط mahdi_nvs; ۱۳:۳۷ ۱۴۰۰/۱۱/۲۱.

    دیدگاه


      #3
      پاسخ : راه اندازی AHT10

      دوستانی که مشکل راه اندازی سنسور aht10 و aht20 دارند توجه کنن.
      برید به سایت آرتا میکرو یا پیج اینستاگرامی آرتا میکرو به نشانی artamicro و پروژه ساخت دستگاه جوجه کشی رو ببینید در این پروژه کابخانه این سانسور هست که برای هر دو سنسور کاربرد داره و خودم هم مشکل داشتم بعد چند مدت درست شد.
      اما نحوه راه اندازی بصورت خلاصه :
      1 - به سایت آرتا میکرو بروید ( پروژه دستگاه جوجه کشی تو قسمت فایل ها ) و فایل را دانلود کنید(ابتدا ثبت نام کنید) و در درون فایل سه فایل به نام ArtaMicro_AHD20 را کپی کنید و در محل پروژه پیست کنید(همون جای که فایل c قرار داره نه hex)
      2- در محیط کد ویزارد پروژه ابتدا i2cرا فعال کنید و سپس بیت (پایه) های scl و sda رو مشخص کنید - و بیت در حالت 100کیلو هرتز بماند و تمام به چیز دیگری دست نزنید در قسمت 12c
      3- در قسمت پورت کدویزارد کدویژن بیت های که برای sda و acl مشخص کردید را پولاپ کنید (P) به صورت نرم افزاری(حرف مقابل پایه را p کنید دیگه) و بصورت سخت افزاری هم پولاپ کنید طبق دیتاشیت(10k)
      4 - در محیط برنامه نویسی در ابتدا بیرون حلقه main این سه تا رو اضافه میکنید :
      #include <ArtaMicro_AHD20.h>

      #include <stdlib.h>

      #include <delay.h>

      5- اینجا اگه خطا داد مشکل از فایل کتابخونه هست که باید تابع delay رو توی اون اینکلود کنید.

      6- در قسمت while این تابع رو بنویسید و تمام میتونید از خروجی هر طور که دوس دارید استفاده کنید:
      ReadAHD20();
      ReadAHD20();
      itoa(TmpI, str);
      itoa(HumI, std);
      7 - اگه باز مشکلی داشتید اون قسمت رو تو گوگل سرچ کنید ولی من همه راه ها رو رفتم این آخرین راهه و سعی کنید i2c هم یاد بگیرید کد حفه نکنید
      8- درآخر اگه نتیجه گرفتی برای من دعا کن. یا علی

      دیدگاه

      لطفا صبر کنید...
      X