Arduino PC to LCD - небольшой проект, позволяющий выводить любую информацию на небольшой внешний экранчик. Например, можно мониторить расход оперативной памяти, а так же состояние удаленного сервера. Я использовал Arduino Leonardo + LCD Keypad Shield. Но можно использовать варианты дешевле и компактнее, например, Arduino Nano + LCD 1602. Пока поддерживается только двухстрочный экранчик по 16 символов в строке. Операционная система Linux, но в будущем, возможно, будет поддержка и Windows.
Не буду подробно рассказывать как подключить экранчик к Arduino. Об этом много информации в интернете, но можно спрашивать в комментариях. В случае с шилдом всё просто, нужно только их соединить, без пайки.
После подключения к компьютеру через USB-кабель можно проверить по какому адресу зарегистрировано устройство:
ls /dev/tty*
Затем в командной строке нужно выполнить такую команду для настройки последовательного интерфейса:
stty -F /dev/ttyACM0 cs8 115200 ignbrk \ -brkint -icrnl -imaxbel -opost -onlcr \ -isig -icanon -iexten -echo -echoe \ -echok -echoctl -echoke noflsh -ixon \ -crtscts
Здесь /dev/ttyACM0 - это адрес подключенного Arduino. У вас он может быть другим, например /dev/ttyUSB0.
Теперь можно попробовать с командной строки вывести текст на LCD экране:
echo "Hello Arduino" > /dev/ttyACM0
Пример кода для Arduino можно взять здесь: https://github.com/andchir/arduino_pc2lcd/blob/master/ino/SerialDisplay.ino.
Нужно закачать этот код в микроконтроллер через Arduino IDE.
Далее скачиваем проект https://github.com/andchir/arduino_pc2lcd в папку на своем сервере.
В командной строке переходим в папку проекта и запускаем:
cd /var/www/html/arduino_pc2lcd php -f index.php
На экранчике должна появиться информация о состоянии сервера (вашего локального компьютера). Эта информацию будет обновляться и сменяться через заданное время. Все действия, которые выводят информацию, находятся в папке "action". Там же находится конфигурационный JSON-файл - data.json. Вот его содержание:
{ "switch_delay": 10, "actions": [ { "name": "ram", "active": true, "refresh_time": 3 }, { "name": "hdd", "active": true, "refresh_time": 3 }, { "name": "uptime", "active": true, "refresh_time": 3 } ] }
switch_delay - Время в секундах, через которое сменяется информация на экране.
actions - Массив со всеми действиями, которые выводят информацию.
name - Название действия и его папки.
active - Активность действия (true/false).
refresh_time - Частота обновления данных текущего действия в секундах.
В данный момент доступны 3 готовых экшена:
ram - Сколько всего оперативной памяти и сколько свободно.
hdd - Сколько всего места на диске и сколько свободно.
uptime - Сколько времени прошло после включения или перезагрузки сервера, сколько сейчас пользователей в системе и нагрузка за последние 1, 5 и 15 минут.
Как видно, можно создавать любые свои экшены, в которых даже можно делать запросы на удаленный сервер. Удобно мониторить какую-то информацию, а подключив к Ардуино какие-нибудь пищалки и мигалки, вы всегда быстро сможете отреагировать на критические значения. Но для этого нужно ещё дорабатывать проект, расскажу об этом в следующий раз.