Სარჩევი:

Arduino ფიჭური ფარის გაკვეთილი: 9 ნაბიჯი (სურათებით)
Arduino ფიჭური ფარის გაკვეთილი: 9 ნაბიჯი (სურათებით)

ვიდეო: Arduino ფიჭური ფარის გაკვეთილი: 9 ნაბიჯი (სურათებით)

ვიდეო: Arduino ფიჭური ფარის გაკვეთილი: 9 ნაბიჯი (სურათებით)
ვიდეო: მომოს აქსესუარები - ხელის მუხრუჭი,კოლოფის თავსახური 2024, ივლისი
Anonim
არდუინოს ფიჭური ფარის გაკვეთილი
არდუინოს ფიჭური ფარის გაკვეთილი

Arduino ფიჭური ფარი საშუალებას გაძლევთ განახორციელოთ სატელეფონო ზარები და გაგზავნოთ ტექსტური შეტყობინებები. ამ ფარის ტვინი არის SM5100B, რომელიც არის ძლიერი ფიჭური მოდული, რომელსაც შეუძლია შეასრულოს სტანდარტული მობილური ტელეფონების მრავალი ამოცანა. ეს ფარი მოითხოვს SIM ბარათის გამოყენებას ფიჭურ ქსელთან დასაკავშირებლად. გაკვეთილი, რომელიც მოყვება არის შიშველი ძვლების გაკვეთილი ფარის ინიციალიზაციისთვის, როგორც ტექსტური შეტყობინებების გაგზავნისა და მიღების, ასევე სატელეფონო ზარებისათვის. მოდულის ფუნქციონირების შესახებ მეტის გასაგებად, დარწმუნდით, რომ გადახედეთ Sparkfun– ის პროდუქტის გვერდზე არსებულ მონაცემთა ფურცლებს.

ნაბიჯი 1: გადადით ნივთების მისაღებად

წადი მიიღეთ ნივთები
წადი მიიღეთ ნივთები

თქვენ დაგჭირდებათ:

(x1) ფიჭური ფარი (x1) დასადგმელი Arduino სათაურები (x1) ოთხფენიანი ანტენა (x1) Arduino Uno

(გაითვალისწინეთ, რომ ამ გვერდის ზოგიერთი ბმული არის შვილობილი ბმულები. ეს არ ცვლის საქონლის ღირებულებას თქვენთვის. მე ვაინვესტირებ შემოსავალს, რასაც მივიღებ ახალი პროექტების განხორციელებაში. თუ გსურთ რაიმე შემოთავაზება ალტერნატიული მომწოდებლებისთვის, გთხოვთ ნება მომეცით ვიცით.)

ნაბიჯი 2: Solder Headers

Solder Headers
Solder Headers
Solder Headers
Solder Headers
Solder Headers
Solder Headers

ჩადეთ სათაურები ფარში და მიამაგრეთ ისინი ადგილზე.

ნაბიჯი 3: ჩადეთ

ჩასმა
ჩასმა
ჩასმა
ჩასმა

ჩასვით სათაურის ქინძისთავები არდუინოს სოკეტებში.

ნაბიჯი 4: ხელახლა გამყიდველი

გადამყიდველი
გადამყიდველი

ანტენის კაბელის კავშირი SM5100B მოდულთან, როგორც წესი, არ არის კარგი. ხელახლა შეაერთეთ კაბელის თითოეული კავშირი მოდულთან, რათა უზრუნველყოს კავშირი.

ნაბიჯი 5: მიამაგრეთ ანტენა

მიამაგრეთ ანტენა
მიამაგრეთ ანტენა
მიამაგრეთ ანტენა
მიამაგრეთ ანტენა

მიამაგრეთ ანტენა ანტენის კაბელზე.

ნაბიჯი 6: ჩადეთ SIM ბარათი

ჩადეთ SIM ბარათი
ჩადეთ SIM ბარათი
ჩადეთ SIM ბარათი
ჩადეთ SIM ბარათი
ჩადეთ SIM ბარათი
ჩადეთ SIM ბარათი
ჩადეთ SIM ბარათი
ჩადეთ SIM ბარათი

ჩადეთ SIM ბარათი უსაფრთხოდ SIM ბარათის სოკეტში.

ნაბიჯი 7: ინიციალიზაცია

ინიციალიზაცია
ინიციალიზაცია

გაუშვით შემდეგი კოდი Arduino– ზე:

/*

SparkFun Cellular Shield - Pass -Through Sample Sketch SparkFun Electronics Written by Ryan Owens 3/აღწერა: ეს ესკიზი დაწერილია Arduino Duemillanove– ს Cellular Shield– თან SparkFun Electronics– ის დასაკავშირებლად. ფიჭური ფარის შეძენა შესაძლებელია აქ: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 ამ ესკიზის სერიული ბრძანებები ტერმინალური პროგრამიდან გადადის SM5100B ფიჭურ მოდულში; და ფიჭური მოდულის პასუხები განთავსებულია ტერმინალში. მეტი ინფორმაცია ნაპოვნია ესკიზის კომენტარებში. გააქტიურებული SIM ბარათი უნდა იყოს ჩასმული SIM ბარათის მფლობელში დაფაზე, რათა გამოიყენოთ მოწყობილობა! ესკიზი იყენებს NewSoftSerial ბიბლიოთეკას, რომელიც მიქალ ჰარტმა არდუინიანამ დაწერა. ბიბლიოთეკის ჩამოტვირთვა შესაძლებელია ამ URL– ზე: https://arduiniana.org/libraries/NewSoftSerial/ ეს კოდი მოცემულია Creative Commons Attribution ლიცენზიით. დამატებითი ინფორმაცია შეგიძლიათ იხილოთ აქ: https://creativecommons.org/licenses/by/3.0/ (გამოიყენეთ ჩვენი კოდი თავისუფლად! გთხოვთ, გვახსოვდეს, რომ მოგვცეს კრედიტი საჭიროებისამებრ. მადლობა!) */ #მოიცავს // ჩართეთ NewSoftSerial ბიბლიოთეკა, რათა გააგზავნოს სერიული ბრძანებები ფიჭური მოდულისთვის. #მოიცავს // გამოიყენება სიმებიანი მანიპულაციებისთვის char incoming_char = 0; // დაიცავს სერიული პორტიდან შემომავალ პერსონაჟს. პროგრამული უზრუნველყოფა სერიული უჯრედი (2, 3); // შექმენით "ყალბი" სერიული პორტი. Pin 2 არის Rx pin, pin 3 არის Tx pin. void setup () {// სერიული პორტების ინიციალიზაცია კომუნიკაციისთვის. სერიული.დაწყება (9600); უჯრედი.დაწყება (9600); //Დავიწყოთ! Serial.println ("SM5100B კომუნიკაციის დაწყება …"); } void loop () {// თუ სიმბოლო შემოდის ფიჭური მოდულიდან … if (cell.available ()> 0) {incoming_char = cell.read (); // მიიღეთ სიმბოლო ფიჭური სერიული პორტიდან. Serial.print (შემომავალი_ჩართი); // დაბეჭდეთ შემომავალი სიმბოლო ტერმინალში. } // თუ სიმბოლო მოდის ტერმინალიდან არდუინოში … if (Serial.available ()> 0) {incoming_char = Serial.read (); // მიიღეთ ტერმინალიდან მომდინარე ხასიათი if (incoming_char == '~') // თუ ეს არის ტილდა… incoming_char = 0x0D; //… გადაიყვანეთ ვაგონში დაბრუნება სხვა შემთხვევაში //… გადაიყვანე ctrl-Z უჯრედში. ბეჭდვა (შემომავალი_ჩარი); // პერსონაჟის გაგზავნა ფიჭურ მოდულში. Serial.print (შემომავალი_ჩართი); // გაიმეორეთ იგი ტერმინალში}} / * SM5100B Quck მითითება AT ბრძანების კომპლექტისთვის * თუ სხვაგვარად არ არის მითითებული AT ბრძანებები მთავრდება "შესვლის" ღილაკზე დაჭერით. 1.) დარწმუნდით, რომ თქვენი ქვეყნისთვის შერჩეულია შესაბამისი GSM ჯგუფი. აშშ – სთვის ბენდი უნდა იყოს მითითებული 7. ბენდის დასაყენებლად გამოიყენეთ ეს ბრძანება: AT+SBAND = 7 2.) Arduino– ს დაყენებული ფარის შემდეგ, დარწმუნდით, რომ მოდული კითხულობს და აღიარებს SIM ბარათს. ტერმინალური ფანჯრით გახსნილი და არდუინოს პორტზე და 9600 ბუდი, ჩართეთ არდუინო. დაწყების თანმიმდევრობა ასე უნდა გამოიყურებოდეს: SM5100B კომუნიკაციის დაწყება … +SIND: 1 +SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 მოდულთან ურთიერთობა იწყება პირველი სტრიქონის ჩვენების შემდეგ. კომუნიკაციის მეორე ხაზი, +SIND: 10, გვეუბნება, შეუძლია თუ არა მოდულს SIM ბარათის დანახვა. თუ SIM ბარათი გამოვლენილია, ყველა სხვა ველი არის 1; თუ SIM ბარათი არ არის გამოვლენილი ყველა სხვა ველი არის 0. 3.) დაელოდეთ ქსელურ კავშირს სანამ დაიწყებთ ბრძანებების გაგზავნას. +SIND: 10 პასუხის შემდეგ მოდული ავტომატურად დაიწყებს ქსელთან დაკავშირების მცდელობას. დაელოდეთ სანამ მიიღებთ შემდეგ რეპონენტებს: +SIND: 11 +SIND: 3 +SIND: 4 ფიჭური მოდულის +SIND პასუხი გვეუბნება მოდულის სტატუსს. აქ მოცემულია პასუხის მნიშვნელობების სწრაფი შემცირება: 0 SIM ბარათი ამოღებულია 1 SIM ბარათი ჩასმულია 2 ზარის მელოდია 3 AT მოდული ნაწილობრივ მზადაა 4 AT მოდული სრულიად მზად არის 5 გამოშვებული ზარების ID 6 გამოშვებული ზარი რომლის ID = 7 ქსელის სერვისი არის ხელმისაწვდომია გადაუდებელი ზარისთვის 8 ქსელი დაკარგულია 9 აუდიო ON 10 აჩვენეთ თითოეული სატელეფონო წიგნის სტატუსი საწყისი ფრაზის შემდეგ 11 რეგისტრირებული ქსელში ქსელში დარეგისტრირების შემდეგ შეგიძლიათ დაიწყოთ ურთიერთქმედება. აქ არის რამოდენიმე მარტივი და სასარგებლო ბრძანება დასაწყებად: ზარის განხორციელება: AT ბრძანება-ATDxxxyyyzzzz ტელეფონის ნომერი ფორმატით: (xxx) yyy-zzz try ---- cell.print ("ATDxxxyyyzzzz"); სატელეფონო ზარის განხორციელებისას დარწმუნდით, რომ მიუთითეთ მოწყობილობის მონაცემთა ფურცელი მიკროფონისა და დინამიკის ფარის დასაკავშირებლად. Txt შეტყობინების გასაგზავნად: AT ბრძანება - AT+CMGF = 1 ეს ბრძანება ადგენს ტექსტური შეტყობინების რეჟიმს "ტექსტზე". AT ბრძანება = AT+CMGS = "xxxyyyzzzz" (ვაგონის დაბრუნება) "ტექსტი გასაგზავნად" (CTRL+Z) ეს ბრძანება აღწერილობაში ოდნავ დამაბნეველია. ტელეფონის ნომერი, ფორმატში (xxx) yyy-zzzz შედის ორმაგი ციტატების შიგნით. დააჭირეთ "enter" ციტატების დახურვის შემდეგ. შემდეგ შეიყვანეთ გასაგზავნი ტექსტი. დაასრულეთ AT ბრძანება CTRL+Z გაგზავნით. ამ პერსონაჟის გაგზავნა არდუინოს ტერმინალიდან შეუძლებელია. გამოიყენეთ ალტერნატიული ტერმინალური პროგრამა, როგორიცაა Hyperterminal, Tera Term, Bray Terminal ან X-CTU. SM5100B მოდულს ამაზე ბევრად მეტი შეუძლია! დაათვალიერეთ პროდუქტის გვერდზე მოცემული მონაცემთა ფურცლები, რომ გაიგოთ მეტი მოდულის შესახებ.*/გახსენით სერიული პორტი ტერმინალში. Mac– ზე ეს კეთდება აკრეფით: screen /dev/tty.usbmodemfa131 9600 (შეცვალეთ tty.usbmodemfa131 თქვენი Arduino– ს სერიული მისამართით) დაელოდეთ შემდეგი თანმიმდევრობის დაბრუნებას: SM5100B კომუნიკაციის დაწყება… +SIND: 3 +SIND: 4 +SIND: 11 (თუ ეს თანმიმდევრობა არ დაბრუნდება, შეამოწმეთ ზემოთ მოყვანილი კოდის ბოლოში ჩამოთვლილი შეცდომის კოდები და სწორად გაასწორეთ. შეიძლება დაგჭირდეთ მოდულის დაყენება ჩრდილოეთ ამერიკის გამოყენებისთვის - იხ. ქვემოთ - სანამ ის დარეგისტრირდება ქსელში (მაგ. +SIND 11)) გააგზავნეთ შემდეგი ბრძანებები სერიულ პორტში: გაგზავნეთ ეს ჩრდილოეთ ამერიკის გამოყენებისთვის: AT+SBAND = 7 დააყენეთ მიმდინარე დრო - წ/მმ/დღე: AT+CCLK = "13/05/15, 11: 02:00 "გაგზავნეთ სატესტო ზარი: ATD4155551212

ნაბიჯი 8: ტექსტური შეტყობინებები

Ტექსტური შეტყობინება
Ტექსტური შეტყობინება

ჩამოტვირთეთ და დააინსტალირეთ SerialGSM თქვენს Arduino ბიბლიოთეკაში.

ტექსტური შეტყობინების გასაგზავნად ეწვიეთ Tronixstuff ფიჭური მოდულის სახელმძღვანელოს და გამოიყენეთ მაგალითი კოდი 26.3:

თუ გსურთ გაუშვათ კოდის მაგალითი ტექსტის მისაღებად, დაუკავშირეთ LED პინ 8 -ს და მიამაგრეთ იგი სერიაში 220 ოჰმეტიანი რეზისტორით მიწასთან.

ტექსტური შეტყობინების გასაგზავნად ეწვიეთ Tronixstuff ფიჭური მოდულის სახელმძღვანელოს და გამოიყენეთ მაგალითი კოდი 26.5:

გაგზავნეთ ერთ -ერთი შემდეგი ბრძანება თქვენს მობილურ მოდულში:

// ჩართავს შუქს #a1

// გამორთავს LED- ს #a0

ნაბიჯი 9: ხმა

ხმა
ხმა
ხმა
ხმა
ხმა
ხმა

შეაერთეთ მიკროფონი და სპიკერი ფარს დამიწებული აუდიო კაბელის გამოყენებით. ცენტრალური სიგნალის მავთული უნდა წავიდეს აუდიო პლუს ტერმინალებზე და დამცავი უნდა გადავიდეს ფარზე შესაბამის უარყოფით ტერმინალებზე. ეს კაბელები ანალოგიურად უნდა იყოს დაკავშირებული მიკროფონისა და დინამიკის მხარეს.

ხმოვანი ზარის დასაწყებად ატვირთეთ შემდეგი კოდი:

//**********************************************************************************

// დარეკეთ // // ბუფერული კოდი დაფუძნებულია შემდეგზე: // // //********************************************************************************** #include #define BUFFSIZ 90 //Set up buffer array char at_buffer[BUFFSIZ]; char buffidx; //Network state variables int network_registered; int network_AT_ready; //Code state variables int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; //Will hold the incoming character from the Serial Port. char incoming_char=0; //Create a 'fake' serial port. Pin 2 is the Rx pin, pin 3 is the Tx pin. SoftwareSerial cell(2, 3); void setup() { //Initialize Arduino serial port for debugging. Serial.begin(9600); //Initialize virtual serial port to talk to Phone. cell.begin(9600); //Hello World. Serial.println("Starting SM5100B Communication…"); delay(1000); //Set initial network state network_registered = 0; network_AT_ready = 0; } //Read AT strings from the cellular shield void readATString(void) { char c; buffidx= 0; // start at begninning for (x = 0; x 0) { c=cell.read(); if (c == -1) { at_buffer[buffidx] = '\0'; return; } if (c == '\n') { continue; } if ((buffidx == BUFFSIZ - 1) || (c == '\r')){ at_buffer[buffidx] = '\0'; return; } at_buffer[buffidx++]= c; } } } //Process the AT strings void ProcessATString() { if(strstr(at_buffer, "+SIND: 8") != 0) { network_registered = 0; Serial.println("network Network Not Available"); } if(strstr(at_buffer, "+SIND: 11") != 0) { network_registered=1; Serial.println("network Registered"); } if(strstr(at_buffer, "+SIND: 4") != 0) { network_AT_ready=1; Serial.println("network AT Ready"); } } void loop() { /* If called for the first time, loop until network and AT is ready */ if(firstTimeInLoop == 1) { firstTimeInLoop = 0; while (network_registered == 0 || network_AT_ready == 0) { readATString(); ProcessATString(); } } //LET'S MAKE A PHONE CALL! if(firstTimeInOtherLoop == 1){ //Change the 10 digit phone number to whatever you wish cell.println("ATD4155551212"); firstTimeInOtherLoop = 0; } }

To receive a voice call upload the following code

//**********************************************************************************

// ANSWER A CALL // // BUFFERING CODE BASED UPON: // // // ****************************************** ********************************** #მოიცავს #განსაზღვრეთ BUFFSIZ 90 // დააყენეთ ბუფერული მასივის char at_buffer [BUFFSIZ]; char buffidx; // ქსელის მდგომარეობის ცვლადები int network_registered; int network_AT_ უკვე; // კოდის მდგომარეობის ცვლადები int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // დაიცავს სერიული პორტიდან შემომავალ პერსონაჟს. char შემომავალი_ჩარი = 0; // შექმენით "ყალბი" სერიული პორტი. Pin 2 არის Rx pin, pin 3 არის Tx pin. პროგრამული უზრუნველყოფა სერიული უჯრედი (2, 3); void setup () {// Arduino სერიული პორტის ინიციალიზაცია გამართვისთვის. სერიული.დაწყება (9600); // ტელეფონთან სასაუბროდ ვირტუალური სერიული პორტის ინიციალიზაცია. უჯრედი.დაწყება (9600); //Გამარჯობა მსოფლიო. Serial.println ("SM5100B კომუნიკაციის დაწყება …"); დაგვიანება (1000); // საწყისი ქსელის მდგომარეობის დაყენება network_registered = 0; network_AT_ready = 0; } // წაიკითხეთ AT სტრიქონები ფიჭური ფარიდან void readATString (void) {char c; buffidx = 0; // დაწყებისთანავე (x = 0; x 0) {c = cell.read (); if (c == -1) {at_buffer [buffidx] = '\ 0'; დაბრუნების; } if (c == '\ n') {გაგრძელება; } if ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; დაბრუნების; } at_buffer [buffidx ++] = c; }}} // AT სტრიქონების დამუშავება ბათილია ProcessATString () {if (strstr (at_buffer, "+SIND: 8")! = 0) {network_registered = 0; Serial.println ("ქსელის ქსელი მიუწვდომელია"); } if (strstr (at_buffer, "+SIND: 11")! = 0) {network_registered = 1; Serial.println ("რეგისტრირებული ქსელი"); } if (strstr (at_buffer, "+SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("ქსელი AT Ready"); }} void loop () { / * თუ გამოიძახეთ პირველად, შეაცილეთ სანამ ქსელი და AT არ იქნება მზად * / if (firstTimeInLoop == 1) {firstTimeInLoop = 0; ხოლო (network_registered == 0 || network_AT_ready == 0) {readATString (); ProcessATString (); }} if (firstTimeInOtherLoop == 1) {// მოძებნეთ შემომავალი ზარი if (strstr (at_buffer, "+CPAS: 3")! = 0) {// უპასუხეთ ტელეფონის უჯრედს.პრინტლნ ("ATA"); firstTimeInOtherLoop = 0; }}}

გამოსახულება
გამოსახულება

თქვენთვის ეს სასარგებლო, სახალისო ან გასართობი აღმოჩნდა? მიყევით @madeineuphoria- ს, რომ ნახოთ ჩემი უახლესი პროექტები.

გირჩევთ: