# ការស្វែងរកចំងាយជិត - Wio Terminal
នៅផ្នែកនេះនៃមេរៀន អ្នកនឹងបន្ថែមស៊ងស៊ន្សឺរ proximity ទៅកាន់ Wio Terminal របស់អ្នក ហើយអានចម្ងាយពីវា។
## ម៉ាស៊ីនភាគហ៊ុន
Wio Terminal ត្រូវការស៊ន្សឺរ proximity។
ស៊ន្សឺរដែលអ្នកនឹងប្រើគឺ [Grove Time of Flight distance sensor](https://www.seeedstudio.com/Grove-Time-of-Flight-Distance-Sensor-VL53L0X.html)។ ស៊ន្សឺរនេះប្រើម៉ូឌុលវាស់ចម្ងាយដោយឡាស៊ែរ ដើម្បីរកមើលចម្ងាយ។ ស៊ន្សឺរនេះមានជួរពី 10mm ដល់ 2000mm (1cm - 2m) ហើយនឹងរាយការណ៍តម្លៃនៅក្នុងជួរនេះបានយ៉ាងត្រឹមត្រូវ ដោយចម្ងាយលើស 1000mm នឹងរាយការណ៍ជារូបិយវត្ថុ 8109mm។
ម៉ូឌុលកម្របឡាស៊ែរ មាននៅខាងក្រោយនៃស៊ន្សឺរ ផ្ទុយទៅនឹងចំហៀង Grove socket។
នេះគឺជាស៊ន្សឺរ I2C។
### ការតភ្ជាប់ស៊ន្សឺរតាមរយៈ time of flight
ស៊ន្សឺរ Grove time of flight អាចត្រូវបានភ្ជាប់ទៅកាន់ Wio Terminal។
#### បម្មការ - តភ្ជាប់ស៊ន្សឺរតាមរយៈ time of flight
តភ្ជាប់ស៊ន្សឺរតាមរយៈ time of flight។

1. ដាក់ចុងខាងមួយនៃខ្សែនិង Grove ចូលទៅក្នុងចំហៀងនៅលើស៊ន្សឺរតាមរយៈ time of flight។ វានឹងដំណើរការតែទៅតែម្តងប៉ុណ្ណោះ។
1. ជាមួយនឹងការដែល Wio Terminal បានផ្តល់អគ្គិសនីពីកុំព្យូទ័រឬប្រភពថាមពលផ្សេងទៀត ខ្សែនិង Grove ខាងមួយទៀតត្រូវតភ្ជាប់ទៅកាន់ចំហៀង Grove ខាងឆ្វេងនៅលើ Wio Terminal នៅពេលដែលអ្នកមើលទៅកាន់អេក្រង់។ នេះជាចំហៀងដែលនៅជិតប៊ូតុងថាមពល។ នេះគឺជាចំហៀងផ្ទុកឌីជីថល និង I2C ប្រភេទរួម។

1. ឥឡូវនេះ អ្នកអាចភ្ជាប់ Wio Terminal ទៅកាន់កុំព្យូទ័ររបស់អ្នក។
## កម្មវិធីសម្រាប់ស៊ន្សឺរតាមរយៈ time of flight
ឥឡូវនេះ Wio Terminal អាចត្រូវបានកម្មវិធីដើម្បីប្រើស៊ន្សឺរតាមរយៈ time of flight ដែលភ្ជាប់នៅជាមួយ។
### បម្មការ - កម្មវិធីសម្រាប់ស៊ន្សឺរតាមរយៈ time of flight
1. បង្កើតគម្រោង Wio Terminal ថ្មីមួយ ដោយប្រើ PlatformIO ហៅគម្រោងនេះថា `distance-sensor`។ បន្ថែមកូដនៅក្នុងមុខងារ `setup` ដើម្បីកំណត់ច្រកស៊េរី។
1. បន្ថែមផ្នែកអាស្រ័យសមាសភាពសម្រាប់បណ្ណាល័យ Seeed Grove time of flight distance sensor ចូលក្នុងឯកសារ `platformio.ini` របស់គម្រោង៖
```ini
lib_deps =
seeed-studio/Grove Ranging sensor - VL53L0X @ ^1.1.1
```
1. ក្នុងឯកសារ `main.cpp` បន្ថែមខាងក្រោមនៃការបញ្ចូលបណ្ណាល័យដែលមានរួច ដើម្បីប្រកាសអនុគមន៍នៃ `Seeed_vl53l0x` ដែលប្រើសម្រាប់អន្តរកម្មជាមួយស៊ន្សឺរតាមរយៈ time of flight៖
```cpp
#include "Seeed_vl53l0x.h"
Seeed_vl53l0x VL53L0X;
```
1. បន្ថែមខាងក្រោមនៃមុខងារ `setup` ដើម្បីចាប់ផ្តើមស៊ន្សឺរ៖
```cpp
VL53L0X.VL53L0X_common_init();
VL53L0X.VL53L0X_high_accuracy_ranging_init();
```
1. ក្នុងមុខងារ `loop` អានតម្លៃមួយពីស៊ន្សឺរ៖
```cpp
VL53L0X_RangingMeasurementData_t RangingMeasurementData;
memset(&RangingMeasurementData, 0, sizeof(VL53L0X_RangingMeasurementData_t));
VL53L0X.PerformSingleRangingMeasurement(&RangingMeasurementData);
```
កូដនេះបង្កើតរចនាសម្ព័ន្ធទិន្នន័យមួយសម្រាប់អានទិន្នន័យបន្ទាប់មកបញ្ជូនវាទៅវិធីសាស្ត្រ `PerformSingleRangingMeasurement` ដែលវានឹងបំពេញជាមួយតម្លៃវាស់ចម្ងាយ។
1. ខាងក្រោមនោះ សរសេរចេញវិមាត្រចម្ងាយហើយពន្យារពេល 1 វិនាទី៖
```cpp
Serial.print("Distance = ");
Serial.print(RangingMeasurementData.RangeMilliMeter);
Serial.println(" mm");
delay(1000);
```
1. សង់ បញ្ចូល និងដំណើរការកូដនេះ។ អ្នកនឹងអាចមើលឃើញការវាស់ចម្ងាយជាមួយកម្មវិធីត следរមើលឃើញស៊េរី។ ដាក់វត្ថុជិតស៊ន្សឺរហើយអ្នកនឹងឃើញការវាស់ចម្ងាយ៖
```output
Distance = 29 mm
Distance = 28 mm
Distance = 30 mm
Distance = 151 mm
```
ម៉ូឌុលកម្របឡាស៊ែរ មាននៅខាងក្រោយនៃស៊ន្សឺរ ដូច្នេះទាក់ទាញប្រាកដប្រជា ដើម្បីប្រើម្ខាងត្រឹមត្រូវនៅពេលវាស់ចម្ងាយ។

> 💁 អ្នកអាចស្វែងរកកូដនេះនៅក្នុងថត [code-proximity/wio-terminal](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector/code-proximity/wio-terminal)។
😀 កម្មវិធីស៊ន្សឺរ proximity របស់អ្នកបានជោគជ័យ!
---
**ការពន្យល់**៖
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលយើងខិតខំរកភាពត្រឹមត្រូវ សូមយល់ដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិអាចមានកំហុស ឬភាពខុសខាងច្រឡំនៅក្នុងខ្លះ។ ឯកសារដើមនៅក្នុងភាសាម្ដ្ឋាភាសាគួរត្រូវបានជាលទ្ធផលផ្លូវការជាដើម។ សម្រាប់ព័ត៌មានមានសារៈសំខាន់ មានការផ្ដល់អនុសាសន៍អោយបកប្រែដោយអ្នកជាសហការីជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនោះ ឬការបកប្រែខុសដែលកើតឡើងពីការប្រើប្រាស់បកប្រែនេះឡើយ។