Съдържание:

Синтез на ретро реч. Част: 12 IoT, Домашна автоматизация: 12 стъпки (със снимки)
Синтез на ретро реч. Част: 12 IoT, Домашна автоматизация: 12 стъпки (със снимки)

Видео: Синтез на ретро реч. Част: 12 IoT, Домашна автоматизация: 12 стъпки (със снимки)

Видео: Синтез на ретро реч. Част: 12 IoT, Домашна автоматизация: 12 стъпки (със снимки)
Видео: Пишем трек НА СТОКОВЫХ ПЛАГИНАХ CUBASE 11 ! 2024, Юли
Anonim
Image
Image
Синтез на ретро реч. Част: 12 IoT, Домашна автоматизация
Синтез на ретро реч. Част: 12 IoT, Домашна автоматизация

Тази статия е 12 -та от поредицата за инструменти за домашна автоматизация, документиращи как да се създаде и интегрира устройство за ретро синтез на реч на IoT в съществуваща система за домашна автоматизация, включваща цялата необходима софтуерна функционалност, за да позволи успешното внедряване в домашна среда.

Снимка 1 показва завършеното устройство за синтез на речта на IoT, а снимка 2 показва всички компоненти, използвани в прототипа, които са с намален форм -фактор, за да влязат в крайния продукт.

Видеото показва устройството в действие (по време на тестване).

Въведение

Както бе споменато по-горе, тази инструкция описва как да се направи устройство за ретро синтез на реч на IoT и се основава на общите инструменти SP0256-AL2.

Основната му цел е да добави синтез на глас „old school“към мрежа на IoT. Защо "старо училище" може да попитате? Е, тъй като бях около 80-те години, когато тези неща бяха произведени за първи път, и свързах едно към моя BBC Micro, така че за мен има известна степен на носталгия около SP0256-AL2.

Много повече предпочитам предизвикателството да се опитам да разбера какво се казва от този звучащ глас на Далек, отколкото да слушам мрачните тонове на хипстърско ехо на Amazon или Siri. Къде е предизвикателството, че ви питам?

О, и да не говорим, че имам и "зареждане на чанта" от "SP0256-AL2" интегрални схеми.

Устройството също така може да чете локална температура и влажност, така че допълнително разширява обкръжаващото оборудване на моята съществуваща инфраструктура на IoT, свързана към IoT мрежата, базирана на MQTT/OpenHAB, подробно описана в тази серия за домашна автоматизация (HA), като се основава на повторно използвания код, взет от тук.

В основата му е ESP8266-07, който отговаря за MQTT комуникациите и контролира цялата функционалност на системата (достъп до SD карта, светодиоден контрол, определяне на температурата/влажността, контрол на силата на звука, синтез на реч). Устройството се конфигурира напълно чрез текстови файлове, съхранявани на локална SD карта, въпреки че параметрите за калибриране и защита на мрежата също могат да бъдат програмирани чрез отдалечени публикации на MQTT.

Какви части са ми необходими?

Вижте сметката на материалите тук

Какъв софтуер ми трябва?

  • Arduino IDE 1.6.9,
  • Arduino IDE, конфигуриран да програмира ESP8266-07 (същото като това). След това конфигурирайте IDE, както е посочено в подробното описание, предоставено в скицата на софтуера тук,
  • Python v3.5.2, ако искате да използвате възможността за автоматичен тест, подробности тук

Какви инструменти ми трябват?

  • Микроскоп поне x3 (за SMT запояване),
  • Инструмент за пресоване на конектор Molex (за съединители JST),
  • SMD поялник (с писалка с течен флюс и спойка с флюс),
  • Отвертки (различни),
  • Пистолет за горещ въздух,
  • Свредла (различни),
  • Зенков ръчен инструмент,
  • Файлове (различни),
  • Dremel (различни битове),
  • Здрав порок (малък и голям, като чернокож и палубен работник),
  • Скалпел,
  • Верномер (използва се за измерване на производството и полезен за оразмеряване на компонентите на печатни платки),
  • Ключове и гайки (различни),
  • Силна пинсета (за SMT запояване),
  • Джуниърска ножовка,
  • Свредло (с различни свредла),
  • Фини клещи (заострени и с нос),
  • Фрези за промиване,
  • DMM със звукова проверка на непрекъснатостта,
  • Двуканален цифров обхват (удобен за отстраняване на грешки на сигнали)

Какви умения са ми необходими?

  • Много търпение,
  • Голяма ръчна сръчност и отлична координация между ръцете и очите,
  • Отлични умения за запояване,
  • Отлични производствени умения,
  • Възможност за визуализация в 3 измерения,
  • Някои познания за разработване на софтуер с „C“(ако искате да разберете изходния код),
  • Някои познания за Python (как да инсталирате и стартирате скриптове, ако искате да използвате автоматизираното тестване),
  • Познаване на Arduino и неговата IDE,
  • Добри познания по електроника,
  • Известно разбиране за вашата домашна мрежа.

Покрити теми

  • Ръководство за употреба
  • Преглед на веригата
  • Производство и монтаж на печатни платки
  • Изработка
  • Преглед на софтуерната система
  • Преглед на софтуера
  • Калибриране на сензора
  • Конвенция за наименуване на теми на MQTT
  • Отстраняване на грешки и намиране на неизправности
  • Тестване на дизайна
  • Заключение
  • Използвани справки

Серия LinksTo Част 11: IoT настолна конзола. Част: 11 IoT, Домашна автоматизация

Стъпка 1: Ръководство за потребителя

Ръководство за употреба
Ръководство за употреба
Ръководство за употреба
Ръководство за употреба
Ръководство за употреба
Ръководство за употреба

Снимка 1 по -горе показва предната част на синтезатора на ретро реч, а снимка 2 отзад.

Корпус отпред

  1. Говорителска скара
  2. 3,5 мм жак за слушалки: Главният високоговорител е деактивиран, когато е поставен жак 3,5 мм.
  3. Червен светодиод: Този светодиод свети, докато се говори дума, когато речта е инициирана чрез HTTP заявка.
  4. Син светодиод: Този светодиод свети, докато се говори дума, когато речта е инициирана чрез MQTT IoT заявка.

Заден корпус

  1. Бутон за нулиране: Използва се за твърдо нулиране на IoT устройството ESP8266-07.
  2. Бутон за светкавица: Когато се използва заедно с бутона за нулиране, позволява повторно мигане на ESP8266-07.
  3. Щепсел за WiFi антена (SMA щепсел): За външна WiFi антена, която дава най -малко затихване на RF пътя, тъй като затварянето е алуминиево.
  4. Външен порт за програмиране: За да премахнете необходимостта от развиване на корпуса, за да получите достъп до ESP8266-07 за целите на повторно програмиране. Пиновете за програмиране на ESP8266-07 са изведени към външния порт за програмиране. Снимка 3 е адаптерът за програмиране.
  5. Зелен светодиод: Това е светодиодната система на IoT и се използва за индикация на диагностичното състояние на устройството и стартиране и по време на работа.
  6. Външен датчик за температура/влажност (AM2320)
  7. Слот за SD карта: Тук се съхраняват всички данни за конфигуриране/защита заедно със страниците на уеб сървъра.
  8. 2.1 мм Захранващ жак 6vdc

Стъпка 2: Преглед на веригата

Преглед на веригата
Преглед на веригата
Преглед на веригата
Преглед на веригата

Устройството Retro Speech Synth се състои от две печатни платки;

  • RetroSpeechSynthIoTBoard: Това е обща, многократно използваема ESP8266-07/12/12E/13 печатна платка
  • RetroSpeechSynthBoard: Това е обща SP0256-AL2 печатна платка

Retro Speech Synth IoT Board

Тази платка позволява или директно запояване на ESP8266-07/12/12E/13 или 0,1-инчови гнезда, побиращи носеща платка ESP8266.

Платката е проектирана да разшири своя I/O през I2C връзка и може да поддържа 3v3 или 5v нива на захранване през Q1, Q2, R8-13.

Свързването към платката се осъществява чрез един от двата заглавия J2 и J4, 8-посочна DIL IDC лента или 5-посочен JST/Molex.

Разпоредби U2 и U3 3.3v и 5v на борда за регулиране на захранването. Като алтернатива, ако е необходим по -голям токов капацитет, регулаторите на серийния шунт могат да бъдат свързани чрез съединители J10 и J11 съответно.

Съединителите J1 и J3 предлагат поддръжка на външна SD карта през SPI. J1 е проектиран за 8-посочен Molex, а J3 има директен щифт за поддръжка на съвместимост с щифтове за печатна платка на SD карта от рафт с поддръжка 3v3 или 5v.

Синтетична платка за ретро реч

Управлението на тази платка се осъществява чрез I2C 5v съвместима връзка чрез J1, J5 или J6, 4-пътен JST/Molex, 8-посочен DIL IDC или 8-посочен IDC лентов конектор.

U2 MPC23017 осигурява I2C към паралелен интерфейс към U3 SP0256-AL2 и светодиоди D1 (зелено), D2 (червено) и D3 (синьо). Изходът на Speech Synth се подава към аудио усилвател CR1 TBA820M чрез аналогов пот RV1 или цифров пот U1 MCP4561.

Digital Pot U1 също се управлява чрез 5v съвместим I2C.

Забележка: Устройството ESP8266-07 е избрано, тъй като има вграден IPX RF конектор, позволяващ добавяне на външна WiFi антена към алуминиевия корпус.

Стъпка 3: Производство и монтаж на печатни платки

Производство и монтаж на печатни платки
Производство и монтаж на печатни платки
Производство и монтаж на печатни платки
Производство и монтаж на печатни платки
Производство и монтаж на печатни платки
Производство и монтаж на печатни платки
Производство и монтаж на печатни платки
Производство и монтаж на печатни платки

Снимки 1 и 2 показват завършените и окабелени PCB възли, разположени върху алуминиевата подложка на корпуса.

Двете печатни платки са проектирани с помощта на Kicad v4.0.7, произведен от JLCPCB и сглобен от мен и показан по -горе на снимки 3 до 13.

Стъпка 4: Изработка

Изработка
Изработка
Изработка
Изработка
Изработка
Изработка

На снимка 1 е показано ръчно оформление на Haynes на всички сглобяеми части преди окончателното сглобяване.

Снимки 2… 5 показват различни снимки по време на производството на корпуса с минимални хлабини.

Стъпка 5: Преглед на софтуерната система

Преглед на софтуерната система
Преглед на софтуерната система
Преглед на софтуерната система
Преглед на софтуерната система

Това устройство за ретро синтез на реч на IoT съдържа шест ключови софтуерни компонента, както е показано на снимка 1 по -горе.

SD карта

Това е външната SD SPI система за архивиране и се използва за съхраняване на следната информация (вижте снимка 2 по -горе);

  • Икони и „Начална страница за конфигуриране на речевия синтезатор“index.htm: Обслужва се от IoT устройството, когато то не може да се свърже с вашата Wi -Fi мрежа на IoT (обикновено поради неправилна информация за защита или първа употреба) и предоставя на потребителя средства на дистанционно конфигуриране на сензорите, без да е необходимо повторно флашване на ново SD съдържание. Той също така съдържа index1.htm, mqtt.htm и sp0256.htm, това са локално обслужваните уеб страници, достъпни през уеб браузър, позволяващи ограничен контрол на синтезатора на реч през
  • Информация за сигурност: Тя съдържа информацията, използвана при включване на IoT устройството за свързване към вашата IoT WiFi мрежа и MQTT брокер. Информацията, предоставена чрез „Началната страница за конфигуриране на речевия синтезатор“, се записва в този файл („secvals.txt“).
  • Информация за калибриране: Информацията, съдържаща се във файловете („calvals1.txt“и „calvals2.txt“), се използва за калибриране на бордовите сензори за температура/влажност, ако е необходимо. Калибрационните константи могат да бъдат записани на IoT устройството чрез MQTT команди от MQTT брокер или чрез повторно мигане на SD картата. 'calvals1.txt' се отнася за сензора AM2320 и 'calvals2.txt' за DHT22.
  • Системни стойности, конфигурирани от потребителя: Информацията, съдържаща се в този файл ('confvals.txt'), избрана от потребителя, контролира определени системни отговори, като първоначално ниво на цифров обем, автоматично съобщение за "готовност за системата" при абонамент за брокер на MQTT и др.

mDNS сървър

Тази функционалност се активира, когато IoT устройството не успее да се свърже с вашата WiFi мрежа като WiFi станция и вместо това се превърна в WiFi точка за достъп, нещо подобно на домашен WiFi рутер. В случай на такъв рутер обикновено бихте се свързали с него, като въведете IP адреса на нещо като 192.168.1.1 (обикновено отпечатано върху етикет, прикрепен към кутията) директно в URL лентата на браузъра си, след което ще получите страница за вход, за да влезете потребителското име и паролата, за да ви позволи да конфигурирате устройството. За ESP8266-07 в режим AP (режим на точка за достъп) устройството по подразбиране е IP адрес 192.168.4.1, но при работещ mDNS сървър трябва само да въведете удобното за човека име „SPEECHSVR.local“в URL лентата на браузъра, за да вижте „Начална страница за конфигуриране на синтезатор на реч“.

MQTT клиент

Клиентът MQTT предоставя цялата необходима функционалност на; свържете се с вашия MQTT брокер на IoT мрежа, абонирайте се за избраните от вас теми и публикувайте полезни товари към дадена тема. Накратко, той предоставя основна функционалност на IoT.

HTTP уеб сървър

Този уеб сървър има две цели;

  1. Ако IoT устройството не може да се свърже с WiFi мрежата, чийто SSID, P/W и т.н. е дефиниран във файла за информация за сигурността, съхраняван на SD картата, устройството ще стане точка за достъп. След като се свържете с WiFi мрежата, предоставена от точката за достъп, наличието на HTTP уеб сървър ви позволява директно да се свържете с устройството и да промените конфигурацията му чрез използването на HTTP уеб браузър, чиято цел е да обслужва „Конфигурация на синтезатор на реч Уеб страница „Начална страница“, която също се съхранява на SD картата.
  2. След като устройството за ретро синтез на реч на IoT се свърже с WiFi мрежата и MQTT брокера, ако има достъп, HTTP уеб сървърът автоматично ще обслужва HTTP уеб страница, което позволява ограничен контрол на IoT устройството да говори селекция от фиксирани фрази и възможност за циклирайте двата предни червени и сини светодиода.

WiFi станция

Тази функционалност дава на IoT устройството възможност да се свърже с домашна WiFi мрежа, използвайки параметрите във файла с информация за сигурността, без това вашето IoT устройство няма да може да се абонира/публикува в MQTT Broker.

WiFi точка за достъп

Възможността да се превърнете в WiFi точка за достъп е средство, чрез което IoT устройството ви позволява да се свързвате с него и да правите промени в конфигурацията чрез WiFi станция и браузър (като например Safari на Apple iPad). Тази точка за достъп излъчва SSID = "SPEECHSYN" + последните 6 цифри от MAC адреса на IoT устройството. Паролата за тази затворена мрежа се нарича „PASSWORD“с въображение

Стъпка 6: Преглед на софтуера

Преглед на софтуера
Преглед на софтуера
Преглед на софтуера
Преглед на софтуера
Преглед на софтуера
Преглед на софтуера

Преамбюл

За да компилирате успешно този изходен код, ще ви трябва локално копие на кода и библиотеките, описани по -долу в Стъпка 12, Използвани референции. Ако не сте сигурни как да инсталирате библиотека на Arduino, отидете тук.

Общ преглед

Софтуерът използва машината на състоянието, както е показано на снимка 1 по-горе (пълно копие на източника в моето хранилище на GitHub тук). Има 5 основни състояния, както е посочено по -долу;

  • В НЕГО

    Това състояние на инициализация е първото състояние, въведено след включване

  • НОКОНФИГ

    Това състояние се въвежда, ако след включване бъде открит невалиден или липсващ файл secvals.txt. По време на това състояние страницата за конфигуриране е видима

  • В ЧАКА НА СЕВ

    Това състояние е преходно, въведено, докато няма WiFi мрежова връзка

  • ЧАКАЩ MQTT

    Това състояние е преходно, въведено след свързване на WiFi мрежа и докато няма връзка с MQTT брокер в тази мрежа

  • АКТИВЕН

    Това е нормалното работно състояние, въведено, след като се установи както Wi -Fi мрежова връзка, така и връзка с MQTT брокер. Именно през това състояние температурата, топлинният индекс и влажността на IoT Retro Speech Synthesis Device се публикуват редовно в MQTT Broker. В това състояние началната страница на синтезатора на реч е видима

Събитията, контролиращи преходите между състояния, са описани на снимка 1 по -горе. Преходите между състояния също се управляват от следните параметри на SecVals;

  • 1 -ви MQTT брокерски IP адрес. В пунктирана десетична форма AAA. BBB. CCC. DDD
  • 2 -ро порт за брокер на MQTT. Под цяло число.
  • Третият MQTT брокер се опитва да направи връзка, преди да премине от режим STA към режим AP. Под цяло число.
  • 4 -ти SSID на WiFi мрежата. Текст в свободна форма.
  • 5 -та парола за WiFi мрежа. Текст в свободна форма.

Както бе споменато по -горе, ако IoT устройството не може да се свърже като WiFi станция към WiFi мрежата, чиито SSID и P/W са определени в secvals.txt, държан на SD картата, IoT устройството ще стане точка за достъп. След като бъде свързан към тази точка за достъп, той ще обслужва „Начална страница за конфигуриране на синтезатор на реч“, както е показано по -горе на снимка 2 (чрез въвеждане на „SPEECHSVR.local“или 192.168.4.1 в адресната лента на браузъра ви). Тази начална страница позволява преконфигуриране на IoT Retro Speech Synthesis Device чрез HTTP браузър.

Отдалечен достъп, докато е в състояние АКТИВ

След като се свържете с MQTT Broker, също е възможно както повторно калибриране, така и преконфигуриране на устройството чрез публикации на теми на MQTT. Файлът calvals.txt има R/W достъп, а secvals.txt има достъп само за запис.

Също както бе споменато по -горе, веднъж в активен режим е възможно да получите достъп до Speech Synth чрез HTTP интерфейс, като въведете „SPEECHSVR.local“или 192.168.4.1 в адресната лента на браузъра си. Този HTTP базиран интерфейс позволява основен контрол на речевия синтезатор. Снимки 3, 4 и 5 показват наличните уеб страници.

Отстраняване на грешки от потребителя

По време на зареждащата последователност зелената система на IoT устройството, водеща в задната част на кутията, дава следната обратна информация за отстраняване на грешки;

  • 1 Кратка светкавица: Няма конфигурационен файл, разположен на SD картата (secvals.txt)
  • 2 Кратки мигания: IoT устройството се опитва да се свърже с WiFi мрежа
  • Непрекъснато осветяване: IoT устройството се опитва да се свърже с MQTT Broker
  • Изключено: Устройството е активно.

Функционалност на устройството за ретро синтез на реч на IoT в АКТИВНО състояние

След като е в състояние ACTIVE, ESP8266 влиза в непрекъснат цикъл, извикващ следните функции; timer_update (), checkTemperatureAndHumidity () и handleSpeech (). Нетният резултат, който е проектиран да представи на потребителя HTTP или MQTT интерфейс, безпроблемно обслужва своя вграден процесор за говор с фонеми при поискване и публикува локални параметри на околната среда през MQTT.

В изходния код е включен изчерпателен списък с всички абонаменти и публикации за теми, включително стойностите на полезния товар.

Стъпка 7: Калибриране на сензора

Калибриране на сензора
Калибриране на сензора

Когато IoT устройството се включи, като част от последователността за зареждане два файла, наречени „cavals1.txt“и „cavals2.txt“, се четат от SD картата.

Съдържанието на тези файлове са константи за калибриране, както е посочено по -горе на снимка 1.

  1. 'cavals1.txt': Използва се от външния AM2320
  2. 'cavals2.txt': Използва се от вътрешния DHT22

Тези константи за калибриране се използват за регулиране на показанията, получени от двата сензора, за да ги приведат в съответствие с референтно устройство. Има още една стойност, която определя стратегия за отчитане за всяко устройство и е описана по -долу заедно с процедурата, следвана за калибриране на сензорите.

Докладваща стратегия

Този параметър определя как дистанционният сензор отчита всякакви параметрични промени на околната среда, локални за него. Ако е избрана стойност 0, дистанционният сензор ще публикува всяка промяна, която вижда в температурата или влажността всеки път, когато съответният сензор се прочете (приблизително на всеки 10 секунди). Всяка друга стойност ще забави публикуването на промяна с 1 … 60 минути. Промяната на този параметър позволява оптимизиране на мрежовия трафик на MQTT. Трябва да се отбележи, че данните за температурата и влажността от DHT22 се четат последователно поради ограниченията на сензора.

Калибриране на температурата

За да калибрирам температурния сензор, следвах същия процес, както е описано тук, стъпка 4, отново използвайки проста връзка y = mx+c. Използвах IoT Температура, сензор за влажност #1 като референтно устройство. Стойностите от сензора са в градуси по Целзий.

Калибриране на влажността

Тъй като не разполагам с никакви средства за точно записване или дори контролиране на местната влажност на околната среда, за калибриране на сензора използвах подобен подход на този по -горе тук стъпка 4, като отново използвах сензор #1 като справка. Както и да е казано по -горе, наскоро намерих отлична статия в мрежата, описваща как да калибрирам сензорите за влажност. Може би ще опитам този подход в бъдеще. Стойностите от сензора са в %възрастта на относителната влажност.

Стъпка 8: Конвенция за наименуване на теми на MQTT

Конвенция за наименуване на теми на MQTT
Конвенция за наименуване на теми на MQTT
Конвенция за наименуване на теми на MQTT
Конвенция за наименуване на теми на MQTT

Както бе споменато в по -ранен Instructable (тук), аз се спрях на конвенцията за именуване на темата, очертана на снимка 1 по -горе.

А именно, „AccessMethod/DeviceType/WhichDevice/Action/SubDevice“Не е перфектен, но позволява да се прилагат полезни филтри, за да се видят всички сензорни изходи за дадена параметрична тема, като по този начин позволява лесно сравнение, както на снимка 2 по -горе с MQTTSpy.

Този проект е първият случай, в който едно устройство съдържа повече от един източник с произход от същия тип публикация. т.е. Два сензора за температура/влажност, от вътрешни и външни под-устройства.

Той също така поддържа разумно разширяемо логическо групиране на функционалността в рамките на дадено IoT устройство.

При внедряването на тези теми в софтуера използвах твърдо кодирани низове теми с фиксирани, вградени числови идентификатори за всяко устройство, за разлика от динамичното генериране на темите по време на изпълнение, за да се спести RAM и да се поддържа висока производителност.

Забележка: Ако не сте сигурни как да използвате MQTTSpy, вижте тук „Настройка на MQTT брокер. Част 2: IoT, Домашна автоматизация

Стъпка 9: Отстраняване на грешки и намиране на неизправности

Отстраняване на грешки и намиране на неизправности
Отстраняване на грешки и намиране на неизправности

Като цяло, за моите хоби проекти, където е възможно, съм склонен да изграждам представителен хардуерен прототип, срещу който се разработва софтуера, рядко имам проблеми при интегрирането на софтуера в крайния хардуер на платформата.

По този повод обаче попаднах на странна периодична грешка, при която някои фонеми биха прозвучали, но други не.

След известно първоначално отстраняване на грешки на печатната платка Speech Synth с помощта на Arduino Uno за източник на фонеми и доказване, че тази платка работи, взех обхват към I2C линиите между IoT PCB и Speech Synth PCB. Вижте снимка 1 по -горе.

Можете ясно да видите „зъб на трион“/експоненциален ръб към I2C сигнала върху следите.

Това обикновено е индикация, че стойностите на издърпване на I2C са твърде високи, което предотвратява възстановяването на напрежението в линията достатъчно бързо в отворена дренажна верига.

Като „работа наоколо“успоредно направих двата smt издърпващи се резистора R12 и R13 с 10Ks, за да дам 4K7 и със сигурност Speech Synth „избухна в живота“

Този тип неуспех е обратното на това, което може да се случи при отстраняване на грешки в този тип проекти. Като цяло повечето от модулите, базирани на I2C, закупени от Ebay, обикновено идват с вече монтирани 10K или 4K7 издърпвания. Ако възнамерявате да използвате> 5 I2C модула, всеки с 4K7 издърпвания, тогава общото натоварване е 940R, което ще бъде твърде голямо за изходния етап на главния. Поправката ще бъде да се спойка всички, освен един комплект резистори за изтегляне на всеки модул. За предпочитане този, който е физически най -отдалечен от капитана.

Полезен съвет и си струва да се има предвид при проектирането на електроника с I2C устройства.

Стъпка 10: Тестване на дизайна

Image
Image
Тестване на дизайна
Тестване на дизайна
Тестване на дизайна
Тестване на дизайна

Тестването беше проведено по две методологии; Ръчно и автоматизирано.

Първият, ръчен и обикновено използван по време на първоначалното разработване на код, беше използването на MQTT Spy за упражняване на всички налични абонирани теми и проверка на публикуваните отговори (изобразени на снимка 2 по -горе). Тъй като това е ръчен процес, той може да отнеме много време и да бъде склонен към грешки с напредването на разработката на кода, въпреки че ръчното изпълнение позволява 100% покритие.

MQTTSpy е избран за ръчно тестване, защото е отличен инструмент за ръчно форматиране на даден полезен товар и публикуването му във всяка тема с лекота. Той също така показва ясен, отбелязан с временен дневник, който е много полезен за отстраняване на грешки (снимка 3 по -горе).

Вторият, автоматизиран подход беше възприет, тъй като изходният код стана по -сложен (> 3700 реда). Повишената сложност означава по -дълги цикли на ръчно тестване и по -сложни тестове. За да се подобри надеждността, детерминизма и качеството на тестовете, беше използвано автоматизирано тестване чрез изпълнителен директор на python (снимка 1). Вижте Стъпка #10 в тази инструкция за това как е въведено автоматизираното тестване. Пълно копие на автоматизираните тестове, използвани в тази инструкция, е достъпно тук.

Видеоклип на работещата автоматизирана тестова последователност е показан по -горе. Последователността изпълнява следните стъпки;

  • Автоматизирано чрез MQTT

    • Свържете се с гръбнака на MQTT и обявете „System Ready“
    • Упражнение Зелен светодиод
    • Упражнение Червен светодиод
    • Упражнение Синя LED
    • Проверете работата на Digital Pot
    • Говорете с помощта на фонеми
    • Говорете с шестнадесетични кодове за фонеми
    • Говорете с помощта на кодове за фиксирани фрази
    • Малко забавление на д -р Кой и Далекс.
  • Ръчно чрез

    • Упражнение Синя LED
    • Упражнение Червен светодиод
    • Изговаряйте фиксирани фрази „Стивън Куин“, „Системата е готова“и „Здравей, свят“
    • Имайте HTTP сървър, обслужвайте

      • Подробности за Speech Synth Chip
      • Подробности за MQTT

Стъпка 11: Заключение

Заключение
Заключение

Въпреки че бяха необходими много усилия с файлове и тренировки и т.н., особено за решетката на високоговорителя, мисля, че резултатът е естетически приятен и опакован в хубав, малък корпус. Можех да го направя по-малък, но трябваше да отида на една печатна платка и умишлено я разделих на две, за да мога да използвам повторно печатните платки на по-късна дата за други проекти. Така че това е щастлив компромис.

Софтуерът работи добре, IoT устройството е в стабилна работа от доста време без никакви проблеми.

Наблюдавах температурата и влажността чрез Grafana и сравнявах с съвместно разположено устройство. Двете стойности на околната среда корелират добре, което означава, че калибрирането е разумно (или поне са сходни).

Спрях да изпълня командата word ('WFD/SpeechTH/1/Word/Command'), защото изтече времето и трябваше да продължа. Мога да го посетя отново, ако и когато настроя MySQL база данни. В момента използвам InfluxDB.

Стъпка 12: Използвани справки

Следните източници бяха използвани за сглобяване на този Instructable; Изходен код за IoT Retro Speech Synthesis Device (това съдържа копие на всичко)

https://github.com/SteveQuinn1/IoT_Retro_Speech_Synthesis_SP0256_AL2

PubSubClient.h

  • От: Ник О'Лиъри
  • Предназначение: Позволява на устройството да публикува или да се абонира за теми за MQTT с даден брокер
  • От:

DHT.h

  • От: Adafruit
  • Предназначение: Библиотека Arduino за DHT11DHT22 и др. Сензори за температура и влажност
  • От:

Adafruit_AM2320.h/Adafruit_Sensor.h

  • От: Adafruit
  • Предназначение: Библиотека Arduino за AM2320 и др. Сензор за температура и влажност
  • От:

MCP4561_DIGI_POT.h

  • От: Стив Куин
  • Предназначение: Библиотека Arduino за цифров потенциометър MCP4561
  • От:

Adafruit_MCP23017.h

  • От: Стив Куин
  • Предназначение: Библиотека Arduino за MCP23017 I2C Port Expander. Това е вилка GITHub от Adafruit-MCP23017-Arduino-Library, от Adafruit.
  • От:

За забавление

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

Производство на печатни платки

https://jlcpcb.com/

Инсталиране на допълнителни библиотеки на Arduino

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

Как да проверите и калибрирате сензор за влажност

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_em_e0_e_m /

SP0256-AL2 Лист с данни

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

Магазин за речеви чипове

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

Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019
Arduino Contest 2019

Вицешампион в Arduino Contest 2019

Препоръчано: