Isi kandungan:

Tutorial Arduino Cellular Shield: 9 Langkah (dengan Gambar)
Tutorial Arduino Cellular Shield: 9 Langkah (dengan Gambar)

Video: Tutorial Arduino Cellular Shield: 9 Langkah (dengan Gambar)

Video: Tutorial Arduino Cellular Shield: 9 Langkah (dengan Gambar)
Video: Membuat Shield Servo dan Sensor Cahaya - Tutorial Arduino Indonesia #9 2024, Julai
Anonim
Tutorial Arduino Cellular Shield
Tutorial Arduino Cellular Shield

Arduino Cellular Shield membolehkan anda membuat panggilan telefon bimbit, dan menghantar pesanan teks. Otak perisai ini adalah SM5100B yang merupakan modul selular yang kuat yang mampu melakukan banyak tugas pada kebanyakan telefon bimbit standard. Perisai ini memerlukan penggunaan kad SIM untuk menyambung ke rangkaian selular. Tutorial yang berikut adalah tutorial telanjang untuk menginisialisasi perisai, dan menghantar dan menerima pesanan teks, dan panggilan telefon. Untuk mengetahui lebih lanjut mengenai fungsi modul, pastikan anda melihat lembaran data di halaman produk Sparkfun.

Langkah 1: Pergi Dapatkan Barang

Pergi Dapatkan Barang
Pergi Dapatkan Barang

Anda perlu:

(x1) Perisai selular (x1) Header Arduino Stackable (x1) Antena pita kuad (x1) Arduino Uno

(Perhatikan bahawa beberapa pautan di halaman ini adalah pautan afiliasi. Ini tidak mengubah kos item untuk anda. Saya melabur semula apa jua hasil yang saya terima untuk membuat projek baru. Sekiranya anda mahukan cadangan untuk pembekal alternatif, sila beri saya tahu.)

Langkah 2: Pengepala Solder

Pengepala Solder
Pengepala Solder
Pengepala Solder
Pengepala Solder
Pengepala Solder
Pengepala Solder

Masukkan header ke dalam perisai dan pasangkannya ke tempatnya.

Langkah 3: Masukkan

Masukkan
Masukkan
Masukkan
Masukkan

Masukkan pin header ke soket di Arduino.

Langkah 4: Penyelesai

Penyelesai
Penyelesai

Sambungan kabel antena ke modul SM5100B biasanya tidak begitu baik. Selesaikan setiap sambungan kabel ke modul untuk memastikan kesambungan.

Langkah 5: Pasangkan Antena

Pasang Antena
Pasang Antena
Pasang Antena
Pasang Antena

Benarkan antena ke kabel antena.

Langkah 6: Masukkan Kad SIM

Masukkan Kad SIM
Masukkan Kad SIM
Masukkan Kad SIM
Masukkan Kad SIM
Masukkan Kad SIM
Masukkan Kad SIM
Masukkan Kad SIM
Masukkan Kad SIM

Masukkan kad SIM dengan selamat ke soket kad SIM.

Langkah 7: Permulaan

Permulaan
Permulaan

Jalankan kod berikut di Arduino:

/*

SparkFun Cellular Shield - Contoh Lakaran Sketsa SparkFun Electronics yang ditulis oleh Ryan Owens 3 / Penerangan: Lakaran ini ditulis untuk menghubungkan Arduino Duemillanove ke Cellular Shield dari SparkFun Electronics. Perisai selular boleh dibeli di sini: https://www.sparkfun.com/commerce/product_info.php?products_id=9607 Dalam sketsa ini arahan bersiri dihantar dari program terminal ke modul selular SM5100B; dan respons dari modul selular diposkan di terminal. Lebih banyak maklumat terdapat dalam komen lakaran. Kad SIM yang diaktifkan mesti dimasukkan ke dalam pemegang kad SIM di papan untuk menggunakan peranti! Sketsa ini menggunakan perpustakaan NewSoftSerial yang ditulis oleh Mikal Hart dari Arduiniana. Perpustakaan boleh dimuat turun di URL ini: https://arduiniana.org/libraries/NewSoftSerial/ Kod ini disediakan di bawah Lesen Atribusi Creative Commons. Maklumat lebih lanjut boleh didapati di sini: https://creativecommons.org/licenses/by/3.0/ (Gunakan kod kami dengan bebas! Harap ingat untuk memberi kredit kepada kami sekiranya perlu. Terima kasih!) * / #Include // Sertakan NewSoftSerial perpustakaan untuk menghantar arahan bersiri ke modul selular. #include // Digunakan untuk manipulasi rentetan char incoming_char = 0; // Akan memegang watak masuk dari Serial Port. Sel perisian (2, 3); // Buat port bersiri 'palsu'. Pin 2 adalah pin Rx, pin 3 adalah pin Tx. batal persediaan () {// Memulakan port bersiri untuk komunikasi. Serial.begin (9600); sel.begin (9600); //Mari kita mulakan! Serial.println ("Memulakan Komunikasi SM5100B …"); } gelung void () {// Sekiranya watak masuk dari modul selular … if (cell.available ()> 0) {incoming_char = cell.read (); // Dapatkan watak dari port bersiri selular. Serial.print (masuk_char); // Cetak watak masuk ke terminal. } // Sekiranya watak datang dari terminal ke Arduino… if (Serial.available ()> 0) {incoming_char = Serial.read (); // Dapatkan watak yang berasal dari terminal jika (masuk_char == '~') // Jika itu sedikit … masuk_char = 0x0D; //… tukar ke pengangkutan kereta lain jika (masuk_char == '^') // Jika itu karet naik … masuk_char = 0x1A; // … tukar ke ctrl-Z cell.print (masuk_char); // Hantar watak ke modul selular. Serial.print (masuk_char); // Gema kembali ke terminal}} / * SM5100B Rujukan Quck untuk Set Perintah AT * Kecuali dinyatakan sebaliknya perintah AT diakhiri dengan menekan kekunci 'enter'. 1.) Pastikan jalur GSM yang betul telah dipilih untuk negara anda. Untuk AS, jalur mesti ditetapkan ke 7. Untuk mengatur jalur, gunakan arahan ini: AT + SBAND = 7 2.) Setelah menghidupkan Arduino dengan perisai terpasang, sahkan bahawa modul membaca dan mengenali kad SIM. Dengan tetingkap terimal terbuka dan diatur ke port Arduino dan 9600 buad, menghidupkan Arduino. Urutan permulaan akan kelihatan seperti ini: Memulakan Komunikasi SM5100B… + SIND: 1 + SIND: 10, "SM", 1, "FD", 1, "LD", 1, "MC", 1, "RC", 1, "ME", 1 Komunikasi dengan modul bermula setelah baris pertama dipaparkan. Jalur komunikasi kedua, + SIND: 10, memberitahu kami jika modul dapat melihat kad SIM. Sekiranya kad SIM dikesan, setiap medan lain adalah 1; jika kad SIM tidak dikesan setiap medan lain adalah 0. 3.) Tunggu sambungan rangkaian sebelum anda mula menghantar arahan. Selepas tindak balas + SIND: 10 modul secara automatik akan mula cuba menyambung ke rangkaian. Tunggu sehingga anda menerima repon berikut: + SIND: 11 + SIND: 3 + SIND: 4 Respons + SIND dari modul selular memberitahu status modul. Berikut adalah pengurangan makna respons yang cepat: 0 kad SIM dikeluarkan 1 kad SIM dimasukkan 2 Melodi dering 3 Modul AT sebahagiannya siap 4 modul AT sepenuhnya siap 5 ID panggilan dilepaskan 6 Panggilan dilepaskan yang ID = 7 Perkhidmatan rangkaian adalah tersedia untuk panggilan kecemasan 8 Rangkaian hilang 9 Audio ON 10 Tunjukkan status setiap buku telefon selepas frasa init 11 Mendaftar ke rangkaian Setelah mendaftar di rangkaian, anda boleh memulakan interaksi. Berikut adalah beberapa arahan mudah dan berguna untuk memulakan: Untuk membuat panggilan: Perintah AT - ATDxxxyyyzzzz Nombor telefon dengan format: (xxx) cubalah yyy-zzz ---- cell.print ("ATDxxxyyyzzzz"); Sekiranya anda membuat panggilan telefon, pastikan untuk merujuk lembar data peranti untuk menghubungkan mikrofon dan pembesar suara ke perisai. Untuk menghantar mesej txt: Perintah AT - AT + CMGF = 1 Perintah ini menetapkan mod pesanan teks ke 'teks.' Perintah AT = AT + CMGS = "xxxyyyzzzz" (pengembalian kereta) 'Teks untuk dihantar' (CTRL + Z) Perintah ini sedikit membingungkan untuk dijelaskan. Nombor telefon, dalam format (xxx) yyy-zzzz terdapat dalam petikan berganda. Tekan 'enter' setelah menutup petikan. Seterusnya masukkan teks yang akan dihantar. Tamatkan arahan AT dengan menghantar CTRL + Z. Karakter ini tidak dapat dihantar dari terminal Arduino. Gunakan program terminal alternatif seperti Hyperterminal, Tera Term, Bray Terminal atau X-CTU. Modul SM5100B boleh melakukan lebih banyak daripada ini! Lihat lembaran data di halaman produk untuk mengetahui lebih lanjut mengenai modul. * /Buka port bersiri di terminal. Pada Mac ini dapat dicapai dengan menaip: screen /dev/tty.usbmodemfa131 9600 (ganti tty.usbmodemfa131 dengan alamat bersiri Arduino anda) Tunggu untuk melihat urutan berikut dikembalikan: Memulakan Komunikasi SM5100B… + SIND: 3 + SIND: 4 + SIND: 11 (Sekiranya urutan ini tidak dikembalikan, periksa kod ralat yang tertera di bahagian bawah kod di atas, dan nyahpepijat dengan tepat. Anda mungkin perlu menetapkan modul untuk penggunaan Amerika Utara - lihat di bawah - sebelum mendaftar ke rangkaian (iaitu + SIND 11)) Kirim perintah berikut ke port bersiri: Kirim ini untuk penggunaan Amerika Utara: AT + SBAND = 7 Tetapkan masa semasa - yy / mm / dd: AT + CCLK = "13/05/15, 11: 02:00 "Hantar panggilan ujian: ATD4155551212

Langkah 8: Mesej Teks

Mesej teks
Mesej teks

Muat turun dan pasang SerialGSM ke perpustakaan Arduino anda.

Untuk menghantar pesanan teks, kunjungi tutorial modul selular Tronixstuff dan gunakan contoh kod 26.3:

Sekiranya anda ingin menjalankan kod contoh untuk menerima teks, sambungkan LED ke pin 8 dan pasangkannya secara bersiri dengan perintang 220 ohm ke tanah.

Untuk menghantar pesanan teks, kunjungi tutorial modul selular Tronixstuff dan gunakan contoh kod 26.5:

Kirimkan salah satu arahan berikut ke modul selular anda:

// menghidupkan LED # a1

// mematikan LED # a0

Langkah 9: Suara

Suara
Suara
Suara
Suara
Suara
Suara

Sambungkan mikrofon dan pembesar suara ke pelindung menggunakan kabel audio yang dibumikan. Kawat isyarat tengah harus menuju ke terminal audio plus dan pelindung harus menuju ke terminal negatif masing-masing pada pelindung. Kabel ini harus disambungkan sama di sisi mikrofon dan pembesar suara.

Untuk memulakan panggilan suara, muat naik kod berikut:

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

// LAKUKAN PANGGILAN // // KOD BUFFERING BERDASARKAN: // // //********************************************************************************** #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: // // // ********************************************** ************************************ #include #define BUFFSIZ 90 // Sediakan buffer array char at_buffer [BUFFSIZ]; char buffidx; // Pemboleh ubah keadaan rangkaian int network_registered; int network_AT_ready; // Pemboleh ubah keadaan kod int firstTimeInLoop = 1; int firstTimeInOtherLoop = 1; int x; // Akan memegang watak masuk dari Serial Port. char incoming_char = 0; // Buat port bersiri 'palsu'. Pin 2 adalah pin Rx, pin 3 adalah pin Tx. Sel perisian (2, 3); batal persediaan () {// Memulakan port bersiri Arduino untuk penyahpepijatan. Serial.begin (9600); // Memulakan port bersiri maya untuk bercakap dengan Telefon. sel.begin (9600); //Hai dunia. Serial.println ("Memulakan Komunikasi SM5100B …"); kelewatan (1000); // Tetapkan rangkaian keadaan rangkaian awal_registered = 0; network_AT_ready = 0; } // Baca rentetan AT dari perisai selular kekosongan readATString (void) {char c; buffidx = 0; // bermula pada awal untuk (x = 0; x 0) {c = sel.read (); jika (c == -1) {at_buffer [buffidx] = '\ 0'; kembali; } jika (c == '\ n') {teruskan; } jika ((buffidx == BUFFSIZ - 1) || (c == '\ r')) {at_buffer [buffidx] = '\ 0'; kembali; } at_buffer [buffidx ++] = c; }}} // Proseskan tali AT batal ProcessATString () {if (strstr (at_buffer, "+ SIND: 8")! = 0) {network_registered = 0; Serial.println ("Rangkaian tidak tersedia"); } if (strstr (at_buffer, "+ SIND: 11")! = 0) {network_registered = 1; Serial.println ("rangkaian Berdaftar"); } if (strstr (at_buffer, "+ SIND: 4")! = 0) {network_AT_ready = 1; Serial.println ("rangkaian AT Sedia"); }} gelung void () {/ * Jika dipanggil buat kali pertama, gelung sehingga rangkaian dan AT siap * / jika (firstTimeInLoop == 1) {firstTimeInLoop = 0; sementara (network_registered == 0 || network_AT_ready == 0) {readATString (); ProsesATString (); }} if (firstTimeInOtherLoop == 1) {// Cari panggilan masuk jika (strstr (at_buffer, "+ CPAS: 3")! = 0) {// Jawab sel telefon.println ("ATA"); firstTimeInOtherLoop = 0; }}}

Imej
Imej

Adakah anda menganggap ini berguna, menyeronokkan, atau menghiburkan? Ikuti @madeineuphoria untuk melihat projek terbaru saya.

Disyorkan: