Добрый день, уважаемые читатели!
Да, вы совершенно правы — это очередной гов.. топик об Arduino.
Давеча я при помощи дядюшки Лао обзавелся этим замечательным устройством, и по сложившейся традиции не удержался выложить свой «Hello World» на хабр.
Итак — Arduino будильник, управляемый из браузера. Без использования Ethernet шилда, и ему подобных приблуд.
Если интересно — прошу под кат.
На самом деле это даже не совсем будильник, в привычном понимании, а некое приспособление, которое после нажатия в браузере кнопки — начинает играть мелодию и показывает на LCD-дисплее дату.
Данный «конечный продукт» — это конечно просто для забавы, на самом деле мне было необходимо получить доступ к управлению arduino удаленно, а ethernet-шилд, или ему подобные я не купил.
Было принято решение использовать PHP для работы с COM-портом. В качестве теста и был написан данный пример.
Железо:
- Arduino UNO
- Текстовый LCD-дисплей 16х2
- Пьезо-пищалка
- Переменный резистор
- Резистор на 220 Ом — 2 шт.
- ПК с Windows 7 =
Исходники:
Сорцы php
<?php
print '<form action="#" method="post">'.
'<input type="submit" name="submit" value="Wake Up!">'.
'</form>';
if(isset($_POST['submit']))
{
// выполняем виндовую команду по настройке параметров COM-порта
exec("mode COM5 BAUD=9600 PARITY=N data=8 stop=1 xon=off");
// открываем COM порт, у меня #5, у Вас может быть другой
$fp = fopen ("COM5", "w+");
if (!$fp) {
echo "Not open";
} else {
// Передаем arduino необходимые данные
fwrite($fp,date("m F").", ".date("H:i")."r Wake up!");
}
fclose($fp);
}
?>
Код маленький, думаю комментариев в коде будет достаточно.
Сорцы arduino скетча:
>>Скачать (pastebin)<<
Не стал приводить весь код скетча, т.к. он довольно длинный, подключение LCD-дисплея и пьезо-пищалки стандартное.
Приведу лишь несколько пояснений:
1) Для проигрывания мелодии использовался код товарища Brett Hagman, ссылка на code.google.com
2) Кусок скетча — void loop()
void loop(){
lcd.setCursor(pos, line);
if (Serial.available() > 0) {
text = Serial.read();
// Если получаем символ перевода строки - меняем позицию курсора и используем вторую строку на LCD
if (text == 13) {
pos = 0;
line++;
}
else {
// Выводим на LCD-экран полученные данные
lcd.print(char(text));
pos++;
}
lcd.setCursor(pos, line);
// Символ "!" в dec=33. Этот символ мы передаем php-скриптом в строке "Wake up!", при получении его - проигрывается мелодия
if (text == 33) {
play_rtttl(song);
while(1);
}
}
}
Мелочи:
Использование резисторов:
1 резистор на 220 Ом — для подключения пьезопищалки
1 резистор на 220 Ом — для подключения на 15-й контакт LCD для приглушения общей подсветки экрана (с 5В горела слишком ярко)
1 переменный резистор — для подключения на 3-й контакт LCD для плавной регулировки контрастности знакомест (прямоугольников отображающих символы)
Выводы:
Я купил ардуино для организации мини-умного дома — датчики, сенсоры, свистелки, перделки.
А, т.к. прикольнее всего управлять этим удаленно, но Ethernet-шилда нет, то PHP+COM порт — неплохой вариант, на мой взгляд.
Видео:
Видео снималось на калькулятор с камерой, поэтому прошу не судить строго, выкладываю для ознакомления.
Спасибо за внимание, и простите меня, ненавистники Hello World для arduino :)
Автор: Twost