هل سبق لك أن فكرت في التحكم في أجهزة منزلك من خلال صوتك !!! ماذا لو تمكنا من التحكم في الأجهزة المنزلية بهذه الطريقة وجعل هذه الأجهزة أكثر ذكاءً؟ أصبح المساعدين الصوتيين أكثر شعبية لأننا نتجه نحو عصر أنظمة AI و IoT. لقد سمعت عن مساعد Google و Apple Siri و Amazon Alexa. هذه كلها أنظمة AI قائمة على الصوت، وأكثر شهرة هما الأمازون اليكسا وجوجل وأبل وأمازون ، كل هذه الشركات أطلقت بالفعل مكبرات الصوت .

يوفر موقع Amazon واجهة برمجة التطبيقات لاستخدام خدمة الصوت الأكثر شعبية ، أليكسا. وهو مفتوح المصدر ومتاح للجميع. علاوة على ذلك ، يمكنك تثبيت أو دمج Alexa على أجهزة مخصصة مثل Raspberry Pi والحصول على وظائف Amazon Echo الكاملة في هذا الجهاز. باستخدام خدمة صوت اليكسا ، يمكننا تشغيل الموسيقى والحصول على معلومات حول الطقس وحجز التذاكر وغيرها الكثير.

والان دعنا نرى كيفية إنشاء نظام اوتوماتيك منزلي يتم التحكم فيه صوتياً باستخدام Amazon Alexa و Raspberry Pi. سنرى كيف يمكننا استخدام Raspberry Pi لتشغيل خدمة Alexa Voice والتحكم في مصباح ضوئي.

الأدوات المستخدمة :

  1. Raspberry Pi 3 [Recommended] or Raspberry Pi 2 Model B [Supported] and SD Card (8GB or more)
  2. External Speaker with 3.5mm AUX cable
  3. Any Webcam or USB 2.0 Microphone
  4. Relay module
  5. LED/ AC Bulb

الانظمة المستخدمة :

  1. Register an account with Alexa Voice Services
  2. Register an account with PubNub
  3. Register an account with IFTTT

تطبيقات البرامج ومتطلبات الويب:

نحن نفترض أيضًا أن جهاز Raspberry pi قد تم إعداده بالفعل بنظام تشغيل Raspbian ومتصل بالإنترنت.

فإذا لم تكن قد انتهيت من الاعدادات انقر هنا

الخطوه الاولى : إعداد Raspberry Pi مع SSH و VNC

ولاً ، سنقوم بتوصيل Raspberry Pi بـ SSH و VNC. لمتابعة هذا البرنامج التعليمي على الموقع الرسمي لـ Raspberry Pi ،

ترد أدناه روابط.

ل SSH: الرابط SSH

ل VNC:رابط VNC

إذا كان لديك جهاز مراقبة ، فيمكنك ترك هذه الخطوة والانتقال مباشرة إلى الخطوة 2 وهو إعداد خدمة صوت Alexa (Avs). قبل ذلك علينا التحقق من اتصال الميكروفون.

التحقق من ميكروفون كاميرة الويب مع Raspberry Pi: 1. افتح محطة Raspberry Pi واكتب iscord -l command. سيقوم هذا بعرض الأجهزة المتصلة بـ Raspberry Pi كما هو موضح أدناه:

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

[sourcecode]arecord /home/pi/Desktop/test.wav -D sysdefault:CARD=1
[/sourcecode]

3. لتشغيل نوع الصوت المسجل هذا الأمر:

[sourcecode]omxplayer -p -o local /home/pi/Desktop/test.wav[/sourcecode]

إذا كنت قد قمت بتوصيل Raspberry Pi مع جهاز العرض باستخدام كابل HDMI ، فبإمكانك إخراج الصوت بشكل افتراضي من خلال مكبر صوت الشاشة (إذا كان هناك مكبر صوت داخلي). لذا ، لتغييره إلى 3.5 ملم ، عليك كتابة الأمر التالي:

[sourcecode]sudo raspi-config and go to Advance option. [/sourcecode]

حدد الصوت من القائمة -> حدد Force 3.5mm -> حدد Ok ثم أعد تشغيلك Raspberry Pi.

الآن ، يجب أن تسمع الصوت من جاك 3.5mm.

الخطوه 2: إعداد حساب مطور Amazon الخاص بك وتكوين خدمات Alexa Voice على Raspberry Pi:

لقد سبق أن أوضحنا ذلك بالتفصيل في البرنامج التعليمي السابق حيث قمنا ببناء مكبرات الصوت الذكية لـ Amazon Echo. هنا نحن نركز على التحكم في الأجهزة المنزلية مع Alexa حتى لا نوضح العملية بأكملها مرة أخرى ، لذا اقرأ المقال السابق واحصل على مكبر الصوت جاهز مع خدمات صوت Alexa المثبتة على جهاز Raspberry pi الخاص بك. لاختبار اليكسا ، فقط توقظها بالقول اسمها! 

الخطوه 3: إعداد PubNub و IFTTT من أجل أتمتة Alexa Pi الرئيسية:

  • تثبيت PubNub Python SDK
  • إعداد IFTTT لخدمة Amazon Alexa

ولمزيد من التفاصيل لهذه الخطوات اضغط هنا

الجزء 4: اتصالات الأجهزة والرسم البياني للحلقة:

بالنسبة لهذا المشروع ، نحتاج إلى وحدة Relay Module و AC أو أي مكون AC آخر أو يمكنك استخدام LED بسيط لغرض الاختبار. يوجد أدناه مخطط الرسم البياني ووصلات الأجهزة للتحكم في AC Appliance مع Amazon Alexa. سنستخدم GPIO18 في برنامج python النصي الخاص بنا ، لذا قم بتوصيل relay بـ GPIO 18. يمكنك تغيير ذلك في برنامج python.

الخطوة 5: رمز بيثون للتحكم في الضوء:

[sourcecode]
# Initialize the Pubnub Keys
pub_key = "***************************"
sub_key = "************************"
[/sourcecode]

 

 


[sourcecode]
#Import all the libraries
import RPi.GPIO as GPIO
import time
from pubnub import Pubnub

# Initialize the Pubnub Keys
pub_key = "***************************"
sub_key = "************************"

LIGHT = 18 #define pin of RPi on which you want to take output

def init(): #initalize the pubnub keys and start subscribing

global pubnub #Pubnub Initialization
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(LIGHT,GPIO.OUT)
GPIO.output(LIGHT, False)
pubnub = Pubnub(publish_key=pub_key,subscribe_key=sub_key)
pubnub.subscribe(channels=’alexaTrigger’, callback=callback, error=callback, reconnect=reconnect, disconnect=disconnect)

def control_alexa(controlCommand): #this function control Aalexa, commands received and action performed
if(controlCommand.has_key("trigger")):
if(controlCommand["trigger"] == "light" and controlCommand["status"] == 1):
GPIO.output(LIGHT, True)
print "light is on"
else:
GPIO.output(LIGHT, False)
print "light is off"
else:
pass

def callback(message, channel): #this function waits for the message from the aleatrigger channel
if(message.has_key("requester")):
control_alexa(message)
else:
pass

def error(message): #if there is error in the channel,print the error
print("ERROR : " + str(message))

def reconnect(message): #responds if server connects with pubnub
print("RECONNECTED")

def disconnect(message): #responds if server disconnects with pubnub
print("DISCONNECTED")

if __name__ == ‘__main__’:
init() #Initialize the Script
[/sourcecode]