Daftar Isi:

Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah: 12 Langkah (dengan Gambar)
Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah: 12 Langkah (dengan Gambar)

Video: Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah: 12 Langkah (dengan Gambar)

Video: Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah: 12 Langkah (dengan Gambar)
Video: ✨Scumbag System EP 01 - 10 Full Version [MULTI SUB] 2024, Desember
Anonim
Image
Image
Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah
Sintesis Pidato Retro. Bagian: 12 IoT, Otomatisasi Rumah

Artikel ini adalah yang ke-12 dalam seri tentang instruksi otomatisasi rumah yang mendokumentasikan cara membuat dan mengintegrasikan Perangkat Sintesis Pidato Retro IoT ke dalam sistem otomatisasi rumah yang ada, termasuk semua fungsionalitas perangkat lunak yang diperlukan untuk memungkinkan penerapan yang berhasil dalam lingkungan domestik.

Gambar 1 menunjukkan perangkat speech synth IoT yang telah selesai dan Gambar 2 menunjukkan semua bagian komponen yang digunakan dalam prototipe yang direduksi faktor bentuk untuk masuk ke produk akhir.

Video menunjukkan perangkat beraksi (selama pengujian).

pengantar

Seperti disebutkan di atas, detail yang dapat diinstruksikan ini bagaimana membuat Perangkat Sintesis Pidato Retro IoT dan didasarkan pada Instrumen Umum SP0256-AL2.

Tujuan utamanya adalah menambahkan sintesis suara 'jadul' ke jaringan IoT. Mengapa 'sekolah tua' Anda mungkin bertanya? Yah, karena saya berada di sekitar tahun 80-an ketika hal-hal ini pertama kali diproduksi dan saya menghubungkan satu ke BBC Micro saya jadi bagi saya ada beberapa tingkat nostalgia seputar SP0256-AL2.

Saya lebih suka tantangan untuk mencoba mencari tahu apa yang sebenarnya dikatakan oleh suara yang terdengar Dalek ini daripada mendengarkan nada-nada merdu dari gema Amazon hipster atau Siri. Di mana tantangannya yang saya tanyakan kepada Anda?

Oh, dan belum lagi saya juga memiliki 'bag load' IC 'SP0256-AL2' tergeletak di sekitar.

Perangkat ini juga mampu membaca suhu dan kelembaban lokal sehingga semakin memperluas instrumentasi ambien dari infrastruktur IoT saya yang ada yang terhubung ke jaringan IoT berbasis MQTT/OpenHAB yang dirinci dalam seri ini tentang otomatisasi rumah (HA), membangun kode yang digunakan kembali yang diambil dari sini.

Pada intinya adalah ESP8266-07 yang bertanggung jawab untuk komunikasi MQTT dan mengendalikan semua fungsi sistem (akses kartu SD, kontrol led, penginderaan suhu/kelembaban, kontrol volume, sintesis ucapan). Perangkat ini sepenuhnya dapat dikonfigurasi melalui file teks yang disimpan di kartu SD lokal, meskipun kalibrasi dan parameter keamanan jaringan juga dapat diprogram melalui publikasi MQTT jarak jauh.

Bagian apa yang saya butuhkan?

Lihat bill of material di sini

Perangkat lunak apa yang saya butuhkan?

  • ArduinoIDE 1.6.9,
  • Arduino IDE dikonfigurasi untuk memprogram ESP8266-07 (sama seperti ini). Kemudian konfigurasikan IDE seperti yang ditunjukkan dalam deskripsi terperinci yang disediakan dalam sketsa perangkat lunak di sini,
  • Python v3.5.2 jika Anda ingin menggunakan kemampuan pengujian otomatis, detailnya di sini

Alat apa yang saya butuhkan?

  • Mikroskop minimal x3 (untuk penyolderan SMT),
  • Alat crimping konektor Molex (untuk konektor JST),
  • Besi solder SMD (dengan pena fluks cair dan solder inti fluks),
  • Obeng (berbagai),
  • Pistol panas,
  • Latihan (berbagai),
  • alat tangan countersink,
  • File (berbagai),
  • Dremel (berbagai bit),
  • Wakil kokoh (kecil dan besar, seperti rekan kerja hitam dan decker),
  • Pisau bedah,
  • Kaliper vernier (digunakan untuk mengukur fabrikasi dan berguna untuk mengukur komponen PCB),
  • Kunci pas dan Nut driver (berbagai),
  • Pinset yang kuat (untuk menyolder SMT),
  • gergaji besi junior,
  • Bor (dengan berbagai mata bor),
  • Tang halus (ujung runcing dan berhidung pesek),
  • Pemotong siram,
  • DMM dengan pemeriksaan kontinuitas yang dapat didengar,
  • Lingkup digital saluran ganda (berguna untuk men-debug sinyal)

Keterampilan apa yang saya butuhkan?

  • Banyak kesabaran,
  • Banyak ketangkasan manual dan koordinasi tangan/mata yang sangat baik,
  • Keterampilan menyolder yang sangat baik,
  • Keterampilan fabrikasi yang sangat baik,
  • Kemampuan untuk memvisualisasikan dalam 3 dimensi,
  • Beberapa pengetahuan tentang pengembangan perangkat lunak dengan 'C' (jika Anda ingin memahami kode sumber),
  • Beberapa pengetahuan tentang Python (cara menginstal dan menjalankan skrip, jika Anda ingin menggunakan pengujian otomatis),
  • Pengetahuan tentang Arduino dan IDE-nya,
  • Pengetahuan yang baik tentang elektronik,
  • Beberapa pemahaman tentang jaringan rumah Anda.

Topik yang Dicakup

  • Panduan pengguna
  • Ikhtisar Sirkuit
  • Pembuatan dan Perakitan PCB
  • Pembuatan
  • Ikhtisar Sistem Perangkat Lunak
  • Ikhtisar Perangkat Lunak
  • Kalibrasi Sensor
  • Konvensi Penamaan Topik MQTT
  • Debug & Pencarian Kesalahan
  • Menguji Desain
  • Kesimpulan
  • Referensi yang Digunakan

Tautan SeriKe Bagian 11: Konsol Desktop IoT. Bagian: 11 IoT, Otomatisasi Rumah

Langkah 1: Panduan Pengguna

Panduan pengguna
Panduan pengguna
Panduan pengguna
Panduan pengguna
Panduan pengguna
Panduan pengguna

Gambar 1 di atas menunjukkan bagian depan Retro Speech Synthesizer dan gambar 2 bagian belakang.

Bagian Depan Kandang

  1. panggangan speaker
  2. Jack Earphone 3.5mm: Speaker utama dinonaktifkan saat jack 3.5mm dimasukkan.
  3. LED Merah: LED ini menyala saat sebuah kata diucapkan saat ucapan dimulai melalui permintaan
  4. LED Biru: LED ini menyala saat sebuah kata diucapkan saat ucapan dimulai melalui permintaan MQTT IoT.

Kandang Belakang

  1. Tombol Reset: Digunakan untuk hard reset perangkat IoT ESP8266-07.
  2. Tombol Flash: Bila digunakan bersama dengan Tombol Reset memungkinkan flash ulang ESP8266-07.
  3. Steker Antena WiFi (SMA Plug): Untuk Antena WiFi eksternal yang memberikan redaman jalur RF paling sedikit karena penutupnya adalah aluminium.
  4. Port Pemrograman Eksternal: Untuk menghilangkan kebutuhan untuk membuka penutup untuk mendapatkan akses ke ESP8266-07 untuk tujuan pemrograman ulang. Pin pemrograman ESP8266-07 telah dibawa ke port pemrograman eksternal. Gambar 3 adalah adaptor pemrograman.
  5. LED Hijau: Ini adalah sistem IoT yang dipimpin dan digunakan untuk menunjukkan status diagnostik perangkat dan boot dan saat beroperasi.
  6. Sensor Suhu/Kelembaban Eksternal (AM2320)
  7. Slot Kartu SD: Ini menyimpan semua data konfigurasi/keamanan bersama dengan halaman server web.
  8. 2.1mm Pasokan jack 6vdc

Langkah 2: Ikhtisar Sirkuit

Ikhtisar Sirkuit
Ikhtisar Sirkuit
Ikhtisar Sirkuit
Ikhtisar Sirkuit

Perangkat Retro Speech Synth terdiri dari dua PCB;

  • RetroSpeechSynthIoTBoard: Ini adalah PCB ESP8266-07/12/12E/13 generik yang dapat digunakan kembali
  • RetroSpeechSynthBoard: Ini adalah PCB SP0256-AL2 generik

Papan IoT Synth Pidato Retro

Papan ini memungkinkan penyolderan langsung soket pitch ESP8266-07/12/12E/13 atau 0,1 yang mengakomodasi PCB pembawa ESP8266.

Board dirancang untuk memperluas I/O melalui koneksi I2C dan dapat mendukung level suplai 3v3 atau 5v melalui Q1, Q2, R8-13.

Koneksi ke papan dicapai melalui salah satu dari dua header J2 dan J4, Pita DIL IDC 8 arah atau JST/Molex 5 arah.

Ketentuan U2 dan U3 3.3v dan 5v pada regulasi pasokan kapal. Atau jika kapasitas arus yang lebih besar diperlukan, regulator shunt serial off board dapat dipasang melalui konektor J10 dan J11 masing-masing.

Konektor J1 dan J3 menawarkan dukungan kartu SD eksternal melalui SPI. J1 telah dirancang untuk Molex 8-arah dan J3 memiliki pin langsung untuk dukungan kompatibilitas pin untuk PCB kartu SD dengan dukungan 3v3 atau 5v.

Papan Synth Pidato Retro

Kontrol papan ini melalui koneksi yang sesuai dengan I2C 5v melalui J1, J5 atau J6, JST/Molex 4 arah, IDC DIL 8 arah, atau konektor pita IDC 8 arah.

U2 MPC23017 menyediakan antarmuka paralel I2C ke U3 SP0256-AL2 dan LED D1 (Hijau), D2 (Merah) dan D3 (Biru). Output dari Speech Synth diumpankan ke audio amp CR1 TBA820M melalui pot analog RV1 atau pot digital U1 MCP4561.

Pot Digital U1 juga dikontrol melalui I2C yang sesuai dengan 5v.

Catatan: Perangkat ESP8266-07 dipilih karena memiliki konektor IPX RF integral yang memungkinkan Antena WiFi eksternal ditambahkan ke penutup aluminium.

Langkah 3: Pembuatan dan Perakitan PCB

Pembuatan dan Perakitan PCB
Pembuatan dan Perakitan PCB
Pembuatan dan Perakitan PCB
Pembuatan dan Perakitan PCB
Pembuatan dan Perakitan PCB
Pembuatan dan Perakitan PCB
Pembuatan dan Perakitan PCB
Pembuatan dan Perakitan PCB

Gambar 1 dan 2 menunjukkan sub-rakitan PCB lengkap dan kabel yang terletak di substrat selungkup aluminium.

Kedua PCB dirancang menggunakan Kicad v4.0.7, diproduksi oleh JLCPCB dan dirakit oleh saya dan ditunjukkan di atas Gambar 3 hingga 13.

Langkah 4: Fabrikasi

Pembuatan
Pembuatan
Pembuatan
Pembuatan
Pembuatan
Pembuatan

Gambar 1 menunjukkan tata letak gaya Haynes Manual dari semua bagian prefabrikasi sebelum perakitan akhir.

Gambar 2 … 5 menunjukkan berbagai bidikan selama pembuatan enklosur dengan jarak bebas minimal.

Langkah 5: Ikhtisar Sistem Perangkat Lunak

Ikhtisar Sistem Perangkat Lunak
Ikhtisar Sistem Perangkat Lunak
Ikhtisar Sistem Perangkat Lunak
Ikhtisar Sistem Perangkat Lunak

Perangkat Sintesis Pidato Retro IoT ini berisi enam komponen perangkat lunak utama seperti yang ditunjukkan pada gambar 1 di atas.

Kartu SD

Ini adalah Sistem Pengarsipan Flash SD SPI eksternal dan digunakan untuk menyimpan informasi berikut (lihat gambar 2 di atas);

  • Ikon dan 'Speech Synth Configuration Home Page' index.htm: Dilayani oleh perangkat IoT ketika tidak dapat terhubung ke jaringan WiFi IoT Anda (biasanya karena informasi keamanan yang salah, atau penggunaan pertama kali) dan menyediakan sarana bagi pengguna dari jarak jauh mengkonfigurasi sensor tanpa perlu mem-flash ulang konten SD baru. Ini juga memegang index1.htm, mqtt.htm dan sp0256.htm, ini adalah halaman web yang disajikan secara lokal yang dapat diakses melalui browser web yang memungkinkan kontrol terbatas dari synth ucapan melalui
  • Informasi Keamanan: Ini menyimpan informasi yang digunakan saat dihidupkan oleh perangkat IoT untuk terhubung ke jaringan WiFi IoT dan Pialang MQTT Anda. Informasi yang dikirimkan melalui 'Speech Synth Configuration Home Page' ditulis ke file ini ('secvals.txt').
  • Informasi Kalibrasi: Informasi yang terkandung dalam file ('calvals1.txt' dan 'calvals2.txt') digunakan untuk mengkalibrasi sensor suhu/kelembaban on-board jika diperlukan. Konstanta kalibrasi dapat ditulis ke perangkat IoT melalui perintah MQTT dari broker MQTT atau dengan mem-flash ulang kartu SD. 'calvals1.txt' berkaitan dengan sensor AM2320 dan 'calvals2.txt' untuk DHT22.
  • Nilai sistem yang dapat dikonfigurasi pengguna: Informasi yang terkandung dalam file ini ('confvals.txt'), dipilih oleh pengguna, mengontrol respons sistem tertentu, seperti tingkat volume digital awal, pengumuman 'siap sistem' otomatis pada langganan broker MQTT, dll.

Server mDNS

Fungsionalitas ini dipanggil ketika perangkat IoT gagal terhubung ke jaringan WiFi Anda sebagai stasiun WiFi dan sebagai gantinya telah menjadi titik akses WiFi sesuatu yang mirip dengan router WiFi domestik. Dalam kasus router seperti itu, Anda biasanya akan terhubung dengannya dengan memasukkan Alamat IP seperti 192.168.1.1 (biasanya dicetak pada label yang ditempelkan pada kotak) langsung ke bilah URL browser Anda di mana Anda akan menerima halaman login untuk masuk nama pengguna dan kata sandi untuk memungkinkan Anda mengonfigurasi perangkat. Untuk ESP8266-07 dalam mode AP (mode Titik Akses) perangkat default ke alamat IP 192.168.4.1, namun dengan server mDNS berjalan Anda hanya perlu memasukkan nama ramah manusia 'SPEECHSVR.local' ke dalam bilah URL browser untuk lihat 'Halaman Beranda Konfigurasi Synth Ucapan'.

Klien MQTT

Klien MQTT menyediakan semua fungsionalitas yang diperlukan untuk; terhubung ke broker MQTT jaringan IoT Anda, berlangganan topik pilihan Anda dan publikasikan muatan ke topik tertentu. Singkatnya, ini menyediakan fungsionalitas inti IoT.

Server Web

Server web ini memiliki dua tujuan;

  1. Jika perangkat IoT tidak dapat terhubung ke jaringan WiFi yang SSID, P/W, dll. ditentukan dalam file Informasi Keamanan yang disimpan di Kartu SD, perangkat akan menjadi Titik Akses. Setelah terhubung ke jaringan WiFi yang disediakan oleh Access Point, kehadiran HTTP Web Server memungkinkan Anda untuk langsung terhubung ke perangkat dan mengubah konfigurasinya melalui penggunaan HTTP Web Browser yang tujuannya adalah untuk menyajikan 'Konfigurasi Sinkronisasi Bicara Halaman web Home Page 'yang juga diadakan di SD Card.
  2. Setelah Perangkat Sintesis Pidato Retro IoT telah terhubung ke jaringan WiFi dan broker MQTT, jika diakses, Server Web HTTP akan secara otomatis menyajikan halaman web HTTP yang memungkinkan kontrol terbatas perangkat IoT untuk mengucapkan pilihan frasa tetap dan kemampuan untuk siklus dua LED Merah dan Biru depan.

Stasiun WiFi

Fungsionalitas ini memberi perangkat IoT kemampuan untuk terhubung ke jaringan WiFi domestik menggunakan parameter dalam file Informasi Keamanan, tanpa ini perangkat IoT Anda tidak akan dapat berlangganan/memublikasikan ke Pialang MQTT.

Titik Akses WiFi

Kemampuan untuk menjadi Titik Akses WiFi adalah cara perangkat IoT memungkinkan Anda untuk terhubung dan membuat perubahan konfigurasi melalui stasiun WiFi dan browser (seperti Safari di Apple iPad). Titik akses ini menyiarkan SSID = "SPEECHSYN" + 6 digit terakhir dari alamat MAC perangkat IoT. Kata sandi untuk jaringan tertutup ini secara imajinatif bernama 'PASSWORD'

Langkah 6: Ikhtisar Perangkat Lunak

Ikhtisar Perangkat Lunak
Ikhtisar Perangkat Lunak
Ikhtisar Perangkat Lunak
Ikhtisar Perangkat Lunak
Ikhtisar Perangkat Lunak
Ikhtisar Perangkat Lunak

Pembukaan

Agar berhasil mengkompilasi kode sumber ini, Anda memerlukan salinan lokal dari kode dan pustaka yang diuraikan di bawah ini pada Langkah 12, Referensi yang Digunakan. Jika Anda tidak yakin cara menginstal perpustakaan Arduino, buka di sini.

Gambaran

Perangkat lunak ini menggunakan mesin negara seperti yang ditunjukkan pada gambar 1 di atas (salinan lengkap sumber di repositori GitHub saya di sini). Ada 5 negara bagian utama sebagaimana diuraikan di bawah ini;

  • INIT

    Status inisialisasi ini adalah status pertama yang dimasukkan setelah power up

  • NOCONFIG

    Status ini dimasukkan jika setelah dinyalakan, file secvals.txt yang tidak valid atau hilang terdeteksi. Selama keadaan ini Halaman Config terlihat

  • TERTUNDA NW

    Status ini bersifat sementara, dimasukkan saat tidak ada koneksi jaringan WiFi

  • MQTT TERTUNDA

    Status ini bersifat sementara, dimasukkan setelah koneksi jaringan WiFi dibuat dan sementara tidak ada koneksi ke broker MQTT di jaringan itu

  • AKTIF

    Ini adalah status operasional normal yang dimasukkan setelah koneksi jaringan WiFi dan koneksi MQTT Broker dibuat. Selama keadaan ini, suhu, indeks panas, dan kelembaban di Perangkat Sintesis Pidato Retro IoT diterbitkan secara teratur ke Pialang MQTT. Dalam keadaan ini Halaman Beranda Synth Pidato terlihat

Peristiwa mengendalikan transisi antar negara dijelaskan dalam gambar 1 di atas. Transisi antar negara bagian juga diatur oleh parameter SecVals berikut;

  • Alamat IP Pialang MQTT Pertama. Dalam bentuk desimal bertitik AAA. BBB. CCC. DDD
  • Pelabuhan Pialang MQTT ke-2. Dalam bentuk bilangan bulat.
  • Koneksi Broker MQTT ke-3 mencoba dilakukan sebelum beralih dari mode STA ke mode AP. Dalam bentuk bilangan bulat.
  • SSID Jaringan WiFi ke-4. Dalam teks bentuk bebas.
  • Kata Sandi Jaringan WiFi ke-5. Dalam teks bentuk bebas.

Seperti disebutkan di atas jika perangkat IoT tidak dapat terhubung sebagai Stasiun WiFi ke jaringan WiFi yang SSID dan P/W-nya ditentukan dalam secvals.txt yang disimpan di Kartu SD, perangkat IoT akan menjadi Titik Akses. Setelah terhubung ke jalur akses ini, ia akan menampilkan 'Speech Synth Configuration Home Page' seperti yang ditunjukkan di atas pada Gambar 2 (dengan memasukkan 'SPEECHSVR.local' atau 192.168.4.1 ke dalam bilah alamat URL browser Anda). Halaman beranda ini memungkinkan konfigurasi ulang Perangkat Sintesis Ucapan Retro IoT melalui browser

Akses Jarak Jauh saat dalam keadaan AKTIF

Setelah terhubung ke MQTT Broker, Anda juga dapat mengkalibrasi ulang dan mengkonfigurasi ulang perangkat melalui publikasi topik MQTT. File calvals.txt memiliki akses R/W dan secvals.txt memiliki akses hanya tulis yang terbuka.

Juga seperti yang disebutkan di atas, sekali dalam mode aktif dimungkinkan untuk mengakses Speech Synth melalui antarmuka HTTP dengan memasukkan 'SPEECHSVR.local' atau 192.168.4.1 ke bilah alamat URL browser Anda. Antarmuka berbasis HTTP ini memungkinkan kontrol dasar dari Speech Synth. Gambar 3, 4 dan 5 menunjukkan halaman web yang tersedia.

Debug pengguna

Selama urutan boot, perangkat IoT yang dipimpin Sistem hijau di bagian belakang enklosur memberikan umpan balik debug berikut;

  • 1 Flash singkat: Tidak ada file Config yang terletak di SD Card (secvals.txt)
  • 2 Kilatan singkat: Perangkat IoT mencoba terhubung ke jaringan WiFi
  • Penerangan terus menerus: Perangkat IoT mencoba terhubung ke MQTT Broker
  • Mati: Perangkat aktif.

Fungsionalitas Perangkat Sintesis Ucapan Retro IoT dalam Status AKTIF

Setelah dalam keadaan AKTIF, ESP8266 memasuki loop terus-menerus memanggil fungsi-fungsi berikut; timer_update(), checkTemperatureAndHumidity() dan handleSpeech(). Hasil bersihnya telah dirancang untuk menghadirkan antarmuka HTTP atau MQTT kepada pengguna, melayani prosesor ucapan on-board dengan fonem sesuai permintaan, dan mempublikasikan nilai parametrik ambien lokal melalui MQTT.

Daftar lengkap semua langganan topik dan publikasi termasuk nilai muatan disertakan dalam kode sumber.

Langkah 7: Kalibrasi Sensor

Kalibrasi Sensor
Kalibrasi Sensor

Saat perangkat IoT menyala, sebagai bagian dari urutan boot, dua file bernama 'cavals1.txt' dan 'cavals2.txt' dibaca dari Kartu SD.

Isi file-file ini adalah konstanta kalibrasi seperti yang ditunjukkan di atas pada gambar 1.

  1. 'cavals1.txt': Digunakan oleh AM2320 eksternal
  2. 'cavals2.txt': Digunakan oleh DHT22 internal

Konstanta kalibrasi ini digunakan untuk menyesuaikan pembacaan yang diperoleh dari dua sensor agar sesuai dengan perangkat referensi. Ada satu nilai lebih lanjut yang mendefinisikan strategi pelaporan untuk setiap perangkat dan dijelaskan di bawah ini bersama dengan prosedur yang diikuti untuk mengkalibrasi sensor.

Strategi Pelaporan

Parameter ini menentukan bagaimana sensor jarak jauh melaporkan setiap perubahan parametrik sekitar secara lokal. Jika nilai 0 dipilih, sensor jarak jauh akan menerbitkan perubahan apa pun yang dilihatnya dalam suhu atau kelembaban setiap kali sensor masing-masing dibaca (kira-kira setiap 10 detik). Nilai lainnya akan menunda publikasi perubahan sebesar 1…60 menit. Memodifikasi parameter ini memungkinkan pengoptimalan lalu lintas jaringan MQTT. Perlu diperhatikan data suhu dan kelembaban dari DHT22 terbaca secara bergantian karena keterbatasan sensor.

Kalibrasi suhu

Untuk mengkalibrasi sensor suhu saya mengikuti proses yang sama seperti yang diuraikan di sini langkah 4, sekali lagi menggunakan hubungan y=mx+c sederhana. Saya menggunakan IoT Temperature, Humidity Sensor #1 sebagai perangkat referensi. Nilai dari sensor dalam derajat celcius.

Kalibrasi Kelembaban

Karena saya tidak memiliki sarana untuk merekam atau bahkan mengontrol kelembaban ambien lokal secara akurat, untuk mengkalibrasi sensor, saya menggunakan pendekatan serupa dengan langkah 4 di atas, sekali lagi menggunakan Sensor #1 sebagai referensi. Namun kata di atas, saya baru-baru ini menemukan artikel bagus di web yang menjelaskan cara mengkalibrasi sensor kelembaban. Saya mungkin akan mencoba pendekatan ini suatu saat nanti. Nilai dari sensor berada dalam %umur kelembaban relatif.

Langkah 8: Konvensi Penamaan Topik MQTT

Konvensi Penamaan Topik MQTT
Konvensi Penamaan Topik MQTT
Konvensi Penamaan Topik MQTT
Konvensi Penamaan Topik MQTT

Seperti yang disebutkan dalam Instructable sebelumnya (di sini) saya menetapkan konvensi penamaan topik yang diuraikan dalam gambar 1 di atas.

Yaitu, 'AccessMethod/DeviceType/WhichDevice/Action/SubDevice' Ini tidak sempurna tetapi memungkinkan filter yang berguna untuk diterapkan untuk melihat semua output sensor untuk topik parametrik tertentu sehingga memungkinkan perbandingan yang mudah seperti pada gambar 2 di atas dengan MQTTSpy.

Proyek ini adalah contoh pertama di mana satu perangkat berisi lebih dari satu sumber asal dari jenis publikasi yang sama. yaitu. Dua sensor suhu/kelembaban, dari sub-perangkat internal dan eksternal.

Ini juga mendukung pengelompokan fungsi logis yang dapat diperluas secara wajar dalam perangkat IoT yang diberikan.

Dalam mengimplementasikan topik-topik ini dalam perangkat lunak, saya menggunakan string topik berkode keras dengan pengidentifikasi numerik yang tetap dan tertanam untuk setiap perangkat sebagai lawan untuk menghasilkan topik secara dinamis pada waktu berjalan untuk menghemat RAM dan menjaga kinerja tetap tinggi.

Catatan: Jika Anda tidak yakin bagaimana menggunakan MQTTSpy, lihat di sini 'Menyiapkan Pialang MQTT. Bagian 2: IoT, Otomatisasi Rumah'

Langkah 9: Debug & Pencarian Kesalahan

Debug & Pencarian Kesalahan
Debug & Pencarian Kesalahan

Pada umumnya, untuk proyek hobi saya, jika memungkinkan, saya cenderung membangun prototipe perangkat keras yang representatif yang digunakan untuk mengembangkan perangkat lunak. Saya jarang mengalami masalah saat mengintegrasikan perangkat lunak ke dalam perangkat keras platform akhir.

Namun, pada kesempatan ini saya menemukan kesalahan intermiten yang aneh di mana beberapa fonem akan terdengar tetapi yang lain tidak.

Setelah beberapa debugging awal PCB Speech Synth menggunakan Arduino Uno untuk sumber fonem dan membuktikan bahwa papan ini berfungsi, saya mengambil cakupan ke jalur I2C antara PCB IoT dan PCB Speech Synth. Lihat Gambar 1 di atas.

Anda dapat dengan jelas melihat 'gigi gergaji'/tepi eksponensial ke sinyal I2C pada jejak.

Ini biasanya merupakan indikasi bahwa nilai pull up I2C terlalu tinggi yang mencegah tegangan saluran pulih cukup cepat di sirkuit saluran terbuka.

Sebagai 'menyelesaikan' saya memparalelkan dua resistor smt pull up R12 dan R13 dengan 10Ks untuk memberikan 4K7 dan tentu saja Speech Synth 'meledak menjadi hidup'

Jenis kegagalan ini adalah kebalikan dari apa yang dapat terjadi saat men-debug jenis proyek ini. Secara umum sebagian besar modul berbasis I2C yang dibeli dari Ebay cenderung datang dengan pull up 10K atau 4K7 yang sudah terpasang. Jika Anda bermaksud menggunakan >5 modul I2C, masing-masing dengan pull up 4K7, maka beban keseluruhannya adalah 940R yang akan terlalu besar untuk tahap keluaran master. Cara mengatasinya adalah dengan melepas solder semua kecuali satu set resistor pull up pada setiap modul. Lebih disukai yang secara fisik terjauh dari tuannya.

Tip yang berguna dan perlu diingat saat merancang elektronik dengan perangkat I2C.

Langkah 10: Menguji Desain

Image
Image
Menguji Desain
Menguji Desain
Menguji Desain
Menguji Desain

Pengujian dilakukan dengan menggunakan dua metodologi; Manual dan Otomatis.

Yang pertama, manual, dan umumnya digunakan selama pengembangan kode awal menggunakan MQTT Spy untuk menggunakan semua topik berlangganan yang tersedia dan memeriksa tanggapan yang diterbitkan (digambarkan dalam gambar 2 di atas). Karena ini adalah proses manual, ini bisa memakan waktu dan rentan terhadap kesalahan saat pengembangan kode berlangsung, meskipun eksekusi manual memungkinkan cakupan 100%.

MQTTSpy dipilih untuk pengujian manual karena merupakan alat yang sangat baik untuk memformat muatan yang diberikan dan mempublikasikannya ke topik apa pun dengan mudah. Ini juga menampilkan log waktu yang jelas yang sangat berguna untuk debugging (gambar 3 di atas).

Kedua, pendekatan otomatis diadopsi karena kode sumber menjadi lebih kompleks (>3700 baris). Peningkatan kompleksitas berarti siklus pengujian manual yang lebih lama dan pengujian yang lebih kompleks. Untuk meningkatkan keandalan, determinisme, dan kualitas pengujian, pengujian otomatis digunakan melalui eksekutif pengujian python (gambar 1). Lihat Langkah #10 dalam Instruksi ini tentang bagaimana pengujian otomatis diperkenalkan. Salinan lengkap dari tes otomatis yang digunakan dalam Instruksi ini tersedia di sini.

Sebuah video dari urutan pengujian otomatis dalam operasi ditunjukkan di atas. Urutan menjalankan langkah-langkah berikut;

  • Otomatis melalui MQTT

    • Hubungkan ke tulang punggung MQTT dan umumkan 'Siap Sistem'
    • Latihan LED Hijau
    • Latihan LED Merah
    • Latihan LED Biru
    • Periksa kerja Pot Digital
    • Bicara menggunakan Fonem
    • Bicara menggunakan Kode Hex untuk Fonem
    • Bicara menggunakan kode untuk memperbaiki frase
    • Sedikit kesenangan Dr Who dan Daleks.
  • Secara manual melalui

    • Latihan LED Biru
    • Latihan LED Merah
    • Ucapkan frasa tetap 'Steven Quinn', 'System Ready' dan 'Hello World'
    • Miliki server HTTP, sajikan

      • Detail tentang Speech Synth Chip
      • Detail MQTT

Langkah 11: Kesimpulan

Kesimpulan
Kesimpulan

Meskipun butuh banyak usaha dengan file dan latihan dll terutama untuk kisi-kisi speaker, saya pikir hasilnya secara estetika menyenangkan dan dikemas ke dalam wadah kecil yang bagus. Saya bisa membuatnya lebih kecil tetapi harus menggunakan satu PCB dan saya sengaja memecahnya menjadi dua sehingga saya dapat menggunakan kembali PCB di kemudian hari untuk proyek lain. Jadi ini adalah kompromi yang menyenangkan.

Perangkat lunaknya berfungsi dengan baik, perangkat IoT telah beroperasi dengan stabil selama beberapa waktu sekarang tanpa masalah.

Saya telah memantau suhu dan kelembaban melalui Grafana dan membandingkan dengan perangkat yang ditempatkan bersama. Kedua nilai ambient telah berkorelasi dengan baik, menyiratkan kalibrasi wajar (atau setidaknya mereka serupa).

Saya berhenti mengimplementasikan perintah Word ('WFD/SpeechTH/1/Word/Command') karena saya kehabisan waktu dan perlu melanjutkan. Saya mungkin akan mengunjungi kembali ini jika dan ketika saya mengatur database MySQL. Saat ini saya menggunakan InfluxDB.

Langkah 12: Referensi Digunakan

Sumber berikut digunakan untuk menyatukan Instruksi ini;Kode sumber untuk Perangkat Sintesis Pidato Retro IoT (ini berisi salinan semuanya)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Oleh: Nick O'Leary
  • Tujuan: Memungkinkan perangkat untuk mempublikasikan atau berlangganan topik MQTT dengan Broker tertentu
  • Dari:

DHT.h

  • Oleh: Adafruit
  • Tujuan: Perpustakaan Arduino untuk DHT11DHT22, dll. Sensor Suhu & Kelembaban
  • Dari:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Oleh: Adafruit
  • Tujuan: Perpustakaan Arduino untuk AM2320, dll. Sensor Suhu & Kelembaban
  • Dari:

MCP4561_DIGI_POT.h

  • Oleh: Steve Quinn
  • Tujuan: Perpustakaan Arduino untuk potensiometer digital MCP4561
  • Dari:

Adafruit_MCP23017.h

  • Oleh: Steve Quinn
  • Tujuan: Perpustakaan Arduino untuk MCP23017 I2C Port Expander. Ini adalah garpu GITHub dari Adafruit-MCP23017-Arduino-Library, oleh Adafruit.
  • Dari:

Untuk kesenangan

https://haynes.com/en-gb/

Pembuatan PCB

https://jlcpcb.com/

Memasang Perpustakaan Arduino Tambahan

https://www.arduino.cc/en/Guide/Libraries

Cara Memeriksa dan Mengkalibrasi Sensor Kelembaban

https://www.allaboutcircuits.com/projects/how-to-check-and-calibrate-a-humidity-sensor/?utm_source=All+About+Circuits+Members&utm_campaign=ffeee38e54-EMAIL_CAMPAIGN_2017_12_06&utm_medium=email&utm_29154b_56ffe_29154b-56ffe_29154b-56ffe_29154b-56ffe_29154b-56ffe_291 /

Lembar Data SP0256-AL2

https://www.futurebots.com/spo256.pdf

Toko Keripik Pidato

https://www.speechchips.com/shop/

Kontes Arduino 2019
Kontes Arduino 2019
Kontes Arduino 2019
Kontes Arduino 2019

Runner Up di Kontes Arduino 2019

Direkomendasikan: