مقدمة
تستخدم كاميرات المراقبة لمتابعة نشاط الأطفال داخل المنزل في ظل غياب الوالدين أو مراقبة المسابح الداخلية خشية وصول من لا يعرف السباحة فيها أو لحماية المنازل ومكاتب العمل من التعديات والسرقة، في هذا الدرس ستتعلم كيف تصنع كاميرا مراقبة ذكية تنقل الصور لتيليجرام باستخدام الراسبيري باي.
المواد والأدوات
1× راسبيري باي
1× سلك (HDMI)
1× كرت ذاكرة
1× سلك ايثرنت
1× كاميرا للراسبري باي (raspberry pi camera module) أو USB webcam
توصيل الدائرة
وصل الكاميرا مع الراسبيري باي كما هو ظاهر في الشكل التالي.
إنشاء بوت على التيليجرام
عليك بالبداية تنصيب برنامج التيليجرام على هاتفك أو أي جهاز لوحي تفضله Telegram.
بعد تنصيبه سجل اسمك وبياناتك ورقم هاتفك كما هو معتاد.
أنشئ بوت باسم (Geeksvalley) يتم إرسال أوامر التشغيل والاطفاء عليه بالخطوات التالية:
بالبداية تحتاج بوت BotFather الرسمي الخاص بالتيليجرام اكتب في صفحة البحث BotFather.
بعد ذلك اكتب رسالة start/ سيرد عليك برسالة تحتوي على جميع الأوامر التي يستطيع تنفيذها البوت.
لإنشاء بوت جديد أرسل newbot/.
سيرد عليك البوت برسالة تطلب منك تسمية البوت الذي قمت بإنشائه في هذا الدرس تمت تسميته GeeksValley.
سيرد عليك البوت برسالة تطلب منك تحديد اسم المستخدم للبوت وبنهاية اسم المستخدم اكتب bot_.
هنا اسم المستخدم GeeksValley_bot.
سيتم إرسال رسالة بأنه تم انشاء البوت ويتضمن رابط HTTP API احفظ الرابط ستستخدمه عند كتابة كود المشروع على الراسبيري باي.
تهيئة الراسبيري باي
أولا، سوف تحتاج إلى تثبيت نظام الراسبيان على الراسبيري باي إذا لم تكن قد فعلت ذلك قم بالإطلاع على الدرس الأول نظام تشغيل الراسبيري باي
وبعد تثبيت النظام، يمكنك تهيئة النظام من خلال الرجوع للدرس الثاني تهيئة نظام التشغيل
افتح الشاشة السوداء LXterminal للبدء باستخدام الراسبيري باي.
للبدء، قم بإستخدام الـ Termial لتحديث الراسبيري باي إلى أحدث إصدار.
sudo apt-get update sudo apt-get upgrade
ثم أعد تشغيل الراسبيري باي.
reboot
حمّل البايثون على الراسبيري باي.
sudo apt install python3 idle3
بعد ذلك حمّل Telepot حتى تتمكن من تكوين جسر تواصل مع برنامج التيليجرام.
sudo pip install telepot
تفعيل الكاميرا على الراسبيري باي
من القائمة الرئيسية انقر على Preferences ثم اختر Raspberry Pi Configuration.
في أعلى الصفحة انقر على Interfaces مقابل Camera انقر على Enabled حتى تتمكن من تفعيلها.
أعد تشغيل الراسبيري باي.
الكود البرمجي
ستشاهد في قائمة Programming وجود برنامج جديد وهو Python 3 (IDLE) انقر عليه.
من قائمة File اختر New File.
انسخ الكود التالي والصقه بالملف الفارغ لكن هناك أمور مهمة عليك العمل بها قبل رفع الكود البرمجي إلى الراسبيري باي.
import telepot
import time
import os
from picamera import PiCamera
path=os.getenv("HOME")
# Handling message from Telegram
def handleMessage(msg):
id = msg['chat']['id'];
command = msg['text'];
print ('Command ' + command + ' from chat id' + str(id));
if (command == '/photo'):
print ("Taking picture…");
# Initialize the camera
camera = PiCamera();
camera.start_preview()
camera.capture(path + '/pic.jpg',resize=(640,480))
time.sleep(2)
camera.stop_preview()
camera.close()
# Sending picture
bot.sendPhoto(id, open(path + '/pic.jpg', 'rb'))
else:
bot.sendMessage(id, "Command not found..")
bot = telepot.Bot('your_bot_id');
bot.message_loop(handleMessage);
print ("Listening to bot messages….");
while 1:
time.sleep(10);
شرح الكود البرمجي
هنا نستعدي المكتبات الضرورية للنظام مثل time, os و PiCamera و telepot.
import telepot
import time
import os
from picamera import PiCamera
في هذا الأمر يمكن الحصول على مسار أو موقع HOME.
path=os.getenv("HOME")
بعد ذلك يستطيع المستخدم التحكم بالكاميرا وذلك بإدخال الأوامر في برنامج التيليجرام.
يقوم المستخدم بكتابة الأمر photo/ حتى يتمكن من التقاط الصور الحية وبعد ذلك سينطبع الأمر على الشاشة:
…Taking picture
# Handling message from Telegram
def handleMessage(msg):
id = msg['chat']['id'];
command = msg['text'];
print ('Command ' + command + ' from chat id' + str(id));
if (command == '/photo'):
print ("Taking picture…");
هنا سيتم تهيئة الكاميرا لالتقاط الصور وتعيين مقاسات خاصة لهذه الصور.
# Initialize the camera
camera = PiCamera();
camera.start_preview()
camera.capture(path + '/pic.jpg',resize=(640,480))
time.sleep(2)
camera.stop_preview()
camera.close()
في هذا الأمر سيتم تكوين جسر تواصل مع التيليجرام حتى يتم إرسال الصور الحية إليه.
# Sending picture
bot.sendPhoto(id, open(path + '/pic.jpg', 'rb'))
في حالة كتب المستخدم أمر غير الأمر photo/ ستظهر له رسالة “Command not found” بمعنى أن الأمر غير موجود.
bot.sendMessage(id, "Command not found..")
هذا السطر مهم وحساس للغاية عليك كتابة HTTP API الخاص بالبوت الذي قمت بإنشائه.
;(‘الصق HTTP API’) bot = telepot.Bot
bot = telepot.Bot('your_bot_id');
الرسالة التي ستظهر مباشرة بعد رفع الكود البرمجي هي “Listening to bot messages” بمعنى أن الراسبيري باي سيستجيب ويتفاعل مع الرسائل المرسلة من قبل التيليجرام.
bot.message_loop(handleMessage);
print ("Listening to bot messages….");
احفظ الملف camera بالمسار الافتراضي.
يمكنك الآن رفع الكود البرمجي من قائمة Run اختر Run module.
سيكون هناك رسالة مفادها بأن الراسبيري باي سيأخذ الأوامر من التيليجرام لتنفيذها.
سيبدأ النظام بالعمل مباشرة يمكنك إرسال photo/ من التيليجرام وستلاحظ أنها مطابقة لمخرجات الشاشة.