Isi kandungan:
- Langkah 1: Pergi Dapatkan Barang
- Langkah 2: Pengepala Solder
- Langkah 3: Masukkan
- Langkah 4: Penyelesai
- Langkah 5: Pasangkan Antena
- Langkah 6: Masukkan Kad SIM
- Langkah 7: Permulaan
- Langkah 8: Mesej Teks
- Langkah 9: Suara
Video: Tutorial Arduino Cellular Shield: 9 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
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
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
Masukkan header ke dalam perisai dan pasangkannya ke tempatnya.
Langkah 3: Masukkan
Masukkan pin header ke soket di Arduino.
Langkah 4: Penyelesai
Sambungan kabel antena ke modul SM5100B biasanya tidak begitu baik. Selesaikan setiap sambungan kabel ke modul untuk memastikan kesambungan.
Langkah 5: Pasangkan Antena
Benarkan antena ke kabel antena.
Langkah 6: Masukkan Kad SIM
Masukkan kad SIM dengan selamat ke soket kad SIM.
Langkah 7: 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
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
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; }}}
Adakah anda menganggap ini berguna, menyeronokkan, atau menghiburkan? Ikuti @madeineuphoria untuk melihat projek terbaru saya.
Disyorkan:
Melukis Robot Dengan Adafruit Shield (Make It Move Contest): 10 Langkah (dengan Gambar)
Menggambar Robot Dengan Adafruit Shield (Make It Move Contest): Halo nama saya Jacob dan saya tinggal di UK. Dalam projek ini saya akan membina robot yang menarik untuk anda. * Saya pasti ramai di antara anda yang ingin melihatnya jadi jika anda ingin tahu sila lompat ke langkah kedua hingga terakhir tetapi pastikan anda kembali ke sini untuk melihat
Kawal LED Anda Dengan Jauh TV Anda ?! -- Tutorial IR Arduino: 5 Langkah (dengan Gambar)
Kawal LED Anda Dengan Jauh TV Anda ?! || Tutorial IR Arduino: Dalam projek ini saya akan menunjukkan kepada anda bagaimana saya menggunakan semula butang yang tidak berguna pada alat kawalan jauh TV saya untuk mengawal LED di belakang TV saya. Anda juga boleh menggunakan teknik ini untuk mengawal segala macam perkara dengan sedikit penyuntingan kod. Saya juga akan bercakap sedikit mengenai teori
Tutorial Interface RGB Led WS2812B Dengan Arduino UNO: 7 Langkah (dengan Gambar)
Tutorial Interface RGB Led WS2812B Dengan Arduino UNO: Tutorial ini akan mengajar anda beberapa asas mengenai penggunaan Sparkfun RGB Led WS2812B dengan Arduino UNO
Tutorial Cara Memaparkan Antara Muka 4-Digit Dengan Arduino UNO: 6 Langkah (dengan Gambar)
Tutorial Cara Memaparkan Tampilan 4-Digit Dengan Arduino UNO: Tutorial ini akan mengajar anda beberapa asas menggunakan 4- Digit Display dengan Arduino UNO
Cara Menggunakan Papan Radio Si4703 FM Dengan RDS - Arduino Tutorial: 5 Langkah (dengan Gambar)
Cara Menggunakan Papan Radio Si4703 FM Dengan RDS - Arduino Tutorial: Ini adalah papan penilaian untuk cip penala Silicon Laboratories Si4703 FM. Selain menjadi radio FM sederhana, Si4703 juga mampu mengesan dan memproses maklumat Perkhidmatan Data Radio (RDS) dan Perkhidmatan Data Penyiaran Radio (RBDS)