Saya ingin memperkenalkan perpustakaan untuk GSM / GPRS Shield untuk Arduino dari Keyestudio. Saya membeli perangkat ini karena harganya. Di Cina, ternyata hampir 2 kali lebih murah daripada mitranya dari Amperka, dan tiga kali lipat dari iAruino. Alasan penulisan teks ini adalah kurangnya perpustakaan yang dapat diterima di Keyestudio untuk bekerja dengannya.
Bekerja melalui serangkaian perintah AT tidak dipertimbangkan. Perpustakaan untuk perangkat serupa lainnya tidak pas secara langsung. Bagaimanapun, saya tidak bisa membuat mereka bekerja.
Menurut pendapat saya, saya harus mengadaptasi perpustakaan Amperkovskaya yang paling rumit untuk papan ini, dan dengan demikian mencoba untuk mempertahankan kompatibilitas kode yang ditulis untuk perisai Amperkovsky.
Sebenarnya tautan ke perpustakaan:
github.com/andrewinc/keyestudio-gsm-gprs-shield
Amperka menggunakan chip Sim900R dalam perisainya, dan inilah Sim900. Perbedaan paling penting dalam sinyal ST: ada di pustaka sumber dan perisai, tetapi tidak di Keyestudio. Sementara itu, itu akan jelas mengaktifkan atau menonaktifkan chip. Tetapi ada tombol SIM900_Power, yang mendorong saya untuk berpikir buruk tentang kurangnya kemampuan perangkat lunak untuk menyalakan chip. Untungnya, mereka salah.
Pin 9 - mengontrol masuknya chip, pengganti yang sama untuk tombol Power, PK ditunjukkan pada papan Amperka.
Sedikit perbedaan dalam versi chip tidak mempengaruhi kemampuannya, dalam hal apa pun, saya berhasil melakukan panggilan, mengirim dan menerima SMS menggunakan contoh-contoh yang disediakan di perpustakaan. Saya pikir ini adalah arah utama menggunakan perisai ini.
Pengaturan fisik
Dewan berkomunikasi dengan Arduino melalui antarmuka UART. Bagi mereka yang tidak tahu UART, ini adalah pin TX dan RX. Dengan TX - data berikut dari Arduino, dan oleh RX - kembali.
Ada juga saklar "UART_Port - DBG_Port", tetapi saya tidak menggunakan port ini. Switch tetap berada di "UART_Port".
Fitur papan adalah tidak berfungsi di luar kotak. Jika Anda memperhatikan kondisi jumper setelah membuka paket (lihat foto di atas), Anda dapat melihat koneksi TXD c 0 dan RXD dengan 1. Pada Arduino, pin yang sama digunakan untuk TX dan RX. Inilah masalahnya, karena mereka sibuk mengunduh sketsa, mereka juga digunakan untuk bertukar informasi melalui objek Serial, termasuk. dan untuk debugging. Saat menghubungkan Arduino ke perisai, terjadi konflik dan firmware gagal.
Serial Perangkat Lunak
Diketahui bahwa Arduino UNO hanya memiliki satu antarmuka Serial, tetapi seluruh keluarga mereka, misalnya, Arduino Mega. Serial1 dikaitkan dengan sepasang TX1 dan RX1, serupa untuk Serial2 dan Serial3.
Untuk menggunakan Arduino UNO, masuk akal untuk menggunakan perangkat lunak Serial. Cukup menghubungkan perpustakaan yang sesuai, dan membuat objek itu sendiri, menunjukkan pin Arduino yang merupakan sinyal TXD dan RXD dari shield'a:
#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7);
Dalam contoh ini, TXD terhubung ke pin 6, dan RXD terhubung ke 7.
Perangkat lunak memungkinkan chip
Pin on / off chip - 9, tidak seperti TX dan RX, tidak dapat dihubungkan ke pin Arduino lainnya, dalam hal apa pun, tidak ada sakelar pada pelindung untuk ini.
Untuk menghidupkan chip yang Anda butuhkan untuk mengirim sinyal tinggi 9 pin, tunggu 1-3 detik dan menerapkan sinyal rendah untuk itu. Maka biasanya dalam kode Anda dapat melihat menunggu dalam detik 5-15. Semua ini menyerupai manipulasi tombol daya pada ponsel, dan kemudian mengunduhnya dan membuat koneksi dengan jaringan.
Di perpustakaan sumber dari Amperka, ada umpan balik melalui sinyal ST. Melalui itu, dalam proses menyalakan, negara diperiksa: apakah chip menyala? Sayangnya, dengan tidak adanya sinyal ini, metode on dan off dari chip mirip dengan saudara kembar, karena fakta bahwa strobo panjang 9-pin juga dikirim untuk mematikan. Metode ini tidak digabungkan menjadi satu karena kompatibilitas kode
dan karena kemalasan biasa .
Bagaimana cara kerjanya
Perpustakaan itu sendiri terhubung dengan garis:
#include <GPRSk_Shield_Arduino.h>
Kemudian Anda dapat membuat objek berdasarkan kelas GPRSk dan meneruskan mySerial yang sama ke konstruktor atau menentukan perangkat keras Serial1, Serial2, dll. Contoh:
GPRSk gprs(mySerial);
Serial dan mySerial biasanya diinisialisasi dalam fungsi pengaturan, namun, jika Anda tidak berencana untuk mengirim informasi debug ke monitor Arduino IDE, Anda hanya dapat melakukan inisialisasi mySerial.
Setelah itu, chip dimatikan menggunakan metode gprs.powerOn () dan kemudian gprs.init () dipanggil, yang akan mengembalikan true jika chip siap menerima / mengirimkan informasi.
Ketika semua tugas ini selesai, Anda dapat mengirim SMS:
gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!");
Baca posting baru:
char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); }
melakukan panggilan:
gprs.callUp("+79007654321");
dll.
Dalam kerangka perpustakaan, contoh "Amperkov" dilampirkan, di mana hanya Serial1 diubah menjadi perangkat lunak. Mereka diuji pada Keyestudio GSM / GPRS Shield dan menunjukkan kinerja mereka.
Nutrisi
Pengamatan telah menunjukkan bahwa "sandwich" ini dari Arduino UNO dan perisai GPRS tidak memiliki daya dari USB. Ini diungkapkan dengan mengeluarkan sistematis salah dengan metode gprs.init ()
Ada juga daya 200mA (9V) yang tidak memadai ke konektor daya Arduino standar selain daya USB. Sebaliknya, kadang-kadang gprs.init () berlalu, dan terkadang tidak. Saya percaya bahwa catu daya 5V 1-1.5A akan cukup memadai.
Kekurangan:
- Perpustakaan menggunakan jeda penundaan (), yang mengganggu eksekusi semua kode pengontrol.
- Diasumsikan bahwa tidak ada kode PIN yang dipasang pada kartu SIM
- Teks pesan SMS tidak mendukung Cyrillic.
Saya harap perpustakaan ini dapat bermanfaat, serta beberapa catatan tentang cara bekerja dengan perisai ini.