DIY экран с выводом информации об ОС Linux на Arduino
Дата публикации: 2018-05-17
Теги: diy, hardware, reverse
Что должно получиться в итоге:
1) Подключаем к Arduino.
Здесь ничего сложного SDA надо полключить к A4, а SCL к A5.
(для особо любознательных, на pinout arduino uno видно, что на этих портах также висит sda и scl ардуино)
2) Ставим библиотеку. Нам нужна LiquidCrystal_I2C для Arduino IDE:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Распаковываем:unzip Arduino-LiquidCrystal-I2C-library.zip
Перемещаем:cp -r Arduino-LiquidCrystal-I2C-library/ /usr/share/arduino/libraries/
3) Определение адреса в I2C:
Примеры из гугла могли бы запускаться как есть, но нет.
Смотрим: На плате можно разглядеть 3 резистора задающие адрес. По дефолту в примере стоит адрес 0X27, но на моей плате резисторов нет и адресом оказался 0X3F.
Если дисплей у вас не заводится, попробуйте следующие адреса: 0X3F, 0X38, 0X20
На плате есть переменный резистор, отвечающий за яркость. Открутите его сначала на пол оборота, затем отрегулируйте как удобно.
4) Прошиваем плату примером SerialDisplay с измененным адресом (если нужно менять).
5) Пишем клиент для ПК: тут я случайно наткнулся на чудесную библиотеку serial и написание кода не составило труда:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/python3 # coding=utf-8 import serial import time import subprocess #apt install python3-serial def usedRam(): free = subprocess.Popen("free -h ", shell=True, stdout=subprocess.PIPE).stdout.read() return str(free[119:123]) #парсим данные о раме через команду free if name == "main": ser = serial.Serial("/dev/ttyUSB0") # здесь адрес ардуино ser.baudrate = 9600 # устанавливаем частоту while True: strl = 'RAM:' + usedRam()[2:6] + ' FREE' # я накосячил со срезом ранее, исправил ser.write(strl.encode('utf-8')) # пишем на дисплей time.sleep(1) # ждем секунду до обновления |
Вуаля! Информация в реальном времени выводится на дисплей.
Пост написал @CryptoKunn специально для DC7495.ORG