Звуковой информатор для Arduino
В проекте расмотрим возможность измерения темпратуры и влажности с последуюющим голосовым извещением о полученых значениях.
В проекте используется звуковой модуль WTV020
![]() |
|
Обозначение выводом звукового модуля WTV020 |
Звуковой модуль WTV020 можно использовать и без подключения к Arduino если включить его по схеме превратив в обычный проигрыватель.
![]() |
Схема подключения звукового модуля WTV020 |
Вместо звукового модуля WTV020 можно использовать модуль MP3-TF-16P
![]() |
Обозначение выводом модуля звукового модуля MP3-TF-16P |
![]() |
Схема подключения звукового модуля MP3-TF-16P к Arduino |
![]() |
Схеме подключения звукового модуля WTV020 |
Светодиод подсоединенный к выходам 15, 16 горит постоянно и гаснит при воспроизведении звукового файла. Звуковые файлы должны быть частотой не более 16 КГц и форматом .WAV
![]() |
Схема подключения к Arduino датчика DHT22 |
Для тестирования модуля необходимо установить библиотеку DHT.h
Sketch code
#include "DHT.h"//библиотека для работы датчика температуры и влажности
#define DHTPIN 6 //датчик подключен к пину 6
#define DHTTYPE DHT22 //тип датчика
#include <Wtv020sd16p.h> //библиотека работы модуля WTV020
int resetPin = 7; //подключение ножки сброса модуля к пину 7
int clockPin = 8; //подключение ножки тактового сигнала модуля к пину 8
int dataPin = 5; //подключение информационного вывода модуля к пину 5
int busyPin = 4; //подключение вывода "занятости" модуля к пину 4
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin); //объявляем модулю, куда что подключили
int info; //переменная для записи пришедшего в Serial-порт значения
DHT dht(DHTPIN, DHTTYPE); //внутренняя функция библиотеки DHT в которую указывается тип и пин подключения датчика
void setup() { //функция начальной настройки микроконтроллера (вызывается едноразово, при подаче питания)
Serial.begin(9600); //инициализируем Serial порт на работу со скоростью 9600 бод
dht.begin(); //инициализируем датчик DHT22
wtv020sd16p.reset(); //перед работой с модулем WTV020, его необходимо "сбросить"
}
void loop() { //циклическая функция
if(Serial.available() > 0){ //если что-то пришло в Serial-порт
info = Serial.parseInt(); //то записать это значение в переменную info
switch(info){ //проверяем содержимое info
case 1: //если пришел код 1
int temperature = dht.readTemperature(); //то записать в temperature значение температуры
int humidity = dht.readHumidity(); //записать в humidity значениие влажности
Serial.println(temperature); //вывод значения температуры в Serial
Serial.println(humidity); //вывод значения влажности в Serial
temperature = temperature + 90; //записи температурных значений (0-49 С) начинаются с 91го файла, поэтому прибавляем к значению температуры 90
humidity = humidity - 5; //записи значений влажности (10-94%) начинаются с 5го файла, поэтому вычитаем от значения влажности 5
/*
Пример: Температура 2 градуса. Файл с записанным значением находится под номером 92.
Что бы после обратиться к файлу 92, проведем операцию:
temperature = temperature + 90;
92 = 90 + 2;
В результате переменная temperature будет равна 92
*/
wtv020sd16p.playVoice(4); //воспроизвести файл №4 с записью "информация с датчиков"
delay(1900); //ждем 1,9 сек для воспроизведения*
wtv020sd16p.playVoice(temperature); //воспроизвести файл №temperature
delay(10); //ждем 10 мс для воспроизведения*
wtv020sd16p.playVoice(humidity); //воспроизвести файл №humidity
/* - задержки подобраны опытным путем, поскольку модуль при воспроизведении должен использовать
выход busy, но, иногда, по неизвестным причинам, не делает этого (возможно мне просто попался такой модуль)*/
delay(100);
break;
} //скобка закрытия switch
} //скобка закрытия проверки Serial-порта
} //закрытие циклической функции loop
Скачать библиотеку Wtv020sd16p: DigitalTube_Library.zip
Скачать библиотеку "DHT.h": DHT.zip
Скачать программу: Arduino_Sound.zip