एक पीसी - शुरुआत अनुभव के साथ इंटरनेट पर Arduino का प्रबंधन

सभी को नमस्कार। इस लेख में मैं इस बारे में बात करूँगा कि कैसे मैं इंटरनेट से जुड़े पीसी का उपयोग करके इंटरनेट पर अरुडिनो नियंत्रण को लागू करने में कामयाब रहा। सामान्य तौर पर, इस पद्धति का उपयोग किसी भी माइक्रोकंट्रोलर के लिए किया जा सकता है, उदाहरण के लिए, पीआईसी। विधि सुंदर ओक है, आधुनिक करने के लिए बहुत कुछ है और कई और उन्नत योजनाएं हैं, लेकिन सबसे सरल मामले में यह पर्याप्त है।

ज्वाइन करने के बजाय


मैं तुरंत कहना चाहूंगा कि इस लेख में मैं प्रोग्रामिंग की पेचीदगियों में बहुत गहराई तक नहीं जाऊंगा, यह माना जाता है कि पाठक के पास कम से कम मूल बातें हैं। मैं आपको सामान्य रूप से बताता हूं कि संसाधनों का उपयोग कैसे किया गया और दिलचस्प बिंदुओं के बारे में।

इस विधि के निर्माण के लिए आवश्यक शर्तें जो मैंने अपनी इलेक्ट्रिक कार के निर्माण के दौरान ली थी: ज़िमेक यहाँ! मुझे तुरंत कहना होगा कि यह गंभीर व्यावहारिक कार्य की तुलना में खेल के हित में अधिक से अधिक बनाया गया था, लेकिन फिर भी यह काम करता है और किसी के लिए उपयोगी हो सकता है।

पूरा सिस्टम किस पर बनाया गया है और यह हार्डवेयर में कैसे लागू होता है


कार्य योजना इस प्रकार है: सर्वर से हम उस फ़ाइल को पढ़ते हैं जिसमें पीसी / लैपटॉप पर चल रहे प्रोग्राम का उपयोग करके डेटा संग्रहीत किया जाता है। USB के माध्यम से यह प्रोग्राम कंट्रोलर को डेटा भेजता है। नियंत्रक डेटा प्राप्त करता है और उन पर कार्रवाई करता है। सर्वर के साथ यह योजना आकर्षक है कि आप बिना किसी स्मार्टफोन / टैबलेट / पीसी / लैपटॉप के किसी भी साइट पर जाकर उस योजना को नियंत्रित कर सकते हैं जहां दुनिया में कहीं भी इंटरनेट की सुविधा उपलब्ध है।

पुनश्च। सर्वर साइड के बारे में नीचे बताया गया है।

इस लेख में मैं Arduino MEGA 2560 (चीनी समकक्ष) को नियंत्रित करूंगा, लेकिन पर्दे के पीछे सर्किट PIC16F877A के साथ आसानी से काम करता है, केवल एक चीज जो मुझे उपयोग करनी थी, वह थी USB-TTL एडाप्टर:



यह स्पष्ट है कि PIC कार्यक्रम Arduino प्रोग्राम से थोड़ा अलग है, अलग-अलग होने के कारण एमके के प्रकार, लेकिन सिद्धांत समान है:

हम COM पोर्ट के माध्यम से डेटा प्राप्त करते हैं, उन्हें कमांड की आंतरिक तालिका के साथ तुलना करते हैं और संबंधित कार्रवाई करते हैं।

यह योजना शुरू में मुझे बहुत ही सरल लगी, लेकिन एक BUT था - ऐसा कोई कार्यक्रम नहीं था जो इंटरनेट पर फ़ाइल को पढ़े और COM पोर्ट पर डेटा भेज दे। तदनुसार, मुझे ऐसा कार्यक्रम लिखना था।

कार्यक्रम VB6 पर लिखा गया था। सर्वर से फ़ाइल को पढ़ने के लिए, VB6 घटक का उपयोग किया जाता है: Microsoft इंटरनेट ट्रांसफर कंट्रोल 6.0। इसकी मदद से, सर्वर पर एक टेक्स्ट फ़ाइल बस एक स्ट्रिंग चर में पढ़ी जाती है। इस पंक्ति को पढ़ने के बाद, इसे VB6 घटक: Microsoft Comm Control 6.0 का उपयोग करके COM पोर्ट पर भेजा जाता है। किसी फ़ाइल को पढ़ने और एक लाइन भेजने की पूरी प्रक्रिया एक टाइमर का उपयोग करके लूप में पढ़ी जाती है। टाइमर अंतराल को प्रोग्राम कॉन्फ़िगरेशन में, या सीधे ऑपरेशन के दौरान बदला जा सकता है। इसके अलावा, आप पोर्ट के संचालन के मोड, इसकी संख्या, इंटरनेट कनेक्शन के संचालन के मोड और रीडिंग फ़ाइल के लिए एक लिंक का चयन कर सकते हैं।

मैं एक टिप्पणी करना चाहता हूं कि बड़े फ़ाइल आकार और छोटे अंतराल के साथ, कार्यक्रम जमा देता है, लेकिन काम करना जारी रखता है। मेरे प्रोग्राम का बफर साइज़ 512 बाइट्स है। यह देखते हुए कि मेरे एमके में बफर कम है, यह पर्याप्त है।

एक महत्वपूर्ण बिंदु। एमके में एक कार्यक्रम डेटा को पार्स नहीं कर सकता है, यह केवल वही पढ़ सकता है जो सीरियल पोर्ट के माध्यम से इनपुट में प्रेषित किया गया था। त्रुटियों के बिना, मैं लैटिन वर्णमाला (26 अक्षर AZ और 10 अंक 0-9) को स्वीकार करने में कामयाब रहा। कुल 36 टीमें, यदि एल्गोरिथ्म को अंतिम रूप दिया जाता है और डेटा पार्सिंग को एमके में पेश किया जाता है, तो किसी भी डेटा को स्थानांतरित किया जा सकता है। दो तरफा डेटा एक्सचेंज के लिए "डोपिंग" सॉफ्टवेयर की संभावना भी है।

सर्वर चयन और सर्वर साइड


सर्वर पक्ष के लिए, PHP समर्थन वाला कोई भी सर्वर , भले ही एक व्यक्तिगत पीसी पर चल रहा हो, केवल एक स्टेटिक आईपी होगा, लेकिन मैं व्यक्तिगत रूप से किराए के जेनो का उपयोग करता हूं। मेरे उदाहरण में सर्वर के हिस्से में दो फाइलें होती हैं: एक एलईडी और एक PHP स्क्रिप्ट के लिए ऑन / ऑफ बटन वाले फॉर्म के साथ HTML पेज, जो TXT फाइल की सामग्री को बदलता है, जिसमें से पीसी पर चलने वाला प्रोग्राम डेटा पढ़ता है।

सॉफ्टवेयर


HTML कोड बोर्ड पर / बंद एलईडी पर 2 बटन के साथ फार्म:

<html>
<head>
<title> </title>
</head>  
<body>
<form action="work.php" method="post">
:
<p>
<input type="submit" name="sv" value="On" />
<input type="submit" name="sv" value="Off" />
<p>
</form>    
</body>    
</html>

PHP कोड, यहाँ हम कमांड A को फाइल में लिखते हैं, अगर LED चालू होनी चाहिए, और यदि इसे बाहर जाना चाहिए तो B:

<?php
$cm = fopen("command.txt", "w");
switch ($_POST['sv']) {
case "On":
fwrite($cm,"a");    
    break;   
case "Off":
fwrite($cm,"b");    
    break;  
}
fclose($cm); 
?>

अब Arduino के लिए वास्तविक कोड:

int val; //      
void setup() {
Serial.begin(9600); //   
pinMode(13, OUTPUT); //   13  
}
void loop() {
// ,   - 
if (Serial.available()) {
val = Serial.read(); //  val   
if (val == 'a') {digitalWrite(13, HIGH);} //  a  
if (val == 'b') {digitalWrite(13, LOW);} //  b  
}}

COM पोर्ट और उसके स्रोत कोड को अग्रेषित करने के साथ सर्वर पर जानकारी पढ़ने के लिए कार्यक्रम स्वयं लिंक में संग्रह में हैं: यैंडेक्स-डिस्क प्रोग्राम को कोड के कई संस्करणों में संकलित किया गया है, ऑपरेशन में कुछ अंतर हो सकते हैं, लेकिन यह नहीं होना चाहिए। EXE फ़ाइल की पहली शुरुआत में, एक मदद फ़ाइल और एक कॉन्फ़िगर फ़ाइल उत्पन्न होती है। इस फ़ाइल से डेटा प्रोग्राम के शुरू होने पर पढ़ा जाता है, अगर यह मौजूद है। यदि फ़ाइल मौजूद नहीं है (उदाहरण के लिए, कार्यक्रम की पहली शुरुआत में), तो डिफ़ॉल्ट फ़ाइल डिफ़ॉल्ट मानों के साथ बनाई गई है।

काम के परिणाम



एक निष्कर्ष के बजाय


इस उदाहरण में, मैंने एक सरल "ओक" एल्गोरिदम लागू किया है जो काम करता है। निश्चित रूप से जहां आगे विकास करना है, लेकिन फिर भी, 36 टीमों को पहले से ही इस रूप में भेजा जा सकता है। यदि आप माइक्रोकंट्रोलर में आने वाले डेटा के पार्सिंग को लागू करते हैं, तो आप किसी भी डेटा को स्थानांतरित कर सकते हैं। मेरे कार्यों के लिए 36 टीमें सिर के साथ पर्याप्त होंगी, और इसके अलावा, यह एक शुरुआत का अनुभव है :)

All Articles