Я хотел бы создать сетевое устройство (по линии вызова службы гостиничного обслуживания), которое имеет несколько входных линий, которые могут быть однозначно идентифицированы на компьютере в сети.
Я нашел продукт с аналогичным функционалом.
Я предполагаю, что для устройства потребуется микроконтроллер, связанный с контроллером ввода-вывода Ethernet? Нужна ли мне ОС для генерации пакетов сообщений TCP/IP, которые могут быть обнаружены на ПК? Пожалуйста, предложите блок-схему, которой я могу следовать, чтобы сделать это.
Мне непонятно, что именно вы хотите. Я думаю, что это примерно так: у вас есть ряд линий, которые должны быть сопряжены с микроконтроллером, и этот микроконтроллер посылает сигнал на компьютер. Компьютер обрабатывает этот сигнал.
Что касается части микроконтроллера, вы можете использовать микросхему со встроенным Ethernet, например PIC18F67J60 , упомянутую Олином. Вы также можете использовать микросхему меньшего размера (более простую в программировании) с внешней микросхемой Ethernet, такой как ENC28J60 . Вы можете написать программное обеспечение для микроконтроллера, используя стек TCP/IP от Microchip , стек TCP/IP от Olin Lathrop (см. раздел «Пример прошивки для сети») или реализацию Мэтью Шинкеля в Jalv2 .
Поскольку микроконтроллер посылает сигнал компьютеру, проще всего сделать компьютер сервером, а микроконтроллер клиентом. Это означало бы, что вам нужен какой-то сервер на компьютере. Я бы порекомендовал вам использовать HTTP-сервер, потому что для него доступно больше всего информации. Для Linux вы можете использовать сервер LAMP , для Windows используйте WAMP или XAMPP.
Вам нужно будет создать скрипт на стороне сервера, который обрабатывает запрос от клиента. Клиент должен вызвать этот скрипт. Вы могли бы, например, сделать запрос клиента, /button.php?button=17
когда была нажата кнопка номер 17. Тогда сценарий на стороне сервера может быть таким:
<?php
if (!isset($_GET['button'])) { // Check if ?button exists
die('The button variable is mandatory.'); // If not, quit
}
$button = (int) $_GET['button']; // Cast ?button to an integer
if ($button == 0) { // Check if it was an integer
die('Invalid button number.'); // If not, quit
}
// Do stuff with $button
Вот схема блока:
Позвольте мне объяснить это.
Кнопки и другие вводы-выводы формируют вход для микроконтроллера, который вы собираетесь использовать. Это будут кнопки, с которыми вы собираетесь взаимодействовать, но также могут быть и другие вещи, такие как устройства I2C / SPI или что-то еще.
Вы можете получить информацию от этого IO с помощью базового программирования чипа . Чип должен считывать значения со входов.
Чип (может быть PIC) с ethernet (может быть встроенным) обрабатывает входящую информацию, и передает ее на IP сервера , скажем , 192.168.0.10.
Для этого его необходимо сначала отправить на маршрутизатор с IP-адресом 192.168.0.1, используя стек TCP/IP . На чипе этого не заметишь. Это так же, как вы связываетесь с сервером напрямую.
Маршрутизатор обрабатывает пакет и отправляет его на сервер по адресу 192.168.0.10. Вам не нужно этого делать, маршрутизатор сделает это сам.
Сервер получает HTTP - запрос и должен его обработать. Он отправляет ответ маршрутизатору по адресу 192.168.0.10, который перенаправляет его на чип. На схеме блока это не показано, потому что в данном приложении это не нужно: данные должны отправляться с чипа на сервер , а не обратно.
Данные с чипа могут использоваться сервером для отображения на экране, сохранения в файле или других действий с ними. Это полностью зависит от вас.
Вы также можете, как предлагает Олин в комментариях, использовать TCP-сервер вместо HTTP-сервера. Это возможно и более эффективно (теоретический профи, вы этого не заметите). Я бы порекомендовал новичку в сети использовать HTTP-сервер. Существует множество информации по этой теме, и с ней очень легко начать работу. Если вы уже знаете что-то о сети, вы также можете создать TCP-сервер. Ни один из двух серверов не будет более сложным для реализации на стороне клиента.
Я бы предложил использовать недорогой микроконтроллер, который я использую под названием «Electric Imp», он небольшой (размером с SD-карту) и содержит все, что вам нужно, чтобы иметь кнопку, которая обеспечивает безопасное подключение через Wi-Fi к Интернету и даже работает на заряд батареи.
Конечно, как только ваше нажатие кнопки исчезнет из Интернета, у вас будет 1001 вариант того, что вы можете с этим сделать.
Одна действительно приятная особенность заключается в том, что ваши обновления кода передаются на устройство из Интернета, поэтому его можно обновить на месте.
Возьмите микро с поддержкой Ethernet, например PIC18F67J60, и подключите к нему все кнопки. Микросхема устраняет дребезг кнопок. Когда он видит активность, заслуживающую отчета, он открывает TCP-соединение с известным сервером на известном порту, отправляет информацию и закрывает соединение.
Джим Дирден
Олин Латроп
Блимер