После настройки Intel Galileo в нашем последнем посте давайте приступим к работе с первым датчиком — микрофоном. Мне пришлось освежить некоторые основы, которые я изучил во время обучения в бакалавриате — да, я учился на бакалавриата по специальности «Автоматизация», и я играл с разными микропроцессорами, контроллерами и датчиками. Таким образом, этот пост будет посвящен обнаружению голоса с помощью детектора микрофона и пульсирующего светодиода, когда голос пересекает несколько децибел.
Основы во-первых, проводка
Вам нужна плата Galileo и Arduino-совместимый экран, который поможет вам правильно подключить датчики. Так что со щитом ваша доска будет выглядеть
Теперь вам нужно 2 разных датчика Grove для этого. В идеале вы можете использовать датчики любой марки с любым устройством IoT. Все, что вам нужно помнить, это то, что все датчики будут иметь минимум 2 контакта
- Напряжение — часто сокращенно V или VCC
- Основание — часто сокращается как GND
- Булавки данных — часто сокращается до D x (где x — число)
- Не соединенные контакты — часто сокращенно NC
Следует помнить, что вы всегда должны соединять V / VCC с другим V / VCC и GND с другим GND на любой плате. Если вы подключите иначе, ваша цепь не будет завершена (и ток не будет течь).
Когда вы используете «аналоговый» датчик, который предоставит вам некоторые данные, у вас будет значок с надписью OUT. Этот вывод OUT будет иметь сигнал напряжения, который будет представлять сигнал, захваченный вашим датчиком. Это может не иметь смысла на первый взгляд. Итак, давайте пойдем немного глубже. Существует 2 типа датчиков — аналоговые, которые обеспечивают сигналы обратно в форме напряжения, и цифровые, которые обеспечивают сигналы в битовой / байтовой форме. В весах используется датчик, который может быть аналоговым или цифровым.
Любой сигнал, измеренный в аналоговом формате, потребует некоторой калибровки, то есть механизма преобразования в цифровой или другой способ.
Датчик микрофона и комплект светодиодов
Датчик микрофона имеет 4 контакта — VCC, GND, NC и OUT. Вы получите напряжение в качестве сигнала датчика на выводе OUT
Комплект светодиодных датчиков также имеет 4 контакта — VCC, GND, NC, SIG. Вы можете установить 5 В на вывод SIG, чтобы загорелся светодиод, и можно установить 0 В на вывод SIG, чтобы он погас.
По сути, мы планируем подключить сигнал OUT микрофона к выводу SIG из набора светодиодов. В идеале вам не нужен такой мощный процессор, как Galileo, для такой тривиальной работы. Вы можете сделать это с несколькими основами электроники. Но, учитывая, что вы хотите создать что-то более сложное, и это первый шаг, мы можем пройти оставшуюся часть учебника.
Настройка датчика и комплекта
Я настроил датчик микрофона на A0 (как INPUT) и набор светодиодных датчиков на D3 (как OUTPUT) экрана. Вы можете использовать любые другие порты на ваш выбор. Далее следует открыть VS 2013 и создать новый проект типа Visual C ++> Windows для IoT.
И в main.cpp, вы можете вставить следующий код
#include "stdafx.h" #include "arduino.h" #define MICROPHONE A0 #define LED D3 #define THRESHOLD_VALUE 450 void pins_init() { pinMode(LED, OUTPUT); pinMode(MICROPHONE, INPUT); } void turnOnLED() { digitalWrite(LED, HIGH); } void turnOffLED() { digitalWrite(LED, LOW); } int _tmain(int argc, _TCHAR* argv[]) { return RunArduinoSketch(); } void setup() { Serial.begin(9600); pins_init(); } void loop() { int sensorValue = analogRead(MICROPHONE); Serial.print("sensorValue"); Serial.println(sensorValue); if (sensorValue > THRESHOLD_VALUE) { Log("OK, got something worth listening\n"); turnOnLED(); delay(2000); } turnOffLED(); }
Понимание кода
#define THRESHOLD_VALUE 450
Вышеуказанное утверждение является цифровым значением для звукового порога. Микрофон фиксирует аналоговый сигнал (0-5 В), который подается на ваш Galileo в виде цифрового сигнала (0-1024). Это означает 0v = 0 в цифровом виде и 5v = 1024 в цифровом. Чтобы устранить звуки окружающей среды, я предпочитаю, чтобы пороговое значение составляло не менее 33%, т.е. 2v. Таким образом, цифровое значение 450 конвертируется в 2,19 В (= 450 * 5/1024). Я обнаружил, что звуки окружающей среды способствуют значению 291 (т.е. 1.42v)
Следующими важными битами являются определения портов,
pinMode (светодиод, ВЫХОД);
pinMode (МИКРОФОН, ВХОД);
Здесь мы указали, что мы возьмем входные данные из A0 и выведем данные в D3. Теперь давайте разберемся с ядром нашей программы — функцией цикла
Мы читаем аналоговое значение датчика микрофона, используя приведенный ниже код, который преобразует аналоговое значение в цифровое число
int sensorValue = analogRead (МИКРОФОН);
Когда это значение выходит за пределы определенного порога, вы хотите отправить 5 В на светодиод (отправив бит HIGH), используя код
digitalWrite (LED, HIGH);
При воспроизведении громкой музыки вы увидите, что светодиодный индикатор загорится на 2 секунды (задержка = 2000 мс) и погаснет.
Когда вы запускаете / выполняете этот проект из Visual Studio с помощью Remote Debugger, VS развернет этот код на вашем устройстве Galileo. Вам будет предложено ввести имя пользователя и пароль Galileo.
Вы можете сказать что-то вслух или воспроизвести видео на YouTube, чтобы проверить эту функциональность.
Этот код также доступен на GitHub по адресу: https://github.com/punitganshani/ganshani/tree/master/Samples/IntelGalileo/GroveMic.