# အပူချိန်တိုင်းတာခြင်း - အတု IoT ဟာ့ဒ်ဝဲ ဒီသင်ခန်းစာအပိုင်းမှာ သင့်ရဲ့အတု IoT စက်ပစ္စည်းမှာ အပူချိန်အာရုံခံကိရိယာတစ်ခု ထည့်သွင်းပါမည်။ ## အတု ဟာ့ဒ်ဝဲ အတု IoT စက်ပစ္စည်းသည် Grove Digital Humidity နှင့် Temperature အာရုံခံကိရိယာကို အတုအဖြစ်အသုံးပြုပါမည်။ ဒါက Raspberry Pi နှင့် Grove DHT11 အာရုံခံကိရိယာကို သုံးသလိုပဲ ဖြစ်စေပါသည်။ ဒီအာရုံခံကိရိယာသည် **အပူချိန်အာရုံခံကိရိယာ** နှင့် **စိုထိုင်းဆအာရုံခံကိရိယာ** ကိုပေါင်းစပ်ထားပြီး၊ ဒီသင်ခန်းစာမှာတော့ အပူချိန်အာရုံခံကိရိယာကိုသာ အဓိကထားပါမည်။ ရုပ်ပိုင်းဆိုင်ရာ IoT စက်ပစ္စည်းတွင် အပူချိန်အာရုံခံကိရိယာသည် [thermistor](https://wikipedia.org/wiki/Thermistor) တစ်ခုဖြစ်ပြီး၊ အပူချိန်ပြောင်းလဲမှုကြောင့် တိုက်ရိုက်ခံစားရသော အားပြောင်းလဲမှုကိုတိုင်းတာသည်။ အပူချိန်အာရုံခံကိရိယာများသည် များသောအားဖြင့် ဒစ်ဂျစ်တယ်အာရုံခံကိရိယာများဖြစ်ပြီး၊ အတွင်းပိုင်းတွင် တိုင်းတာထားသော အားကို အပူချိန် (Celsius, Kelvin, Fahrenheit) အဖြစ် ပြောင်းလဲပေးပါသည်။ ### CounterFit တွင် အာရုံခံကိရိယာများ ထည့်သွင်းခြင်း စိုထိုင်းဆနှင့် အပူချိန်အာရုံခံကိရိယာများကို အသုံးပြုရန်အတွက်၊ CounterFit အက်ပ်တွင် အာရုံခံကိရိယာနှစ်ခုကို ထည့်သွင်းရမည်ဖြစ်သည်။ #### လုပ်ငန်းစဉ် - CounterFit တွင် အာရုံခံကိရိယာများ ထည့်သွင်းခြင်း CounterFit အက်ပ်တွင် စိုထိုင်းဆနှင့် အပူချိန်အာရုံခံကိရိယာများကို ထည့်သွင်းပါ။ 1. သင့်ကွန်ပျူတာတွင် `temperature-sensor` ဟုခေါ်သော ဖိုလ်ဒါတစ်ခုတွင် `app.py` ဟုခေါ်သော ဖိုင်တစ်ခုနှင့် Python အမှန်တကယ်ပတ်ဝန်းကျင် (virtual environment) တစ်ခုဖြင့် Python အက်ပ်အသစ်တစ်ခု ဖန်တီးပါ။ ထို့နောက် CounterFit pip packages များကို ထည့်သွင်းပါ။ > ⚠️ [သင့်အားလိုအပ်ပါက Lesson 1 တွင် CounterFit Python ပရောဂျက် ဖန်တီးခြင်းနှင့် ပြင်ဆင်ခြင်းဆိုင်ရာ လမ်းညွှန်ချက်များကို ပြန်လည်ကြည့်ပါ](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md)။ 1. DHT11 အာရုံခံကိရိယာအတွက် CounterFit shim တစ်ခု ထည့်သွင်းရန် အပို Pip package တစ်ခု ထည့်သွင်းပါ။ သင့် virtual environment ကို အက်တိတ်ထားသော terminal မှ ထည့်သွင်းရမည်ဖြစ်သည်။ ```sh pip install counterfit-shims-seeed-python-dht ``` 1. CounterFit web app ကို အလုပ်လုပ်နေကြောင်း သေချာပါစေ။ 1. စိုထိုင်းဆအာရုံခံကိရိယာတစ်ခု ဖန်တီးပါ: 1. *Sensors* ပန်းကန်ရှိ *Create sensor* ပုံးတွင် *Sensor type* ကို *Humidity* အဖြစ်ရွေးချယ်ပါ။ 1. *Units* ကို *Percentage* အဖြစ်ထားပါ။ 1. *Pin* ကို *5* အဖြစ်ထားပါ။ 1. **Add** ခလုတ်ကိုနှိပ်ပြီး Pin 5 တွင် စိုထိုင်းဆအာရုံခံကိရိယာကို ဖန်တီးပါ။ ![စိုထိုင်းဆအာရုံခံကိရိယာ၏ ဆက်တင်များ](../../../../../translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.my.png) စိုထိုင်းဆအာရုံခံကိရိယာကို ဖန်တီးပြီး အာရုံခံကိရိယာများစာရင်းတွင် ပေါ်လာမည်။ ![ဖန်တီးပြီးသော စိုထိုင်းဆအာရုံခံကိရိယာ](../../../../../translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.my.png) 1. အပူချိန်အာရုံခံကိရိယာတစ်ခု ဖန်တီးပါ: 1. *Sensors* ပန်းကန်ရှိ *Create sensor* ပုံးတွင် *Sensor type* ကို *Temperature* အဖြစ်ရွေးချယ်ပါ။ 1. *Units* ကို *Celsius* အဖြစ်ထားပါ။ 1. *Pin* ကို *6* အဖြစ်ထားပါ။ 1. **Add** ခလုတ်ကိုနှိပ်ပြီး Pin 6 တွင် အပူချိန်အာရုံခံကိရိယာကို ဖန်တီးပါ။ ![အပူချိန်အာရုံခံကိရိယာ၏ ဆက်တင်များ](../../../../../translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.my.png) အပူချိန်အာရုံခံကိရိယာကို ဖန်တီးပြီး အာရုံခံကိရိယာများစာရင်းတွင် ပေါ်လာမည်။ ![ဖန်တီးပြီးသော အပူချိန်အာရုံခံကိရိယာ](../../../../../translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.my.png) ## အပူချိန်အာရုံခံကိရိယာ အက်ပ်ကို ပရိုဂရမ်ရေးခြင်း အပူချိန်အာရုံခံကိရိယာ အက်ပ်ကို ယခု CounterFit အာရုံခံကိရိယာများကို အသုံးပြု၍ ပရိုဂရမ်ရေးနိုင်ပါပြီ။ ### လုပ်ငန်းစဉ် - အပူချိန်အာရုံခံကိရိယာ အက်ပ်ကို ပရိုဂရမ်ရေးခြင်း အပူချိန်အာရုံခံကိရိယာ အက်ပ်ကို ပရိုဂရမ်ရေးပါ။ 1. `temperature-sensor` အက်ပ်ကို VS Code တွင် ဖွင့်ထားကြောင်း သေချာပါစေ။ 1. `app.py` ဖိုင်ကို ဖွင့်ပါ။ 1. CounterFit နှင့် အက်ပ်ကို ချိတ်ဆက်ရန် `app.py` ရဲ့ အပေါ်ဆုံးတွင် အောက်ပါကုဒ်ကို ထည့်ပါ: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. လိုအပ်သော လိုက်ဘရရီများကို သွင်းယူရန် အောက်ပါကုဒ်ကို `app.py` ဖိုင်တွင် ထည့်ပါ: ```python import time from counterfit_shims_seeed_python_dht import DHT ``` `from seeed_dht import DHT` ဟူသော ကြေညာချက်သည် `counterfit_shims_seeed_python_dht` မော်ဂျူးမှ `DHT` အာရုံခံကလပ်ကို သွင်းယူပြီး၊ အတု Grove အပူချိန်အာရုံခံကိရိယာနှင့် အပြန်အလှန်ဆက်သွယ်ရန် အသုံးပြုသည်။ 1. အောက်ပါကုဒ်ကို အထက်ပါကုဒ်အောက်တွင် ထည့်ပါ၊ ဒါက အတု စိုထိုင်းဆနှင့် အပူချိန်အာရုံခံကိရိယာကို စီမံခန့်ခွဲသော ကလပ်၏ အတန်းတစ်ခုကို ဖန်တီးသည်: ```python sensor = DHT("11", 5) ``` ဒီကုဒ်က **D**igital **H**umidity နှင့် **T**emperature အာရုံခံကိရိယာကို စီမံခန့်ခွဲသော `DHT` ကလပ်၏ အတန်းတစ်ခုကို ကြေညာသည်။ ပထမအချက်က သုံးနေသော အာရုံခံကိရိယာသည် အတု *DHT11* အာရုံခံကိရိယာဖြစ်ကြောင်း ပြောသည်။ ဒုတိယအချက်က အာရုံခံကိရိယာသည် port `5` တွင် ချိတ်ဆက်ထားကြောင်း ပြောသည်။ > 💁 CounterFit သည် စိုထိုင်းဆနှင့် အပူချိန်အာရုံခံကိရိယာကို 2 ခု ချိတ်ဆက်ခြင်းဖြင့် အတုအဖြစ် ပြုလုပ်သည်။ စိုထိုင်းဆအာရုံခံကိရိယာသည် `DHT` ကလပ် ဖန်တီးစဉ် ပေးထားသော pin တွင် ချိတ်ဆက်ပြီး၊ အပူချိန်အာရုံခံကိရိယာသည် နောက်တစ်ခု pin တွင် အလုပ်လုပ်သည်။ စိုထိုင်းဆအာရုံခံကိရိယာသည် pin 5 တွင်ရှိပါက၊ shim သည် အပူချိန်အာရုံခံကိရိယာကို pin 6 တွင် ရှိသည်ဟု ခန့်မှန်းသည်။ 1. အောက်ပါကုဒ်ကို ထည့်ပြီး၊ အပူချိန်အာရုံခံကိရိယာ၏ တန်ဖိုးကို စစ်ဆေးပြီး console တွင် ပုံနှိပ်ရန် အဆုံးမဲ့ loop တစ်ခု ဖန်တီးပါ: ```python while True: _, temp = sensor.read() print(f'Temperature {temp}°C') ``` `sensor.read()` ကို ခေါ်ဆိုခြင်းဖြင့် စိုထိုင်းဆနှင့် အပူချိန် တန်ဖိုးများပါဝင်သော tuple တစ်ခုကို ပြန်ပေးသည်။ သင့်အား အပူချိန်တန်ဖိုးသာ လိုအပ်သောကြောင့် စိုထိုင်းဆကို မသုံးပါ။ အပူချိန်တန်ဖိုးကို console တွင် ပုံနှိပ်ပါမည်။ 1. loop အဆုံးတွင် တစ်ဆယ်စက္ကန့်အနည်းငယ် sleep ထည့်ပါ၊ အပူချိန်အဆင့်များကို အဆက်မပြတ် စစ်ဆေးရန် မလိုအပ်ပါ။ sleep သည် စက်ပစ္စည်း၏ လျှပ်စစ်စွမ်းအင်သုံးစွဲမှုကို လျှော့ချပေးသည်။ ```python time.sleep(10) ``` 1. VS Code Terminal မှ virtual environment ကို အက်တိတ်ထားပြီး အောက်ပါအတိုင်း Python အက်ပ်ကို အလုပ်လုပ်ရန် run ပါ: ```sh python app.py ``` 1. CounterFit အက်ပ်မှ အက်ပ်က ဖတ်မည့် အပူချိန်အာရုံခံတန်ဖိုးကို ပြောင်းလဲပါ။ ဒါကို အောက်ပါနည်းလမ်းနှစ်ခုထဲမှ တစ်ခုဖြင့် ပြုလုပ်နိုင်သည်: * အပူချိန်အာရုံခံကိရိယာ၏ *Value* ပုံးတွင် နံပါတ်တစ်ခု ထည့်ပြီး **Set** ခလုတ်ကိုနှိပ်ပါ။ သင်ထည့်သွင်းသော နံပါတ်သည် အာရုံခံကိရိယာမှ ပြန်ပေးမည့် တန်ဖိုးဖြစ်သည်။ * *Random* checkbox ကို စစ်ဆေးပြီး၊ *Min* နှင့် *Max* တန်ဖိုးများ ထည့်သွင်းပါ၊ ထို့နောက် **Set** ခလုတ်ကိုနှိပ်ပါ။ အာရုံခံကိရိယာသည် တန်ဖိုးတစ်ခု ဖတ်စဉ်တိုင်း *Min* နှင့် *Max* တန်ဖိုးအတွင်းရှိ အမှတ်တစ်ခုကို ဖတ်မည်ဖြစ်သည်။ သင်ထည့်သွင်းထားသော တန်ဖိုးများကို console တွင် မြင်ရမည်။ *Value* သို့မဟုတ် *Random* ဆက်တင်များကို ပြောင်းလဲပြီး တန်ဖိုးပြောင်းလဲမှုကို ကြည့်ပါ။ ```output (.venv) ➜ temperature-sensor python app.py Temperature 28.25°C Temperature 30.71°C Temperature 25.17°C ``` > 💁 ဒီကုဒ်ကို [code-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/virtual-device) ဖိုလ်ဒါတွင် ရှာနိုင်ပါသည်။ 😀 သင့်ရဲ့ အပူချိန်အာရုံခံကိရိယာ အက်ပ်အောင်မြင်ခဲ့ပါပြီ! --- **အကြောင်းကြားချက်**: ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါရှိနိုင်သည်ကို သတိပြုပါ။ မူရင်းဘာသာစကားဖြင့် ရေးသားထားသော စာရွက်စာတမ်းကို အာဏာရှိသော ရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်များမှ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော အလွဲအလွတ်များ သို့မဟုတ် အနားလွဲမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။