"مثل تفاحة العين ..." أو نقوم بعمل نظام أمان بسيط يعتمد على متحكم دقيق (Canny أو Arduino) و Raspberry PI

أثناء إعداد المقالة حول التعرف على وحدات التحكم الدقيقة باستخدام TensorFlow و OpenCV و Craftduino و Canny 3 tiny و Raspberry PI لفتت انتباهي في نفس الوقت ، وبعد ذلك قررت أنه سيكون من الرائع دمجها مرة أخرى في مقال واحد. فكرت لفترة طويلة حول ما أكتب عنه ، ثم أشعر بالخجل من الاعتراف ، تذكرت أنني كنت عمًا صحيًا ، ولم أقم بتوصيل أي شيء عبر UART بعد. فكرت: "كل شيء يحتاج إلى التجربة في الحياة". ولكن الكتابة فقط عن الاتصال بـ UART مملة ، لذلك تم طلب جميع أنواع "الألعاب" على الفور ، بما في ذلك العلامة التجارية الجديدة Arduino ، وزوج من أجهزة الاستشعار.

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

في هذه المقالة ، سأشارك تجربتي في توصيل مستشعر الضغط ومستشعر حركة دوبلر بأجهزة التحكم الدقيقة. سنقوم بتوصيل وحدات التحكم عبر واجهة UART السلكية بـ GPIO Raspberry PI 3. ثم سنكتب برنامجًا بسيطًا إلى Python لعرض حالة نظام الأمان ، وفي النهاية سنقوم بتوصيل الهاتف الذكي بتوت باستخدام VNC لمراقبة نظام الأمان على مسافة من الكمبيوتر.

تريد ترك انديانا جونز عاطل عن العمل؟ ثم أنت مرحب بك تحت القط.



كما هو الحال دائمًا ، في البداية ، سأشرح أنني نفسي جديدًا في قضايا الإلكترونيات DIY وأتعلم ببطء من مقالة إلى أخرى. لذلك ، لا تفهم ما سأكتبه على أنه الحقيقة المطلقة. بالتأكيد يمكن القيام بكل شيء بشكل أفضل.

إليك ما سنتحدث عنه اليوم:

الجزء الأول: مقدمة
الجزء الثاني: ربط الدائرة والبرنامج الخاص بـ Canny 3 الصغير
الجزء الثالث: توصيل الدائرة وبرنامج Arduino Uno
الجزء الرابع: Raspberry PI وبرنامج المراقبة في Python
الجزء الخامس: الخلاصة

الجزء الأول: مقدمة


قد يسأل القارئ اليقظ ، "لماذا اشتريت Arduino إذا ذكرت CraftDuino من قبل؟" ، كل شيء شائع جدًا. كسر CraftDuino مرة أخرى. ذات مرةDrzugrikلقد أصلحته ، وهو الآن "عزل ذاتي" ، ولا أريد أن أزعج شخصًا من أجل لا شيء.

لذا ، اقتربنا بسلاسة من القاعدة المادية. في هذه المقالة ، استخدمت:

  1. المقاوم الضغط FSR402:


  2. مستشعر حركة دوبلر RCWL-0516:


    في المتجر حيث اشتريت كلا المستشعرين في الوصف على الموقع ، كتب أنهما مخصصان لـ Arduino ، ولكن في الواقع اتضح أنه لا حاجة إلى مكتبات خاصة وبدأ كل شيء دون مشاكل في Canny.
  3. متحكم اردوينو أونو:


  4. Canny 3 Tiny microcontroller - نسخة مع كتلة طرفية وتسخير الكبل:


  5. راسبيري PI 3 موديل ب كمبيوتر فردي:

  6. اّخر: ألواح خبز بورد ، أسلاك ومقاطع تمساح ، محول طاقة توت العليق

دعونا ننكب على العمل.

الجزء الثاني: ربط الدائرة وبرنامج Canny 3 الصغير


هناك العديد من الأمثلة على الإنترنت حول كيفية توصيل Arduino عبر UART ، هناك أمثلة أقل بكثير حول Canny ، لذلك دعونا نبدأ به.
من أجل عدم تضخيم طول المقالة وعدم تكرار نفسي ، أذكرك بأنني نظرت في أهم القضايا الأساسية لكيفية العمل مع Canny وبيئة تطوير CannyLab في هذه المقالة ، ومثال على توصيل أجهزة الاستشعار بمحول تناظري إلى رقمي (ADC) وإرسال رسالة عبر Virtual COM الميناء ، جعلت في هذه المقالة .

بالنسبة لأولئك الذين لا يقرؤون هذا ، لكنهم يحاولون على الفور توصيل أجهزة الاستشعار بـ ADC ، هناك نقطة مهمة. لا تكرر خطأي ، لكي تعمل مخرجات وحدة التحكم رقم 5 ورقم 6 في وضع ADC ، فمن الضروري تعيين وصلات العبور ، كما في الصورة أدناه. ليس الأمر صعبًا ، حتى فعلت ذلك.


ونقطة أخرى مهمة في مخرجات وحدة التحكم ستكون جهد الإمداد ، أي إذا قمت بالاتصال من مصدر طاقة خارجي بدلاً من USB ، فتأكد من أن جهد الخرج لا يتجاوز الجهد المسموح به لأجهزة الاستشعار و UART.

بالنسبة لهذه المقالة ، كان هناك قافز واحد كافٍ بالنسبة لنا ، ولكن إذا حصلنا على مكواة لحام ، فلماذا نضيع الوقت في التفاهات؟

انتبه إلى الكتلة الطرفية ، فإن حزام الكبل الأصلي يأتي قياسيًا لهذا الإصدار من وحدة التحكم ، فهو صعب وربما مناسب إذا تم استخدامه داخل السيارة ، ولكن ليس للتجارب على الطاولة. لقد توصلت إلى الدراية الفنية ، واستبدلت الحزام الأصلي بسخانات غالبًا ما تكون مجمعة بمعدات الكمبيوتر ، جيدًا ، أو تباع في المتاجر التي تبيع إلكترونيات DIY وتبين أنها مريحة للغاية. لا يجلسون بشكل سيئ في الكتلة ، ناعم وفي نفس الوقت يعطي إطالة إضافية.

دعنا ننتقل إلى مخطط الاتصال:


كل شيء بسيط للغاية ولا يتطلب أي مهارات خاصة ، أعتقد أن أي شخص تقريبًا يمكنه التعامل معه.

أولاً ، دعنا نتعامل مع قوة المجلس. سنأخذ "الأرض" من إخراج "-" لوحدة التحكم ، ولكن مع زائد ، كل شيء ليس واضحًا. للوهلة الأولى ، يبدو من المنطقي الاتصال بالطرف "+" ، ولكن من الناحية العملية يبدو أنه محطة لـ + 5V INPUT. لذلك ، بدلاً من ذلك ، سنقوم بتكوين أحد المخرجات كمخرج + 5V ، وتزويده بوحدة منطقية وسحبه إلى "زائد". قررت أخذ رقم الخروج 3.

يتم توصيل مستشعر الضغط ببساطة شديدة. في الواقع ، هذا المقاوم. ننقل الطاقة إلى إحدى "أرجلها" ، ومن "الأرجل" الثانية نقوم بلف السلك إلى إدخال وحدة التحكم المتصلة بـ ADC (إما رقم 5 أو رقم 6). اخترت رقم 6.

بالمناسبة ، فقدت جهاز استشعار الضغط مرتين. خطأي الثاني كان توصيل جهاز الاستشعار. لا يتناسب مع لوحة اللوح ، وتبين أنه يجب أن يكون متصلاً بكتلة طرف لولبية أو شيء مشابه. كان علي الخروج مع "التماسيح".

مستشعر الحركة غير متصل أكثر تعقيدًا ، نضع +5 فولت من اللوحة في مقبس Vin ، ونوصله بمقبس GND على لوحة التوصيل ، ونوصل مقبس OUT بأي إدخال رقمي لوحدة التحكم ، وقمت بتوصيله بالمخرج رقم 5 (نحن لن نقوم بتبديله إلى وضع ADC).

يبقى توصيل جهاز التحكم بـ "Raspberry" من خلال UART. للقيام بذلك ، يجب أن يكون مخرج وحدة التحكم رقم 2 ، والذي يصبح في وضع UART هو الناتج "TX" ، متصلاً بإدخال Raspberry GPIO RX ، ويجب أيضًا توصيل الأرضية الموجودة على اللوحة و Raspberry PI GPIO GND.

ينصح الكثير من الناس بتنسيق مستوى الجهد إلى 3.3 فولت ، وحاولت حتى توصيل Canny من خلال مقسم الجهد ، ولكنه يعمل بشكل أسوأ معه بدونه (أو لا يعمل على الإطلاق) ، لذلك في هذه الحالة قمت بالاتصال مباشرة بـ Raspberry UART. يبدو أن لا شيء احترق. كل شيء يعمل.


ربما كنت قد فكرت: "لماذا هو متصل" بأسلاك UART ، عندما يكون ذلك ممكنًا عبر البلوتوث؟ " في الواقع ، هناك العديد من الأمثلة على ربط Arduino من خلال UART بوحدة HC-06 على الشبكة. إذا كنت تعتقد أن المنتدى ، فإن Canny يتصل به أيضًا دون مشاكل. لكني لم أجربها بنفسي. أردت الاتصال باستخدام الأسلاك ، وقررت تأجيل اتصال Bluetooth حتى المرة القادمة.

إليك ما تبدو عليه الدائرة:


دعنا ننتقل إلى برنامج وحدة التحكم (الرسم التخطيطي):


في كتلة "إعداد المعلمات" ، نقوم بتشغيل وضع ADC للقناة (الإدخال) رقم 6 ، ونقل القناة رقم 3 إلى وضع الإخراج المنفصل والتغذية في وحدة منطقية (+ 5 فولت في حالتنا) ، تم تحليل كل شيء تقريبًا في هذه المقالة .

فقط إعدادات UART غير مألوفة لنا. لحسن الحظ ، كل شيء بسيط. يحتوي Canny 3 tiny على واجهة UART واحدة فقط (على سبيل المثال ، يحتوي Canny 7 على اثنين منهم). عندما يتم تنشيط وضع UART ، يصبح الإخراج رقم 1 RX ، ويخرج رقم 2 TX. سنختار معدل الباود 9600 المعتاد ، ولكن وضع نقل البيانات محدود. العدد المتوفر من بتات البيانات هو 8 بايت فقط وبت توقف واحد (لموديلات التحكم "الأقدم" هناك المزيد من الخيارات). لتمكين UART ، من الضروري إدخال تسجيل تكوين UART1 في السجل المقابل اكتب ثابت محدد مسبقا:


في الواقع ، في حالتنا ، كان من الممكن اختيار ثابت لا يتضمن سوى وضع الإرسال UART ، لأننا لا نخطط لاستعادة أي شيء. لكنني قررت أن أعرض مثالاً أكثر عمومية.

إذا قمت بتحديد وحدة التحكم الصحيحة عند إنشاء الرسم التخطيطي ، فلن يسمح لك CannyLab باختيار الثابت الذي لا يناسبه. لذلك ، لا يعمل اختيار وضع خطير عن علم. الحقيقة هي دائمًا فرصة إدخال ثابت يدويًا ، ولكن من الأفضل عدم القيام بذلك.

سنرسل 10 أحرف في الرسالة (بما في ذلك مشكلتان) ، لذا سنكتب ثابتًا يساوي 10 في سجل الرسائل.

لست متأكدًا من رفع TX واحد إلى واحد ، ولكن فقط في حالة تشغيل هذا العنصر ، كما أفهمه ، أحتاج إليه لا تشد مع المقاوم.

في كتلة"إرسال دوري عبر UART و VCP"
نستخدم مولد PWM لإرسال 1 مرة في ثانيتين حتى لا تسد وحدة التحكم القناة لثانية عن طريق إرسال رسالة باستمرار ، نستخدم "Trailing Edge Detector". والتي ستعمل مرة واحدة فقط في لحظة التحول من واحد إلى صفر ، إذا كانت وحدة التحكم جاهزة في تلك اللحظة لإرسال رسالة عبر UART ، فستأتي وحدتان إلى إدخال كتلة الضرب المنطقية ، على التوالي ، أيضًا "1" ، والتي ستأمر وحدة التحكم بإرسال رسالة عبر UART ، وأيضًا في حالة تصحيح الأخطاء في منفذ USB-COM (كتبت عن هذا بالتفصيل في مقال سابق ).

في كتلة "العرض"كل شيء بسيط للغاية ، إذا كانت القيم من مستشعر الضغط أقل من عتبة معينة وتم تشغيل مستشعر الحركة (سيعطي "1" للإخراج) ، فسنقوم بتشغيل LED الأخضر لوحدة التحكم كإشارة إنذار.

سيكون الأمر رائعًا إذا عمل النظام كما في الفيلم:



لكننا سنقتصر على تشغيل LED.

هنا عرض مرئي:


هناك آخر كتلة "تركيبة رسالة" متبقية .

نتلقى بيانات من ADC ، دقة ADC من 0 إلى 1023. نرسل أحرفًا إلى UART ، مما يعني أنه يجب تحويل القراءات من مستشعر الضغط إلى سلسلة. نظرًا لأن الحد الأقصى هو 1023 (4 أرقام) ، فإننا نحتاج إلى 4 بايت. يخرج "Number to String Converter" عددًا من الأحرف عند المخرجات ، سيكون لدينا زوجان من الأحرف ، كل منهما سنرسل رسائل UART و VCP إلى سجلات التثبيت. بعد ذلك ، نحتاج إلى كتابة فاصل حتى لا يتم دمج القراءات ، نظرًا لأن CannyLab يستخدم زوجين من الأحرف ، فإننا نأخذ حرفين "مسافة" كفاصل. وبالمثل ، نقوم بتحويل قراءات مستشعر الحركة ، فهي تعطي إما منفصلة أو 00 أو 01 ، مما يعني أننا بحاجة إلى زوج واحد فقط من الأحرف. في نهاية الرسالة ، اكتب حرف الإرجاع وحرف السطر الجديد.

كما كتبت بالفعل في المقالة حول المقاوم الضوئي ، لا يمتلك Canny شاشة منفذ COM الخاصة به ، ولكن يمكنك استخدام أي طرف ثالث ، وبما أننا سنستخدم Arduino IDE بعد ذلك بقليل ، فسوف نستخدم شاشة منفذ COM المدمجة.

لذا ، أضع إصبعًا على مستشعر الضغط وأتحرك على طول الطريق:



يمكن تنزيل الرسم التخطيطي ، مثل الرمز بأكمله أدناه ، من GitHub .

الآن دعنا ننتقل إلى Arduino.


الجزء الثالث: مخطط الأسلاك وبرنامج Arduino Uno


لن أتحدث عن Arduino بمثل هذه التفاصيل ، لأن كل شيء تافه للغاية.

الاسلاك الرسم البياني:



ملحوظة! نظرًا لأن خرج Arduino RX / TX يعمل بجهد 5 فولت ، و Raspberry PI لديه 3.3 فولت ، ينصح الناس بتوصيل Arduino بـ Raspberry UART باستخدام وحدات خاصة أو على الأقل باستخدام مقسم الجهد. ليس لدي وحدة خاصة ، ولكن مقسم الجهد مرحب به دائمًا. أخذت 3 مقاومات بقيمة اسمية 1000 أوم. وقام بصنبور بعد المقاوم الثاني ، حيث سينخفض ​​2/3 من الجهد. إذا قمت بإغلاق الطاقة عبر USB إلى 5 فولت ، فعندئذٍ فقط يتحول 5*0.66=3.3 .

على الرغم من أنني ربطت Arduino مباشرة بـ UART Raspberry PI وبدا كل شيء يعمل.

نقوم بتوصيل مستشعر الضغط بـ "+" والمدخل التناظري "A1". مستشعر الحركة للطاقة والإدخال الرقمي رقم 5.

هكذا تبدو الدائرة عند تجميعها:



إليك رمز الرسم لـ Ardino: الرمز بسيط ، والشيء الوحيد الذي يستحق التوضيح هو متغير "التعديل". والحقيقة هي أنه عند الاتصال بجهاز Arduino ، أظهر مستشعر الضغط أحيانًا قيمًا غير صفرية حتى بدون تحميل ، ولم أفكر في أي شيء أفضل من طرح متوسط ​​قيمة "الضوضاء" لتوحيد القراءات مع Canny. أيضًا ، كما في الحالة السابقة ، قمنا بتطبيق الشاشة مع LED مدمج ، في حالة عمل المستشعرات:

byte photoPin = A0;

void setup() {
Serial.begin(9600);
pinMode(photoPin, INPUT);
pinMode(5, INPUT);
pinMode(13, OUTPUT);
}

void loop() {
int adjustment = 250;
int pressure_sensor = analogRead(A1) - adjustment;
int motion_sensor = digitalRead(5);

Serial.print(pressure_sensor);
Serial.print(" ");
Serial.println(motion_sensor);
if ((pressure_sensor<380) && (motion_sensor==1))
{
digitalWrite(LED_BUILTIN, HIGH);
}
else {
digitalWrite(LED_BUILTIN, LOW);
}
delay(1000);
}









الجزء الرابع: توت العليق PI وبرنامج المراقبة في بيثون


أولاً ، تحتاج إلى تمكين UART ، وكذلك SSH و VNC ، ثم الاتصال بـ Raspberry باستخدام هاتف ذكي.

انتقل إلى إعدادات Raspberry PI وقم بتمكين SSH و VNC و UART ، كما في الصورة:



تحسبًا لذلك ، أوقفت البلوتوث.

سنكتب برنامجًا بسيطًا في Python ، وقد استخدمت IDE المدمج ولم أقم بتثبيت أي وحدات Python إضافية. كان لدي Raspbian مع صورة سطح المكتب ، متوسطة الحجم ، والتي تستهلك حوالي 1.1 غيغابايت.

في برنامج المراقبة لدينا ، سنستخدم كلاً من وحدة التحكم والواجهة الرسومية لعرض المعلومات. لتنفيذ واجهة المستخدم الرسومية ، قررت استخدام Tkinter. أستخدمه حقًا للمرة الثانية في حياتي ، لكني كنت بحاجة إلى بضعة حقول نصية ومربع حوار.

إليك رمز البرنامج:

import serial
import time
from tkinter import *
from tkinter import ttk
from tkinter import messagebox

serialport = serial.Serial("/dev/ttyS0", baudrate=9600, timeout=1.0) 

window = Tk()  
window.title("Security system for my pen")  
window.geometry('400x170')
#Presure sensor label
lbl_ps = ttk.Label(window, text="Pressure sensor", font=("Arial Bold", 20))
lbl_ps.grid(column=0, row=0)
lbl_ps_status = ttk.Label(window, text=" ",  font=("Arial Bold", 20))
lbl_ps_status.grid(column=1, row=0)
#Motion sensor label
lbl_ms = ttk.Label(window, text="Motion sensor", font=("Arial Bold", 20))
lbl_ms.grid(column=0, row=1)
lbl_ms_status = ttk.Label(window, text=" ", font=("Arial Bold", 20))
lbl_ms_status.grid(column=1, row=1)

while True:
   counter = 0
   rcv = serialport.readline().decode('utf-8').replace("\r\n","").split('  ')
   if (len(rcv)==2):
       ps=rcv[0]
       ms=rcv[1]
       print (ps+ " " +ms)
       if (int(ps)<380):
           lbl_ps_status.config(text = " Warning!")
           counter += 1
       else:
           lbl_ps_status.config(text = " Ok")

       if (int(ms)>0):
           lbl_ms_status['text']=" Warning!"
           counter += 1
       else:
           lbl_ms_status['text']=" Ok"  
       window.update_idletasks()  
       window.update()
       if (counter == 2):
            messagebox.showinfo("Alarm!", "heck your pen!")     
       time.sleep(1)


من المحتمل أن أتخطى استيراد المكتبات.

بعد الاستيراد ، قمنا بتعيين الإعدادات لـ UART ، المنفذ نفسه ، السرعة والمهلة.

serialport = serial.Serial("/dev/ttyS0", baudrate=9600, timeout=1.0) 


بعد ذلك ، نضع حقول النص (Label) على تخطيط الجدول (على الشبكة)
سيكون لدينا 4 حقول منها 2 بدون تغيير ، وسيتم عرض حالة المستشعر في الحقلين الآخرين.

window.title("Security system for my pen")  
window.geometry('400x170')
#Presure sensor label
lbl_ps = ttk.Label(window, text="Pressure sensor", font=("Arial Bold", 20))
lbl_ps.grid(column=0, row=0)
lbl_ps_status = ttk.Label(window, text=" ",  font=("Arial Bold", 20))
lbl_ps_status.grid(column=1, row=0)
#Motion sensor label
lbl_ms = ttk.Label(window, text="Motion sensor", font=("Arial Bold", 20))
lbl_ms.grid(column=0, row=1)
lbl_ms_status = ttk.Label(window, text=" ", font=("Arial Bold", 20))
lbl_ms_status.grid(column=1, row=1)


بعد ذلك ، قم بإنشاء حلقة لا نهائية.
في بداية الدورة ، سنقوم بإعادة تعيين تسمية التنبيه counter .
ثم اقرأ البيانات من المنفذ التسلسلي.
لكي لا ننظر إلى جميع الإدخالات مثل "\ x00" ، نعيد ترميز الرسالة إلى UTF-8.
ثم نزيل بداية السطر ونهايته بحيث تبقى الأرقام فقط.
بعد ذلك ، نقسم الخط ، وننتبه إلى مسافات الفاصل 2 ، وليس 1.
حتى لا يتعطل البرنامج عندما تكون الرسالة غير صحيحة ، فإن الرمز الإضافي المرتبط بتلقي الرسالة مكتظ في بنية شرطية ستعمل فقط إذا كان يمكن تقسيم الرسالة إلى جزأين.
حسنًا ، اعرض مستشعر الضغط ومستشعر الحركة في وحدة التحكم.

while True:
   counter = 0
   rcv = serialport.readline().decode('utf-8').replace("\r\n","").split('  ')
   if (len(rcv)==2):
       ps=rcv[0]
       ms=rcv[1]
       print (ps+ " " +ms)


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


       if (int(ps)<380):
           lbl_ps_status.config(text = " Warning!")
           counter += 1
       else:
           lbl_ps_status.config(text = " Ok")

       if (int(ms)>0):
           lbl_ms_status['text']=" Warning!"
           counter += 1
       else:
           lbl_ms_status['text']=" Ok"  


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


       window.update_idletasks()  
       window.update()
       if (counter == 2):
            messagebox.showinfo("Alarm!", "heck your pen!")     
       time.sleep(1)


من المهم أن نلاحظ هنا أن مستشعر الحركة يحافظ على الإخراج "1" لمدة ثانيتين من لحظة اكتشاف الحركة. لذا ، كقاعدة عامة ، يتمكن النظام من العمل.

فيما يلي لقطات شاشة توضح تشغيل البرنامج:

جميع أجهزة الاستشعار هادئة:



نجح أحد أمرين:



كلاهما يعمل ، ينتظر النظام أن يعترف المشغل بما يلي:



يبدو أن كل شيء كان كما هو مخطط له.


استنتاج


في الختام ، ضع في اعتبارك الاتصال بـ Raspberry PI من هاتف ذكي. من حيث المبدأ ، لا يوجد شيء معقد ، إذا كان بإمكانك الاتصال من جهاز كمبيوتر ، فيمكنك الاتصال به من الهاتف. كل ما تحتاج إلى معرفته هو Raspberry IP واسم المستخدم وكلمة المرور. لقد قمت بتثبيت VNC Viewer على هاتف Android الذكي الخاص بي ، ولكن يمكنك بالتأكيد الحصول على عميل آخر.

إنه ليس مناسبًا للاستخدام ، ولكنه يعمل:


دعني أذكرك مرة أخرى أنه يمكن تنزيل جميع الشفرات من GitHub .

في كل مرة أعد نفسي بأنني لن أكتب مقالة طويلة ، ولكن هنا مرة أخرى تجاوزت المسودة 10 صفحات مطبوعة. تُظهر المقالة مثالًا سهل التنفيذ لنظام أمان محلي الصنع ، فإن مجال الخيال ضخم.

إذا فهمت أن المقالة كانت ممتعة بالنسبة لك ، فسوف أشرح لاحقًا مقالة أخرى حول الاتصال عبر محول Bluetooth.

UPD:
يبدو أنني حصلت على سلسلة صغيرة من المقالات ، لذلك لراحتك سأترك روابط لمقالات أخرى ذات صلة:


  1. "واحد ، اثنان ، ثلاثة - احرق شجرة عيد الميلاد!" أو أول نظرة لي على وحدة التحكم الصغيرة CANNY 3 .
  2. "الوجهة لها الكثير من المظاهر ..." أو نقوم بالتحكم الآلي في المصباح التلقائي باستخدام CANNY 3 الصغير ومقاوم الضوء .
  3. "ما المراسي؟" أو نتحكم في وحدة التحكم عبر البلوتوث باستخدام تطبيق محمول على Xamarin (Android) .

All Articles