Взлом компьютерного оборудования для управления экспериментом

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

Идея состоит в том, чтобы использовать порты ввода-вывода — VGA, Ethernet, разъемы для динамиков и т. д. — на компьютере, чтобы напрямую общаться с датчиками и исполнительными механизмами в экспериментальной установке. Например. разрежьте одну сторону кабеля Ethernet (другой конец подключен к компьютеру) и отправьте каждую линию на другое устройство. Я знал постдока, который сделал что-то очень похожее, используя BeagleBone. Он написал некоторый ассемблерный код, который позволил ему синхронизировать все с внутренними часами, и использовал контакты GPIO, чтобы эффективно получить гибридный генератор/прицел, который можно было полностью программировать. Похоже, то же самое должно быть возможно и с ноутбуком, и это будет иметь дополнительное преимущество, заключающееся в том, что вы можете выполнять анализ данных с того же устройства.

Основная потенциальная трудность, которую я предвижу, заключается в том, что аппаратное обеспечение BeagleBone спроектировано с учетом такого рода ввода-вывода, в то время как я ожидаю, что аппаратным обеспечением ноутбука, вероятно, будет сложнее управлять напрямую. Например, я знаю (из какого-то предварительного расследования, http://ask.metafilter.com/125812/Simple-USB-control-how-to-blink-an-LED-через-код), что таким образом доступ к портам USB будет затруднен. , а VGA (согласно данные 15-контактного порта VGA читать и писать с помощью Matlab) невозможно. Однако я ничего не нашел об использовании других портов, таких как Ethernet или разъемы для динамиков.

Таким образом, главный вопрос заключается в следующем: будет ли эта идея осуществимой (без затрат многих месяцев на каждую новую вариацию аппаратного обеспечения), и если да, то какой тип ввода-вывода (Ethernet, разъемы для динамиков и т. д.), вероятно, будет лучшим выбором. ?

Вспомогательные вопросы:

  1. Где я могу найти материал, чтобы узнать, как я могу выполнить этот план? Я даже не знаю, какие ключевые слова вставлять в Google.

  2. Будет ли легкость, с которой я могу это сделать, сильно зависеть от марки операционной системы или оборудования?


person Sesquipedal    schedule 27.10.2014    source источник
comment
низкоуровневые параллельные порты содержат не менее 8 быстрых (>64 кГц) переключателей для вывода и 8 быстрых кнопок (коротких датчиков) для ввода и реализованы путем чтения/записи одного адреса памяти с 8-битным значением, также известным как один байт. для ввода вы можете взломать дешевый USB-геймпад и припаять выводы к мембранным контактам кнопки, получив быстрый 10-канальный дискретный контроллер ввода менее чем за 20 долларов.   -  person dandavis    schedule 27.10.2014
comment
выходы с ПК сложнее, но дешевые варианты включают в себя индикаторы numlock, динамики, геймпады с вибрацией / обратной связью, светодиоды USB-накопителя (пропингуйте диск для активации), извлечение лотка дисковода, фотосенсоры и мигающие прямоугольники на мониторе, и, конечно же: много вещей, которые вы покупаете для задачи (бу).   -  person dandavis    schedule 27.10.2014
comment
Большинство современных ПК очень бедны в плане простого ввода-вывода, а те интерфейсы, которые у них есть (например, USB), как правило, имеют удивительно высокую задержку. Если вам нужна тесная связь с реальным миром, вам понадобится встроенный процессор с прямым GPIO, такой как ARM SOC на биглбоне вашего друга, а не потребительский ноутбук.   -  person Chris Stratton    schedule 27.10.2014
comment
Я бы начал с того, что узнал, какие чипы контроллера у вас есть на вашем ноутбуке, а затем погуглил их. Я ожидаю, что вы в основном найдете проекты DIY, подтверждающие концепцию, такие как контроллеры гаражных ворот, простые домашние системы орошения и т. д. Я предвзят, но я бы определенно выбрал Linux для этого — даже если повестка дня Microsoft не обязательно чтобы препятствовать такого рода вещам (что с разработчиками, разработчиками, разработчиками и всем остальным), я бы совсем не удивился, если бы вы быстро начали натыкаться на маленькие наклейки с недействительной гарантией в виде неинтуитивных, нестабильных и/или недокументированных API.   -  person tripleee    schedule 27.10.2014


Ответы (2)


Единственный кабель, который я могу придумать для ПК, который может приблизиться к этому, - это параллельный кабель принтера, который почти исчез. Это 25-жильный кабель, по которому распределяются данные, чтобы он мог отправлять больше данных одновременно. Я просто не уверен, можете ли вы настроить таргетинг на конкретную строку или это скорее заполнение слева направо при отправке данных.

Использовать его на ноутбуке сегодня было бы определенно сложно. Вы не найдете ноутбуков с параллельными портами. Есть USB-кабели для параллельного подключения и последовательно-параллельные кабели, но я предполагаю, что единственный элемент управления, который у вас будет, это USB или последовательный интерфейс, а не параллельный.

Что касается Ethernet, у вас есть 4 витые пары, из которых только 2 пары используются и 2 пары являются дополнительными.

Есть доступное аппаратное обеспечение под названием Zwave, которое вы, возможно, захотите изучить. Zwave позволит вам построить сеть устройств, которые взаимодействуют в ячеистой сети. Я не уверен, какое время отклика вам нужно.

На самом деле я просто подумал о том, что может быть хорошим решением. Проверьте оборудование для обеспечения безопасности. Существует много оборудования для ПК, которое контролирует двери, окна, датчики и т. д. Эта отрасль может найти то, что вы ищете.

person CubeRoot    schedule 27.10.2014

Я думаю, что самым простым способом было бы использовать USB-порт в качестве устройства интерфейса пользователя (HID) и использовать специально созданную программу PIC и PIC, который включает в себя функции USB для кодирования данных, которые должны быть отправлены на компьютер, и таким образом быть возможность запрограммировать его независимо от ОС благодаря тому, что все основные ОС имеют функцию HID USB.

В любом случае, если вы использовали свой MIC/VGA/HDMI любой другой порт, вам все равно нужно устройство для кодирования данных или их передачи, а также другая программа внутри компьютера для декодирования отправляемых данных.

И помните, что разное оборудование имеет разное программное обеспечение (драйверы), которое может декодировать необработанные данные другими странными способами, что делает зависимым ваше оборудование ввода-вывода.

Надеюсь, это поможет, но именно поэтому USB был изобретен в первую очередь, чтобы сделать его независимым от оборудования и ОС.

person MrJomp    schedule 27.10.2014