جدول المحتويات:

طابعة اليكسا - طابعة الإيصالات المعاد تدويرها: 7 خطوات (بالصور)
طابعة اليكسا - طابعة الإيصالات المعاد تدويرها: 7 خطوات (بالصور)

فيديو: طابعة اليكسا - طابعة الإيصالات المعاد تدويرها: 7 خطوات (بالصور)

فيديو: طابعة اليكسا - طابعة الإيصالات المعاد تدويرها: 7 خطوات (بالصور)
فيديو: سعود القحطاني وأمه 2024, يونيو
Anonim
Image
Image
طابعة اليكسا | طابعة الإيصالات المعاد تدويرها
طابعة اليكسا | طابعة الإيصالات المعاد تدويرها

أنا معجب بإعادة تدوير التكنولوجيا القديمة وجعلها مفيدة مرة أخرى. منذ فترة ، كنت قد اشتريت طابعة إيصالات حرارية قديمة ورخيصة ، وأردت طريقة مفيدة لإعادة استخدامها. بعد ذلك ، خلال العطلات ، حصلت على Amazon Echo Dot ، وكانت إحدى الميزات التي استخدمتها أكثر من غيرها هي إضافة البقالة إلى قائمة التسوق الخاصة بي. لذلك اعتقدت أنه سيكون من الرائع الجمع بين الاثنين واستخدام طابعة الإيصالات كطابعة IOT لـ Alexa (أو Google Home أو Siri ، إلخ). دعونا نرى ما الذي يتطلبه الأمر لجعل هذه الفكرة حقيقة واقعة.

اللوازم

إليك الأجزاء التي أستخدمها لهذا المشروع:

  1. طابعة الإيصالات الحرارية العامة الرخيصة (تحتاج إلى دعم ESC-POS)
  2. جهاز Amazon Alexa (من المحتمل أن تعمل أجهزة "المساعد المنزلي" الأخرى أيضًا)
  3. رازبيري باي زيرو وايرلس
  4. 7805 منظم 5 فولت
  5. 10μf مكثف
  6. 1μf مكثف

الأشياء الأخرى التي أستخدمها لهذا المشروع هي:

  1. إذا كان هذا ثم هذا (IFTTT.com)
  2. معدات اللحام

الخطوة 1: إعداد Raspberry Pi Zero W

إعداد Raspberry Pi Zero W
إعداد Raspberry Pi Zero W
إعداد Raspberry Pi Zero W
إعداد Raspberry Pi Zero W
إعداد Raspberry Pi Zero W
إعداد Raspberry Pi Zero W

تتمثل الخطوة الأولى في إعادة طباعة طابعة الإيصالات القديمة. اخترت استخدام Raspberry Pi Zero W كوحدة تحكم نظرًا لسعرها الرخيص وصغر حجمها. إنها في الواقع صغيرة بما يكفي لتناسب داخل علبة طابعة الإيصالات نفسها ، لذلك لا توجد اتصالات خارجية! لقد تم بناء Pi Zero W أيضًا في Wifi بحيث يتم دمج كل شيء بشكل أساسي في حجمه الصغير.

لتشغيل Pi ، نحتاج إلى تنزيل نظام التشغيل Raspbian ونسخه على بطاقة microSD باستخدام برنامج مثل Etcher. أدخله في Pi مع كبل HDMI ولوحة المفاتيح والماوس ثم الطاقة.

عندما يتم تشغيل Pi وأنت على واجهة سطح المكتب ، يمكنك الاتصال بالشبكة اللاسلكية الخاصة بك من خلال النقر على أيقونة الشبكة اللاسلكية في الجزء العلوي الأيمن وتحديد اسم الاتصال اللاسلكي الخاص بك. ثم إذا نقرت بزر الماوس الأيمن على نفس الرمز اللاسلكي ، فيمكنك الانتقال إلى إعدادات الشبكة وتعيين عنوان IP ثابت حتى نتمكن من الاتصال به بسهولة عبر الشبكة. أخيرًا ، تريد النقر فوق القائمة الرئيسية وتحديد "Raspbian Configuration Editor" وتحت علامة التبويب "Interfaces" ، تأكد من تمكين SSH. ثم احفظه وأعد تشغيل Pi.

الخطوة 2: الطباعة من Pi

الطباعة من Pi
الطباعة من Pi
الطباعة من Pi
الطباعة من Pi

بمجرد إعادة تشغيل Raspbery Pi ، يجب توصيله بشبكتك اللاسلكية باستخدام IP ثابت وتمكين SSH. لذا يجب أن نكون قادرين الآن على الاتصال به عن بُعد من أي جهاز كمبيوتر آخر. للقيام بذلك ، ستحتاج إلى عميل SSH. بالنسبة إلى Windows ، العميل الجيد هو Putty. يمكنك الاتصال به باستخدام عنوان IP الثابت لـ Pi الذي قمنا بتعيينه مسبقًا. ثم يمكنك تسجيل الدخول باستخدام "pi" كاسم المستخدم و "raspberry" ككلمة المرور.

بعد تسجيل دخول ناجح ، يجب أن نكون الآن في واجهة Pi الطرفية. هنا يمكننا كتابة الأوامر التي سيتم تنفيذها على Raspberry Pi. على سبيل المثال ، من أول الأشياء التي نريد القيام بها التأكد من تحديث البرنامج الموجود على Pi. لذلك ، في المحطة يمكننا كتابة:

sudo apt-get update

سيقوم هذا الأمر بتحديث مستودعات البرامج على Pi. بعد ذلك ، يمكننا تثبيت برنامج الطابعة ESC-POS والمكتبات المطلوبة.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 install - upgrade pip sudo pip3 install python-escpos

بعد القيام بذلك ، يمكننا الآن توصيل الطابعة بمنفذ Micro-USB الخاص بـ Pi (باستخدام محول) وتشغيلها. ثم في محطتنا يمكننا إنشاء نص صغير من لغة بيثون

نانو hello_world.py

وفيه يمكننا إضافة كود الثعبان هذا

#! / usr / bin / pythonfrom escpos.printer import Usb p = Usb (0x0416، 0x5011) p.text ("Mini IOT Printer / n") p.close ()

اخرج منه (CTRL-X) ، واحفظه (CTRL-Y) وقم بتشغيله لاختباره

python3 hello_world.py

الخطوة الثالثة: الاتصال بإنترنت الأشياء (الجزء الأول)

الاتصال بإنترنت الأشياء (الجزء الأول)
الاتصال بإنترنت الأشياء (الجزء الأول)
الاتصال بإنترنت الأشياء (الجزء الأول)
الاتصال بإنترنت الأشياء (الجزء الأول)
الاتصال بإنترنت الأشياء (الجزء الأول)
الاتصال بإنترنت الأشياء (الجزء الأول)
الاتصال بإنترنت الأشياء (الجزء الأول)
الاتصال بإنترنت الأشياء (الجزء الأول)

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

هناك موقع ويب رائع يسمى "If This Then That" والذي يطلق إجراءات لخدمات الإنترنت المختلفة (Alexa و Google Home و Gmail و Facebook و Instagram و Twitter وما إلى ذلك) بناءً على مجموعة من المعايير. على سبيل المثال ، "إذا" أنشر على Facebook (هذا) ، "ثم" أرسل لي بريدًا إلكترونيًا (ذلك).

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

في خيار Webhooks ، يمكننا إضافة عنوان URL يشير إلى Pi الخاص بنا ، والذي سنعود إليه لاحقًا. يمكننا ترك حقل الأسلوب كـ "Get" ، وبالنسبة لنوع المحتوى حدد "Plain Text". بالنسبة لحقل النص الأساسي ، انقر فوق "إضافة مكون" وحدد "القائمة الكاملة". سيؤدي هذا إلى إرسال قائمة التسوق بأكملها كطلب Get.

الخطوة 4: الاتصال بإنترنت الأشياء (الجزء الثاني)

الاتصال بإنترنت الأشياء (الجزء الثاني)
الاتصال بإنترنت الأشياء (الجزء الثاني)
الاتصال بإنترنت الأشياء (الجزء الثاني)
الاتصال بإنترنت الأشياء (الجزء الثاني)

تعتني الخطوة السابقة بجزء "الإنترنت" ، لذا دعنا الآن نعمل على جزء "الأشياء" باستخدام Raspberry Pi. من أجل التواصل مع التطبيق الصغير "If This Then That" webhooks الصغير ، نحتاج إلى إعداد خادم ويب على Raspberry Pi. هناك العديد من الطرق المختلفة لإعداد خادم ويب ، ولكن بالنظر إلى أنني أريد في النهاية تشغيل برنامج نصي من Python ، فقد قررت استخدام خادم Python Flask.

يحتوي Pi على جميع مكتبات Flask مثبتة مسبقًا ، لذلك كل ما نحتاج إليه هو البدء في كتابة نص اختبار:

nano flask_test.py

وفيه ، دعنا نضيف بعض التعليمات البرمجية التي تخدم صفحة ويب بسيطة.

#! flask / bin / python # IMPORT THE FLASK LIBRARIES من flask import Flask ، اطلب #CREATE A FLASK VARIABLE app = Flask (_ name_) #CREATE AN 'INDEX' PAGE @ app.route ('/') def index (): إرجاع "خادم Flask يعمل!" # تشغيل البرنامج إذا _name_ == '_main_': app.run (تصحيح = صحيح ، المضيف = '0.0.0.0')

الآن فقط قم بحفظ البرنامج وتشغيله باستخدام هذا الأمر:

sudo python3 flask_test.py

سترى من خلال استجابة الأمر أن المنفذ الافتراضي الذي يعمل عليه Flask هو المنفذ 5000. لذلك في متصفح الويب ، إذا كتبت عنوان IP الخاص بـ Pi: 5000 ، يجب أن ترى النص "Your Flask server is working!"

لدينا كود بايثون الاختباري من وقت سابق يطبع إلى طابعة الإيصالات الخاصة بنا ، ولدينا خادم الاختبار Flask. لذلك نحتاج بعد ذلك إلى دمجها ودمج بعض التعليمات البرمجية التي تسحب البيانات من تطبيق Webhook الصغير. لنقم بإنشاء ملف Python جديد:

نانو iot_print_server.py

وداخلها ، أضف الكود التالي:

#! flask / bin / python # IMPORT THE FLASK AND PRINTER LIBRARIES من flask import Flask ، طلب من escpos.printer استيراد Usb #ASSIGN VARIABLES FOR THE PRINTER AND FLASK p = Usb (0x0416، 0x5011) app = Flask (_ name_) #CREATE 'INDEX' PAGE @ app.route ('/') def index (): إرجاع "Your Flask server is working!" #CREATE "PAGE" CALLED "LIST" لطباعة ALEXA SHOPPING LIST @ app.route ('/ list') def list (): #CAPTURE "GET" DATA FROM IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (content) #DIVIDE DATA INTO SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA AND ADD TO A NEW LIST newlist = للكلمة في str_split: word = word.split ('،') newlist.extend (word) #REMOVE FORMATTING MARKS rmv_marks = [s.strip ("b '") لـ s في القائمة الجديدة] #PRINT HEADER #print ("قائمة التسوق / n") p.text ("قائمة التسوق: / n ") #ENUMERATE واطبع كل عنصر في LIST r = 1 لـ x في rmv_marks: #print (str (r) +". "+ x +" / n ") p.text (str (r) +". "+ x + "\ n") r + = 1 #RETURN RESULTS إرجاع 'x' # تشغيل البرنامج إذا _name_ == '_main_': app.run (debug = True ، host = '0.0.0.0')

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

الخطوة 5: إعداد الوصول الخارجي باستخدام Ngrok

إعداد الوصول الخارجي مع Ngrok
إعداد الوصول الخارجي مع Ngrok
إعداد الوصول الخارجي مع Ngrok
إعداد الوصول الخارجي مع Ngrok

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

mkdir ngrokcd ngrok wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable… فك ضغط ngrok-stabil-linux-arm./ngrok authtoken [أدخل رمز المصادقة هنا]./ngrok http 5000

*** هام *** الإصدار المجاني من Ngrok لا يمنحك عنوانًا ثابتًا ، لذلك في كل مرة تعيد تشغيل Ngrok ، سيمنحك عنوانًا مختلفًا. إذا كنت تريد عنوانًا ثابتًا بحيث لا تضطر إلى الاستمرار في إعادة تحرير Webhook ، فستحتاج إلى الدفع مقابل حساب تمت ترقيته.

البديل المجاني لـ Ngrok الذي يقدم عناوين IP ثابتة يسمى "Serveo" على www.serveo.net

************************

على الشاشة الناتجة ، يمنحك عنوان إعادة التوجيه (https://random-string.ngrok.io) الذي يمكننا استخدامه في تطبيق Webhook الصغير. لذا بالعودة إلى "If This Then That" ، في حقل URL ، أدخل عنوان إعادة التوجيه Ngrok الخاص بك وقم بتوجيهه إلى صفحة "القائمة" على خادم Flask الخاص بنا. يجب أن تبدو مثل هذا

random_string.ngrok.io/list

ثم انطلق واحفظ التغييرات.

لاختباره ، استمر في تشغيل Ngrok وافتح محطة طرفية جديدة وقم بتشغيل برنامج Python النصي الخاص بنا. مع تشغيل كلا العنصرين ، اسأل Alexa عما هو موجود في قائمة التسوق الخاصة بك. بعد دقيقة أو دقيقتين ، يجب أن تطبع النتائج. إذا كنت تريد طباعته على الفور ، فانتقل إلى التطبيق الصغير الخاص بك على IFTTT وانقر على "التحقق الآن". إذا سارت الأمور على ما يرام ، يجب أن تطبع طابعة الإيصالات ما هو موجود في قائمة التسوق الخاصة بك! الجزء الأخير من الكود الذي نحتاج إلى إضافته هو طريقة لبدء تشغيل ngrok تلقائيًا وخادم القارورة الخاص بنا في كل مرة يبدأ فيها Pi. يمكننا القيام بذلك بسهولة عن طريق جعل برنامج Python النصي الخاص بنا قابلاً للتنفيذ:

chmod + x iot_print_server.py

ثم يمكننا تحرير ملف /etc/rc.local الخاص بنا بحيث يبدو كالتالي:

## افتراضيا هذا البرنامج النصي لا يفعل شيئا. # طباعة عنوان IP _IP = $ (hostname -I) || صحيح إذا ["$ _IP"] ؛ ثم اطبع "عنوان IP الخاص بي هو٪ s / n" "$ _IP" fi #autostart ngrok وأشره إلى ملف المصادقة الخاص بك./home/pi/ngrok/ngrok http -config = / home / pi /.ngrok2 / ngrok. yml 5000 #autostart the printer python script sudo python3 /home/pi/iot_receipt_printer.py & exit 0

الخطوة 6: إضافة Pi إلى الطابعة

إضافة Pi إلى الطابعة
إضافة Pi إلى الطابعة
إضافة Pi إلى الطابعة
إضافة Pi إلى الطابعة
إضافة Pi إلى الطابعة
إضافة Pi إلى الطابعة
إضافة Pi إلى الطابعة
إضافة Pi إلى الطابعة

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

باستخدام منظم جهد 7805 ومكثف 1 فائق التوهج ومكثف 10 فائق التوهج ، تمكنت من إنشاء منظم 5 فولت بسيط قمت بتوصيله بلوحة منطق طابعة الإيصالات. لقد قمت بلحام السلك "-" بالأرض المشتركة ، ثم قمت بلحام السلك "+" بالجانب "الموجود" من مفتاح الطاقة بحيث يتم تشغيل وإيقاف Pi عند تشغيل الطابعة وإيقاف تشغيلها. باستخدام مقياس متعدد ، اختبرت للتأكد من أن الإخراج آمن لـ Pi. ثم قمت بلحام كبل micro-USB وربطته بـ Pi. بعد توصيل الكبل بالطابعة وقلب المفتاح ، تم تشغيل كل من الطابعة و Pi!

أخيرًا ، قمت بحفر ثقب لتوصيل كبل USB من Pi بالطابعة. لقد وجدت مكانًا لوضع منظم 5 فولت و Pi داخل علبة الطابعة ، ثم أعدت كل شيء معًا. حتى الآن الطابعة لديها خادم الويب الخاص بها كذلك!

الخطوة 7: المضي قدمًا

أخذها إلى أبعد من ذلك
أخذها إلى أبعد من ذلك

إذا كنت قادرًا على إلقاء نظرة على "If This Then That" ، فمن المحتمل أنك لاحظت أن به العديد من خدمات الويب المختلفة للاتصال بها. لذلك إذا لم يكن لديك Alexa ، أو لا تهتم باستخدام واحد ، فيمكنك استخدام هذا المشروع للطباعة من أي شيء تقريبًا ، مثل Facebook و Twitter و Gmail و Google Home و Evernote و Tumblr و Flickr و Wordpress ، إلخ. يمكنك العثور على الكود الخاص بي لطباعة التغريدات على صفحة Github الخاصة بي. اذهب الآن وشاهد ما يمكنك التوصل إليه!

تحدي إنترنت الأشياء
تحدي إنترنت الأشياء
تحدي إنترنت الأشياء
تحدي إنترنت الأشياء

الجائزة الأولى في تحدي إنترنت الأشياء

موصى به: