Оглавление:

Звоните в Интернет!: 4 шага
Звоните в Интернет!: 4 шага

Видео: Звоните в Интернет!: 4 шага

Видео: Звоните в Интернет!: 4 шага
Видео: Звоните в полицию 2! Судьба злодейка. Все серии (премьера 2023) 2024, Ноябрь
Anonim
Image
Image
Кнопка для Arduino
Кнопка для Arduino

Ring the Web предназначена для воздействия на веб-сайты из местных / реальных мест.

Подробнее об этом:

makker.hu/RingTheWeb/

Вам понадобиться:

  • 1 кнопка
  • Резистор 10к
  • Ардуино (любого типа)
  • кабели
  • маленький маломощный компьютер - в данном случае RPi
  • доступ к серверу или компьютеру с публичным IP с помощью node.js
  • Веб-сайт

Шаги:

  1. Кнопка для Arduino
  2. Arduino на Raspberry
  3. Малина на сервер
  4. Веб-сайт на сервер

Шаг 1: кнопка для Arduino

Для начала вам понадобится Arduino и кнопка!

Возможны любые из них, выбор за Вами.

Для их подключения следуйте официальному руководству по кнопкам Arduino.

Вот код Arduino:

// Код Arduino для чтения цифрового вывода и отправки значения в последовательный порт

// Балаж Ковач, 2018. void setup () {Serial.begin (9600); // открываем последовательный порт pinMode (8, INPUT); // подключаем кнопку к выводу 8} int counter = 0; // что-то использованное позже void loop () {if (digitalRead (8) == 1) {// проверяем состояние вывода 8 Serial.write ("8"); } задержка (100); счетчик ++; if (counter = 20) {// каждые 20x100 = 2000 мс -> counter = 0; Serial.write («0»); // отправляет на сервер сообщение "я существую"}} // вот и все!

Шаг 2: Arduino для Raspberry

Arduino на Raspberry
Arduino на Raspberry

Теперь мы можем подключить Arduino к компьютеру. В этом случае мы используем Raspberry из-за его низкого энергопотребления.

Подключите его через USB или напрямую к контактам RX-TX, описанным здесь.

Затем установите node.js и npm, как описано здесь. Ключевые слова:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

а потом

sudo apt-get install -y nodejs

Npm (диспетчер пакетов Node.js) нужны модули socket.io-client и serialport, поэтому установите их:

npm установить socket.io-client

npm установить последовательный порт

Откройте и сохраните файл something.js со следующим кодом:

// инициализируем соединение socket.io:

var socket; var io = require ('socket.io-client'); socket = io ("https://yourserver.com:port"); // если соединение с сервером прошло успешно: socket.on ('connect', function () {socket.send ("я здесь!"); console.log ("connected to the server");}); // инициализируем связь через последовательный порт, NB / dev = ttyACM0 можно изменить: var SerialPort = require ('serialport'); var serialPort = новый SerialPort ('/ dev / ttyACM0', {baudRate: 9600}); // Если что-то приходит от Arduino, отправляет разные сообщения // на сервер в соответствии с этим serialPort.on ('data', function (data) {console.log ('Data:', data.toString ('ascii')); if (data.indexOf ('8')! == - 1) {socket.send ('/ RingTheBell 1');} if (data.indexOf ('0')! == - 1) {socket. send ('/ client1 1');}}); // Считываем доступные данные - я думаю, в этом нет необходимости serialPort.on ('readable', function () {console.log ('Data:', port.read ());});

Теперь вы должны также настроить код node.js на стороне сервера, пока вы не можете запустить и протестировать скрипт с помощью

узел./something.js

Если что-то не так, дайте мне знать!

Шаг 3. Серверный код

Серверный код
Серверный код

На стороне сервера нам понадобится node.js с сервером socket.io.

Так что добавьте это с помощью:

npm установить socket-io

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

Итак, откройте servercript.js следующим образом:

var http = require ('http'), io = require ('socket.io'); // открываем минимальный http-сервер. socket.io это нужно. var server = http.createServer (функция (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hello');}); // включаем сокет tcp - устанавливаем порт! server.listen (7004, function () {console.log ("TCP-сервер, работающий на порту 7004");}); // анализировать tcp-сообщения var socket = io.listen (server); socket.on ('соединение', функция (клиент, rinfo) {client.broadcast.emit ('система', 'кто-то подключился…'); client.on ('сообщение', функция (событие) {console.log (событие); // рассылаем любое сообщение всем подключенным пользователям! socket.emit ('message', event);}); client.on ('allbody', function (event) {}); client.on ('disconnect', function () {socket.emit ('сообщение', 'кто-то отключился …');});});

Попробуйте проверить это с помощью

узел./serverscript.js

Если клиент тоже работает, вы должны увидеть его общение на обеих консолях. По крайней мере, эти:

Данные: 0

- периодически сообщает системе, что связь с сервером Arduino-> Raspberry-> работает.

а также

Данные: 8

- сообщает, что кнопка включена.

Шаг 4. Настройте веб-сайт

Настроить веб-сайт
Настроить веб-сайт

Теперь мы готовы с 75%!

Завершите тяжелую работу включением кода для веб-сайта.

Это просто.

сначала включите клиент socket.io:

затем создайте систему анализатора сообщений:

var socket;

socket = io ("yourserver.com:port"); socket.on ('connect', function () {socket.send ('анонимный клиент - пользователь веб-сайта - подключен!'); socket.on ('message', function (msg) {// если Вы хотите увидеть каждое сообщение, просто раскомментируйте его: // console.log (msg); if (msg == "/ RingTheBell 1") // вот код, который будет использоваться для выражения события нажатия кнопки: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; if (msg == "/ client1 1") {// здесь можно что-нибудь разместить который реагирует на статус подключенного клиента};});

Вуаля!

готов.

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