Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pager Dua Arah Sekolah Tua dengan Arduino

Komponen dan persediaan

Kartu SIM Hologram IoT Global
× 1
Arduino UNO
× 1
Arduino GSM shield V2
× 1
Adafruit LCD Shield Kit w/ Tampilan Karakter 16x2 - Hanya 2 pin digunakan! - BIRU DAN PUTIH
× 1
Kotak Proyek Hammond 4,7 x 2,6 x 1,4 Biru Tembus
× 1

Aplikasi dan layanan online

Router Data Hologram

Tentang proyek ini

Pendahuluan

Mencari untuk menciptakan kembali kejayaan akhir 90-an dan awal 2000-an, saya pikir saya akan mencoba membuat pager dua arah saya sendiri, seperti yang biasa digunakan Jay-Z! Tapi saya menemukan ide ini lebih berguna daripada pandangan pertama—saya mendesainnya agar dapat digunakan oleh anak-anak sebagai pengganti ponsel asli, atau dapat digunakan sebagai tombol “SOS” untuk seseorang yang bekerja sendirian di luar ruangan atau bahkan berolahraga (jika ukurannya sedikit lebih kecil). Dan selama beberapa minggu terakhir, perangkat ini selalu menyala di ruang tamu tempat saya dan istri meninggalkan pesan konyol satu sama lain.

Ringkasan:Proyek ini mengirim dan menerima pesan teks (SMS) melalui arduino dengan modem seluler yang dibangun ke dalam wadah kecil dengan layar LCD dan tombol kontrol sederhana.

Perhatikan bahwa kode untuk proyek ini mencakup kemampuan untuk menjalankan sistem dari antarmuka serial sehingga Anda dapat membuat dan menggunakan versi proyek ini meskipun Anda tidak memiliki pelindung LCD!

Pemilihan perangkat keras

Saya memiliki Arduino GSM Shield yang ingin saya gunakan dengan proyek ini bersama dengan kartu SIM dari Hologram, jadi menggabungkan dengan Arduino UNO saya sangat masuk akal. Adafruit membuat pelindung layar LCD dengan tombol built-in, dan karena menggunakan bus I2C, ia hanya menggunakan dua pin pada Arduino untuk layar dan lima tombol, menyisakan banyak ruang untuk penyesuaian di masa mendatang.

LCD memiliki warna latar belakang biru yang bagus, jadi saya pikir menggabungkannya dengan penutup biru transparan akan terlihat bagus. Penumpukan tiga papan di atas satu sama lain membuat beberapa koneksi yang sangat bersih dan tidak ada masalah listrik karena kedua pelindung menggunakan pin yang berbeda satu sama lain.

  • Pelindung LCD:Pin analog 4 dan 5 untuk bus I2C (bersama dengan daya dan ground +5V [tetapi hanya ground di sebelah pin Vin, bukan yang di sebelah pin 5V])
  • GSM shield:pin 2 dan 3 untuk serial software, dan pin 7 sebagai power reset (ditambah power dan ground tentunya, meskipun saya tidak pernah melihat detailnya di dokumentasi)

Segala sesuatu yang lain masih bebas untuk berkembang! Perangkat lain bahkan masih dapat ditambahkan ke bus I2C.

Selama pengembangan, sistem berjalan dengan baik hanya dengan daya USB dari laptop saya untuk mengirim dan menerima SMS, meskipun saya menduga akan membutuhkan lebih banyak daya untuk menggunakan data seluler GPRS dengan andal.

Komunikasi seluler

Hologram menyediakan layanan data seluler yang berfungsi dengan perangkat apa pun yang menerima kartu SIM. Setelah mendaftarkan kartu SIM saya untuk layanan, hanya dengan satu klik ekstra saya dapat menetapkan nomor telepon di kode area pilihan saya. Fitur lain yang membuat proyek ini hebat sebagai komunikator anak-anak, misalnya, adalah sangat murah untuk menjaga layanan tetap aktif ($0,40/bln) dan saya dapat menjedanya kapan saja jika saya berhenti menggunakan perangkat. Seperti kebanyakan paket telepon seluler, menerima SMS gratis dan masing-masing mengirim $0,19. Di masa depan, biaya ini dapat diturunkan lebih jauh dengan menggunakan koneksi data ke layanan cloud Hologram di mana pesan dapat secara otomatis dialihkan ke layanan SMS gratis. $0,60 untuk satu megabyte data akan memberi Anda banyak pesan teks kecil.

Untuk alasan apa pun, meskipun pelindung GSM pada akhirnya berfungsi dengan baik, pelindung tersebut tidak akan menjalankan GSMScanner dengan benar. dan GSMModem getIMEI() fungsi yang dirancang untuk pengaturan awal dan pemecahan masalah. Cukup menyesatkan! Fungsi data SMS dan GPRS berfungsi dengan baik, jadi jika ada yang tahu mengapa modem masih tidak dapat memberi tahu saya nomor IMEI-nya sendiri, saya akan senang mendengar ide Anda.

Kode dan Antarmuka

Adafruit memiliki instruksi yang sangat baik untuk menunjukkan perisai LCD beraksi dan Arduino memiliki panduan memulai yang baik untuk perisai GSM yang menampilkan fungsi-fungsi penting, jadi sebagian besar kode saya didasarkan pada dua fungsi tersebut, ditambah penambahan saya sendiri antarmuka pengguna.

Saya belum pernah memprogram antarmuka pengguna sebelumnya yang tidak memasukkan huruf ke dalam baris perintah dengan keyboard, jadi saya ingin membuatnya tetap sederhana. Saya memutuskan untuk memilih pesan kalengan untuk dikirim yang dapat digulir dengan tombol atas dan bawah—sebenarnya lebih mudah dari yang saya kira!

Hanya dengan menumpuk tiga papan di atas satu sama lain dengan kartu SIM yang berfungsi (bahkan dari ponsel Anda sendiri!) dan mem-flash kode di bawah ini, Anda akan mendapatkan perangkat pesan teks yang berfungsi seperti ini:

  • Nyalakan, boot, dan beri tahu Anda setelah jaringan terhubung
  • Tombol kiri:Buka layar “beranda”
  • Tombol kanan:Mengakui pesan masuk, mengizinkan pesan berikutnya masuk jika ada. Juga meredupkan layar jika tidak ada pesan saat ini.
  • Tombol atas/bawah:Gulir melalui pilihan pesan yang telah diprogram untuk dikirim. Saya kira Anda bisa memasukkan sebanyak yang Anda inginkan ke dalam kode; Saya mulai dengan empat.
  • Tombol pilih:Kirim pesan yang dipilih saat ini

Itu dia! Pesan masuk secara otomatis ditampilkan tidak peduli menu apa yang aktif di perangkat, dan bahkan akan menyalakan lampu latar jika sudah mati.

Langkah logis berikutnya mungkin menambahkan menu nomor tujuan untuk pesan keluar, atau membuatnya secara otomatis merespons pesan terakhir yang diterimanya (menggunakan remoteNumber() fungsi).

Pembuatan akhir

Untuk memotong bukaan di kotak proyek, saya menggunakan bor untuk lubang normal dan kemudian mata potong serbaguna Dremel (#561) dengan pemandu (#565) untuk potongan yang lebih besar. Menggunakan beberapa papan dan klem tambahan untuk membuat jig untuk memandu Dremel akan menghasilkan garis yang lebih bersih, tetapi saya cukup senang dengan apa yang saya lakukan dengan tangan kosong. Sedikit pasti ingin berkeliaran lebih dari yang saya harapkan!

Satu-satunya kabel aktual dalam proyek ini adalah untuk daya untuk menambahkan baterai dan sakelar 9V—tanpa baterai, kabel dapat diberi daya dari USB atau colokan dinding dan selesai!

Baterai dan klip 9V pas di sebelah Arduino dan di bawah pelindung GSM (yang ukurannya hampir sama dengan Arduino Mega). Saya menyolder kabel ke beberapa pin header agar sambungan daya mudah dipasang.

Untungnya pelindung GSM memiliki kabel ekstra panjang dan dapat ditekuk pada pinnya. Saya bisa membengkokkannya sedikit sehingga mereka melewatkan soket di Arduino, membiarkan koneksi itu gratis untuk header daya saya. Saya curiga ini sebabnya pinnya seperti itu! Pelindung LCD di bagian atas memiliki pin pendek dan kokoh tanpa sambungan perempuan di sisi depan, jadi menekuk pin adalah satu-satunya metode yang saya temukan untuk menyambungkan benda selain pelindung dalam pengaturan ini.

Memotong ujung solder port USB dan beberapa lainnya di bagian bawah Arduino memungkinkannya untuk duduk rata di kasing pada pita busa double-stick. Kemudian papan menumpuk untuk meninggalkan LCD dan tombol hanya sedikit menonjol di atas bagian atas casing—sempurna!

Kesimpulan

Saya akan terus mengutak-atik sistem ini dan bahkan membiarkan keponakan saya yang berusia 4 tahun sedikit menggedornya. Saya pikir itu berfungsi dengan baik sebagai pembawa pesan, tetapi saya terkejut bahwa saya lebih menyukainya sebagai papan iklan kecil di rumah saya untuk menampilkan pesan. Saya senang dengan estetika, yang membantu di sana.

Pekerjaan lebih lanjut dapat dilakukan dengan menu kedua untuk memilih penerima pesan, secara otomatis meredupkan layar untuk menghemat daya, menambahkan lampu/buzzer/motor pager untuk pemberitahuan, atau perilaku antarmuka pengguna pilihan lainnya yang Anda inginkan!

Sistem juga dapat diubah secara mendasar untuk menampilkan pemberitahuan dari layanan seperti IFTTT, seperti jika Anda memiliki paket yang dikirimkan atau tweet terbaru seseorang. Apa yang sedang kamu bangun? Bagaimana Anda akan meningkatkan sistem?

Selamat menikmati!

-Mike

Anda dapat membaca lebih lanjut tentang saya dan proyek saya di blog saya, termasuk lebih banyak tentang proyek ini.

(Proyek ini dimungkinkan sebagai bagian dari Hologram Program Hacker-In-Residence. Untuk informasi lebih lanjut, hubungi Sheena, koordinator konten Hologram, di [email protected])

Kode

  • Kode sistem untuk Arduino
Kode sistem untuk ArduinoArduino
/** * Sistem pager dua arah dengan layanan seluler Arduino dan Hologram * Mike Schaus * 28 Des 2016 * Dibuat sebagai bagian dari program Hologram Hacker-In-Residence * * Proyek ini mengirim dan menerima teks (SMS) pesan melalui * sebuah arduino dengan modem seluler yang dibangun ke dalam wadah kecil * dengan layar LCD dan tombol kontrol sederhana. * * Perhatikan bahwa kode disertakan untuk berfungsi melalui pelindung LCD ATAU * monitor serial, sehingga Anda dapat menggunakan kode ini bahkan tanpa * pelindung LCD. */#include #define PINNUMBER ""// sertakan kode library LCD:#include #include #include // Shield menggunakan pin I2C SCL dan SDA. Pada Arduino klasik// ini adalah Analog 4 dan 5 sehingga Anda tidak dapat menggunakannya untuk analogRead() lagi// Namun, Anda dapat menghubungkan sensor I2C lainnya ke bus I2C dan berbagi// bus I2C.Adafruit_RGBLCDShield lcd =Adafruit_RGBLCDShield( );// #define ini memudahkan untuk mengatur warna lampu latar#define OFF 0x0#define ON 0x1// membuat panah karakter khusus pada LCDconst byte panah[8] ={ B00000, B00000, B01000, B01100, B01110, B01100, B01000, B000000};// menginisialisasi perpustakaan GSM instanceGSM gsmAccess(false); // sertakan parameter 'true' untuk debug diaktifkanGSM_SMS sms;// array char dari nomor telepon untuk mengirim SMS// ubah nomor 12125551212 menjadi nomor// Anda memiliki akses kechar remoteNumber[20]="12125551212";// Larik untuk menampung nomor SMS diambil darichar senderNumber[20];// larik char dari kemungkinan pesan keluar untuk dipilih dari menuchar* tanggapan[]={"Mike=Awesome!", "Ya", "Tidak", "Howdy!"};//#define NUMRESPONSES 4 // jika seseorang tahu cara menghitung ini, saya akan mendengarkan#define NUMRESPONSES (sizeof(responses)/sizeof(char *)) // terima kasih atas komentar Steve Kemp !int posisi=-1; // dengan cara ini penekanan tombol pertama akan selalu menampilkan opsi pertama dari menuint inByte =0; // byte serial masuk untuk antarmuka keyboardboolean backlight =true; // lacak status lampu latar untuk togglingunsigned long beforeMillis =0; // akan menyimpan terakhir kali pesan diperiksa#define CHECKINTERVAL 1500 // seberapa sering memeriksa pesan teksvoid setup() { // letakkan kode setup Anda di sini, untuk dijalankan sekali:// menginisialisasi komunikasi serial Serial.begin(9600); Serial.println(F("Pengirim Pesan SMS -- memulai...")); // mengatur jumlah kolom dan baris LCD:lcd.begin(16, 2); // Cetak pesan ke LCD lcd.print(F("Halo, Hologram!")); lcd.setCursor(0, 1); lcd.print(F("Memulai...")); lcd.setBacklight(ON); // mengatur karakter panah untuk tampilan lcd.createChar(0, panah); // status koneksi boolean notConnected =true; // Mulai perisai GSM // Jika SIM Anda memiliki PIN, berikan sebagai parameter dari begin() dalam tanda kutip while(notConnected) { if(gsmAccess.begin(PINNUMBER)==GSM_READY) { notConnected =false; Serial.println(F("GSM terhubung karena Anda sangat hebat")); Serial.println(F("Menunggu pesan, atau kirim dengan \"s\"")); Serial.println(); lcd.clear(); lcd.setCursor(0,0); tampilan depan(); } else { Serial.println(F("Tidak terhubung")); lcd.clear(); lcd.setCursor(0,0); lcd.print(F("Tidak terhubung")); penundaan (1000); } }}// ini adalah menu system functionvoid showResponses() {// Serial.println(position); // hanya untuk debugging sistem menu lcd.clear(); lcd.setCursor(0,0); // pastikan posisi kursor legal jika (posisi<0) position=0; if (posisi>NUMRESPONSES-1) posisi =NUMRESPONSES-1; // tulis pilihan saat ini dan pilihan berikutnya jika ada pilihan lain lcd.write(0); //karakter panah lcd.print(posisi+1); lcd.print("-"); lcd.print(tanggapan[posisi]); if (posisi  0) { inByte =Serial.read(); // dapatkan byte masuk if (inByte =='s') { printResponseOptions(); while (Serial.available()> 0) { // bersihkan buffer keyboard untuk berjaga-jaga char junk =Serial.read(); } while (Serial.available() ==0 ); // Tunggu di sini sampai buffer input memiliki karakter inByte =Serial.parseInt(); // ingin memeriksa pilihan yang valid di sini agar lebih kuat sendSMS(respons[inByte]); } } // periksa pesan baru hanya sekali setiap beberapa detik untuk menjaga antarmuka lebih responsif unsigned long currentMillis =millis(); if (Millis saat ini - sebelumnyaMillis>=CHECKINTERVAL) { sebelumnyaMillis =saat iniMillis; menerimaSMS(); // membutuhkan waktu sekitar 26 md jika tidak ada pesan }}

Skema

Perakitan sebenarnya jauh lebih sederhana daripada yang disiratkan skema — sebagian besar koneksi dibuat hanya dengan menumpuk dua pelindung di atas Arduino! Apa pun di luar itu opsional untuk daya baterai.

Proses manufaktur

  1. Pemantauan CO2 dengan Sensor K30
  2. Komunikasi Tunarungu dengan 1Sheeld/Arduino
  3. Kontrol Penerima Koin dengan Arduino
  4. Arduino dengan Bluetooth untuk Mengontrol LED!
  5. Sensor Sidik Jari Kapasitif dengan Arduino atau ESP8266
  6. Bermain Dengan Tampilan Berikutnya
  7. Lengan Robot Terkendali Nunchuk (dengan Arduino)
  8. Mengukur Radiasi Matahari dengan Arduino
  9. Radar Mini dengan Arduino
  10. Cara membuat musik dengan Arduino