C, उच्चारण *आई-स्क्वायर-सी*, एक बहु-नियन्त्रक, बहु-पेरिफेरल प्रोटोकल हो, जहाँ कुनै पनि जडान गरिएको उपकरणले नियन्त्रक वा पेरिफेरलको रूपमा कार्य गर्न सक्छ र I²C बस (डेटा स्थानान्तरण गर्ने संचार प्रणालीको नाम) मार्फत संवाद गर्न सक्छ। डेटा ठेगाना गरिएको प्याकेटको रूपमा पठाइन्छ, प्रत्येक प्याकेटमा जडान गरिएको उपकरणको ठेगाना समावेश हुन्छ जसको लागि यो अभिप्रेरित गरिएको छ।
> 💁 यो मोडेललाई पहिले मास्टर/स्लेव भनेर उल्लेख गरिन्थ्यो, तर यसको दासत्वसँग सम्बन्धित शब्दावलीका कारण यो शब्दावलीलाई हटाइँदैछ। [ओपन सोर्स हार्डवेयर एसोसिएसनले नियन्त्रक/पेरिफेरललाई अपनाएको छ](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), तर तपाईंले अझै पुरानो शब्दावलीको सन्दर्भ देख्न सक्नुहुन्छ।
उपकरणहरूले I²C बसमा जडान गर्दा प्रयोग हुने ठेगाना हुन्छ, र यो सामान्यतया उपकरणमा हार्ड कोड गरिएको हुन्छ। उदाहरणका लागि, Seeed का प्रत्येक प्रकारका Grove सेन्सरको एउटै ठेगाना हुन्छ, त्यसैले सबै प्रकाश सेन्सरहरूको एउटै ठेगाना हुन्छ, सबै बटनहरूको ठेगाना प्रकाश सेन्सरको ठेगानाभन्दा फरक हुन्छ। केही उपकरणहरूले ठेगाना परिवर्तन गर्ने तरिका प्रदान गर्छन्, जस्तै जम्पर सेटिङ परिवर्तन गरेर वा पिनहरू सोल्डर गरेर।
I²C मा २ मुख्य तारहरू, साथै २ पावर तारहरू हुन्छन्:
| तार | नाम | विवरण |
| ---- | --------- | ----------- |
| SDA | सिरियल डेटा | यो तार उपकरणहरू बीच डेटा पठाउनको लागि हो। |
| SCL | सिरियल क्लक | यो तारले नियन्त्रकले सेट गरेको दरमा क्लक संकेत पठाउँछ। |
| VCC | भोल्टेज कमन कलेक्टर | उपकरणहरूको पावर आपूर्ति। यो SDA र SCL तारहरूमा जडान गरिएको हुन्छ जसले पुल-अप रेसिस्टर मार्फत संकेतलाई बन्द गर्दछ जब कुनै उपकरण नियन्त्रक हुँदैन। |
| GND | ग्राउन्ड | यो विद्युतीय सर्किटको लागि साझा ग्राउन्ड प्रदान गर्दछ। |

डेटा पठाउनको लागि, एउटा उपकरणले डेटा पठाउन तयार भएको देखाउनको लागि सुरु अवस्था जारी गर्दछ। त्यसपछि यो नियन्त्रक बन्छ। नियन्त्रकले त्यसपछि संवाद गर्न चाहेको उपकरणको ठेगाना, साथै यो डेटा पढ्न वा लेख्न चाहन्छ कि चाहँदैन भन्ने जानकारी पठाउँछ। डेटा प्रसारण भएपछि, नियन्त्रकले समाप्त भएको संकेत दिनको लागि रोक अवस्था जारी गर्दछ। यसपछि अर्को उपकरणले नियन्त्रक बनेर डेटा पठाउन वा प्राप्त गर्न सक्छ।
I2C मा गति सीमाहरू छन्, जसमा ३ फरक मोडहरू निश्चित गतिमा चल्छन्। सबैभन्दा छिटो High Speed मोड हो, जसको अधिकतम गति ३.४ Mbps (मेगाबिट्स प्रति सेकेन्ड) छ, यद्यपि धेरै कम उपकरणहरूले यो गति समर्थन गर्छन्। उदाहरणका लागि, Raspberry Pi लाई Fast मोडमा ४०० Kbps (किलोबिट्स प्रति सेकेन्ड) मा सीमित गरिएको छ। Standard मोड १०० Kbps मा चल्छ।
> 💁 यदि तपाईं IoT हार्डवेयरको रूपमा Grove Base hat भएको Raspberry Pi प्रयोग गर्दै हुनुहुन्छ भने, तपाईं बोर्डमा I2C सेन्सरहरूसँग संवाद गर्न प्रयोग गर्न सकिने धेरै I2C सॉकेटहरू देख्न सक्नुहुन्छ। Analog Grove सेन्सरहरूले पनि I2C प्रयोग गर्छन्, ADC को माध्यमबाट एनालग मानहरूलाई डिजिटल डाटाको रूपमा पठाउन। त्यसैले तपाईंले प्रयोग गरेको लाइट सेन्सरले एनालग पिनलाई अनुकरण गर्यो, जसको मान I2C मार्फत पठाइयो, किनभने Raspberry Pi ले मात्र डिजिटल पिनहरू समर्थन गर्छ।
### Universal asynchronous receiver-transmitter (UART)
UART भौतिक सर्किटरी समावेश गर्दछ, जसले दुई उपकरणहरूलाई संवाद गर्न अनुमति दिन्छ। प्रत्येक उपकरणसँग २ सञ्चार पिनहरू हुन्छन् - Transmit (Tx) र Receive (Rx)। पहिलो उपकरणको Tx पिन दोस्रो उपकरणको Rx पिनसँग जडान हुन्छ, र दोस्रो उपकरणको Tx पिन पहिलो उपकरणको Rx पिनसँग जडान हुन्छ। यसले दुवै दिशामा डाटा पठाउन अनुमति दिन्छ।
* उपकरण १ ले आफ्नो Tx पिनबाट डाटा पठाउँछ, जुन उपकरण २ ले आफ्नो Rx पिनमा प्राप्त गर्छ।
* उपकरण १ ले आफ्नो Rx पिनमा डाटा प्राप्त गर्छ, जुन उपकरण २ ले आफ्नो Tx पिनबाट पठाउँछ।

> 🎓 डाटा एक पटकमा एक बिट पठाइन्छ, र यसलाई *serial* सञ्चार भनिन्छ। अधिकांश अपरेटिङ सिस्टमहरू र माइक्रोकन्ट्रोलरहरूसँग *serial ports* हुन्छन्, जसले तपाईंको कोडलाई serial डाटा पठाउन र प्राप्त गर्न अनुमति दिन्छ।
UART उपकरणहरूसँग [baud rate](https://wikipedia.org/wiki/Symbol_rate) (Symbol rate पनि भनिन्छ) हुन्छ, जुन डाटा bits प्रति सेकेन्डमा पठाइने र प्राप्त गरिने गति हो। सामान्य baud rate ९,६०० हो, जसको अर्थ प्रत्येक सेकेन्डमा ९,६०० बिट्स (० र १) डाटा पठाइन्छ।
UART ले start र stop बिट्स प्रयोग गर्छ - जसले एउटा बाइट (८ बिट्स) डाटा पठाउन लागेको संकेत दिन start बिट पठाउँछ, र ८ बिट्स पठाएपछि stop बिट पठाउँछ।
UART गति हार्डवेयरमा निर्भर हुन्छ, तर सबैभन्दा छिटो कार्यान्वयनहरूले पनि ६.५ Mbps (मेगाबिट्स प्रति सेकेन्ड) भन्दा बढी हुँदैन।
GPIO पिनहरूमा UART प्रयोग गर्न सकिन्छ - तपाईं एउटा पिनलाई Tx र अर्को पिनलाई Rx को रूपमा सेट गर्न सक्नुहुन्छ, त्यसपछि यी पिनहरूलाई अर्को उपकरणसँग जडान गर्न सक्नुहुन्छ।
> 💁 यदि तपाईं IoT हार्डवेयरको रूपमा Grove Base hat भएको Raspberry Pi प्रयोग गर्दै हुनुहुन्छ भने, तपाईं बोर्डमा UART प्रोटोकल प्रयोग गर्ने सेन्सरहरूसँग संवाद गर्न प्रयोग गर्न सकिने UART सॉकेट देख्न सक्नुहुन्छ।
### Serial Peripheral Interface (SPI)
SPI छोटो दूरीमा संवाद गर्न डिजाइन गरिएको हो, जस्तै माइक्रोकन्ट्रोलरले फ्ल्यास मेमोरी जस्ता स्टोरेज उपकरणहरूसँग कुरा गर्न। यो एक controller/peripheral मोडेलमा आधारित छ, जहाँ एकल controller (सामान्यतया IoT उपकरणको प्रोसेसर) ले धेरै peripherals सँग अन्तरक्रिया गर्छ। controller ले सबै कुरा नियन्त्रण गर्छ, एउटा peripheral चयन गरेर डाटा पठाउने वा अनुरोध गर्ने।
> 💁 I2C जस्तै, controller र peripheral का शब्दहरू हालसालै परिवर्तन भएका हुन्, त्यसैले तपाईंले पुराना शब्दहरू अझै पनि प्रयोगमा देख्न सक्नुहुन्छ।
SPI controllers ले ३ तारहरू प्रयोग गर्छन्, साथै प्रत्येक peripheral का लागि १ अतिरिक्त तार। peripherals ले ४ तारहरू प्रयोग गर्छन्। यी तारहरू हुन्:
| तार | नाम | विवरण |
| ---- | --------- | ----------- |
| COPI | Controller Output, Peripheral Input | यो तार controller बाट peripheral मा डाटा पठाउन प्रयोग गरिन्छ। |
| CIPO | Controller Input, Peripheral Output | यो तार peripheral बाट controller मा डाटा पठाउन प्रयोग गरिन्छ। |
| SCLK | Serial Clock | यो तारले controller द्वारा सेट गरिएको दरमा घडी संकेत पठाउँछ। |
| CS | Chip Select | controller सँग धेरै तारहरू हुन्छन्, प्रत्येक peripheral का लागि एउटा, र प्रत्येक तार सम्बन्धित peripheral को CS तारसँग जडान हुन्छ। |

CS तार एउटा समयमा एउटा peripheral सक्रिय गर्न प्रयोग गरिन्छ, COPI र CIPO तारहरू मार्फत संवाद गर्न। जब controller ले अर्को peripheral परिवर्तन गर्न आवश्यक हुन्छ, यो हाल सक्रिय peripheral सँग जडान भएको CS तारलाई निष्क्रिय गर्छ, त्यसपछि अर्को peripheral सँग जडान भएको तारलाई सक्रिय गर्छ।
SPI *full-duplex* हो, जसको अर्थ controller ले COPI र CIPO तारहरू प्रयोग गरेर एउटै समयमा एउटै peripheral बाट डाटा पठाउन र प्राप्त गर्न सक्छ। SPI ले SCLK तारमा घडी संकेत प्रयोग गर्छ, जसले उपकरणहरूलाई समक्रमणमा राख्छ, त्यसैले UART मार्फत सिधै पठाउँदा आवश्यक पर्ने start र stop बिट्स आवश्यक पर्दैन।
SPI का लागि कुनै परिभाषित गति सीमा छैन, र कार्यान्वयनहरूले प्रायः प्रति सेकेन्ड धेरै मेगाबाइट्स डाटा प्रसारण गर्न सक्छन्।
IoT विकास किटहरूले प्रायः GPIO पिनहरूमा SPI समर्थन गर्छन्। उदाहरणका लागि, Raspberry Pi मा तपाईं GPIO पिनहरू १९, २१, २३, २४ र २६ SPI का लागि प्रयोग गर्न सक्नुहुन्छ।
### Wireless
केही सेन्सरहरूले Bluetooth (मुख्यतया Bluetooth Low Energy, वा BLE), LoRaWAN (एक **Lo**ng **Ra**nge कम पावर नेटवर्किङ प्रोटोकल), वा WiFi जस्ता मानक वायरलेस प्रोटोकलहरू मार्फत संवाद गर्न सक्छन्। यसले IoT उपकरणसँग भौतिक रूपमा जडान नगरिएका टाढाका सेन्सरहरूको लागि अनुमति दिन्छ।
यसको एउटा उदाहरण व्यावसायिक माटोको चिस्यान सेन्सरहरूमा देख्न सकिन्छ। यी सेन्सरहरूले खेतमा माटोको चिस्यान मापन गर्छन्, त्यसपछि LoRaWAN मार्फत डाटा हब उपकरणमा पठाउँछन्, जसले डाटालाई प्रशोधन गर्छ वा इन्टरनेटमा पठाउँछ। यसले सेन्सरलाई IoT उपकरणबाट टाढा राख्न अनुमति दिन्छ, जसले पावर खपत घटाउँछ र ठूलो WiFi नेटवर्क वा लामो तारहरूको आवश्यकता हटाउँछ।
BLE उन्नत सेन्सरहरूको लागि लोकप्रिय छ, जस्तै फिटनेस ट्र्याकरहरू, जुन हातमा लगाइन्छ। यीले धेरै सेन्सरहरूलाई संयोजन गर्छन् र सेन्सर डाटालाई BLE मार्फत तपाईंको फोन जस्ता IoT उपकरणमा पठाउँछन्।
✅ के तपाईंको साथमा, घरमा वा विद्यालयमा कुनै Bluetooth सेन्सरहरू छन्? यीमा तापक्रम सेन्सर, उपस्थिति सेन्सर, उपकरण ट्र्याकरहरू र फिटनेस उपकरणहरू समावेश हुन सक्छन्।
व्यावसायिक उपकरणहरू जडान गर्नको लागि Zigbee एक लोकप्रिय तरिका हो। Zigbee ले WiFi प्रयोग गरेर उपकरणहरू बीच mesh नेटवर्कहरू बनाउँछ, जहाँ प्रत्येक उपकरणले सकेसम्म धेरै नजिकका उपकरणहरूसँग जडान गर्छ, जसले मकडीको जालजस्तो धेरै जडानहरू बनाउँछ। जब कुनै उपकरणले इन्टरनेटमा सन्देश पठाउन चाहन्छ, यो नजिकको उपकरणमा पठाउँछ, जसले अर्को नजिकको उपकरणमा अगाडि बढाउँछ, र यस्तै गर्दै, यो समन्वयकर्तासम्म पुग्छ र इन्टरनेटमा पठाउन सकिन्छ।
> 🐝 Zigbee नाम मह मौरीहरूको hive मा फर्किएपछि गर्ने नृत्यलाई जनाउँछ।
## माटोको चिस्यान स्तर मापन गर्नुहोस्
तपाईं माटोको चिस्यान स्तर मापन गर्न माटोको चिस्यान सेन्सर, IoT उपकरण, र घरको बिरुवा वा नजिकको माटोको टुक्रा प्रयोग गर्न सक्नुहुन्छ।
### कार्य - माटोको चिस्यान मापन गर्नुहोस्
तपाईंको IoT उपकरण प्रयोग गरेर माटोको चिस्यान मापन गर्न सम्बन्धित गाइड पूरा गर्नुहोस्:
* [Arduino - Wio Terminal](wio-terminal-soil-moisture.md)
* [Single-board computer - Raspberry Pi](pi-soil-moisture.md)
* [Single-board computer - Virtual device](virtual-device-soil-moisture.md)
## सेन्सर क्यालिब्रेसन
सेन्सरहरूले प्रतिरोध वा धारिता जस्ता विद्युतीय गुणहरू मापन गरेर काम गर्छन्।
> 🎓 प्रतिरोध, जसलाई ohms (Ω) मा मापन गरिन्छ, विद्युत प्रवाहलाई कुनै वस्तुबाट यात्रा गर्न कति अवरोध छ भन्ने हो। जब कुनै सामग्रीमा भोल्टेज लागू गरिन्छ, त्यसबाट प्रवाहित हुने प्रवाहको मात्रा सामग्रीको प्रतिरोधमा निर्भर हुन्छ। [विद्युतीय प्रतिरोधको विकिपीडिया पृष्ठ](https://wikipedia.org/wiki/Electrical_resistance_and_conductance) मा थप पढ्न सक्नुहुन्छ।
> 🎓 धारिता, जसलाई farads (F) मा मापन गरिन्छ, कुनै कम्पोनेन्ट वा सर्किटले विद्युतीय ऊर्जा सङ्कलन र भण्डारण गर्ने क्षमता हो। धारिताबारे थप जानकारी [धारिता पृष्ठ](https://wikipedia.org/wiki/Capacitance) मा पढ्न सकिन्छ।
यी मापनहरू सधैं उपयोगी हुँदैनन् - कल्पना गर्नुहोस्, तापक्रम सेन्सरले तपाईंलाई २२.५KΩ को मापन दियो! यसको सट्टा मापन गरिएको मानलाई उपयोगी एकाइमा रूपान्तरण गर्न क्यालिब्रेसन आवश्यक हुन्छ - जसले मापन गरिएका मानहरूलाई सही एकाइमा रूपान्तरण गर्न अनुमति दिन्छ।
केही सेन्सरहरू पहिले नै क्यालिब्रेटेड आउँछन्। उदाहरणका लागि, तपाईंले अघिल्लो पाठमा प्रयोग गरेको तापक्रम सेन्सर पहिले नै क्यालिब्रेटेड थियो, जसले °C मा तापक्रम मापन फिर्ता गर्न सक्छ। कारखानामा पहिलो सेन्सरलाई ज्ञात तापक्रमहरूको दायरामा राखेर प्रतिरोध मापन गरिन्छ। यसलाई प्रयोग गरेर Ω (प्रतिरोधको एकाइ) बाट °C मा रूपान्तरण गर्न गणना तयार गरिन्छ।
> 💁 तापक्रमबाट प्रतिरोध गणना गर्ने सूत्रलाई [Steinhart–Hart equation](https://wikipedia.org/wiki/Steinhart–Hart_equation) भनिन्छ।
### माटोको चिस्यान सेन्सर क्यालिब्रेसन
माटोको चिस्यान ग्राभिमेट्रिक वा भोल्युमेट्रिक पानी सामग्री प्रयोग गरेर मापन गरिन्छ।
* ग्राभिमेट्रिक भनेको माटोको एकाइ तौलमा पानीको तौल मापन गर्नु हो, जसलाई सुक्खा माटोको प्रति किलोग्राममा कति किलोग्राम पानी छ भनेर मापन गरिन्छ।
* भोल्युमेट्रिक भनेको माटोको एकाइ आयतनमा पानीको आयतन मापन गर्नु हो, जसलाई सुक्खा माटोको प्रति घन मिटरमा कति घन मिटर पानी छ भनेर मापन गरिन्छ।
> 🇺🇸 अमेरिकाका लागि, एकाइहरूको स्थिरताका कारण, यी किलोग्रामको सट्टा पाउन्ड वा घन मिटरको सट्टा घन फिटमा मापन गर्न सकिन्छ।
माटोको चिस्यान सेन्सरहरूले विद्युतीय प्रतिरोध वा धारिता मापन गर्छन् - यो मात्र माटोको चिस्यानले होइन, माटोको प्रकारले पनि फरक पार्छ, किनभने माटोमा भएका तत्वहरूले यसको विद्युतीय विशेषताहरू परिवर्तन गर्न सक्छन्। आदर्श रूपमा, सेन्सरहरू क्यालिब्रेट गरिनुपर्छ - जसले सेन्सरबाट मापनहरू लिन्छ र तिनीहरूलाई वैज्ञानिक दृष्टिकोणबाट पाइएको मापनहरूसँग तुलना गर्छ। उदाहरणका लागि, प्रयोगशालाले विशिष्ट खेतको नमूनाहरू वर्षको केही पटक लिएर ग्राभिमेट्रिक माटोको चिस्यान गणना गर्न सक्छ, र यी सङ्ख्याहरू सेन्सरलाई क्यालिब्रेट गर्न प्रयोग गर्न सकिन्छ, सेन्सर मापनलाई ग्राभिमेट्रिक माटोको चिस्यानसँग मिलाउन।

माथिको ग्राफले सेन्सर क्यालिब्रेट गर्ने तरिका देखाउँछ। माटोको नमूनाको लागि भोल्टेज क्याप्चर गरिन्छ, जसलाई प्रयोगशालामा सुक्खा तौलसँग तुलना गरेर मापन गरिन्छ (पहिले भिजेको तौल मापन गरेर, त्यसपछि ओभनमा सुकाएर सुक्खा तौल मापन गरेर)। केही मापनहरू लिइसकेपछि, यसलाई ग्राफमा प्लट गर्न सकिन्छ र बिन्दुहरूमा एउटा रेखा फिट गर्न सकिन्छ। यो रेखा प्रयोग गरेर IoT उपकरणले लिएका माटोको चिस्यान सेन्सर मापनहरूलाई वास्तविक माटोको चिस्यान मापनमा रूपान्तरण गर्न सकिन्छ।
💁 प्रतिरोधात्मक माटोको चिस्यान सेन्सरहरूको लागि, भोल्टेज माटोको चिस्यान बढ्दै जाँदा बढ्छ। धारात्मक माटोको चिस्यान सेन्सरहरूको लागि, भोल्टेज माटोको चिस्यान बढ्दै जाँदा घट्छ, त्यसैले यीका लागि ग्राफहरू तलतिर झुक्नेछन्, माथितिर होइन।

माथिको ग्राफले माटोको चिस्यान सेन्सरबाट भोल्टेज मापन देखाउँछ, र ग्राफमा रहेको रेखासम्म त्यसलाई पछ्याएर, वास्तविक माटोको चिस्यान गणना गर्न सकिन्छ।
यो दृष्टिकोणले किसानलाई एउटा खेतको लागि केही प्रयोगशालाका मापनहरू मात्र लिन आवश्यक हुन्छ, त्यसपछि उनीहरूले IoT उपकरणहरू प्रयोग गरेर माटोको चिस्यान मापन गर्न सक्छन् - मापन लिनको लागि समयलाई धेरै छिटो बनाउँदै।
---
## 🚀 चुनौती
प्रतिरोधात्मक र धारात्मक माटोको चिस्यान सेन्सरहरूमा धेरै भिन्नताहरू छन्। यी भिन्नताहरू के हुन्, र कुन प्रकार (यदि कुनै छ भने) किसानले प्रयोग गर्नका लागि सबैभन्दा राम्रो हो? के यो उत्तर विकासशील र विकसित देशहरूबीच फरक पर्छ?
## Post-lecture quiz
[Post-lecture quiz](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/12)
## समीक्षा र आत्म-अध्ययन
सेन्सर र एक्ट्युएटरहरूले प्रयोग गर्ने हार्डवेयर र प्रोटोकलहरूको बारेमा पढ्नुहोस्:
* [GPIO विकिपीडिया पृष्ठ](https://wikipedia.org/wiki/General-purpose_input/output)
* [UART विकिपीडिया पृष्ठ](https://wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter)
* [SPI विकिपीडिया पृष्ठ](https://wikipedia.org/wiki/Serial_Peripheral_Interface)
* [I2C विकिपीडिया पृष्ठ](https://wikipedia.org/wiki/I²C)
* [Zigbee विकिपीडिया पृष्ठ](https://wikipedia.org/wiki/Zigbee)
## असाइनमेन्ट
[तपाईंको सेन्सर क्यालिब्रेट गर्नुहोस्](assignment.md)
---
**अस्वीकरण**:
यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटि वा अशुद्धता हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।