You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/km/2-farm/lessons/3-automated-plant-watering/README.md

50 KiB

ការជួរទឹកឪ្យដំណាំដោយស្វ័យប្រវត្តិ

ទិដ្ឋភាពសង្ខេបរបស់មេរៀននេះ

សេកឃុនត្រូវបានគុណ Nitya Narasimhan ដែល Nitya Narasimhan បង្កើត។ ចុចលើរូបភាពសម្រាប់មើលទំហំធំជាងនេះ។

មេរៀននេះត្រូវបានបង្រៀនជាផ្នែកមួយនៃ គម្រោង IoT សម្រាប់អ្នកចាប់ផ្តើម ផ្នែកទី 2 - ស៊េរីកសិក្សាអំពីកសិកម្មឌីជីថល ពី Microsoft Reactor

ការជួរទឹកឪ្យដំណាំដោយស្វ័យប្រវត្តិដែលគ្រប់គ្រងដោយ IoT

ការប្រលងមុនមេរៀន

ការប្រលងមុនមេរៀន

ការណាត់ដឹក

នៅក្នុងមេរៀនមុន អ្នកបានរៀនពីរបៀបតាមដានសំណើមដី។ ក្នុងមេរៀននេះ អ្នកនឹងរៀនរបៀបតៀមបង្កើតអង្គធាតុសំខាន់ៗនៃប្រព័ន្ធជួរទឹកដោយស្វ័យប្រវត្តិដែលឆ្លើយតបទៅនឹងសំណើមដី។ អ្នកនឹងរៀនអំពីពេលវេលា - របៀបដែលឧបករណ៍សិនស័រអាចត្រូវការពេលវេលាដើម្បីឆ្លើយតបនឹងការផ្លាស់ប្តូរ និងរបៀបដែលឧបករណ៍អេកទ័រអាចចំណាយពេលវេលាដើម្បីផ្លាស់ប្តូរភាពល្អបង់ដែលត្រូវបានវាស់ដោយឧបករណ៍សិនស័រ។

មេរៀននេះយើងនឹងគ្របដណ្តប់៖

គ្រប់គ្រងឧបករណ៍ថាមពលខ្ពស់​ពីឧបករណ៍ IoT ថាមពលទាប

ឧបករណ៍ IoT ប្រើថាមពលតង់ស្យុងទាប។ ពេលនេះគ្រប់គ្រងគ្រឿងចក្រនិងឧបករណ៍អេកទ័រថាមពលទាបដូចជា LED បានល្អ តែថាមពលនេះទាបពេកសម្រាប់ការគ្រប់គ្រងឧបករណ៍ធំៗ ដូចជាបង្អែកទឹកដែលប្រើសម្រាប់ការរុងរឿង។ បង្អែកទឹកតូចៗដែលអ្នកអាចប្រើសម្រាប់ដំណាំក្នុងផ្ទះគឺស្រូបចរន្តច្រើនពេកសម្រាប់ឧបករណ៍រៀបចំ IoT ហើយវានឹងបំផ្លាញក្តារប្រមូលទិន្នន័យ។

🎓 ចរន្ត ដែលវាស់ជាម៉ាស៊ីន(Amp/Amps, A) គឺជាចំនួនអគ្គិសនីដែលឆ្លងកាត់ស៊ីរប៉ូត។ តង់ស្យុងផ្តល់ឲ្យផ្ទះឱ និង ចរន្តគឺចំនួនដែលត្រូវបានផ្តល់កម្មង់។ អ្នកអាចអានបន្ថែមអំពីចរន្តនៅលើ ទំព័រចរន្តអគ្គិសនីនៅវីគីភីឌា

ដំណោះស្រាយសម្រាប់នេះគឺចងបង្អែកទឹកទៅចំហៀងថាមពលខាងក្រៅ ហើយប្រើឧបករណ៍អេកទ័រដើម្បីបើកបង្អែកទឹក ដូចជាការបិទបើកភ្លើង។ វាត្រូវការថាមពលតិចមួយ (ជារាងថាមពលក្នុងរាងកាយរបស់អ្នក) ដើម្បីបញ្ជូនម្រាមដៃឲ្យបិទបើកបត់ និងភ្ជាប់ភ្លើងជាមួយអគ្គិសនីហ្គោល 110v/240v។

ការបិទបើកភ្លើងដែលបើកថាមពលទៅភ្លើង

🎓 អគ្គិសនីហ្គោល ជាអគ្គិសនីដែលផ្តល់ទៅផ្ទះនិងអាជីវកម្មតាមរយៈហាគ្រីជាតិច្រើននៅក្នុងពិភពលោក។

ឧបករណ៍ IoT ទូទៅអាចផ្តល់ 3.3V ឬ 5V ដែលមិនលើស 1 អាំ (1A)។ ប្រៀបធៀបទៅនឹងអគ្គិសនីហ្គោលដែលជាទូទៅមានតង់ស្យុង 230V (120V នៅអាមេរិកខាងជើង និង 100V នៅជប៉ុន) និងអាចផ្តល់ថាមពលសម្រាប់ឧបករណ៍ដែលស្រូបចរន្ត 30A។

មានឧបករណ៍អេកទ័រជាច្រើនដែលអាចធ្វើបែបនេះ រួមបញ្ចូលការទ្រទ្រង់កញ្ចក់ក៏ដូចជាឧបករណ៍ធ្វើម៉ាស៊ីនមេកានិចដែលអ្នកអាចភ្ជាប់ទៅកាន់ការបិទបើកដែលមានសញ្ញាដូចដៃបត់។ ដែលពេញនិយមបំផុតគឺរេលេ។

រេលេ

រេលេគឺជាប៊ូតុងម៉ាស៊ីនមេកានិចដែលបម្លែងសញ្ញាអគ្គិសនីទៅចលនាមេកានិចដែលបើកប៊ូតុង។ ភាគមូលដ្ឋាននៃរេលេគឺម៉ាញេទិចអគ្គិសនី។

🎓 ម៉ាញេទិចអគ្គិសនី ជាម៉ាញេទិចដែលបង្កើតដោយការផ្លាស់ប្តូរអគ្គិសនីតាមរ៉ូត័រមួយ។ ពេលដែលអគ្គិសនីបើក រ៉ូត័រនេះមានម៉ាញេទិច។ ពេលអគ្គិសនីបិទ រ៉ូត័រមានទំនងខូចម៉ាញេទិច។

ពេលបើក ម៉ាញេទិចអគ្គិសនីបង្កើតវាលម៉ាញេទិច បញ្ចេញប៊ូតុងសម្រាប់សៀរស៊ើបអូតប៊ូតុង

នៅក្នុងរេលេ វដ្តគ្រប់គ្រងផ្តល់ថាមពលទៅម៉ាញេទិចអគ្គិសនី។ ពេលម៉ាញេទិចអគ្គិសនីបើក វាសម្លាប់ទំពារដែលបើកប៊ូតុង បិទភាគីយោលពីរកន្លែងនិងបញ្ចប់សៀរស៊ើបអូតប៊ូតុង។

ពេលបិទ ម៉ាញេទិចអគ្គិសនីមិនបង្កើតវាលម៉ាញេទិច បិទប៊ូតុងសម្រាប់អូតប៊ូតុង

ពេលតួរគ្រប់គ្រងត្រូវបិទ ម៉ាញេទិចអគ្គិសនីបិទ បញ្ឈប់ទំពារនិងបើកការតភ្ជាប់ បិទអូតប៊ូតុង។ រេលេគឺជាឧបករណ៍អេកទ័រឌីជីថល - សញ្ញាខ្ពស់ទៅរេលេជួយបើកវា សញ្ញាទាបបិទវា។

អូតប៊ូតុងអាចប្រើសម្រាប់ផ្តល់ថាមពលឧបករណ៍បន្ថែម ដូចជាប្រព័ន្ធបង្អែកទឹក។ ឧបករណ៍ IoT អាចបើករេលេ បញ្ចប់អូតប៊ូតុងដែលផ្តល់ថាមពលប្រព័ន្ធបង្អែកទឹក ហើយដំណាំទទួលទឹក។ បន្ទាប់មកឧបករណ៍ IoT អាចបិទរេលេ បិទថាមពលប្រព័ន្ធបង្អែកទឹក បិទទឹក។

រេលេបើក បង្ហាញបង្អែកទឹកទៅដំណាំ

ក្នុងវីដេអូមើលខាងលើ រេលេត្រូវបានបើក។ LED នៅលើរេលេភ្លឺសំរាប់បង្ហាញថាវាបើក (សូម្បីមានក្តាររេលេមួយចំនួនមាន LED សំរាប់បង្ហាញរេលេបើកឬបិទ) ហើយថាមពលទៅបង្អែកទឹក បើកបង្អែកទឹក និងបញ្ចេញទឹកទៅដំណាំ។

💁 រេលេក៏អាចប្រើសម្រាប់ប្តូរវិញទៅវិញរវាងសៀរស៊ើបអូតប៊ូតុងពីរដើម្បីមិនបើកឬបិទតែមួយ។ ពេលទំពារផ្លាស់ប្តូរវា ផ្លាស់ប្តូរប៊ូតុងពីការបញ្ចប់សៀរស៊ើបអតប៊ូតុងមួយទៅចប់សៀរស៊ើបអតប៊ូតុងផ្សេងទៀត ដែលភាគច្រើនមានការតភ្ជាប់ថាមពលរួម ឬការតភ្ជាប់ដីរួម។

ស្វែងរកព័ត៌មានបន្ថែម៖ មានប្រភេទរេលេជាច្រើន មានភាពខុសគ្នាដូចជាវិធីដែលសៀរស៊ើបគ្រប់គ្រងរេលេបើក ឬបិទ ព្រមទាំងមានសៀរស៊ើបអតប៊ូតុងច្រើន។ ស្វែងរកព័ត៌មានអំពីប្រភេទរេលេទាំងនោះ។

ពេលទំពារផ្លាស់ប្តូរ អ្នកសូម្បីតែអាចស្ដាប់ឮសំឡេង "ចាក់" ដែលមានពិការណ៍ច្បាស់លាស់។

💁 រេលេអាចភ្ជាប់ជាមួយក្បាលខ្សែដែលពេលភ្ជាប់នេះ វានឹងបំបែកថាមពលទៅរេលេ បិទរេលេ ហើយបញ្ចូនថាមពលទៅរេលេបើកឡើងវិញ ហើយបន្តបែបនេះវិញ។ នេះបណ្តាលឱ្យរេលេចាក់យ៉ាងលឿន និងបង្កើតសំឡេងហូបប្រដាប់ពីត្រាស់ៗមើលបាន។ នេះជាវិធីដែលវ៉ាស៊ឺរប៊ែរ ដែលប្រើក្នុងច្រកទ្វារអគ្គិសនីល្បីបំផុត។

ថាមពលរេលេ

ម៉ាញេទិចអគ្គិសនីមិនចាំបាច់ត្រូវការថាមពលច្រើនដើម្បីបើកនិងបញ្ចេញទំពារ វាអាចត្រូវបានគ្រប់គ្រងដោយការចេញថាមពល 3.3V ឬ 5V ពីឧបករណ៍អភិវឌ្ឍន៍ IoT។ អូតប៊ូតុងអាចពន្លឿនថាមពលច្រើនជាងនេះ ទាក់ទងទៅនឹងរេលេ រួមបញ្ចូលថាមពលម៉ាញេទិចឬថាមពលខ្ពស់សម្រាប់គេហដ្ឋានឧស្សាហកម្ម។ ដូច្នេះឧបករណ៍អភិវឌ្ឍន៍ IoT អាចគ្រប់គ្រងប្រព័ន្ធបង្អែកទឹកពីបង្អែកទឹកតូចមួយសម្រាប់ដំណាំតែមួយ ដល់ប្រព័ន្ធឧស្សាហកម្មធំសម្រាប់កសិដ្ឋានពាណិជ្ជកម្មទាំងមូល។

រេលេ Grove ជាមួយសៀរស៊ើបគ្រប់គ្រង អូតប៊ូតុង និងរេលេស្លាក

រូបភាពនៅលើបង្ហាញរេលេ Grove។ សៀរស៊ើបគ្រប់គ្រងភ្ជាប់ឧបករណ៍ IoT ហើយបើក ឬបិទរេលេដោយ​ប្រើ 3.3V ឬ 5V។ អូតប៊ូតុងមានផ្នែកទទួលសោ, មួយណាមួយអាចជាថាមពល ឬដី។ អូតប៊ូតុងអាចទប់ទល់បានដល់ 250V នៅ 10A គ្រប់គ្រាន់សម្រាប់ឧបករណ៍ដែលប្រើថាមពលម៉ាញេទិច។ អ្នកអាចរកបានរេលេដែលអាចដោះសោបានថាមពលខ្ពស់ជាងនេះ។

បង្អែកទឹកភ្ជាប់តាមរេលេ

រូបភាពខាងលើនេះបង្ហាញថាមពលផ្គត់ផ្គង់ទៅបង្អែកទឹកតាមរយៈរេលេ។ មានខ្សែក្រហមភ្ជាប់ពីផ្នែក +5V នៃថង់ថាមពល USB ទៅផ្នែកមួយនៃអូតប៊ូតុងរេលេ ហើយខ្សែក្រហមមួយទៀតភ្ជាប់ពីផ្នែកពីរនៃអូតប៊ូតុងទៅបង្អែកទឹក។ ខ្សែក្រហមខ្មៅភ្ជាប់បង្អែកទឹកទៅដីនៃថង់ថាមពល USB។ ពេលរេលេបើក វាបញ្ចប់សៀរស៊ើប បញ្ជូន 5V ទៅបង្អែកទឹក បើកបង្អែកទឹក។

គ្រប់គ្រងរេលេ

អ្នកអាចគ្រប់គ្រងរេលេពីឧបករណ៍អភិវឌ្ឍន៍ IoT របស់អ្នក។

បេសកកម្ម - គ្រប់គ្រងរេលេ

ធ្វើការតាមដានមេរៀនពាក់ព័ន្ធ ដើម្បីគ្រប់គ្រងរេលេដោយប្រើឧបករណ៍ IoT របស់អ្នក៖

គ្រប់គ្រងដំណាំរបស់អ្នកតាមរយៈ MQTT

រហូតមកដល់បច្ចុប្បន្ន រេលេរបស់អ្នកត្រូវបានគ្រប់គ្រងដោយឧបករណ៍ IoT តាមការវាស់សំណើមដីតែមួយ។ នៅក្នុងប្រព័ន្ធបង្អែកទឹកពាណិជ្ជកម្ម យន្តការគ្រប់គ្រងនឹងត្រូវមានមជ្ឈមណ្ឌល ដែលអនុញ្ញាតឲ្យវាគ្រប់គ្រងការសម្រេចចិត្តក្នុងការជួរទឹកជាមួយទិន្នន័យពីឧបករណ៍សិនស័រច្រើន ហើយអនុញ្ញាតឲ្យកំណត់តម្លៃណាមួយកែប្រែលើកទីមួយតែម្ដង។ ដើម្បីធ្វើការតម្រៀបនេះ អ្នកអាចគ្រប់គ្រងរេលេតាម MQTT។

បេសកកម្ម - គ្រប់គ្រងរេលេតាម MQTT

  1. បន្ថែមបណ្ណាល័យ MQTT / កញ្ចប់ pip និងកូដដែលពាក់ព័ន្ធទៅក្នុងគម្រោង soil-moisture-sensor របស់អ្នក ដើម្បីភ្ជាប់ទៅ MQTT។ បង្កើតឈ្មោះ client ID ជា soilmoisturesensor_client បូកបន្ថែមមុនដោយអត្តសញ្ញាណរបស់អ្នក។

    ⚠️ អ្នកអាចយោងទៅ ការណែនាំសម្រាប់ភ្ជាប់ទៅ MQTT ក្នុងគម្រោង ១ មេរៀន ៤ ប្រសិនបើត្រូវការ

  2. បន្ថែមកូដឧបករណ៍ដែលពាក់ព័ន្ធដើម្បីផ្ញើព័ត៌មានទីបមូលផ្តល់ពីសំណើមដី។ សម្រាប់សារតែមូល, បង្កើតឈ្មោះវាល soil_moisture

    ⚠️ អ្នកអាចយោងទៅ ការណែនាំសម្រាប់ផ្ញើព័ត៌មានទីបមូលទៅ MQTT ក្នុងគម្រោង ១ មេរៀន ៤ ប្រសិនបើត្រូវការ

  3. បង្កើតកូដម៉ាស៊ីនបម្រើមួយនៅភាគីមូលដ្ឋានដើម្បីជាវទំនាក់ទំនងទីបមូល និងផ្ញើការបញ្ជាដើម្បីគ្រប់គ្រងរេលេនៅក្នុងថតឯកសារឈ្មោះ soil-moisture-sensor-server។ បង្កើតឈ្មោះវាលក្នុងសារបញ្ជា​ជា relay_on ហើយកំណត់ client ID ជា soilmoisturesensor_server បូកបន្ថែមមុនដោយអត្តសញ្ញាណរបស់អ្នក។ រក្សារចំនុចដូចគ្នាជាមួយកូដម៉ាស៊ីនបម្រើដែលអ្នកបានសរសេរក្នុងគម្រោង ១ មេរៀន ៤ ព្រោះអ្នកនឹងបន្ថែមកូដនេះក្រោយមកក្នុងមេរៀននេះ។

    ⚠️ អ្នកអាចយោងទៅ ការណែនាំសម្រាប់សរសេរកូដម៉ាស៊ីនបម្រើដើម្បីទទួលព័ត៌មានទីបមូល និង ការផ្ញើបញ្ជាទៅអ្នកផ្គត់ផ្គង់ MQTT ក្នុងគម្រោង ១ មេរៀន ៤ ប្រសិនបើត្រូវការ។

  4. បន្ថែមកូដឧបករណ៍ដែលពាក់ព័ន្ធក្នុងការគ្រប់គ្រងរេលេពីបញ្ជាដែលទទួលបាន ដោយប្រើវាល relay_on ពីសារបញ្ជា។ ផ្ញើ true សម្រាប់ relay_on ប្រសិនបើ soil_moisture ធំជាង 450 ផ្ទុះពីនេះផ្ញើ false ដូចគ្នានឹងយុទ្ធសាស្ត្រដែលអ្នកបានបន្ថែមសម្រាប់ឧបករណ៍ IoT មុននេះ។

    ⚠️ អ្នកអាចយោងទៅ ការណែនាំសម្រាប់ការឆ្លើយតបបញ្ជា MQTT នៅគម្រោង ១ មេរៀន ៤ ប្រសិនបើត្រូវការ

💁 អ្នកអាចរកឃើញកូដនេះនៅក្នុងថត code-mqtt

ធ្វើឱ្យប្រាកដថាកូដដំណើរការលើឧបករណ៍របស់អ្នក និងម៉ាស៊ីនបម្រើមូលដ្ឋាន ហើយសាកល្បងដោយផ្លាស់ប្ដូរសំណើមដី ជាផ្លាស់ប្ដូរតម្លៃដែលផ្ញើដោយឧបករណ៍សិនស័រវីរៈឬផ្លាស់ប្ដូរសំណើមដីដោយបន្ថែមទឹក ឬដកឧបករណ៍សិនស័រចេញពីដី។

ពេលវេលាឧបករណ៍សិនស័រនិងឧបករណ៍អេកទ័រ

នៅក្នុងមេរៀន ៣ អ្នកបានកសាងភ្លែត្រស្រមោល - LED ដែលបើកភ្លឺវិលតែមួយភ្លែត្រពន្លឺទាបត្រូវបានស្គាល់ដោយឧបករណ៍សិនស័រពន្លឺ។ ឧបករណ៍សិនស័រពន្លឺបានរកឃើញការផ្លាស់ប្តូរភ្លឺភ្លើងភ្លាមៗ ហើយឧបករណ៍អាចឆ្លើយតបបានយ៉ាងរហ័ស ដែលមានដែនកំណត់តែប្រវែងពេលនៃការពន្យារពេលក្នុងមុខងារ loop ឬក្នុងវដ្ត while True:។ ជាអ្នកអភិវឌ្ឍន៍ IoT អ្នកមិនអាចគិតទុកលើវដ្តបាតតាមFeedback លឿនបែបនេះជានិច្ចទេ។

ពេលវេលាសម្រាប់សំណើមដី

ប្រសិនបើអ្នកបានធ្វើមេរៀនមុនស្តីពីសំណើមដីដោយប្រើឧបករណ៍សិនស័រពិត អ្នកនឹងមើលឃើញថាការវាស់សំណើមដីចំណាយពេលប៉ុន្មានវិនាទីដើម្បីធ្លាក់ក្រោមបន្ទាប់ពីអ្នកជួរទឹកដំណាំរបស់អ្នក។ វាមិនមែនត្រូវសិនស័រពេក ឬយឺតទេ តែគឺត្រូវការពេលវេលាឲ្យទឹករំលាយតាមដី។

💁 បើអ្នកជួរទឹកនៅជិតឧបករណ៍សិនស័រ អ្នកអាចបានឃើញការវាស់ចុះយ៉ាងឆាប់រហ័ស ហើយបន្ទាប់មកឡើងវិញ - នេះបណ្តាលមកពីទឹកនៅជិតសិនស័របង្កើតចែកចាយនៅក្នុងដី ដែលបន្ថយសំណើមដែលឧបករណ៍សិនស័รวាស់បាន។

ការវាស់សំណើមដីនៅកម្រិត 658 មិនផ្លាស់ប្តូរពេលជួរទឹកទេ វាប្រឹងតែកើនឡើងទៅ 320 ប៉ុន្តែបន្ទាប់ពីទឹករំលាយតាមចូលដី

ក្នុងខ្សែផែនភាពខាងលើ វាស់សំណើមដីបង្ហាញចំនួន 658។ ដំណាំត្រូវបានជួរទឹក ប៉ុន្តែតម្លៃនេះមិនផ្លាស់ប្តូរជាបន្ទាន់ទេ ព្រោះទឹកមិនទាន់ដល់ឧបករណ៍សិនស័រ។ ការជួរទឹកអាចបញ្ចប់ពីមុនពេលទឹកទទួលទៅឧបករណ៍សិនស័រនិងតម្លៃធ្លាក់ចុះដើម្បីបង្ហាញសំណើមថ្មី។

បើអ្នកសរសេរកូដដើម្បីគ្រប់គ្រងប្រព័ន្ធបង្អែកទឹកតាមរេលេដោយផ្អែកលើកម្រិតសំណើមដី អ្នកនឹងត្រូវគិតរយៈពេលពន្យល់នេះ និងបង្កើតម៉ាស៊ីន IoT ដោយមានពេលវេលាឆ្លើយតបផ្សេងគ្នា។

សូមចំណាយពេលគិតពីរបៀបដែលអាចធ្វើបាន។

គ្រប់គ្រងពេលវេលាឧបករណ៍សិនស័រនិងឧបករណ៍អេកទ័រ

សូមស្រមៃថាអ្នកត្រូវបានចាត់តាំងឲ្យសាងសង់ប្រព័ន្ធជីរដ្ឋានសម្រាប់ដែនធ្លីមួយ។ ដោយផ្អែកលើប្រភេទដី កម្រិតសំណើមដីដ៏ល្អបំផុតសម្រាប់រុក្ខជាតិដែលបានដាំគឺផ្គូរផ្គង់ជាមួយនឹងការវាស់ថាមពលអាណាឡอก ៤០០-៤៥០។

អ្នកអាចកម្មវិធីឧបករណ៍ដូចដដូចបំពង់ពន្លឺយប់ - រាល់ពេលដែលឧបករណ៍សិនស័រអានលើស ៤៥០ សូមបើករេលេដើម្បីបើកម៉ាស៊ីនបូមទឹក។ ក្តីបញ្ហានេះគឺទឹកត្រូវការពេលវេលាដើម្បីឈានដល់ពីម៉ាស៊ីនបូម តាមល្បឿនជាចន្លោះលើដីទៅឧបករណ៍សិនស័រ។ ឧបករណ៍សិនស័រនឹងបិទទឹកនៅពេលវាគិតថាបានឃើញកម្រិត ៤៥០ ប៉ុន្តែមក្រិតទឹកនោះនឹងត្រូវបន្តធ្លាក់ចុះ ដោយសារទឹកដែលបានបូមនៅតែងបន្តស្រូបឡើងនឹងដី។ លទ្ធផលចុងក្រោយគឺការប្រើប្រាស់ទឹកចោល និងហានិភ័យនៃការខូចខាតឫសភាគ។

គិតចាំ - ទឹកច្រើនពេកអាចធ្វើអោយរុក្ខជាតិខូចដូចជាទឹកតិចពេកផងដែរ ហើយវាយសម័យធនធានមិនសូវមានតម្លៃ។

ដំណោះស្រាយល្អជាងគេគឺត្រូវយល់ថាមានការពន្យារពេលរវាងការបើកឧបករណ៍បញ្ជាដែលផ្លាស់ប្តូរនិងលទ្ធផលដែលឧបករណ៍សិនស័រត្រូវបានអាន។ នេះមានន័យថាគ្រប់ពេលដែលឧបករណ៍សិនស័រត្រូវរង់ចាំរយៈពេលមួយមុនពេលវានឹងវាស់តម្លៃម្ដងទៀត ប៉ុន្តែកម្មវិធីបញ្ជាសកម្មភាពត្រូវតែបិទរយៈពេលមួយមុនពេលការវាស់បន្ទាប់គឺត្រូវបានធ្វើឡើង។

តើរេលេត្រូវបើករយៈពេលប៉ុន្មានម្តងមួយ? វាល្អជាងក្នុងការប្រុងប្រយ័ត្ន និងបើករេលេរយៈពេលខ្លី ហើយរង់ចាំឲ្យទឹកធ្លាយអាម៉ាត់រួចហើយបន្ទាប់មកពិនិត្យវិញកម្រិតសំណើមទឹក។ បន្ទាប់មក អ្នកអាចបើកម្ដងទៀតសម្រាប់បន្ថែមទឹកបាន តែក្នុងពេលនេះមិនអាចចាប់ទឹកចេញពីដីបានទេ។

💁 ការគ្រប់គ្រងពេលវេលាប្រភេទនេះមានលក្ខណៈពិសេសទៅនឹងឧបករណ៍ IoT ដែលអ្នកកំពុងសាងសង់ លក្ខណៈដែលអ្នកវាស់ និងឧបករណ៍សិនស័រ និងឧបករណ៍បញ្ជាប្រើ។

រុក្ខជាតិស្ទ្រប៉ែរីភ្ជាប់ទឹកតាមម៉ាស៊ីនបូម ដែលម៉ាស៊ីនបូមភ្ជាប់ទៅកាន់រេលេ។ រេលេនិងឧបករណ៍សិនស័រសំណើមដីនៅក្នុងរុក្ខជាតិទាំងពីរភ្ជាប់ទៅកាន់ Raspberry Pi

ឧទាហរណ៍ ខ្ញុំមានរុក្ខជាតិស្ទ្រប៉ែរៀរបស់ខ្ញុំមានឧបករណ៍សិនស័រសំណើមដី និងម៉ាស៊ីនបូមដែលត្រូវគ្រប់គ្រងដោយរេលេ។ ខ្ញុំបានមើលឃើញថា ពេលដែលខ្ញុំបន្ថែមទឹក វាត្រូវរយៈពេលប្រហែល ២០ វិនាទីសម្រាប់ការវាស់សំណើមដីឲ្យមានស្ថិរភាព។ នោះមានន័យថាខ្ញុំត្រូវបិទរេលេហើយរង់ចាំ ២០ វិនាទី មុនពេលពិនិត្យកម្រិតសំណើម។ ខ្ញុំចង់មានទឹកតិចជាងទឹកច្រើនពេក - ខ្ញុំអាចបើកម៉ាស៊ីនបូមម្ដងទៀតបានជានិច្ច ប៉ុន្តែខ្ញុំមិនអាចយកទឹកចេញពីរុក្ខជាតិនោះបានទេ។

ជំហាន ១ វាស់ទឹក។ ជំហាន ២ បន្ថែមទឹក។ ជំហាន ៣ រងចាំទឹកបត់ចូលដី។ ជំហាន ៤ វាស់វិញ

នេះមានន័យថាដំណើរការល្អបំផុតគឺជាចំណុចជារបស់ប្រព័ន្ធសុវត្ថិភាព៖

  • បើកម៉ាស៊ីនបូមរយៈពេល ៥ វិនាទី
  • រងចាំ ២០ វិនាទី
  • ពិនិត្យសំណើមដី
  • ប្រសិនបើកម្រិតនៅតែខ្ពស់ជាងអ្វីដែលខ្ញុំត្រូវការ សូមធ្វើម្តងទៀតដូចខាងលើ

៥ វិនាទីអាចយូរពេកសម្រាប់ម៉ាស៊ីនបូម ជាពិសេសបើកម្រិតសំណើមញឹកញាប់តែខ្ពស់តិចតួចជាងកម្រិតដែលត្រូវការ។ វិធីល្អបំផុតដើម្បីដឹងថាត្រូវប្រើពេលវេលាប៉ុន្មានគឺសាកល្បង ហើយកែតម្រូវនៅពេលដែលអ្នកមានទិន្នន័យ sensor ជាមួយនឹងវដ្តប្រតិកម្មមិនប្រែប្រួល។ នេះអាចនាំឲ្យមានពេលវេលាកាន់តែលម្អិត ដូចជា បើកម៉ាស៊ីនបូមរយៈពេល ១ វិនាទីសម្រាប់រាល់ ១០០ ខ្ពស់ជាងកម្រិតសំណើមដីដែលត្រូវការ ជំនួស ៥ វិនាទីថេរ។

ស្រាវជ្រាវបន្ត៖ មានបញ្ហាតេលស្សិ្តពេលវេលាផ្សេងទៀតទេ? តើអាចបូមទឹកនៅពេលណាមួយក៏បានពេលសំណើមដីទាប ឬមានពេលវេលា ព្រឹក និងល្ងាច ដែលល្អ ឬអាក្រក់សម្រាប់បូមទឹកឬទេ?

💁 ការព្យាករណ៍អាកាសធាតុអាចត្រូវបានគិតទៅនិងគ្រប់គ្រងប្រព័ន្ធបូមទឹកស្វ័យប្រវត្តិសម្រាប់កសិដ្ឋានក្រៅផ្ទះ។ ប្រសិនបើមានការរំពឹងទុកភ្លៀង បូមទឹកអាចត្រូវបានផ្អាករហូតដល់ភ្លៀងឈប់។ ពេលនោះដីអាចមានសំណើមគ្រប់គ្រាន់ហើយមិនចាំបូមទឹកទៀតទេ ល្អជាងការប្រើប្រាស់ទឹកអោយចោលយ៉ាងក្រៃលែងដោយបូមទឹកមុនភ្លៀង។

បន្ថែមពេលវេលាជាមួយម៉ាស៊ីនបើកល្បឿនរុក្ខជាតិរបស់អ្នក

កូដម៉ាស៊ីនបម្រុងអាចត្រូវបានកែប្រែដើម្បីបន្ថែមការគ្រប់គ្រងពេលវេលាជុំវិញរយៈពេលប្រតិបត្តិការបូមទឹក និងការរង់ចាំឲ្យសំណើមដីផ្លាស់ប្តូរ។ ហេតុអាកប្បកិរិយារបស់ម៉ាស៊ីនបើកល្បឿនដែលគ្រប់គ្រងពេលវេលារបស់រេលេគឺ៖

  1. ទទួលបានសារ telemetry
  2. ពិនិត្យកម្រិតសំណើមដី
  3. ប្រសិនបើវាត្រឹមត្រូវ មិនចាំបាច់ធ្វើអ្វីទាំងអស់។ ប្រសិនបើការវាស់លើស (មានន័យថាសំណើមដីទាបពេក) នោះ:
    1. ផ្ញើសំណើបើករេលេ
    2. រងចាំ ៥ វិនាទី
    3. ផ្ញើសំណើបិទរេលេ
    4. រងចាំ ២០ វិនាទីសម្រាប់សំណើមដីស្ថិតស្ថេរ

វដ្តបូមទឹក ពីពេលទទួលសារ telemetry ទៅពេលរងចាំសំណើមដីផ្លាស់ប្តូរកាន់តែមានរយៈពេលប្រហែល ២៥ វិនាទី។ យើងផ្ញើទិន្នន័យសំណើមដីរៀងរាល់ ១០ វិនាទី ដូច្នេះមានការបា្រស់គ្នា ដែលមានសារមួយត្រូវបានទទួលខណៈដែលម៉ាស៊ីនបម្រុងកំពុងរង់ចាំសំណើមដីស្ថិតស្ថេរ ដែលអាចចាប់ផ្តើមរយៈពេលបូមទឹកម្តុំនៃបន្ទាប់។

មានជម្រើសពីរដើម្បីអាចដោះស្រាយបញ្ហានេះ៖

  • ផ្លាស់ប្ដូរកូដឧបករណ៍ IoT ដើម្បីផ្ញើតែសារ telemetry រៀងរាល់មួយនាទី ដូច្នេះវដ្តបូមទឹកនឹងបានបញ្ចប់មុនសារបន្ទាប់
  • មិនដើម្បីរងចាំទទួលសារពេលវដ្តបូមទឹកកំពុងដំណើរការ

ជម្រើសដំបូងមិនមែនជាដំណោះស្រាយល្អសម្រាប់កសិដ្ឋានធំទេ។ កសិករអាចចង់ប្រមូលកម្រិតសំណើមដីក្នុងអំឡុងពេលដែលដីកំពុងទទួលទឹកសម្រាប់ការវិភាគក្រោយ សម្រាប់ដៃគូចាំបាច់ដើម្បីចាប់ផ្តើមបូមទឹកនៅតំបន់ផ្សេងៗនៅលើដែនដី។ ជម្រើសទីពីរល្អជាង - កូដគ្រាន់តែមិនព្យាយាមមើលសារនោះ ខណៈដែលវដ្តបូមទឹកកំពុងដំណើរការ ប៉ុន្តែសារនោះនៅតែមានសម្រាប់សេវាកម្មផ្សេងៗដែលអាចចូលរួមអាន។

💁 ទិន្នន័យ IoT មិនត្រូវបានផ្ញើពីឧបករណ៍តែឧបករណ៍មួយទៅសេវាកម្មមួយទេ ប៉ុន្តែឧបករណ៍ជាច្រើនអាចផ្ញើទិន្នន័យទៅកាន់ broker ហើយសេវាកម្មជាច្រើនអាចស្តាប់ទិន្នន័យពី broker។ ឧទាហរណ៍ សេវាកម្មមួយអាចស្តាប់ទិន្នន័យសំណើមដី ហើយរក្សាទុកក្នុងមូលដ្ឋានទិន្នន័យសម្រាប់វិភាគក្រោយ។ សេវាកម្មមួយផ្សេងទៀតអាចស្តាប់ទិន្នន័យឯងដែរដើម្បីគ្រប់គ្រងប្រព័ន្ធជីរដ្ឋាន។

ភារកិច្ច - បន្ថែមពេលវេលាជាមួយម៉ាស៊ីនបើកល្បឿនរុក្ខជាតិរបស់អ្នក

ធ្វើបច្ចុប្បន្នភាពកូដម៉ាស៊ីនបម្រុងរបស់អ្នកដើម្បីបើករេលេរយៈពេល ៥ វិនាទី បន្ទាប់មករង់ចាំ ២០ វិនាទី។

  1. បើកថត soil-moisture-sensor-server ក្នុង VS Code ប្រសិនបើវាមិនបានបើករួចទេ។ ជ្រាបថាបរិស្ថានអមតៈត្រូវបានដំណើរការ។

  2. បើកឯកសារ app.py

  3. បន្ថែមកូដខាងក្រោមទៅឯកសារ app.py ខាងក្រោមការនាំចូលដែលមានរួចហើយ៖

    import threading
    

    វាកំណត់ឲ្យនាំចូល threading ពីបណ្ណាល័យ Python ដែល threading អនុញ្ញាតឲ្យ_python_រត់កូដផ្សេងទៀតពេលដែលកំពុងរង់ចាំ។

  4. បន្ថែមកូដខាងក្រោមមុនមុខងារ handle_telemetry ដែលដំណើរការសារតេឡេមេត្រីដែលទទួលបានចូលពីកូដម៉ាស៊ីនបម្រុង៖

    water_time = 5
    wait_time = 20
    

    នេះកំណត់រយៈពេលបើករេលេ (water_time) និងរយៈពេលដែលត្រូវរងចាំបន្ទាប់មកសម្រាប់ពិនិត្យសំណើមដី (wait_time)។

  5. ខាងក្រោមកូដនេះ បន្ថែមកូដនេះ៖

    def send_relay_command(client, state):
        command = { 'relay_on' : state }
        print("Sending message:", command)
        client.publish(server_command_topic, json.dumps(command))
    

    កូដនេះកំណត់មុខងារដែលមានឈ្មោះ send_relay_command ដែលផ្ញើសេចក្តីបញ្ជាតាម MQTT ដើម្បីគ្រប់គ្រងរេលេ។ ទិន្នន័យ telemetry ត្រូវបានបង្កើតជា dictionary បន្ទាប់មកបម្លែងទៅជាស្ទ្រីង JSON។ តម្លៃបញ្ជាក់ក្នុង state នឹងកំណត់ថារេលេគួរត្រូវបើកឬបិទ។

  6. បន្ទាប់ពីមុខងារ send_relay_command បន្ថែមកូដខាងក្រោម៖

    def control_relay(client):
        print("Unsubscribing from telemetry")
        mqtt_client.unsubscribe(client_telemetry_topic)
    
        send_relay_command(client, True)
        time.sleep(water_time)
        send_relay_command(client, False)
    
        time.sleep(wait_time)
    
        print("Subscribing to telemetry")
        mqtt_client.subscribe(client_telemetry_topic)
    

    នេះកំណត់មុខងារដើម្បីគ្រប់គ្រងរេលេដោយផ្អែកលើពេលវេលាដែលត្រូវការ។ វាចាប់ផ្តើមដោយមិនត្រូវស្តាប់សារ telemetry ដើម្បីឲ្យសារសំណើមដីមិនត្រូវបានដំណើរការកាលណាកំពុងបូមទឹក។ បន្ទាប់មកវាផ្ញើសេចក្តីបញ្ជាបើករេលេ។ បន្ទាប់មកវារង់ចាំរយៈពេល water_time មុនពេលផ្ញើបញ្ជាបិទរេលេ។ ចុងក្រោយវារង់ចាំរយៈពេល wait_time សម្រាប់សំណើមដីមានស្ថិរភាព។ បន្ទាប់មកវាស្តារវិញការស្តាប់សារ telemetry។

  7. ផ្លាស់ប្ដូរមុខងារ handle_telemetry ដូចខាងក្រោម៖

    def handle_telemetry(client, userdata, message):
        payload = json.loads(message.payload.decode())
        print("Message received:", payload)
    
        if payload['soil_moisture'] > 450:
            threading.Thread(target=control_relay, args=(client,)).start()
    

    កូដនេះពិនិត្យកម្រិតសំណើមដី។ ប្រសិនបើវាធំជាង ៤៥០ ដីត្រូវការជីរដ្ឋាន ដូច្នេះវាហៅមុខងារ control_relay។ មុខងារនេះត្រូវបានដំណើរការលើកម្មវិធីត្រួតពិនិត្យផ្សេងៗ ដំណើរការប្រតិបត្តិការ​នៅ​ផ្ទៃ​ក្រោយ។

  8. ត្រួតពិនិត្យឲ្យប្រាកដថាឧបករណ៍ IoT របស់អ្នកកំពុងដំណើរការ បន្ទាប់មកបើកកូដនេះ។ ប្រែសំណើមដីហើយសង្កេតមើលអ្វីដែលកើតឡើងទៅរេលេ - វាគួរត្រូវបើករយៈពេល ៥ វិនាទី បន្ទាប់មកបិទរយៈពេលយ៉ាងហោចណាស់ ២០ វិនាទី ហើយបើកឡើងវិញតែនៅពេលសំណើមដីមិនគ្រប់គ្រាន់ទេ។

    (.venv) ➜  soil-moisture-sensor-server ✗ python app.py
    Message received: {'soil_moisture': 457}
    Unsubscribing from telemetry
    Sending message: {'relay_on': True}
    Sending message: {'relay_on': False}
    Subscribing to telemetry
    Message received: {'soil_moisture': 302}
    

    វិធីល្អសម្រាប់សាកល្បងប្រព័ន្ធជីរដ្ឋានតាមការស្ទៀងស្ម័គ្រនៅក្នុងផ្ទះគឺប្រើដីស្ងួត បន្ទាប់បួសទឹកដៃផ្ទាល់ខ្លួននៅពេលរេលេបើក ហើយបញ្ឈប់បួសពេលរេលេបិទ។

💁 អ្នកអាចរកកូដនេះនៅក្នុងថត code-timing

💁 ប្រសិនបើអ្នកចង់ប្រើម៉ាស៊ីនបូមទឹកដើម្បីសាងសង់ប្រព័ន្ធជីរដ្ឋានពិត អ្នកអាចប្រើ ម៉ាស៊ីនបូមទឹក 6V ជាមួយ ឧបករណ៍ផ្គត់ផ្គង់ថាមពល USB។ សូមប្រាកដថាថាមពលទៅម៉ាស៊ីនបូមត្រូវភ្ជាប់តាមរយៈរេលេ។


🚀 អប្បបរមា

តើអ្នកគិតថា មានឧបករណ៍ IoT ឬឧបករណ៍អគ្គិសនីផ្សេងៗមួយចំនួនដែលមានបញ្ហាស្រដៀងគ្នា ដែលវាត្រូវការពេលវេលាក្នុងការផ្លាស់ប្តូរវិស័យត្រីលក្ខណៈរបស់ឧបករណ៍បញ្ជាដល់ឧបករណ៍សិនស័រឬដោយ? ប្រហែលជាអ្នកមានឧបករណ៍បែបនេះប៉ុន្មាននៅផ្ទះ ឬសាលារៀនរបស់អ្នក។

  • តើវាវាស់កម្រិតអ្វី?
  • តើវាត្រូវការពេលវេលាប៉ុន្មានសម្រាប់បម្លែងបន្ទាប់ពីមានការប្រើឧបករណ៍បញ្ជា?
  • តើវាជាការល្អដែលអោយលក្ខណៈនោះបន្តបម្លែងលើសតម្លៃដែលត្រូវការ?
  • តើធ្វើដូចម្តេចដើម្បីយកវាចេញទៅតម្លៃដែលត្រូវការវិញ ប្រសិនបើចាំបាច់?

សំណួរបន្ទាប់ពេលវគ្គ

សំណួរបន្ទាប់ពេលវគ្គ

ពិនិត្យនិងរៀនផ្ទាល់ខ្លួន

  • អានបន្ថែមអំពីរេលេសំរាប់មើលប្រវត្តិសាស្ត្ររបស់វានៅក្នុងការបម្លែងទូរស័ព្ទនៅលើ ទំព័រ Wiki រេលេ

ភារកិច្ច

សាងសង់វដ្តបូមទឹកដែលមានប្រសិទ្ធភាព


និយាមកសារៈ:
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI Co-op Translator។ ខណៈពេលដែលយើងខិតខំឲ្យបានភាពត្រឹមត្រូវ សូមយល់ថាបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមដែលមាននៅជាសំដែងភាសាត្រូវបានគេចាត់ទុកជាប្រភពស្របតាមច្បាប់។ សម្រាប់ព័ត៌មានសំខាន់ៗ យោលបកប្រែដោយអ្នកជំនាញមនុស្សគឺគួរតែអនុវត្ត។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនា ឬការបកស្រាយខុសពីការប្រើប្រាស់បកប្រែនេះនោះទេ។