Ничего не найдено :(
    В гостях у Самоделкина! » С сайтов » Спец » Адаптивное освещение для ПК

    Адаптивное освещение для ПК



    В смартфонах присутствует такая умная функция, как адаптивное освещение. Такая функция присутствует и в некоторых моделях телевизоров. Но, по каким- то причинам, на компьютерах нет системы автоматической регулировки яркости. Чтобы изменить яркость, каждый раз приходится нажимать клавиши. А на некоторых компьютерах нужно нажимать комбинацию клавиш.

    Это несколько неудобно и отвлекает от работы.
    Мастер разработал простое устройство, которое можно подключить к любому компьютеру, и его яркость будет регулироваться автоматически, как и в смартфонах.

    Инструменты и материалы:
    -Arduino Pro Micro;
    -LDR (фоторезисторы) - 2 шт;
    -Резистор 10 К;
    -Пользовательская плата;
    -Штыревые разъемы;
    -USB-кабель;
    -Инструменты для пайки;
    -Нож;









    Шаг первый: принцип работы
    Устройство работает следующим образом:
    Данные с фоторезистора, направленного на лицо пользователя, отправляются на Ардуино. Это аналоговые данные в диапазоне от 0 до 1024.
    Если сопоставить значения (0-1024) с освещением, то можно контролировать яркость. В качестве программного обеспечения мастер использует программу Python, работающую на ПК.

    Шаг второй: тестирование схемы
    Для проверки работоспособности устройства мастер собрал схему на макетной плате. В качестве программного обеспечения написал простую программу для вывода данных датчика (данных интенсивности света) на последовательный монитор Arduino.
    // define sensor pin
    int sensor_pin = A3;
    
    void setup() {
      // set things here
      Serial.begin(9600);  // init serial communication at 9600 bps
    }
    
    void loop() {
      // mainloop
      int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
      Serial.println(sensorValue);              // send data over serial
      
      delay(200);                               // a little delay to make things work better
    }

    В идеале данные должны варьироваться от 0 до 1024 (теоретически). Но на практике ни один LDR не идеален (даже в одной партии). В итоге мастер я получил данные от 0 до 950.

    В любом случае это работает, а небольшая погрешность не имеет значения.


    Шаг третий: дизайн и изготовление пользовательской платы
    Дальше мастер разработал печатную плату. На плате можно увидеть, что есть два датчика два датчика. На самом деле это просто для дизайна. С двумя LDR это похоже на улитку. LDR_L - это LDR, который не используется в данной сборке.
    Затем он изготовил печатную плату на соответствующем сайте.
    Файлы для изготовления платы можно скачать здесь.

    Адаптивное освещение для ПК

    Шаг четвертый: сборка
    Сборка очень простая. Нужно установить Ардуино на плату и припаять контактные площадки. Также нужно припаять фоторезисторы.
    Вместо пайки можно использовать штыревые разъемы.


    Шаг пятый: код
    Дальше нужно запрограммировать плату.
    Прежде всего он определил контакт Arduino, на который датчик вводит данные.
    // define sensor pin
    int sensor_pin = A3;<br>

    В функции настройки установил последовательную связь со скоростью 9600. Функция настройки запускается только один раз при каждом включении платы Arduino.
    void setup() {
      // set things here
      Serial.begin(9600);  // init serial communication at 9600 bps
    }

    Затем, в основном цикле, Ардуино получает данные и отправляет их по последовательному каналу. Небольшая задержка в 200 мс, нужна для плавной работы.
    void loop() {
      // mainloop
      int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
      Serial.println(sensorValue);              // send data over serial
      
      delay(200);                               // a little delay to make things work better
    }

    Полностью код для Ардуино можно загрузить ниже.
    /*  Computer Hack! 
        Brightness Controller
    
        (C) License: GPL3-General Public License
    
        author: ashraf minhaj
        mail  : ashraf_minhaj@yahoo.com
    */
    
    // define sensor pin
    int sensor_pin = A3;
    
    void setup() {
      // set things here
      Serial.begin(9600);  // init serial communication at 9600 bps
    }
    
    void loop() {
      // mainloop
      int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
      Serial.println(sensorValue);              // send data over serial
      
      delay(200);                               // a little delay to make things work better
    }

    Теперь нужно подготовить ПО Python.
    Как уже говорилось ранее, датчик отправляет данные в Arduino, а python делает все остальное. Мастер написал простой скрипт на Python.
    В любом случае, если у вас не установлен , установите Последнюю версию Python можно загрузить здесь. При установке нужно убедится, что установлен флажок 'add python to environment variable path'.
    Так же нужно установить две библиотеки, Pyserial и screen- bright -control, используя команды ниже (знаки $ должны обозначать их как команду терминала, копировать без них)
    $ pip install pyserial
    $ pip install screen-brightness-control<br>

    Теперь разберем части кода на случай если кто то захочет его отредактировать.
    В этой части импортируются библиотеки 'serial.tools.list_ports' необходим для автоматического обнаружения платы Arduino.
    # import necessary libraries
    import serial                                     # for serial communication
    import serial.tools.list_ports                    # to get Arduino port automatically
    import screen_brightness_control as brightness    # to control brightness

    Устанавливает скорость и номер порта. Для данной платы скорость составляет 9600
    BUAD_RATE = 9600                                  # Pro Micro's buad rate is 9600 
    PORT      = ""

    Этот раздел автоматически определяет порты USB и пытается подключиться к Arduino.
    # get sender device port automatically
    serial_ports = list(serial.tools.list_ports.comports())  # get list of ports
    for s_port in serial_ports:                              # iterate through all ports
        if 'Arduino Micro' in s_port.description:            # look for Pro Micro board
            PORT = str(s_port[0])                            # select first found board and
            break                                            # proceed
    
    # connect with sender device
    sender = serial.Serial(PORT, BUAD_RATE)

    Следующая функция преобразует данные Arduino (от 0 до 1024) в% данных - от 0 до 100. Это называется сопоставлением.
    def map_value(value, in_min=0, in_max=1024, out_min=0, out_max=100):
        """ To map values. Arduio sends values from 0 to 1024. My goal
        is to make them in between 0 to 100."""
        return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

    Остальная часть кода просто следит за тем, чтобы яркость оставалась на уровне заданной интенсивности света.
    # mainloop
    while 1: 
        # convert byte data into string then integer
        sensor_value = int(sender.readline().decode("utf-8"))  # get data
        final_value = map_value(value=sensor_value)            # map value (brightness in percentage)
        #print(sensor_value)
        print(final_value)
        brightness.set_brightness(final_value)                 # set brightness
    
    # close port properly so that others can use it
    sender.close()

    Полный код можно скачать ниже.


    Теперь осталось подключить плату с помощью кабеля к компьютеру и разместить ее в удобном месте. Мастер приклеил ее к крышке ноутбука с обратной стороны.

    Весь процесс по изготовлению такой платы, ее программированию и тестированию можно посмотреть на видео.

    Источник (Source)
    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Подборки: Arduino
    7
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    9.3
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    8
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 8.11 из 10 (голосов: 3 / История оценок)

    Добавить комментарий

    2 комментария
    Гость Валерий
    зачем вообще плата, если там только два диода и резистор!?? вместо корпуса и двух проводков? я думал ардуина хотя бы скользящее среднее показаний датчика будет считать.. пфф. экран скорее всего будет мигать как цветомузыка от каждого облачка, не смотря на все "задержки для плавности"
    Eig
    Очень круто и предельно просто. Нет только добавления скрипта в автозагрузку на компе. И я бы это на каком-нибудь Attiny сделал или любом микроконтроллере с АЦП. Ну и в писибивэй заказывать такую плату – это просто разорение. Она делается ручками за полчаса.

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии