Тема: Arduino в M2-ITX
Показать сообщение отдельно
Старый 25.09.2015, 00:30   #1
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 977
Lexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud of
По умолчанию Arduino в M2-ITX

Давно хотел поковыряться в БП M2-ITX и сделать его более гибким в настройке, более функциональным.

Что мне не нравится:
  • невозможно изменить задержку Remote. Громкие пуки сабвуфера мне надоели, поэтому для включения усилителя использую дополнительное USB-реле. Реле включается и выключается Autoit-скриптом по событиям "Включение", "Выключение", "Вход в сон", "Выход из сна".
  • невозможно изменить порог напряжения, до которого АКБ может разрядиться.
  • невозможно сделать нормальный гибридный спящий режим. В режиме B0+B1+B3 большая задержка выключения - 30 сек. Режимами B0+B1+B2+B3 и B1+B2+B3 пользоваться не хочу, т.к. не хочу оказаться с разряженным АКБ.
В наличии имеется БП M2-ITX rev. 2F (он же LB160D-7600). Для исследования M2-ITX вооружился фотоаппаратом, лупой и цифровым многоканальным осциллографом. Фотографии платы M2-ITX и наименования некоторых элементов можно посмотреть тут: https://goo.gl/photos/vY1ZBgePqnxCi7np8

Прочитать прошивку микроконтроллера P87LPC761B не получилось, т.к. она защищена от чтения. Поэтому решил подключить Arduino Nano вместо этого микроконтроллера.

В принципе, можно расширить функционал и самого P87LPC761B. Для этого надо написать свою прошивку. А к выводам Tx и Rx подключить преобразователь COM-USB, чтобы оперативно изменять различные настройки.

Мои конструкции:


Возможности на данный момент:
  1. Задание произвольных задержек:
    • задержка включения компьютера после включения зажигания - 0...10 сек. Это задержка до подачи сигнала +5VSB после включения зажигания. Непосредственно запуск компьютера происходит еще через 1.4 сек, после эмуляции нажатия кнопки питания.
    • задержка сигнала Remote после включения компьютера - 0...10 сек (если 0, то Remote не включается). Это задержка отсчитывается не с момента включения зажигания, а с момента поступления сигнала PS_ON с материнской платы.
    • задержка выключения компьютера после выключения зажигания - 0...5 сек. Это задержка до эмуляции нажатия кнопки питания после выключения зажигания. После выключения компьютера +5VSB остается поданным на материнскую плату.
    • задержка полного отключения питания компьютера после выключения компьютера при выключении зажигания - 0...3600 сек (0-1 час, для нормальной реализации гибридного спящего режима). После этой задержки отключается +5VSB. Задержка отсчитывается не с момента выключения зажигания, а с момента пропадания сигнала PS_ON с материнской платы.
  2. Управление сигналом Remote (включение/выключение) подачей команд на Arduino. Т.е. сигнал Remote можно включать уже после загрузки компа, что гарантированно позволяет избежать громкие пуки сабвуфера, независимо от продолжительности загрузки компа. В базовой реализации задержка 5 сек, если комп загружается более 5 сек - то пук обеспечен. Перед перезагрузкой, выключением компьютера и входом в сон можно отключить Remote другой командой.
  3. Чтение текущих настроек, изменение, запись новых настроек без перепрошивки Arduino с помощью управляющей программы (через интерфейсный разъем USB).
  4. Хранение всех настроек в энергонезависимой памяти Arduino.
Дополнительные реализованные возможности:
  1. Прием команд с ИК-пульта и передача их в iCarDS.
  2. Активация круиз-контроля с помощью кнопки на ИК-пульте.
  3. Передача в iCarDS данных с акселерометра (для определения продольного и поперечного наклона автомобиля).
Дальнейшие планы:
  1. Задание порога напряжения АКБ, при снижении до которого компьютер будет автоматически выключен или обесточен. Благодаря внешнему ИОН и калибровке делителя - напряжение АКБ будет измеряться достаточно точно. Я надеюсь.)
  2. Считывание напряжения АКБ управляющей программой.
  3. Полное отключение блока питания от бортовой сети.
Можно еще реализовать такие функции:
  1. Работа с фоторезистором.
  2. Работа с датчиками температуры.
  3. Подогрев жесткого диска, его включение после прогрева.
  4. Включение монитора эмуляцией нажатия кнопки (если монитор сам не включается при подаче питания).
  5. Подключение различных мультимедиа-кнопок.
Нюансы:
  1. Сброс Arduino во время загрузки компьютера из-за инициализации COM-порта, что вызывает бесконечный циклический перезапуск компьютера.
  2. Сброс Arduino во время работы компьютера при подключении к COM-порту управляющей программой, что вызывает жесткую перезагрузку компьютера. Причем, программное отключение сигнала DTR влияет через раз, видимо, криво реализован компонент для работы с COM-портом.

    Решение этих двух проблем - вытаскивание джампера. Для прошивки Arduino джампер нужно вставлять обратно, а после прошивки - вытаскивать.

  3. Занять COM-порт можно только одной программой. Поэтому для изменения настроек придется закрывать iCarDS и потом подключаться управлющей программой.
  4. Столкнулся с искажением данных, поступающих от Arduino, если Arduino подключена к этому-же компу. При подключении Arduino к другому компу - данные приходят без искажений. Причем, настройки COM-порта одинаковые на обеих компах. Проанализировал искаженные данные и определил, что большинство байт сдвигаются на 2 бита влево. Первый байт передаваемой строки сдвигается влево на 3 бита. Алгоритм искажения оставшихся нескольких байт понять не смог. Вроде победил это недоразумение...
  5. Проблема с watchdog у Arduino. Решается перепрошивкой загрузчика.
  6. Arduino и другие элементы не помещаются в корпус CarPC.(
__________________
Приора хэтчбек
Win7 x64 Pro, Intel Core i3-3240 Ivy Bridge 2x3.4GHz HT, DDR3 2x4Gb, SSD SiliconPower Ace A55 128GB SATAIII, ASRock B75M-ITX, M2-ITX rev.2F, GPS Beitian BN-808, Logitech Wireless Touch Keyboard K400r, ИК-пульт Prology RCD-350, круиз-контроль...

Последний раз редактировалось admin; 12.03.2018 в 10:13.
Lexx09 вне форума   Ответить с цитированием