मैं Keyestudio से Arduino के लिए GSM / GPRS शील्ड के लिए एक लाइब्रेरी शुरू करना चाहता हूं। मैंने कीमत के कारण इस डिवाइस को खरीदा। चीन में, यह एम्परका से अपने समकक्ष की तुलना में लगभग 2 गुना सस्ता है, और आईरिनो की तुलना में तीन गुना अधिक है। इस पाठ को लिखने का कारण इसके साथ काम करने के लिए Keyestudio पर एक स्वीकार्य पुस्तकालय की कमी है।
एटी कमांड के एक सेट के माध्यम से काम पर विचार नहीं किया जाता है। अन्य समान उपकरणों के लिए पुस्तकालय सीधे फिट नहीं थे। किसी भी मामले में, मैं उन्हें काम करने के लिए नहीं मिला।
मेरी राय में, मुझे इस बोर्ड के लिए सबसे विस्तृत Amperkovskaya पुस्तकालय को अनुकूलित करना था, और इस तरह Amperkovsky ढाल के लिए लिखे गए कोड की संगतता बनाए रखने की कोशिश की।
वास्तव में पुस्तकालय के लिए लिंक:
github.com/andrewinc/keyestudio-gsm-gprs-shield
Amperka अपने ढाल में एक Sim900R चिप का उपयोग करता है, और यहाँ Sim900 है। ST सिग्नल में सबसे महत्वपूर्ण अंतर: यह सोर्स लाइब्रेरी और शील्ड में है, लेकिन यह Keyestudio में नहीं है। इस बीच, यह चिप को स्पष्ट रूप से सक्षम या अक्षम कर देता था। लेकिन एक SIM900_Power बटन है, जिसने मुझे चिप को चालू करने की सॉफ़्टवेयर क्षमता की कमी के बारे में बुरे विचार के लिए प्रेरित किया। सौभाग्य से, वे गलत थे।
पिन 9 - चिप के समावेश को नियंत्रित करता है, पावर बटन के लिए एक ही विकल्प, पीके को एम्परका बोर्ड पर इंगित किया गया है।
चिप के संस्करण में थोड़ा सा अंतर इसकी क्षमताओं को प्रभावित नहीं करता था, किसी भी मामले में, मैं पुस्तकालय में दिए गए उदाहरणों का उपयोग करके कॉल शुरू करने, भेजने और प्राप्त करने में कामयाब रहा। मुझे लगता है कि यह इस ढाल का उपयोग करने की मुख्य दिशा है।
शारीरिक सेटिंग्स
बोर्ड एक UART इंटरफ़ेस के माध्यम से Arduino के साथ संचार करता है। उन लोगों के लिए जो UART नहीं जानते हैं, ये पिन TX और RX हैं। TX द्वारा - डेटा Arduino से, और RX से वापस आता है।
एक स्विच "UART_Port - DBG_Port" भी है, लेकिन मैंने इस पोर्ट का उपयोग नहीं किया। स्विच "UART_Port" में रहा।
बोर्ड की ख़ासियत यह है कि यह बॉक्स से बाहर काम नहीं करता है। यदि आप पैकेज खोलने के बाद जंपर्स की स्थिति पर ध्यान देते हैं (ऊपर फोटो देखें), तो आप कनेक्शन TXD c 0 और RXD को 1 के साथ देख सकते हैं। Arduino पर, वही पिन TX और RX के लिए उपयोग किए जाते हैं। यह वास्तव में समस्या है, क्योंकि वे स्केच डाउनलोड करने में व्यस्त हैं, उनका उपयोग सीरियल ऑब्जेक्ट, इंक्ल के माध्यम से जानकारी का आदान-प्रदान करने के लिए भी किया जाता है। और डिबगिंग के लिए। जब Arduino को ढाल से जोड़ते हैं, तो एक संघर्ष होता है और फर्मवेयर विफल हो जाता है।
सॉफ्टवेयर सीरियल
यह ज्ञात है कि Arduino UNO में केवल एक ही सीरियल इंटरफ़ेस है, लेकिन उनका पूरा परिवार उदाहरण के लिए, Arduino Mega है। Serial1 TX1 और RX1 की जोड़ी के साथ जुड़ा हुआ है, इसी तरह Serial2 और Serial3 के लिए।
Arduino UNO का उपयोग करने के लिए, सॉफ्टवेयर सीरियल का उपयोग करना उचित है। यह उपयुक्त पुस्तकालय को जोड़ने के लिए पर्याप्त है, और ऑब्जेक्ट का निर्माण स्वयं करता है, जो Arduino पिन को इंगित करता है जिसमें TXD और RXD सिग्नल शील्ड से आते हैं:
#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7);
इस उदाहरण में, TXD पिन 6 से जुड़ा है, और RXD 7 से जुड़ा है।
सॉफ्टवेयर सक्षम चिप
TX / RX के विपरीत चिप पर / बंद पिन - 9, अन्य Arduino पिन से जुड़ा नहीं हो सकता है, किसी भी मामले में, इसके लिए ढाल पर कोई स्विच नहीं थे।
चिप को चालू करने के लिए आपको 9 पिनों का उच्च संकेत भेजने की आवश्यकता है, 1-3 सेकंड प्रतीक्षा करें और इसके लिए एक कम संकेत लागू करें। फिर आमतौर पर कोड में आप 5-15 सेकंड में प्रतीक्षा देख सकते हैं। यह सब एक सेल फोन पर पावर बटन के हेरफेर जैसा दिखता है, और बाद में इसे डाउनलोड करने और नेटवर्क के साथ कनेक्शन स्थापित करने के लिए।
एम्परका से स्रोत पुस्तकालय में, एसटी सिग्नल के माध्यम से प्रतिक्रिया थी। इसके माध्यम से, स्विच करने की प्रक्रिया में, राज्य की जाँच की गई: चिप चालू है? काश, इस संकेत की अनुपस्थिति में, चिप के ऑन और ऑफ के तरीके जुड़वाँ भाइयों के समान हैं, इस तथ्य के कारण कि 9-पिन लंबा स्ट्रोब भी बंद करने के लिए भेजा जाता है। कोड संगतता के
कारण और सामान्य आलस्य के कारण इन विधियों को एक में नहीं जोड़ा गया।
यह कैसे काम करता है
पुस्तकालय स्वयं लाइन के साथ जुड़ा हुआ है:
#include <GPRSk_Shield_Arduino.h>
फिर आप GPRSk क्लास के आधार पर एक ऑब्जेक्ट बना सकते हैं और कंस्ट्रक्टर के लिए एक ही mySerial पास कर सकते हैं या हार्डवेयर Serial1, Serial2, आदि निर्दिष्ट कर सकते हैं। एक उदाहरण:
GPRSk gprs(mySerial);
सेटअप फ़ंक्शन में, वे आमतौर पर सीरियल और mySerial को इनिशियलाइज़ करते हैं, हालांकि, यदि आप Arduino IDE मॉनिटर में डीबगिंग जानकारी भेजने की योजना नहीं बनाते हैं, तो आप केवल mySerial को इनिशियलाइज़ कर सकते हैं।
उसके बाद, gprs.powerOn () विधि का उपयोग करके चिप को बंद कर दिया जाता है और फिर gprs.init () कहा जाता है, जो चिप प्राप्त / प्रसारित करने के लिए तैयार होने पर सही वापस आ जाएगी।
जब ये सभी कार्य पूरे हो जाएंगे, तो आप एसएमएस भेज सकते हैं:
gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!");
नई पोस्ट पढ़ें:
char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); }
कॉल करें:
gprs.callUp("+79007654321");
आदि
पुस्तकालय के ढांचे के भीतर, "एम्परकोव" उदाहरण संलग्न हैं, जहां केवल सीरियल 1 को सॉफ्टवेयर में बदल दिया गया है। उन्हें Keyestudio GSM / GPRS शील्ड पर परीक्षण किया गया और उन्होंने अपना प्रदर्शन दिखाया।
भोजन
टिप्पणियों से पता चला है कि Arduino UNO और GPRS शील्ड के इस "सैंडविच" में USB की शक्ति का अभाव है। यह gprs.init () विधि के साथ व्यवस्थित रूप से गलत जारी करके व्यक्त किया गया है
USB पावर के अतिरिक्त मानक Arduino पावर कनेक्टर के लिए 200mA (9V) की शक्ति भी अपर्याप्त थी। बल्कि, कभी-कभी gprs.init () बीत जाता है, और कभी-कभी नहीं। मेरा मानना है कि 5V 1-1.5A बिजली की आपूर्ति काफी पर्याप्त होगी।
नुकसान:
- पुस्तकालय में देरी विलंब () का उपयोग होता है, जो सभी नियंत्रक कोड के निष्पादन में बाधा डालता है।
- यह माना जाता है कि सिम कार्ड पर कोई पिन कोड नहीं है
- एसएमएस संदेशों का पाठ सिरिलिक का समर्थन नहीं करता है।
मुझे उम्मीद है कि यह पुस्तकालय उपयोगी हो सकता है, साथ ही इस ढाल के साथ काम करने पर कुछ नोट्स भी।