Daftar Isi:

Asisten Pribadi: 9 Langkah (dengan Gambar)
Asisten Pribadi: 9 Langkah (dengan Gambar)

Video: Asisten Pribadi: 9 Langkah (dengan Gambar)

Video: Asisten Pribadi: 9 Langkah (dengan Gambar)
Video: Hanya Dengan Lirikan Pak Jokowi || PASPAMPRES Sigap 2024, Juli
Anonim
Image
Image
Asisten pribadi
Asisten pribadi

Dalam instruksi ini, saya akan menunjukkan kepada Anda bagaimana Anda dapat menggunakan kekuatan ESP8266, kreativitas dalam desain dan pemrograman perangkat lunak, untuk membuat sesuatu yang keren dan mendidik.

Saya menamakannya Asisten Pribadi, karena ukurannya saku, berbicara dengan Anda, dan dapat memberi Anda beberapa informasi yang berguna, dan (tentu saja) beberapa tidak berguna (tapi tetap keren) tentang cuaca, waktu dan tanggal, pesan gmail, kelahiran hidup dan angka kematian dan lain-lain.

Saya mencoba untuk menjaga desainnya tetap sederhana. Perangkat ini memiliki dua antarmuka pengguna. Tombol tekan fisik, dan aplikasi berbasis web, yang dapat diakses pengguna menggunakan browser web dan mengubah pengaturan dan konfigurasi perangkat.

Bagaimana cara kerjanya? Komponen utama dari proyek ini adalah Mikrokontroler dan modul Music Player. Mikrokontroler (NodeMCU) kami menggunakan teknologi WiFi untuk terhubung ke titik akses dengan koneksi internet; sehingga dapat memperoleh data yang diperlukan, memprosesnya, dan memberi tahu Pemutar Musik (DFPlayer Mini) kapan, file MP3 mana yang harus diputar.

Untuk saat ini, itu saja yang perlu Anda ketahui. Saya akan memberi Anda informasi lebih rinci di langkah selanjutnya, jadi jangan khawatir.

Langkah 1: Bagian yang Dibutuhkan

Bagian yang Dibutuhkan
Bagian yang Dibutuhkan
  • NodeMCU ESP-12E (Antarmuka USB-ke-Serial CP2102)
  • DFPlayer Mini
  • Tombol Tekan Sesaat SPST
  • Speaker 8 Ohm 2 Watt
  • Kartu Micro SD (Anda akan membutuhkan beberapa Kilobyte, jadi kapasitasnya tidak masalah)
  • Mur dan Baut

    • Kacang M3 (x6)
    • Baut M3 - 23 mm (x4)
    • Baut M3 - 15 mm (x2)
  • 1N4148 Sinyal Dioda (x1)
  • Resistor

    • Resistor 1K (x1)
    • Resistor 10K (x2)

Bagian lain:

  • PCB (Anda dapat memesan prototipe secara online atau mengunjungi toko lokal)
  • Lembaran akrilik potong laser

    • lembaran bening tebal 2 mm
    • Ketebalan 2,8 mm dua lembar warna berbeda (oranye dan hijau, merah dan hijau, terserah Anda dan warnanya tidak masalah)
  • Setiap 5 volt (setidaknya) pengisi daya USB mikro 1 ampere (untuk menyalakan perangkat)

Langkah 2: Cara Kerjanya

Bagaimana itu bekerja
Bagaimana itu bekerja
Bagaimana itu bekerja
Bagaimana itu bekerja

Oke, saya ingin memberi Anda informasi lebih rinci tentang cara kerja perangkat lunak.

Perangkat lunak ini terdiri dari beberapa Layanan. Setiap Layanan, memiliki Modul sendiri. (Anda dapat menganggap layanan sebagai kelas dan modulnya sebagai metodenya). Setiap modul, dapat dianggap sebagai objek yang dapat dieksekusi. Jadi, perangkat lunak kami terdiri dari beberapa objek yang dapat dieksekusi.

Di sini kami memiliki beberapa layanan dan sub-layanan atau modulnya:

  • Gmail

    Pesan yang belum dibaca

  • Cuaca
    • Suhu saat ini
    • Kondisi hari ini
    • Hari ini Rendah / Tinggi
    • Kondisi Besok
    • Besok Rendah / Tinggi
    • Prakiraan Curah Hujan
    • Matahari terbit Matahari terbenam
  • Waktu

    • Waktu saat ini
    • Tanggal sekarang
  • Kelahiran & Kematian

    • Kelahiran Dunia
    • kematian dunia

Ada antrian melingkar yang menampung modul di dalamnya. Kami menyebutnya Antrian Operasi. Saya katakan, setiap modul adalah objek yang dapat dieksekusi. Jadi, ketika Anda menekan tombol tekan pada perangkat, ia melihat ke dalam antrian operasi, dan menjalankan modul (atau objek) berikutnya.

Anda dapat mengedit anggota antrian operasi di antarmuka pengguna berbasis web yang akan saya jelaskan nanti. Untuk saat ini, saya akan memberi Anda sebuah contoh. Pertimbangkan antrian operasi saat ini seperti ini:

ANTRIAN (Pesan Belum Dibaca | Prakiraan Curah Hujan | Waktu Saat Ini)

Anda menekan tombol push, Pesan yang Belum Dibaca harus dieksekusi.

ANTRIAN (Pesan Belum Dibaca | Prakiraan Curah Hujan | Waktu Saat Ini)

Jadi, perangkat akan menggunakan data yang dikumpulkannya (di sini, jumlah pesan Anda yang belum dibaca yang diambil dari umpan API email google) untuk berbicara dengan Anda. Tapi bagaimana caranya? Di sini, NodeMCU akan memberi tahu Modul MP3, kapan harus memutar bagian MP3 mana untuk membuat kalimat yang bermakna. Untuk mencapai ini, saya telah merancang antrian, pengatur waktu, dan algoritma yang berbeda. (Jika Anda seorang c++ dan menyukai mikrokontroler, Anda dapat mempelajari kodenya sendiri.)

Jadi, Anda akan mendengar, perangkat mulai berbicara: Anda memiliki 4 pesan yang belum dibaca di kotak masuk gmail Anda.

Anda menekan tombol push lagi, modul selanjutnya adalah Prakiraan Curah Hujan yang harus ditangani.

ANTRIAN (Pesan Belum Dibaca | Prakiraan Curah Hujan | Waktu Saat Ini)

Jadi, Anda akan mendengar, sesuatu seperti: Jangan lupa payung Anda, besok hujan. Dan seterusnya… Satu hal lagi yang keren: untuk beberapa modul (seperti ramalan hujan), Anda dapat mengharapkan kalimat acak untuk keadaan yang sama. Misalnya, jika besok ada presipitasi dan hujan, dan bukan salju, Anda dapat mengharapkan "besok ada kemungkinan hujan", "bawa sinar matahari Anda sendiri, besok hujan", "tut, tut, sepertinya hujan untuk besok", atau …

Bagaimana kami mendapatkan data yang berbeda untuk setiap layanan?

  • Gmail

    Pesan yang Belum DibacaGoogle memiliki API yang kuat sehingga Anda dapat mengakses berbagai layanannya termasuk Gmail. Namun, untuk tujuan keamanan, Anda memerlukan metode otentikasi dan otorisasi yang berbeda seperti OAuth. ESP8266 tidak begitu kuat untuk menjalankan berbagai algoritma hash yang rumit. Jadi, saya menggunakan teknologi masuk yang lebih lama dan sederhana untuk mengakses kotak masuk gmail. Ini adalah Umpan Atom Google yang juga dapat digunakan oleh Pembaca RSS. Kami mengirim permintaan HTTP untuk mengakses umpan gmail dan tanggapannya dalam format XML. Jadi, kami menghitung jumlah pesan yang belum dibaca dan menggunakannya dalam program kami

  • WeatherKami menggunakan Yahoo Weather API untuk mendapatkan informasi cuaca yang berbeda. Baru-baru ini, seperti Google, Yahoo telah mengubah Weather API-nya, jadi Anda perlu menggunakan standar OAuth untuk mengakses datanya. Sayangnya, ESP8266 tidak dapat menangani kerumitannya, jadi kami akan menggunakan trik untuk menyelesaikan masalah tersebut. Alih-alih mengakses Yahoo Weather API secara langsung, kami akan mengirimkan permintaan kami ke file khusus di server. File kami mendapatkan data dari Yahoo Weather dan hanya mengirimkannya kepada kami.

    • Kondisi Besok Kondisi Besok akan memberi tahu Anda apakah besok lebih hangat atau lebih dingin dari hari ini, atau jika tidak ada perubahan suhu yang masuk akal. Kami membandingkan "rendah / tinggi hari ini" dengan "rendah / tinggi besok" untuk mencapai ini. Anda dapat memeriksa bagaimana saya menulis algoritme ini dan cara kerjanya di file pustaka program.
    • Prakiraan Curah HujanJika Anda memeriksa dokumentasi Yahoo Weather, Anda dapat melihat tabel Kode Kondisi. Seperti yang dikatakan, kode Kondisi digunakan dalam respons untuk menggambarkan kondisi saat ini. Kami akan menggunakan kode kondisi besok dan artinya untuk mengetahui apakah akan ada curah hujan dan apakah hujan atau salju.
  • TimeNTP adalah singkatan dari Protokol Waktu Jaringan. Ini adalah protokol jaringan untuk sinkronisasi jam antara sistem komputer. Karena kami memiliki akses Internet, kami akan menggunakan Klien NTP untuk mendapatkan waktu dari Server NTP, dan menyinkronkannya di timer internal ESP8266 (seperti yang Anda gunakan dengan milis() jika Anda seorang pria Arduino).
  • Kelahiran & KematianKami akan menghitung jumlah kelahiran dan kematian dari awal hari (Terima kasih kepada Klien NTP, mudah untuk mendapatkan jumlah detik sejak awal hari). Saya menggunakan tingkat kelahiran dan kematian dunia dari ekologi.

Langkah 3: Siapkan Perangkat Lunak

Siapkan Perangkat Lunak
Siapkan Perangkat Lunak

Kami akan menggunakan Arduino IDE untuk mengunggah program kami ke NodeMCU. Anda dapat mengunduh dan menginstal Arduino IDE terbaru dari situs resmi mereka:

Sebelum memulai, Anda perlu mengatur Arduino IDE untuk Nodemcu. Saya tidak akan memberi tahu Anda langkah-langkahnya di sini, karena bisa jadi di luar topik. Tetapi Anda dapat mengikuti langkah-langkah dan penjelasan dari instruksi yang sangat baik ini.

Program kami memiliki beberapa dependensi perpustakaan. Apa itu ketergantungan perangkat lunak?

Ketergantungan adalah istilah rekayasa perangkat lunak luas yang digunakan untuk merujuk ketika suatu perangkat lunak bergantung pada perangkat lunak lainnya.

Berikut adalah daftar library Arduino yang harus Anda miliki di komputer Anda untuk dapat mengkompilasi program Personal Assistant:

  • ArduinoJson
  • DFRobotDFPlayerMini
  • klien ntp

Anda dapat mengunduhnya satu per satu dari halaman Github mereka, lalu mengekstrak file zip ke direktori perpustakaan Arduino. Jalurnya di sistem Anda adalah: C:\Users [nama pengguna Anda] Documents\Arduino

Saya menulis perpustakaan untuk menjaga kode tetap bersih dan menghindari kerumitan. Download file PersonalAssistant-Library.zip dan ekstrak ke direktori library Arduino. Sama seperti apa yang Anda lakukan untuk ketiga perpustakaan itu sebelumnya.

File YahooWeather.php

Karena ESP8266 tidak cukup kuat untuk menjalankan algoritme hash, kami tidak dapat menggunakannya secara langsung untuk mengirim permintaan HTTP ke Yahoo Weather API, berdasarkan standar OAuth. Jadi, kami akan menggunakan file antara perangkat kami dan Yahoo Weather API. Anda dapat mengunduh file YahooWeather.zip, mengekstraknya dan meletakkan file YahooWeather.php di server web. Misalnya jika domain Anda adalah example.com dan Anda meletakkan file di direktori api, titik akhir api Anda menjadi example.com/api/YahooWeather.php Anda akan mengirimkan permintaan data cuaca ke titik akhir ini.

Sketsa Program dan FFS (Flash File System)

Papan NodeMCU Anda memiliki sistem file flash 4 MB untuk menyimpan data. Jadi, ketika kita memilikinya, mengapa tidak menggunakannya?

Ingat ketika saya mengatakan perangkat kami memiliki dua antarmuka pengguna? Selain tombol tekan yang sepi itu, antarmuka pengguna kedua kami adalah aplikasi berbasis web sederhana. Dengan aplikasi ini, Anda dapat memanipulasi antrian operasi dengan mengaktifkan / menonaktifkan setiap modul, mengubah pengaturan layanan atau konfigurasi perangkat, seperti pengaturan SSID WiFi dan kata sandi. Kami akan menyimpan semua file ini di NodeMCU Flash File System, dan menjalankan server web ringan untuk menangani permintaan pengguna dari browser web mereka.

Mengedit File Konfigurasi

Unduh file PersonalAssistant-Sketch.zip dan ekstrak di suatu tempat di komputer Anda. Buka file config.json yang terletak:

PersonalAssistant/data/config.json

Anda dapat menggunakan editor teks atau kode apa pun seperti notepad, notepad++, Atom, dll. File ini adalah struktur data json, jadi ini adalah pasangan kunci/nilai yang dapat dibaca manusia dan Anda dapat mengeditnya dengan mudah. Anda dapat mengubah bidang ini:

  • Gmail

    • nama pengguna: nama pengguna Gmail Anda dengan @gmail.com
    • kata sandi: kata sandi Gmail Anda
  • Cuaca
    • woeid: lokasi Anda ingin menerima informasi cuaca. WOEID (Where On Earth IDentifier) adalah pengenal referensi yang digunakan oleh Yahoo untuk lokasi. Anda dapat melakukan pencarian di lokasi WOEID di tautan ini.
    • api: ini adalah titik akhir API. Tautan ke file yahooweather.php Anda.
    • appId, consumerKey dan consumerSecret: untuk mengakses Yahoo Weather API, Anda perlu membuat proyek di halaman pengembang Yahoo. Ini akan memberi Anda Kunci Konsumen dan Rahasia yang diperlukan untuk menggunakan API. Untuk memulai, kunjungi halaman Yahoo Weather Developer dan Buat APP.
  • Zona waktu

    zona waktu: masukkan zona waktu berdasarkan lokasi Anda. Ini bisa berupa bilangan float positif atau negatif dan satuannya adalah jam

  • Wifi

    • ssid: SSID jaringan Anda.
    • kata sandi: kata sandi jaringan Anda. NodeMCU akan menggunakan ssid dan kata sandi untuk terhubung ke jaringan wifi Anda.

Mengunggah Sketsa Program dan data FFS

Hubungkan NodeMCU ke komputer Anda, menggunakan kabel micro-USB ke USB.

Sekarang buka file PersonalAssistant.ino yang terletak:

PersonalAssistant/PersonalAssistant.ino

Di Arduino IDE, dari Tools > Board, pilih NodeMCU 1.0 (ESP-12E Module). Dari Tools > Port, pilih port yang benar. Ini mewakili NodeMCU Anda.

Sekarang, pilih Tools > ESP8266 Sketch Data Upload, ini akan mengupload isi folder data ke ESP8266. Tunggu beberapa saat sampai selesai. Kemudian, pilih Sketch> Upload atau cukup tekan tombol Ctrl + U pada keyboard Anda untuk mulai mengunggah program. Tunggu sampai Anda melihat pesan "upload selesai".

Langkah 4: Siapkan Kartu Micro SD

Kami menggunakan kartu micro SD untuk menyimpan potongan file MP3. NodeMCU-lah yang memutuskan file mana yang harus diputar pada jam berapa dan DFPlayer Mini membantunya membuat kalimat yang bermakna dengan mendekode file MP3.

Saya menggunakan Amazon Polly untuk menghasilkan potongan suara yang saya butuhkan.

Amazon Polly adalah layanan yang mengubah teks menjadi ucapan seperti aslinya, memungkinkan Anda membuat aplikasi yang berbicara, dan membangun kategori produk yang sepenuhnya mendukung ucapan.

Jangan lupa, perangkat kami tidak menggunakan API Amazon Polly untuk berbicara secara dinamis. Kami memiliki beberapa potongan suara offline statis, dan dengan menyatukannya, kami membuat kalimat yang berbeda.

Saya menggunakan situs ini untuk menghasilkan file MP3. Output suara yang saya pilih adalah US English / Salli.

Satu-satunya hal yang perlu Anda lakukan, adalah mengunduh file microSD.zip, lalu mengekstraknya ke kartu micro SD Anda. Ini berisi semua 78 file MP3 yang diperlukan.

Mungkin Kartu Micro SD Anda dilengkapi dengan dan adaptor. Anda dapat memasukkan Kartu Micro SD Anda ke adaptornya dan memasangnya ke laptop Anda. Jika komputer Anda tidak mendukung pembacaan kartu, maka Anda harus menggunakan Pembaca Kartu eksternal.

Langkah 5: Merancang Skema dan Menyiapkan PCB

Merancang Skema dan Menyiapkan PCB
Merancang Skema dan Menyiapkan PCB
Merancang Skema dan Menyiapkan PCB
Merancang Skema dan Menyiapkan PCB
Merancang Skema dan Menyiapkan PCB
Merancang Skema dan Menyiapkan PCB
Merancang Skema dan Menyiapkan PCB
Merancang Skema dan Menyiapkan PCB

Saya telah merancang Skema dan Papan menggunakan Autodesk EAGLE. Saya telah menyertakan file SCH dan BRD di PersonalAssistant-PCB.zip. Anda dapat dengan mudah mengedit dan / atau mengirimkannya ke produsen PCB lokal atau online untuk memesan dan mendapatkan papan Anda.

Satu hal lagi adalah, ESP8266 beroperasi di 3.3v sementara DFPlayer Mini bekerja di 5v. Karena kedua modul ini perlu berbicara satu sama lain melalui antarmuka serial, kami tidak dapat langsung menghubungkan output 5v ke input 3.3v karena merusak ESP8266 Anda. Jadi kita akan membutuhkan konversi level dari 5v ke 3.3v. Kami menggunakan dioda sinyal dan resistor 10K untuk mewujudkannya.

Langkah 6: Solder Itu

Solder Itu
Solder Itu
Solder Itu
Solder Itu

Merakit papan cukup sederhana karena Anda memiliki beberapa komponen. Ikuti skema dan desain papan pada langkah 5 untuk dengan mudah meletakkan setiap item di tempat yang benar.

Saya mulai dengan menyolder resistor dan dioda, karena ukurannya kecil. Anda dapat dengan mudah memotong ekornya yang tidak dibutuhkan menggunakan pemotong kawat. Dari atas ke bawah, Anda harus meletakkan resistor 1K, 10K dan 10K.

Anda tidak perlu menyolder semua pin NodeMCU dan DFPlayer Mini pada PCB. Menyolder pin dengan jalur sudah cukup.

Jangan lupa, speaker dan dioda memiliki polaritas. Anda memiliki satu speaker dan satu dioda di komponen Anda. Untuk dioda, sisi yang bergaris hitam adalah sisi negatifnya atau katoda.

Langkah 7: Kandang

Kandang
Kandang
Kandang
Kandang
Kandang
Kandang

Saya memutuskan untuk mendesain kandang mewah dengan cara yang kreatif. Saya khawatir tentang bentuknya yang aneh selama desain, tetapi pada akhirnya, itu tidak terlalu buruk. Setidaknya itu terlihat seperti grand piano dan terasa nyaman dipegang di tangan Anda!

Alih-alih bentuk kubik hexahedron klasik dengan 6 wajah, saya merancang enklosur multi-layer. Dari bawah ke atas, setiap lapisan terletak di lapisan bawahnya. (Saya menamainya L0 sampai L6, dari bawah ke atas)

Warna dan Ketebalan

Anda dapat menggunakan dua warna pelengkap untuk membuat kontras yang paling kuat, seperti:

  • Merah dan hijau
  • Biru dan Oranye
  • Kuning dan Ungu
  • Biru dan Kuning

Saya menggunakan akrilik bening untuk lapisan atas, sehingga Anda dapat melihat bagian dalam perangkat.

Ketebalan lapisan atas (lapisan-6) harus 2 mm. Ketebalan lapisan lainnya (lapisan-0 sampai lapisan-5) harus 4 mm. Jika Anda ingin menggunakan pelindung akrilik 2,8 mm, seperti yang saya lakukan, tidak ada masalah. Tapi Anda perlu memotong dua seri dari layer-1 dan layer-3 untuk offset.

Untuk merakit enklosur, mulailah dari lapisan bawah (L0). Letakkan papan di atasnya, gunakan baut yang lebih pendek, dan kencangkan menggunakan mur. Sekarang Anda dapat, memasang empat baut yang lebih panjang dari bagian bawah layer-0. Sesuatu seperti menara. Kemudian Anda dapat dengan mudah melanjutkan memasang lapisan lain di atasnya.

Catatan: Anda dapat menggunakan washer opsional antara lapisan bawah dan papan.

Saya juga telah menambahkan teks info untuk port perangkat (daya dan kartu micro SD). Anda dapat menggunakan ukiran laser di lapisan atas.

Saya telah menyertakan format file CDR dan DXF. Anda dapat mengunduhnya, mengeditnya, dan menggunakannya untuk pemotongan laser.

Langkah 8: Mengakses Antarmuka Pengguna Berbasis Web

Mengakses Antarmuka Pengguna Berbasis Web
Mengakses Antarmuka Pengguna Berbasis Web

Nyalakan Perangkat

Anda dapat menyalakan perangkat, menggunakan pengisi daya mikro USB 5v. Pasang micro USB ke port Power perangkat, yaitu input micro USB pada NodeMCU Anda.

Akses Antarmuka Pengguna

Apakah Anda ingat kami mengupload beberapa file ke ESP8266 Flash File System? Saatnya untuk menggunakannya. Yang Anda butuhkan, adalah Alamat IP yang ditetapkan untuk ESP8266 di jaringan. Ada banyak cara berbeda untuk menemukan alamat IP. Saya akan mencantumkan beberapa di antaranya di sini:

  • Di halaman konfigurasi router Anda, di suatu tempat di Daftar Sewa DHCP, Anda dapat melihat daftar perangkat dengan Alamat IP mereka di jaringan Anda.
  • Di Microsoft Windows dan macOS Anda dapat menjalankan perintah seperti arp -a di terminal.
  • Di Android dan iOS, Anda dapat menggunakan aplikasi seperti Fing. (Android / iOS)
  • Di Linux, Anda dapat menggunakan alat seperti Nmap.

Setelah menemukan Alamat IP, buka menggunakan browser web Anda. Anda dapat memanipulasi antrian operasi dengan mengaktifkan / menonaktifkan modul.

Langkah 9: Pikiran Terakhir

Proyek ini sangat memakan waktu dan tenaga. Anda dapat menambahkan lebih banyak opsi ke Asisten Pribadi. Saya telah membiarkan beberapa bagian terbuka untuk pengembangan di masa depan. Beberapa bagian seperti:

  1. Menambahkan lebih banyak layanan dan modul. Misalnya menghitung angka, melempar dadu atau melempar koin.
  2. Setelah terhubung ke jaringan, perangkat dapat berbicara Alamat IP. Anda dapat menambahkan opsi ini untuk menyederhanakan proses pencarian Alamat IP.
  3. Menambahkan kemampuan untuk mengubah pengaturan WiFi di panel kontrol berbasis web.
  4. Menambahkan kemampuan untuk mengubah pengaturan layanan di panel kontrol berbasis web. (Bentuk html mereka sudah siap. Anda perlu menangani permintaan)
  5. Menambahkan lebih banyak respons suara di berbagai status perangkat.
  6. Menambahkan halaman login untuk panel kontrol berbasis web. Anda dapat melakukan ini dengan menambahkan/membandingkan Cookie di baris header

Dan, saya ingin tahu ide Anda tentang instruksi ini.:)

Direkomendasikan: