Оглавление:

Удаленное выключение или перезагрузка компьютера с устройством ESP8266: 10 шагов (с изображениями)
Удаленное выключение или перезагрузка компьютера с устройством ESP8266: 10 шагов (с изображениями)

Видео: Удаленное выключение или перезагрузка компьютера с устройством ESP8266: 10 шагов (с изображениями)

Видео: Удаленное выключение или перезагрузка компьютера с устройством ESP8266: 10 шагов (с изображениями)
Видео: Установил Windows 11 на старый компьютер 1990 года 2024, Июль
Anonim
Image
Image

Чтобы было ясно, мы выключаем ВАШ компьютер, а не чей-то другой.

История такая:

Мой друг на Facebook написал мне сообщение и сказал, что у него есть дюжина компьютеров, на которых выполняется куча математики, но каждое утро в 3 часа ночи они блокируются. Поскольку компьютеры находятся в 30 минутах езды, очень неудобно проехать два города (мы живем в Южной Дакоте), чтобы выключить и выключить компьютеры. Он спросил, могу ли я построить для него IoT-устройство, которое позволило бы ему перезапустить компьютер, который нарушил правила, не выходя из своей уютной кровати?

Чтобы никогда не пропустить вызов, я согласился составить что-нибудь для него. Это тот проект.

Используя два зарегистрированных с битовым сдвигом, ESP8266 ESP01, несколько светодиодов и несколько самодельных оптоизоляторов, весь проект стоит около 5 долларов, если вы покупаете детали из Китая на eBay. Может быть, 20 долларов от Amazon.

Это довольно сложная сборка с большим количеством тонкой пайки. Не считая моих промахов и повторной пайки, мне потребовалось около 20 часов, но это оказалось потрясающе и отлично сработало.

Давай начнем.

Шаг 1: прототип платы

Доска прототипа
Доска прототипа
Доска прототипа
Доска прототипа

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

Вам понадобятся следующие детали:

  • Один ESP8266 ESP01 (хотя подойдет любое устройство ESP8266)
  • Два 8-битных регистра сдвига, я использовал 74HC595N
  • 16 светодиодов, я использовал белые светодиоды в соломенной шляпе, которые работают от 3,3 В. Если вы используете другие, вам могут понадобиться резисторы.
  • Три резистора 3k3-ohmpulldown
  • Перемычки и макет

Вам также потребуется построить хотя бы один оптоизолятор. Я использовал черную термоусадочную трубку, яркий белый светодиод, резистор 220 Ом и фоторезистор. Припаяйте резистор 220 Ом к катоду светодиода, а затем запечатайте светодиод и фоторезистор внутри термоусадочной трубки лицом друг к другу. Но мы вернемся к ним позже.

Следуйте схеме подключения, представленной на следующем шаге. Подключение довольно простое.

Поскольку ESP8266 работает при напряжении 3,3 В, убедитесь, что вы правильно его запитали

Шаг 2: Схема с использованием Will-CAD

Схема с использованием Will-CAD
Схема с использованием Will-CAD

Схема довольно проста. Мы следуем стандартной схеме подключения 8-битного регистра сдвига. Поскольку я использую два 8-битных регистра сдвига, их нужно соединить вместе на выводах «часы» и «защелки».

Поскольку ESP01 имеет только два контакта GPIO, нам нужно повторно использовать TX и RX в качестве выходов, что отлично подходит для наших целей. Вы можете использовать ESP-12 или другую версию с более чем двумя контактами GPIO, если хотите большего контроля. Но это прибавит еще 2 доллара к стоимости проекта, а это просто бред.

Нам нужно держать наши 8-битные регистры сдвига и выводы ESP01 на высоком уровне при загрузке, чтобы они не делали странных вещей или не переходили в программный режим. Я использовал три резистора 3k3, большие или меньшие значения тоже подойдут. Это значение было получено из руководств, в которых говорится об использовании альтернативных контактов на ESP01.

ESP01 (ESP8266)

  • Тактовый контакт TX 3k3 подтяжка
  • Штифт защелки RX 3k3 подтяжка
  • 00 последовательные данные 3k3 подтяжка
  • 02 плавающий

8-битный регистр сдвига (74HC595H)

  • VCC 3,3 В
  • OE 3.3V (это разрешающий контакт)
  • GND GND
  • CLR GND (это не дает очистить чистый вывод)
  • И светодиоды уходят на землю.

Шаг 3: Код ESP8266

Код ESP8266
Код ESP8266

Код ESP8266 довольно прост. К сожалению, редактор в Instructables довольно бесполезен, поэтому вы захотите получить код прямо из Github.

Проект "стойки-перезагрузка":

github.com/bluemonkeydev/arduino-projects/…

Класс SensorBase доступен здесь. Это необходимо, если вы хотите «использовать» мой код:

github.com/bluemonkeydev/arduino-projects/…

Следует отметить несколько моментов. Код довольно хорошо документирован.

  1. Я очень ленивый разработчик, поэтому я поместил весь многоразовый код ESP8266 в класс под названием «SensorBase». Вы также можете найти это на Github по ссылке выше.
  2. Вы должны ввести сервер вашего брокера MQTT, имя пользователя, пароль и порт. Их можно найти немного ниже, когда мы создадим сервис CloudMQTT.
  3. Вам НЕ нужно следовать синтаксическому формату моей темы. Однако я бы порекомендовал ему следовать.
  4. В этом коде нет ничего умного. Это очень прагматично.

Шаг 4: Макет монтажной платы

Макет перфокарта
Макет перфокарта

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

Моему проекту требовалось два 8-битных регистра сдвига, поэтому я начал с их расположения посередине. Я знал, что мои разъемы для оптоизоляторов на данный момент будут простыми женскими разъемами, хотя это не идеальное решение.

Я люблю светодиоды, и для этого нужен был светодиод для каждой цепи оптоизолятора. Я знал, что этап тестирования будет намного проще, если я смогу получить мгновенную обратную связь прямо на плате, но я также знал, что эти светодиоды вызовут огромную боль при пайке. И они были. У меня не было ничего меньшего, чем 5-миллиметровые светодиоды, поэтому пришлось их расставлять. В моей окончательной конструкции катоды были выполнены в виде зигзага, потому что я не хотел протягивать аноды по заземляющим проводам. Это оказался хороший дизайн. Провода светодиодов соединяются над 8-битными регистрами сдвига и для простоты проходят наверху платы с помощью экранированных проводов.

Для питания я хотел запустить его от старого USB-кабеля, чтобы он питался напрямую от одного из компьютеров. Это будет работать нормально, потому что на порты USB обычно подается питание, даже если компьютер выключен. Я использовал линейный стабилизатор напряжения LM317, чтобы снизить мощность до 3,3 В. Стабилизатор на 3,3 В тоже сработал бы, но у меня его не было.

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

Шаг 5: припаянная плата

Паяная плата
Паяная плата

Моя последняя припаянная плата оказалась очень хорошей. Как и ожидалось, светодиоды наверху потребовали много усилий, чтобы правильно припаять их без каких-либо коротких замыканий. После того, как вы припаяли светодиоды и разъемы, с помощью мультиметра определите, есть ли у вас короткие замыкания. Лучше всего узнать сейчас.

Все остальное, кроме светодиодов, прошло неплохо. Мне пришлось переделать несколько соединений, но с некоторыми пациентами, небольшой отладкой и небольшой повторной пайкой все будет работать нормально.

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

Шаг 6: Изготовление оптоизоляторов

Изготовление оптоизоляторов
Изготовление оптоизоляторов

Конечно, делать оптоизоляторы самостоятельно не нужно. Многие коммерческие версии доступны по цене копейки за штуку и будут работать лучше, поскольку они будут напрямую управлять линиями электропередачи компьютера без какого-либо сопротивления. Но у меня не было оптоизолятора, поэтому мне пришлось сделать свой, используя светодиод, резистор и фоторезистор.

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

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

Шаг 7: Настройка CloudMQTT

Настройка CloudMQTT
Настройка CloudMQTT
Настройка CloudMQTT
Настройка CloudMQTT
Настройка CloudMQTT
Настройка CloudMQTT

Любая служба MQTT или аналогичная служба IoT, такая как Blynk, будет работать, но я предпочитаю использовать CloudMQTT для этого проекта. В прошлом я использовал CloudeMQTT для многих проектов, и, поскольку этот проект будет передан другу, имеет смысл создать новую учетную запись, которую также можно передать.

Создайте учетную запись CloudMQTT, а затем создайте новый «экземпляр», выберите размер «Симпатичный кот», поскольку мы используем его только для управления, без ведения журнала. CloudMQTT предоставит вам имя сервера, имя пользователя, пароль и номер порта. (Обратите внимание, что номер порта не является стандартным портом MQTT). Перенесите все эти значения в свой код ESP8266 в соответствующие места, убедившись, что регистр правильный. (серьезно, скопируйте / вставьте значения)

Вы можете использовать панель «Пользовательский интерфейс Websocket» в CloudMQTT, чтобы увидеть подключения вашего устройства, нажатия кнопок и, в странном сценарии, получение сообщения об ошибке.

Вам также понадобятся эти параметры при настройке клиента Android MQTT, поэтому при необходимости запишите значения. Надеюсь, ваш пароль не слишком сложен для ввода на телефоне. Вы не можете установить это в CloudMQTT.

Шаг 8: клиент MQTT для Android

Клиент MQTT для Android
Клиент MQTT для Android
Клиент MQTT для Android
Клиент MQTT для Android
Клиент MQTT для Android
Клиент MQTT для Android
Клиент MQTT для Android
Клиент MQTT для Android

Подойдет любой клиент MQTT для Android (или iPhone), но мне нравится MQTT Dash. MQTT Dash прост в использовании, очень отзывчив и имеет все необходимые параметры.

После установки настройте сервер MQTT, заполните сервер, порт, имя пользователя и пароль значениями вашего экземпляра, а НЕ вашими данными для входа в CloudMQTT. Вы можете использовать любое имя клиента, какое захотите.

Если вы ввели все правильно, он автоматически подключится к вашему серверу MQTT и покажет вам пустой экран, поскольку вы еще не настроили кнопки, текст или сообщения. На пустом экране вы видите «+» в правом верхнем углу, щелкните его и выберите «Выбрать / Кнопка». Мы добавим по одной кнопке Select / Button на компьютер, так что 8 или 16 или меньше.

Если вы ДЕЙСТВИТЕЛЬНО получили ошибку подключения, вы неверно указали одно из значений. Вернитесь и проверьте еще раз

Каждый компьютер будет использовать тему, соответствующую значениям, указанным в вашем коде. Если вы следовали моим соглашениям, они были бы «cluster / rack-01 / computer / 01». Было бы лучше изменить значения «on» и «off», чтобы они соответствовали нашему коду. Вместо «0» и «1» используйте значения «on» и «off» соответственно. Я также рекомендую использовать QoS (1), так как мы будем ожидать подтверждения от сервера.

После добавления вы можете нажать и удерживать кнопку «клонировать», чтобы создать группу, а затем изменить их имя и тему.

Достаточно просто.

Шаг 9: подключение ESP8266 к Wi-Fi

Подключение ESP8266 к Wi-Fi
Подключение ESP8266 к Wi-Fi

Используя модуль ESP8266 Wifi Manager, очень просто подключить наше устройство к Wi-Fi. Если вы использовали мой класс SensorBase, он уже встроен. Если нет, следуйте инструкциям на странице Wifi Manager.

Wifi Manager попытается подключиться к вашему SSID при загрузке, что невозможно, поскольку вы никогда не сообщали ему свой SSID, поэтому он автоматически перейдет в режим точки доступа (или режим AP) и отобразит простую веб-страницу с запросом вашего SSID. & Пароль. Используя свой телефон или ноутбук, подключите новую беспроводную сеть с именем SSID «ESP_xxxxxx», где «xxxxxx» - это некоторая случайная (не совсем случайная) последовательность. (Полные инструкции можно найти на странице Wifi Manager.)

После подключения откройте свой веб-браузер и укажите его на 192.168.4.1, введите свой SSID и пароль и нажмите «Сохранить».

Теперь вы в Интернете, и на вашем IoT-устройстве работает I-часть!

Шаг 10: Окончательное подключение и тестирование

Окончательное подключение и тестирование
Окончательное подключение и тестирование

Все сделано.

Чтобы все подключить, найдите кабель кнопки питания компьютера в месте его соединения с материнской платой. Вы должны увидеть два ряда заголовков с кучей проводов и разъемов. Как правило, они довольно хорошо промаркированы. Отключите переключатель и вставьте вилку оптоизолятора. Я надел несколько вилок "Dupont", так что они подключились точно так же, как кабель питания. Полярность на этом конце не имеет значения, но убедитесь, что у вас правильная полярность другого конца - того, который идет к вашей пользовательской плате.

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

Нажмите соответствующую кнопку проверки в своем приложении, и как только приложение получит ответ от сервера MQTT с сообщением «выключено», кнопка снова станет не отмеченной.

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

Удачи, и дайте мне знать, как получилось у вас.

Рекомендуемые: