Mục lục:

Rung chuông trên web!: 4 bước
Rung chuông trên web!: 4 bước

Video: Rung chuông trên web!: 4 bước

Video: Rung chuông trên web!: 4 bước
Video: Ring The Golden Bell - Rung chuông vàng THCS Tề Lỗ 2024, Tháng mười một
Anonim
Image
Image
Nút bấm cho Arduino
Nút bấm cho Arduino

Ring the Web là để ảnh hưởng đến các trang web từ địa phương / thực.

Thông tin thêm về nó:

makker.hu/RingTheWeb/

Có thể bạn sẽ cần:

  • 1 nút bấm
  • Điện trở 10k
  • Arduino (bất kỳ loại nào)
  • dây cáp
  • máy tính nhỏ, công suất thấp - trong trường hợp này là RPi
  • truy cập vào máy chủ hoặc máy tính có IP công cộng với node.js
  • trang mạng

Các bước:

  1. Nút ấn sang arduino
  2. Arduino sang Raspberry
  3. Raspberry đến máy chủ
  4. Trang web đến máy chủ

Bước 1: Nút ấn vào Arduino

Đầu tiên, bạn cần một Arduino và một nút bấm!

Bất kỳ loại nào trong số họ đều có thể, bạn có thể lựa chọn.

Để kết nối chúng, vui lòng làm theo hướng dẫn nút chính thức của Arduino.

Đây là mã Arduino:

// Mã Arduino để đọc chân kỹ thuật số và gửi giá trị đến cổng nối tiếp

// Balázs Kovács, 2018. void setup () {Serial.begin (9600); // mở cổng nối tiếp pinMode (8, INPUT); // kết nối nút bấm với Pin 8} int counter = 0; // cái gì đó dùng sau này void loop () {if (digitalRead (8) == 1) {// kiểm tra trạng thái chân 8 Serial.write ("8"); } delay (100); bộ đếm ++; if (counter = 20) {// cứ 20x100 = 2000ms -> counter = 0; Serial.write ("0"); // gửi thông báo "tôi đang tồn tại" tới máy chủ}} // chỉ có vậy!

Bước 2: Arduino sang Raspberry

Arduino sang Raspberry
Arduino sang Raspberry

Bây giờ chúng ta có thể kết nối Arduino với máy tính. Trong trường hợp này, chúng tôi sử dụng Raspberry, vì nó tiêu thụ điện năng thấp.

Kết nối nó qua USB hoặc trực tiếp bằng các chân RX-TX, được mô tả ở đây.

Sau đó cài đặt node.js và npm như được mô tả ở đây. Các từ khóa là:

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

và sau đó

sudo apt-get install -y nodejs

Npm (trình quản lý gói của Node.js) cần các mô-đun socket.io-client và serialport, vì vậy hãy cài đặt chúng:

npm cài đặt socket.io-client

npm cài đặt cổng nối tiếp

Mở và lưu tệp something.js bằng mã sau:

// khởi tạo kết nối socket.io:

ổ cắm var; var io = demand ('socket.io-client'); socket = io ("https://yourserver.com:port"); // nếu kết nối đến máy chủ thành công: socket.on ('connect', function () {socket.send ("tôi ở đây!"); console.log ("đã kết nối với máy chủ");}); // khởi tạo giao tiếp cổng nối tiếp, NB / dev = ttyACM0 có thể được thay đổi: var SerialPort = demand ('serialport'); var serialPort = new SerialPort ('/ dev / ttyACM0', {baudRate: 9600}); // Nếu thứ gì đó đến từ Arduino, gửi các thông điệp khác nhau // tới máy chủ theo nó 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');}}); // Đọc dữ liệu có sẵn - tôi nghĩ không cần thiết serialPort.on ('readable', function () {console.log ('Data:', port.read ());});

Bây giờ Bạn cũng nên thiết lập mã node.js phía máy chủ, cho đến khi Bạn có thể bắt đầu và kiểm tra tập lệnh bằng cách

nút./something.js

Nếu có gì sai sót, xin vui lòng cho tôi biết!

Bước 3: Mã phía máy chủ

Mã phía máy chủ
Mã phía máy chủ

Về phía máy chủ, chúng ta cần node.js với máy chủ socket.io.

Vì vậy, hãy thêm nó với:

npm cài đặt socket-io

Sau đó, bạn sẽ cần một tập lệnh tương tự như mã ở bước thứ 2, với sự khác biệt là nó đợi các kết nối và nếu chúng có mặt, nó sẽ phát bất kỳ thông báo nào được gửi từ máy khách tới tất cả các máy khách, trong điều này trường hợp, đối với người dùng trang web…

Vì vậy, hãy mở một servercript.js với những điều sau:

var http = request ('http'), io = request ('socket.io'); // mở một máy chủ http tối thiểu. socket.io cần nó. var server = http.createServer (function (req, res) {res.writeHead (200, {'Content-Type': 'text / html'}); res.end ('hello');}); // bật ổ cắm tcp - thiết lập cổng của bạn! server.listen (7004, function () {console.log ("Máy chủ TCP chạy trên cổng 7004");}); // phân tích thông báo tcp var socket = io.listen (server); socket.on ('connection', function (client, rinfo) {client.broadcast.emit ('system', 'somebody connect…'); client.on ('message', function (event) {console.log (event); // phát bất kỳ thông báo nào tới mọi người dùng được kết nối! socket.emit ('message', event);}); client.on ('mọi người', function (event) {}); client.on ('ngắt kết nối', function () {socket.emit ('message', 'ai đó đã ngắt kết nối…');});});

Hãy thử để kiểm tra nó với

nút./serverscript.js

Nếu máy khách cũng đang chạy, Bạn sẽ thấy giao tiếp của họ trên cả hai bảng điều khiển. Ít nhất những điều này:

Dữ liệu: 0

- định kỳ cho hệ thống biết rằng giao tiếp máy chủ Arduino-> Raspberry-> đang hoạt động.

Dữ liệu: 8

- cho biết nút đang bật.

Bước 4: Định cấu hình trang web

Định cấu hình trang web
Định cấu hình trang web

Bây giờ chúng tôi đã sẵn sàng với 75%!

Hoàn thành công việc khó khăn với bao gồm mã cho trang web.

Dễ thôi.

đầu tiên, hãy bao gồm ứng dụng khách socket.io:

sau đó tạo hệ thống phân tích tin nhắn:

ổ cắm var;

socket = io ("yourerver.com:port"); socket.on ('connect', function () {socket.send ('client nặc danh - người dùng trang web - được kết nối!'); socket.on ('message', function (msg) {// nếu bạn muốn xem mọi thông báo, chỉ cần bỏ ghi chú nó: // console.log (msg); if (msg == "/ RingTheBell 1") // đây là mã được sử dụng để thể hiện sự kiện nút bấm: {document.body.style.background = "#ccc"; setTimeout (function () {document.body.style.background = "# 000";}, 1000);}; if (msg == "/ client1 1") {// ở đây bạn có thể đặt một cái gì đó phản ứng với trạng thái máy khách được kết nối};});

Voilá!

Sẵn sàng.

Đề xuất: