دق الويب !: 4 خطوات
دق الويب !: 4 خطوات
Anonim
Image
Image
اضغط على زر اردوينو
اضغط على زر اردوينو

Ring the Web هو للتأثير على مواقع الويب من أماكن محلية / حقيقية.

مزيد من المعلومات حول هذا الموضوع:

makker.hu/RingTheWeb/

انك سوف تحتاج:

  • 1 زر ضغط
  • 10 كيلو المقاوم
  • اردوينو (أي نوع)
  • الكابلات
  • كمبيوتر صغير منخفض الطاقة - في هذه الحالة RPi
  • الوصول إلى خادم أو كمبيوتر باستخدام IP عام باستخدام node.js
  • موقع الكتروني

خطوات:

  1. اضغط على زر اردوينو
  2. اردوينو إلى توت العليق
  3. توت العليق للخادم
  4. موقع على الخادم

الخطوة 1: اضغط على زر اردوينو

تحتاج أولاً إلى Arduino وزر ضغط!

أي نوع منها ممكن ، الأمر متروك لك للاختيار.

لتوصيلهم ، يرجى اتباع البرنامج التعليمي الرسمي للأزرار من Arduino.

هذا هو كود اردوينو:

// كود Arduino لقراءة دبوس رقمي وإرسال قيمة إلى المنفذ التسلسلي

// Balázs Kovács، 2018. void setup () {Serial.begin (9600)؛ // فتح المنفذ التسلسلي pinMode (8 ، INPUT) ؛ // connect pushbutton to Pin 8} int counter = 0 ؛ // شيء ما تم استخدامه لاحقًا حلقة باطلة () {if (digitalRead (8) == 1) {// check pin 8 status Serial.write ("8")؛ } تأخير (100)؛ عداد ++ ؛ إذا (العداد = 20) {// كل 20 × 100 = 2000 مللي ثانية -> العداد = 0 ؛ Serial.write ("0") ؛ // يرسل رسالة "أنا موجود" إلى الخادم}} // هذا كل شيء!

الخطوة 2: اردوينو لتوت العليق

اردوينو إلى توت العليق
اردوينو إلى توت العليق

الآن يمكننا توصيل Arduino بجهاز كمبيوتر. في هذه الحالة نستخدم توت العليق ، بسبب استهلاكه المنخفض للطاقة.

قم بتوصيله عبر 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 العميل

npm تثبيت serialport

افتح واحفظ ملف something.js بالشفرة التالية:

// تهيئة اتصال socket.io:

مقبس فار var io = تتطلب ('socket.io-client') ؛ المقبس = io ("https://yourserver.com:port") ؛ // إذا كان الاتصال بالخادم ناجحًا: socket.on ('connect' ، الوظيفة () {socket.send ("أنا هنا!") ؛ console.log ("متصل بالخادم") ؛}) ؛ // تهيئة اتصال المنفذ التسلسلي ، يمكن تغيير NB / dev = ttyACM0: var SerialPort = يتطلب ('serialport') ؛ var serialPort = new 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

بعد ذلك ، ستحتاج إلى نص برمجي مشابه للرمز الموجود في الخطوة الثانية ، مع الاختلاف ، أنه ينتظر الاتصالات ، وإذا كانوا موجودين ، فسوف يبث أي رسالة مرسلة من العميل إلى جميع العملاء ، في هذا لمستخدمي الموقع …

لذلك ، افتح ملف servercript.js بما يلي:

var http = يتطلب ("http") ،

io = تتطلب ('socket.io') ؛ // فتح الحد الأدنى من خادم HTTP. socket.io يحتاج إليها. var server = http.createServer (function (req، res) {res.writeHead (200، {'Content-Type': 'text / html'})؛ res.end ('hello')؛})؛ // Turn tcp socket on - اضبط المنفذ الخاص بك! server.listen (7004، function () {console.log ("خادم TCP يعمل على المنفذ 7004") ؛})؛ // تحليل رسائل برنامج التعاون الفني var socket = io.listen (الخادم) ؛ socket.on ('connect'، function (client، rinfo) {client.broadcast.emit ('system'، 'Somebody connect …')؛ client.on ('message'، function (event) {console.log (event)؛ // بث أي رسالة لكل مستخدم متصل! socket.emit ('message'، event)؛})؛ client.on ('everybody'، function (event) {})؛ client.on ('قطع الاتصال'، الوظيفة () {socket.emit ('message'، 'somebody disconneted…') ؛}) ؛}) ؛

جرب اختبارها باستخدام

العقدة./serverscript.js

إذا كان العميل يعمل أيضًا ، فيجب أن ترى اتصالاته على كلا الجهازين. على الأقل هذه:

البيانات: 0

- يخبر النظام بشكل دوري أن اتصال الخادم Arduino-> Raspberry-> يعمل.

و

البيانات: 8

- يخبر أن الزر قيد التشغيل.

الخطوة 4: تكوين موقع الويب

تكوين موقع الويب
تكوين موقع الويب

الآن نحن جاهزون بنسبة 75٪!

قم بإنهاء العمل الشاق بتضمين رمز الموقع.

من السهل.

أولاً ، قم بتضمين عميل socket.io:

ثم أنشئ نظام تحليل الرسائل:

مقبس فار

المقبس = io ("yourserver.com:port") ؛ socket.on ('connect'، function () {socket.send ('anonym client - a website user - is connect!')؛ socket.on ('message'، function (msg) {// إذا كنت تريد أن ترى كل رسالة ، فقط قم بإلغاء التعليق عليها: // console.log (msg) ؛ إذا (msg == "/ RingTheBell 1") // هنا يأتي الكود الذي يجب استخدامه للتعبير عن حدث زر الضغط: {document.body.style.background = "#ccc"؛ setTimeout (function () {document.body.style.background = "# 000"؛}، 1000)؛}؛ إذا (msg == "/ client1 1") {// هنا يمكنك وضع شيء ما الذي يتفاعل مع حالة العميل المتصل} ؛}) ؛

هاهو!

جاهز.

موصى به: