İçindekiler:

Retro Konuşma Sentezi. Bölüm: 12 IoT, Ev Otomasyonu: 12 Adım (Resimlerle)
Retro Konuşma Sentezi. Bölüm: 12 IoT, Ev Otomasyonu: 12 Adım (Resimlerle)

Video: Retro Konuşma Sentezi. Bölüm: 12 IoT, Ev Otomasyonu: 12 Adım (Resimlerle)

Video: Retro Konuşma Sentezi. Bölüm: 12 IoT, Ev Otomasyonu: 12 Adım (Resimlerle)
Video: Her Şeyi Unut! - Kuantum Fiziği: Başlangıç #12 2024, Kasım
Anonim
Image
Image
Retro Konuşma Sentezi. Bölüm: 12 IoT, Ev Otomasyonu
Retro Konuşma Sentezi. Bölüm: 12 IoT, Ev Otomasyonu

Bu makale, bir IoT Retro Konuşma Sentez Cihazının nasıl oluşturulacağını ve yerel bir ortamda başarılı bir dağıtım sağlamak için gerekli tüm yazılım işlevselliğini içeren mevcut bir ev otomasyon sistemine nasıl entegre edileceğini belgeleyen ev otomasyonu Talimatları serisinin 12.sidir.

Resim 1, tamamlanmış IoT konuşma sentez cihazını gösterir ve Resim 2, prototipte kullanılan ve nihai ürüne gitmek için form faktörü azaltılmış tüm bileşen parçalarını gösterir.

Video, cihazı çalışırken gösterir (test sırasında).

Tanıtım

Yukarıda belirtildiği gibi, bu Eğitilebilirlik, bir IoT Retro Konuşma Sentezi Cihazının nasıl yapıldığını ayrıntılarıyla anlatır ve General Instruments SP0256-AL2'yi temel alır.

Birincil amacı, bir IoT ağına 'eski okul' ses sentezi eklemektir. Neden 'eski okul' diye sorabilirsiniz? Şey, çünkü bu şeylerin ilk üretildiği 80'lerdeydim ve BBC Micro'ma bir arayüz bağladım, bu yüzden benim için SP0256-AL2'yi çevreleyen bir dereceye kadar nostalji var.

Yenilikçi bir Amazon yankısının veya Siri'nin kulağa hoş gelen tonlarını dinlemektense, bu Dalek sesiyle dünyada ne söylendiğini anlamaya çalışmanın zorluğunu tercih ederim. Sana sorduğum zorluk nerede?

Oh, ayrıca etrafta yatan 'SP0256-AL2' IC'lerinden oluşan bir 'çanta yükü' olduğundan bahsetmiyorum bile.

Cihaz ayrıca yerel sıcaklık ve nemi de okuyabiliyor, bu nedenle mevcut IoT altyapımın ortam enstrümantasyonunu, buradan alınan yeniden kullanılan kod üzerine inşa ederek, bu seride ev otomasyonu (HA) hakkında ayrıntılı olarak açıklanan MQTT/OpenHAB tabanlı IoT ağına bağlanarak daha da genişletiyor.

Kalbinde, MQTT iletişiminden ve tüm sistem işlevlerinin (SD kart erişimi, led kontrolü, sıcaklık/nem algılama, ses kontrolü, konuşma sentezi) kontrolünden sorumlu olan bir ESP8266-07 vardır. Cihaz, bir bilgisayarda depolanan metin dosyaları aracılığıyla tamamen yapılandırılabilir. yerel SD kart, kalibrasyon ve ağ güvenlik parametreleri de uzak MQTT yayınları aracılığıyla programlanabilir.

Hangi parçalara ihtiyacım var?

Malzeme listesine buradan bakın

Hangi yazılıma ihtiyacım var?

  • Arduino IDE 1.6.9,
  • Arduino IDE, ESP8266-07'yi programlamak için yapılandırılmıştır (bununla aynı). Ardından IDE'yi buradaki yazılım taslağında verilen ayrıntılı açıklamada belirtildiği gibi yapılandırın,
  • Python v3.5.2, otomatik test özelliğini kullanmak istiyorsanız, ayrıntılar burada

Hangi araçlara ihtiyacım var?

  • Mikroskop en az x3 (SMT lehimleme için),
  • Molex konnektör sıkma aleti (JST konnektörler için),
  • SMD havya (sıvı akı kalemi ve özlü lehim ile),
  • Tornavidalar (çeşitli),
  • Isı tabancası,
  • Matkaplar (çeşitli),
  • Havşa el aleti,
  • Dosyalar (çeşitli),
  • Dremel (çeşitli bitler),
  • Sağlam mengene (siyah ve katlı bir iş arkadaşı gibi küçük ve büyük),
  • neşter,
  • Sürmeli kumpaslar (fabrikasyonu ölçmek için kullanılır ve PCB bileşenlerini boyutlandırmak için kullanışlıdır),
  • Anahtarlar ve Somun sürücüleri (çeşitli),
  • Güçlü cımbız (SMT lehimleme için),
  • genç Demir testeresi,
  • Matkap (çeşitli matkap uçları ile),
  • İnce pense (sivri uçlu ve sivri uçlu),
  • gömme kesiciler,
  • Sesli süreklilik kontrolüne sahip DMM,
  • Çift kanallı dijital skop (hata ayıklama sinyalleri için kullanışlıdır)

Hangi becerilere ihtiyacım var?

  • Çok sabır,
  • Çok fazla el becerisi ve mükemmel el/göz koordinasyonu,
  • Mükemmel lehimleme becerileri,
  • Mükemmel fabrikasyon becerileri,
  • 3 boyutlu görselleştirme yeteneği,
  • 'C' ile biraz yazılım geliştirme bilgisi (kaynak kodunu anlamak istiyorsanız),
  • Biraz Python bilgisi (otomatik testi kullanmak istiyorsanız komut dosyalarının nasıl kurulacağı ve çalıştırılacağı),
  • Arduino ve IDE bilgisine sahip,
  • İyi derecede elektronik bilgisine sahip,
  • Ev ağınız hakkında biraz anlayış.

İşlenmiş konular

  • Kullanım kılavuzu
  • Devreye Genel Bakış
  • PCB İmalatı ve Montajı
  • Yapılışı
  • Yazılım Sistemine Genel Bakış
  • Yazılıma Genel Bakış
  • Sensör Kalibrasyonu
  • MQTT Konu Adlandırma Kuralı
  • Hata Ayıklama ve Arıza Bulma
  • Tasarımın Test Edilmesi
  • Çözüm
  • Kullanılan Referanslar

Seri Bağlantıları Bölüm 11: IoT Masaüstü Konsolu. Bölüm: 11 IoT, Ev Otomasyonu

Adım 1: Kullanım Kılavuzu

Kullanım kılavuzu
Kullanım kılavuzu
Kullanım kılavuzu
Kullanım kılavuzu
Kullanım kılavuzu
Kullanım kılavuzu

Yukarıdaki Resim 1, Retro Konuşma Sentezleyicinin ön tarafını ve resim 2'nin arka tarafını göstermektedir.

Muhafaza Önü

  1. Hoparlör Izgarası
  2. 3.5mm Kulaklık Jakı: 3.5mm jak takıldığında ana hoparlör devre dışı bırakılır.
  3. Kırmızı LED: Bu LED, bir HTTP isteği aracılığıyla konuşma başlatıldığında bir sözcük söylenirken yanar.
  4. Mavi LED: Bu LED, bir MQTT IoT talebi aracılığıyla konuşma başlatıldığında bir kelime konuşulurken yanar.

Muhafaza Arka

  1. Sıfırlama Düğmesi: ESP8266-07 IoT cihazını donanımdan sıfırlamak için kullanılır.
  2. Flaş Düğmesi: Sıfırlama Düğmesi ile birlikte kullanıldığında ESP8266-07'nin yeniden yanıp sönmesine izin verir.
  3. WiFi Anten fişi (SMA Fişi): Kapak alüminyum olduğundan en az RF yol zayıflaması veren harici WiFi Anteni için.
  4. Harici Programlama Bağlantı Noktası: Yeniden programlama amacıyla ESP8266-07'ye erişim sağlamak için muhafazayı sökme ihtiyacını ortadan kaldırmak için. ESP8266-07'nin programlama pinleri harici programlama portuna getirildi. Resim 3, programlama adaptörüdür.
  5. Yeşil LED: Bu, IoT sistem led'idir ve cihazın tanılama durumunu, açılışta ve çalışırken göstermek için kullanılır.
  6. Dış Sıcaklık/Nem Sensörü (AM2320)
  7. SD Kart yuvası: Bu, web sunucusu sayfalarıyla birlikte tüm yapılandırma/güvenlik verilerini tutar.
  8. 2,1 mm Besleme jakı 6vdc

Adım 2: Devreye Genel Bakış

Devreye Genel Bakış
Devreye Genel Bakış
Devreye Genel Bakış
Devreye Genel Bakış

Retro Speech Synth cihazı iki PCB içerir;

  • RetroSpeechSynthIoTBoard: Bu, genel, yeniden kullanılabilir bir ESP8266-07/12/12E/13 PCB'dir.
  • RetroSpeechSynthBoard: Bu, genel bir SP0256-AL2 PCB'dir

Retro Konuşma Synth IoT Kartı

Bu kart, bir ESP8266-07/12/12E/13 veya bir ESP8266 taşıyıcı PCB barındıran 0.1 adımlı soketlerin doğrudan lehimlenmesine izin verir.

Kart, G/Ç'sini bir I2C bağlantısı üzerinden genişletmek üzere tasarlanmıştır ve Q1, Q2, R8-13 aracılığıyla 3v3 veya 5v besleme seviyelerini destekleyebilir.

Panoya bağlantı, J2 ve J4, 8 yollu bir DIL IDC şeridi veya 5 yollu JST/Molex olmak üzere iki başlıktan biri aracılığıyla sağlanır.

U2 ve U3, gemi besleme yönetmeliğinde 3.3v ve 5v sağlar. Alternatif olarak, daha yüksek akım kapasitesi gerekiyorsa, harici seri şönt regülatörler sırasıyla J10 ve J11 konektörleri aracılığıyla bağlanabilir.

Konektörler J1 ve J3, SPI üzerinden harici SD kart desteği sunar. J1, 8 yollu bir Molex için tasarlanmıştır ve J3, 3v3 veya 5v destekli hazır SD kart PCB için pin uyumluluğu desteği için doğrudan pin içerir.

Retro Konuşma Synth Kurulu

Bu kartın kontrolü, J1, J5 veya J6, 4 yollu JST/Molex, 8 yollu DIL IDC veya 8 yollu IDC şerit konektör aracılığıyla I2C 5v uyumlu bir bağlantı üzerinden yapılır.

U2 MPC23017, SP0256-AL2 ve LED'ler D1 (Yeşil), D2 (Kırmızı) ve D3 (Mavi) ile U3'e paralel arabirime I2C sağlar. Speech Synth'in çıkışı, analog pot RV1 veya dijital pot U1 MCP4561 aracılığıyla ses amplifikatörü CR1 TBA820M'ye beslenir.

Digital Pot U1 ayrıca 5v uyumlu I2C ile kontrol edilir.

Not: ESP8266-07 cihazı, alüminyum muhafazaya harici bir WiFi Anteninin eklenmesine izin veren entegre bir IPX RF konektörüne sahip olduğu için seçilmiştir.

Adım 3: PCB İmalatı ve Montajı

PCB İmalatı ve Montajı
PCB İmalatı ve Montajı
PCB İmalatı ve Montajı
PCB İmalatı ve Montajı
PCB İmalatı ve Montajı
PCB İmalatı ve Montajı
PCB İmalatı ve Montajı
PCB İmalatı ve Montajı

Resim 1 ve 2, alüminyum muhafaza alt tabakasında bulunan tamamlanmış ve kablolu PCB alt montajlarını göstermektedir.

İki PCB, JLCPCB tarafından üretilen Kicad v4.0.7 kullanılarak tasarlandı ve benim tarafımdan monte edildi ve yukarıda Resimler 3 ila 13 arasında gösterildi.

Adım 4: Üretim

Yapılışı
Yapılışı
Yapılışı
Yapılışı
Yapılışı
Yapılışı

Resim 1, son montajdan önce tüm prefabrik parçaların Haynes Manual tarzı yerleşimini göstermektedir.

Resimler 2 … 5, muhafazanın imalatı sırasında minimum boşluklarla çeşitli çekimleri göstermektedir.

Adım 5: Yazılım Sistemine Genel Bakış

Yazılım Sistemine Genel Bakış
Yazılım Sistemine Genel Bakış
Yazılım Sistemine Genel Bakış
Yazılım Sistemine Genel Bakış

Bu IoT Retro Konuşma Sentezi Cihazı, yukarıdaki resim 1'de gösterildiği gibi altı temel yazılım bileşeni içerir.

Hafıza kartı

Bu, harici SD SPI Flash Dosyalama Sistemidir ve aşağıdaki bilgileri tutmak için kullanılır (yukarıdaki resim 2'ye bakın);

  • Simgeler ve 'Speech Synth Yapılandırma Ana Sayfası' index.htm: IoT WiFi ağınıza bağlanamadığında (genellikle yanlış güvenlik bilgileri veya ilk kullanım nedeniyle) IoT cihazı tarafından sunulur ve kullanıcıya bir araç sağlar yeni SD içeriğini yeniden flaşlamaya gerek kalmadan sensörleri uzaktan yapılandırma. Ayrıca index1.htm, mqtt.htm ve sp0256.htm'yi de barındırır, bunlar bir web tarayıcısı üzerinden erişilebilen yerel olarak sunulan web sayfalarıdır ve konuşma sentezleyicisinin sınırlı kontrolüne izin verir HTTP üzerinden.
  • Güvenlik Bilgileri: Bu, IoT cihazı tarafından IoT WiFi ağınıza ve MQTT Broker'a bağlanmak için açılışta kullanılan bilgileri tutar. 'Speech Synth Configuration Ana Sayfası' aracılığıyla gönderilen bilgiler bu dosyaya ('secvals.txt') yazılır.
  • Kalibrasyon Bilgileri: Dosyalarda yer alan bilgiler ('calvals1.txt' ve 'calvals2.txt') gerekli olması halinde yerleşik sıcaklık/nem sensörlerini kalibre etmek için kullanılır. Kalibrasyon sabitleri, bir MQTT aracısından gelen MQTT komutları aracılığıyla veya SD kartı yeniden yanıp sönerek IoT cihazına yazılabilir. 'calvals1.txt' AM2320 sensörüyle ve 'calvals2.txt' DHT22 ile ilgilidir.
  • Kullanıcı tarafından yapılandırılabilen sistem değerleri: Kullanıcı tarafından seçilen bu dosyada ('confvals.txt') bulunan bilgiler, ilk dijital ses seviyesi, MQTT broker aboneliğinde otomatik 'sistem hazır' duyurusu vb. gibi belirli sistem yanıtlarını kontrol eder.

mDNS Sunucusu

Bu işlevsellik, IoT cihazı WiFi istasyonu olarak WiFi ağınıza bağlanamadığında ve bunun yerine yerel WiFi yönlendiriciye benzer bir WiFi erişim noktası haline geldiğinde çağrılır. Böyle bir yönlendirici olması durumunda, tipik olarak 192.168.1.1 gibi bir IP Adresini (genellikle kutuya yapıştırılmış bir etikette basılıdır) doğrudan tarayıcınızın URL çubuğuna girerek ona bağlanırsınız ve bunun üzerine girmek için bir oturum açma sayfası alırsınız. cihazı yapılandırmanıza izin vermek için kullanıcı adı ve şifre. AP modunda (Erişim Noktası modu) ESP8266-07 için, cihaz varsayılan olarak 192.168.4.1 IP adresini alır, ancak mDNS sunucusu çalışırken, tarayıcı URL çubuğuna yalnızca insan dostu 'SPEECHSVR.local' adını girmeniz gerekir. 'Speech Synth Yapılandırma Ana Sayfası'na bakın.

MQTT İstemcisi

MQTT istemcisi, aşağıdakiler için gerekli tüm işlevleri sağlar; IoT ağ MQTT aracınıza bağlanın, seçtiğiniz konulara abone olun ve belirli bir konuya yükleri yayınlayın. Kısacası, IoT temel işlevselliğini sağlar.

HTTP Web Sunucusu

Bu web sunucusunun iki amacı vardır;

  1. IoT cihazı, SD Kartta tutulan Güvenlik Bilgileri dosyasında SSID, P/W vb. tanımlanan WiFi ağına bağlanamıyorsa, cihaz bir Erişim Noktası olur. Erişim Noktası tarafından sağlanan WiFi ağına bağlandıktan sonra, bir HTTP Web Sunucusunun varlığı, aygıta doğrudan bağlanmanıza ve bir HTTP Web Tarayıcısı kullanarak yapılandırmasını değiştirmenize olanak tanır, amacı 'Speech Synth Yapılandırmasını' sunmaktır. SD Kartta da tutulan Ana Sayfa' web sayfası.
  2. IoT Retro Konuşma Sentezi Cihazı WiFi ağına ve MQTT aracısına bağlandığında, erişilirse, HTTP Web Sunucusu otomatik olarak bir HTTP web sayfası sunacak ve IoT cihazının bir dizi sabit ifadeyi söylemesi için sınırlı kontrole ve konuşma becerisine izin verecektir. iki ön Kırmızı ve Mavi LED'i çevirin.

WiFi İstasyonu

Bu işlevsellik, IoT cihazına Güvenlik Bilgileri dosyasındaki parametreleri kullanarak yerel bir WiFi ağına bağlanma yeteneği verir, bu olmadan IoT cihazınız MQTT Broker'a abone olamaz/yayınlayamaz.

WiFi Erişim Noktası

WiFi Erişim Noktası olma yeteneği, IoT cihazının bir WiFi istasyonu ve bir tarayıcı (Apple iPad'deki Safari gibi) aracılığıyla ona bağlanmanıza ve yapılandırma değişiklikleri yapmanıza izin verdiği bir araçtır. Bu erişim noktası, bir SSID = "SPEECHSYN" + IoT cihazının MAC adresinin son 6 hanesini yayınlar. Bu kapalı ağın parolası hayali olarak 'PAROLA' olarak adlandırılmıştır.

6. Adım: Yazılıma Genel Bakış

Yazılıma Genel Bakış
Yazılıma Genel Bakış
Yazılıma Genel Bakış
Yazılıma Genel Bakış
Yazılıma Genel Bakış
Yazılıma Genel Bakış

önsöz

Bu kaynak kodunu başarılı bir şekilde derlemek için, aşağıda Adım 12, Kullanılan Referanslar'da özetlenen kodun ve kitaplıkların yerel bir kopyasına ihtiyacınız olacak. Arduino kütüphanesini nasıl kuracağınızdan emin değilseniz buraya gidin.

genel bakış

Yazılım, yukarıdaki resim 1'de gösterildiği gibi durum makinesini kullanır (burada GitHub deposundaki kaynağın tam kopyası). Aşağıda özetlendiği gibi 5 ana durum vardır;

  • İÇİNDE

    Bu başlatma durumu, güç açıldıktan sonra girilen ilk durumdur

  • NOCONFIG

    Bu duruma, güç açıldıktan sonra geçersiz veya eksik bir secvals.txt dosyası algılanırsa girilir. Bu durum sırasında Yapılandırma Sayfası görünür

  • BEKLEMEDE NW

    Bu durum geçicidir, WiFi ağ bağlantısı yokken girilir

  • BEKLEMEDE MQTT

    Bu durum geçicidir, bir WiFi ağ bağlantısı yapıldıktan sonra ve o ağda bir MQTT aracısına bağlantı yokken girilir

  • AKTİF

    Bu, hem WiFi ağ bağlantısı hem de MQTT Broker bağlantısı kurulduğunda girilen normal çalışma durumudur. Bu durum sırasında, IoT Retro Konuşma Sentez Cihazındaki sıcaklık, ısı indeksi ve nem düzenli olarak MQTT Broker'a yayınlanır. Bu durumda Speech Synth Ana Sayfası görünür

Durumlar arasındaki geçişleri kontrol eden olaylar, yukarıdaki resim 1'de açıklanmıştır. Durumlar arasındaki geçişler de aşağıdaki SecVals parametreleri tarafından yönetilir;

  • 1. MQTT Aracısı IP Adresi. Noktalı ondalık biçimde AAA. BBB. CCC. DDD
  • 2. MQTT Broker Limanı. Tamsayı biçiminde.
  • STA modundan AP moduna geçmeden önce 3. MQTT Broker bağlantısı yapılmaya çalışılıyor. Tamsayı biçiminde.
  • 4. WiFi Ağ SSID'si. Serbest biçimli metinde.
  • 5. WiFi Ağ Şifresi. Serbest biçimli metinde.

Yukarıda belirtildiği gibi, IoT cihazı, SSID ve P/W'si SD Kartta tutulan secvals.txt dosyasında tanımlanan WiFi ağına bir WiFi Station olarak bağlanamıyorsa, IoT cihazı bir Erişim Noktası haline gelecektir. Bu erişim noktasına bağlandıktan sonra, yukarıda Resim 2'de gösterildiği gibi 'Speech Synth Yapılandırma Ana Sayfası'nı sunacaktır (tarayıcınızın URL adres çubuğuna 'SPEECHSVR.local' veya 192.168.4.1 girerek). Bu ana sayfa, IoT Retro Konuşma Sentezi Cihazının bir HTTP tarayıcısı aracılığıyla yeniden yapılandırılmasına olanak tanır.

AKTİF durumdayken Uzaktan Erişim

MQTT Broker'a bağlandıktan sonra, MQTT konu yayınları aracılığıyla cihazı hem yeniden kalibre etmek hem de yeniden yapılandırmak da mümkündür. calvals.txt dosyasının R/W erişimi vardır ve secvals.txt dosyasının yalnızca açıkta yazma erişimi vardır.

Ayrıca yukarıda bahsedildiği gibi, aktif moddayken, tarayıcınızın URL adres çubuğuna 'SPEECHSVR.local' veya 192.168.4.1 girerek Speech Synth'e bir HTTP arayüzü üzerinden erişmek mümkündür. Bu HTTP tabanlı arayüz, Speech Synth'in temel kontrolünü sağlar. Resimler 3, 4 ve 5 mevcut web sayfalarını göstermektedir.

Kullanıcı hata ayıklama

Önyükleme sırası sırasında, muhafazanın arkasındaki IoT cihazı yeşil Sistem led'i aşağıdaki hata ayıklama geri bildirimini verir;

  • 1 Kısa yanıp sönme: SD Kartta Yapılandırma dosyası yok (secvals.txt)
  • 2 Kısa yanıp sönme: IoT cihazı WiFi ağına bağlanmaya çalışıyor
  • Sürekli aydınlatma: IoT cihazı MQTT Broker'a bağlanmaya çalışıyor
  • Kapalı: Cihaz etkin.

AKTİF Durumda IoT Retro Konuşma Sentezi Cihazı İşlevselliği

ETKİN durumdayken, ESP8266 aşağıdaki işlevleri çağıran sürekli bir döngüye girer; timer_update(), checkTemperatureAndHumidity() ve handleSpeech(). Net sonucu, kullanıcıya bir HTTP veya MQTT arayüzü sunmak, yerleşik konuşma işlemcisine isteğe bağlı ses birimleri ile sorunsuz bir şekilde hizmet vermek ve MQTT üzerinden yerel ortam parametrik değerlerini yayınlamak için tasarlanmıştır.

Kaynak kodunda, yük değerleri de dahil olmak üzere tüm konu aboneliklerinin ve yayınlarının kapsamlı bir listesi bulunur.

Adım 7: Sensör Kalibrasyonu

Sensör Kalibrasyonu
Sensör Kalibrasyonu

IoT cihazı açıldığında, önyükleme dizisinin bir parçası olarak 'cavals1.txt' ve 'cavals2.txt' adlı iki dosya SD Karttan okunur.

Bu dosyaların içeriği, yukarıda resim 1'de gösterildiği gibi kalibrasyon sabitleridir.

  1. 'cavals1.txt': Harici AM2320 tarafından kullanılır
  2. 'cavals2.txt': Dahili DHT22 tarafından kullanılır

Bu kalibrasyon sabitleri, iki sensörden alınan okumaları bir referans cihazı ile aynı hizaya getirmek için ayarlamak için kullanılır. Her cihaz için bir raporlama stratejisi tanımlayan ve sensörleri kalibre etmek için izlenen prosedürle birlikte aşağıda açıklanan başka bir değer daha vardır.

Raporlama Stratejisi

Bu parametre, uzak sensörün kendi yerel ortam parametrik değişikliklerini nasıl raporladığını belirler. 0 değeri seçilirse, uzak sensör, ilgili sensör her okunduğunda (yaklaşık her 10 saniyede bir) sıcaklık veya nemde gördüğü herhangi bir değişikliği yayınlayacaktır. Başka herhangi bir değer, değişikliğin yayınlanmasını 1…60 dakika geciktirecektir. Bu parametrenin değiştirilmesi, MQTT ağ trafiğinin optimizasyonuna izin verir. Sensörün sınırlamaları nedeniyle DHT22'den gelen sıcaklık ve nem verilerinin dönüşümlü olarak okunduğuna dikkat edilmelidir.

Sıcaklık kalibrasyonu

Sıcaklık sensörünü kalibre etmek için, yine basit bir y=mx+c ilişkisi kullanarak, burada 4. adımda özetlenen işlemin aynısını izledim. Referans cihaz olarak IoT Sıcaklık, Nem Sensörü #1 kullandım. Sensörden gelen değerler santigrat derece cinsindendir.

Nem Kalibrasyonu

Yerel ortam nemini doğru bir şekilde kaydetmek ve hatta kontrol etmek için hiçbir aracım olmadığı için, sensörü kalibre etmek için yukarıdaki adım 4'e benzer bir yaklaşım kullandım, yine Sensör #1'i referans olarak kullandım. Bununla birlikte, yukarıda belirtilenler, son zamanlarda web'de nem sensörlerinin nasıl kalibre edileceğini açıklayan mükemmel bir makale buldum. Bu yaklaşımı gelecekte bir ara deneyebilirim. Sensörden alınan değerler, bağıl nemin yaş yüzdesidir.

Adım 8: MQTT Konu Adlandırma Kuralı

MQTT Konu Adlandırma Kuralı
MQTT Konu Adlandırma Kuralı
MQTT Konu Adlandırma Kuralı
MQTT Konu Adlandırma Kuralı

Daha önceki bir Eğitilebilir Dosyada (burada) belirtildiği gibi, yukarıdaki resim 1'de özetlenen konu adlandırma kuralına karar verdim.

Yani, 'ErişimYöntemi/AygıtTürü/HangiAygıt/Eylem/Alt Aygıt' Mükemmel değildir, ancak belirli bir parametrik konu için tüm sensör çıkışlarını görmek için kullanışlı filtrelerin uygulanmasına izin verir, böylece MQTTSpy ile yukarıdaki resim 2'deki gibi kolay karşılaştırmaya izin verir.

Bu proje, tek bir cihazın aynı türde yayının birden fazla kaynak kaynağını içerdiği ilk örnektir. yani. Dahili ve harici alt cihazlardan iki sıcaklık/nem sensörü.

Ayrıca, belirli bir IoT cihazı içinde makul ölçüde genişletilebilir mantıksal işlevsellik gruplarını da destekler.

Bu konuları yazılımda uygularken, RAM'den tasarruf etmek ve performansı yüksek tutmak için konuları çalışma zamanında dinamik olarak oluşturmak yerine, her cihaz için sabit, gömülü sayısal tanımlayıcılara sahip sabit kodlanmış konu dizeleri kullandım.

Not: MQTTSpy'ı nasıl kullanacağınızdan emin değilseniz, buraya bakın 'Bir MQTT Aracısı Kurma. Bölüm 2: IoT, Ev Otomasyonu'

9. Adım: Hata Ayıklama ve Arıza Bulma

Hata Ayıklama ve Arıza Bulma
Hata Ayıklama ve Arıza Bulma

Genel olarak, hobi projelerim için, mümkün olduğunda, yazılımın geliştirildiği temsili bir donanım prototipi oluşturma eğilimindeyim, yazılımı nihai platform donanımına entegre ederken nadiren herhangi bir sorunla karşılaşıyorum.

Ancak, bu vesileyle, bazı fonemlerin duyulduğu, ancak diğerlerinin çıkmadığı garip bir aralıklı hatayla karşılaştım.

Ses birimlerini kaynaklamak ve bu kartın çalıştığını kanıtlamak için bir Arduino Uno kullanarak Speech Synth PCB'nin ilk hata ayıklamasından sonra, IoT PCB ve Speech Synth PCB arasındaki I2C hatlarına bir kapsam aldım. Yukarıdaki Resim 1'e bakın.

İzlerde I2C sinyalinin 'testere dişi'/üssel kenarını açıkça görebilirsiniz.

Bu genellikle, I2C yukarı çekme değerlerinin, açık bir tahliye devresinde hat voltajının yeterince hızlı iyileşmesini önleyen çok yüksek olduğunun bir göstergesidir.

Bir 'çalışma' olarak, 4K7'yi vermek için iki smt çekme direnci R12 ve R13'ü 10K'larla paralel hale getirdim ve Speech Synth'in 'hayata patlaması' için yeterince emin oldum.

Bu tür bir başarısızlık, bu tür projelerde hata ayıklarken olabileceklerin tam tersidir. Genel olarak, Ebay'den satın alınan I2C tabanlı modüllerin çoğu, halihazırda takılı olan 10K veya 4K7 pull-up'larla gelme eğilimindedir. Her biri 4K7 pull-up'lı >5 I2C modülü kullanmayı düşünüyorsanız, toplam yük 940R'dir ve bu, master'ın çıkış aşaması için çok büyük olacaktır. Düzeltme, her modüldeki bir set çekme dirençleri dışında hepsini lehimlemek olacaktır. Tercihen ustadan fiziksel olarak en uzak olanı.

I2C cihazlarıyla elektronik tasarlarken faydalı bir ipucu ve akılda tutulmaya değer.

Adım 10: Tasarımın Test Edilmesi

Image
Image
Tasarımın Test Edilmesi
Tasarımın Test Edilmesi
Tasarımın Test Edilmesi
Tasarımın Test Edilmesi

Testler iki metodoloji kullanılarak gerçekleştirildi; Manuel ve Otomatik.

İlk, kılavuz ve genellikle ilk kod geliştirme sırasında kullanılan, mevcut tüm abone olunan konuları uygulamak ve yayınlanan yanıtları kontrol etmek için MQTT Spy'ı kullanmaktı (yukarıdaki resim 2'de gösterilmiştir). Bu manuel bir işlem olduğundan, manuel yürütme %100 kapsama sağlasa da, kod geliştirme ilerledikçe zaman alıcı ve hatalara açık olabilir.

Manuel test için MQTTSpy seçildi çünkü verilen bir yükü elle biçimlendirmek ve onu herhangi bir konuda kolaylıkla yayınlamak için mükemmel bir araç. Ayrıca hata ayıklama için çok yararlı olan açık, zaman damgalı bir günlük görüntüler (yukarıdaki resim 3).

Kaynak kodu daha karmaşık hale geldikçe (>3700 satır) ikinci, otomatik yaklaşım benimsendi. Artan karmaşıklık, daha uzun manuel test döngüleri ve daha karmaşık testler anlamına gelir. Testlerin güvenilirliğini, belirleyiciliğini ve kalitesini artırmak için bir python test yöneticisi aracılığıyla otomatik test kullanıldı (resim 1). Otomatik testin nasıl başlatıldığına ilişkin bu Eğitilebilir Tablodaki Adım #10'a bakın. Bu Talimatta kullanılan otomatik testlerin tam bir kopyası burada mevcuttur.

Çalışmakta olan otomatik test dizisinin bir videosu yukarıda gösterilmektedir. Sıra aşağıdaki adımları yürütür;

  • MQTT ile otomatikleştirildi

    • MQTT omurgasına bağlanın ve 'Sistem Hazır'ı duyurun
    • Egzersiz Yeşil LED
    • Egzersiz Kırmızı LED
    • Egzersiz Mavi LED'i
    • Dijital Pot çalışmalarını kontrol edin
    • Fonemleri kullanarak konuşun
    • Fonemler için Hex Kodlarını kullanarak konuşun
    • Düzeltme ifadeleri için kodları kullanarak konuşun
    • Biraz Dr Who ve Dalekler eğlencesi.
  • HTTP/Chrome aracılığıyla manuel olarak

    • Egzersiz Mavi LED'i
    • Egzersiz Kırmızı LED
    • 'Steven Quinn', 'Sisteme Hazır' ve 'Merhaba Dünya' gibi sabit ifadeler söyleyin
    • HTTP sunucusuna sahip olun, hizmet verin

      • Speech Synth Chip ile ilgili ayrıntılar
      • MQTT Ayrıntıları

Adım 11: Sonuç

Çözüm
Çözüm

Özellikle hoparlör ızgarası için eğeler ve matkaplar vb. ile çok çaba sarf etmesine rağmen, sonucun estetik açıdan hoş olduğunu ve güzel, küçük bir muhafaza içine yerleştirildiğini düşünüyorum. Daha küçük yapabilirdim ama bir PCB'ye gitmesi gerekiyordu ve PCB'leri daha sonraki bir tarihte başka projeler için yeniden kullanabilmek için kasıtlı olarak ikiye böldüm. Bu yüzden mutlu bir uzlaşma.

Yazılım iyi çalışıyor, IoT cihazı oldukça uzun bir süredir sorunsuz bir şekilde çalışıyor.

Grafana aracılığıyla sıcaklık ve nemi izliyor ve aynı yerde bulunan bir cihazla karşılaştırıyorum. İki ortam değeri, kalibrasyonun makul olduğunu (veya en azından benzer olduklarını) ima ederek iyi bir korelasyon gösteriyor.

Word komutunu ('WFD/SpeechTH/1/Word/Command') uygulamakta yetersiz kaldım çünkü zamanım tükendi ve devam etmem gerekiyordu. Bir MySQL veritabanı kurduğumda bunu tekrar ziyaret edebilirim. Şu anda InfluxDB kullanıyorum.

Adım 12: Kullanılan Referanslar

Bu Eğitilebilir Dosyayı bir araya getirmek için aşağıdaki kaynaklar kullanıldı; IoT Retro Konuşma Sentez Cihazı için kaynak kodu (bu, her şeyin bir kopyasını içerir)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • Gönderen: Nick O'Leary
  • Amaç: Cihazın belirli bir Broker ile MQTT konularını yayınlamasını veya bunlara abone olmasını sağlar
  • Kimden:

DHT.h

  • Gönderen: Adafruit
  • Amaç: DHT11DHT22, vb Sıcaklık ve Nem Sensörleri için Arduino kütüphanesi
  • Kimden:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • Gönderen: Adafruit
  • Amaç: AM2320 vb. için Arduino kütüphanesi Sıcaklık ve Nem Sensörü
  • Gönderen:

MCP4561_DIGI_POT.h

  • Gönderen: Steve Quinn
  • Amaç: MCP4561 dijital potansiyometre için Arduino Kütüphanesi
  • Kimden:

Adafruit_MCP23017.h

  • Gönderen: Steve Quinn
  • Amaç: MCP23017 I2C Port Expander için Arduino Kütüphanesi. Bu, Adafruit tarafından üretilen Adafruit-MCP23017-Arduino-Library'den bir GITHub çatalıdır.
  • Kimden:

Eğlence için

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

PCB Üretimi

https://jlcpcb.com/

Ek Arduino Kitaplıkları Kurma

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

Nem Sensörü Nasıl Kontrol Edilir ve Kalibre Edilir

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

SP0256-AL2 Veri Sayfası

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

Konuşma Çipleri Dükkanı

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

Arduino Yarışması 2019
Arduino Yarışması 2019
Arduino Yarışması 2019
Arduino Yarışması 2019

Arduino Yarışması 2019'da İkincilik

Önerilen: