فهرست مطالب:

چاپگر الکسا - چاپگر رسید تا دوچرخه: 7 مرحله (همراه با تصاویر)
چاپگر الکسا - چاپگر رسید تا دوچرخه: 7 مرحله (همراه با تصاویر)

تصویری: چاپگر الکسا - چاپگر رسید تا دوچرخه: 7 مرحله (همراه با تصاویر)

تصویری: چاپگر الکسا - چاپگر رسید تا دوچرخه: 7 مرحله (همراه با تصاویر)
تصویری: Deutsch lernen im Schlaf & Hören Lesen und Verstehen Niveau B2 2024, ژوئن
Anonim
Image
Image
چاپگر الکسا | چاپگر رسید تاثير گذار
چاپگر الکسا | چاپگر رسید تاثير گذار

من طرفدار بازیافت فناوری قدیمی هستم و دوباره آن را مفید می کنم. چندی پیش ، من یک چاپگر قبض گرمای ارزان قیمت ارزان خریداری کرده بودم و می خواستم راهی مفید برای هدف گیری مجدد آن داشته باشم. سپس ، در تعطیلات ، به من هدیه آمازون اکو اهدا شد ، و یکی از ویژگی هایی که بیشتر از آن استفاده کردم افزودن مواد غذایی به لیست خریدم بود. بنابراین فکر کردم ترکیب این دو و استفاده از چاپگر رسید به عنوان یک چاپگر IOT برای Alexa (یا Google Home ، یا Siri ، و غیره) بسیار خوب است. بیایید ببینیم برای عملی شدن این ایده چه کارهایی باید انجام شود.

تدارکات

در اینجا قسمتهایی که برای این پروژه استفاده می کنم آمده است:

  1. چاپگر دریافت کننده حرارتی ارزان قیمت (نیاز به پشتیبانی ESC-POS)
  2. دستگاه آمازون الکسا (سایر دستگاه های "دستیار خانگی" نیز احتمالاً کار خواهند کرد)
  3. Raspberry Pi Zero Wireless
  4. 7805 تنظیم کننده 5 ولت
  5. 10μf خازن
  6. 1μf خازن

موارد دیگری که من برای این پروژه استفاده می کنم عبارتند از:

  1. If This Then That (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 را بارگیری کرده و با استفاده از برنامه ای مانند Etcher آن را در کارت microSD بسوزانیم. آن را به همراه کابل HDMI ، صفحه کلید ، ماوس و سپس برق را در Pi وارد کنید.

هنگامی که Pi بوت می شود و در رابط دسکتاپ هستید ، می توانید با کلیک روی نماد بی سیم در بالا سمت راست و انتخاب نام اتصال بی سیم خود ، به وایرلس خود متصل شوید. سپس اگر روی همان نماد بی سیم راست کلیک کنید ، می توانید به تنظیمات شبکه بروید و یک آدرس IP ثابت را تنظیم کنید تا بتوانیم به راحتی از طریق شبکه به آن متصل شویم. در نهایت ، می خواهید روی منوی اصلی کلیک کنید و "ویرایشگر پیکربندی Raspbian" را انتخاب کنید و در زبانه "Interfaces" ، مطمئن شوید که SSH فعال است. سپس آن را ذخیره کرده و Pi خود را مجدداً راه اندازی کنید.

مرحله 2: چاپ از Pi

چاپ از Pi
چاپ از Pi
چاپ از Pi
چاپ از Pi

پس از راه اندازی مجدد Raspbery Pi ، باید با یک IP ثابت و با SSH فعال به شبکه بی سیم شما متصل شود. بنابراین اکنون باید بتوانیم از راه دور از هر رایانه دیگری به آن متصل شویم. برای انجام این کار ، به یک سرویس گیرنده SSH نیاز دارید. برای ویندوز ، مشتری خوب Putty است. می توانید با استفاده از آدرس IP ثابت Pi که قبلاً تنظیم کرده ایم به آن متصل شوید. سپس می توانید با استفاده از "pi" به عنوان نام کاربری و "تمشک" به عنوان رمز عبور وارد شوید.

پس از ورود موفقیت آمیز ، اکنون باید در رابط پایانه 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 (با استفاده از آداپتور) متصل کرده و آن را روشن کنیم. سپس در ترمینال ما می توانیم یک اسکریپت پایتون کوچک ایجاد کنیم

nano hello_world.py

و در آن می توانیم این کد پایتون را اضافه کنیم

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

از آن خارج شوید (CTRL-X) ، آن را ذخیره کنید (CTRL-Y) و آن را اجرا کنید تا آزمایش شود

python3 hello_world.py

مرحله 3: اتصال به اینترنت اشیاء (قسمت 1)

اتصال به اینترنت اشیاء (قسمت 1)
اتصال به اینترنت اشیاء (قسمت 1)
اتصال به اینترنت اشیاء (قسمت 1)
اتصال به اینترنت اشیاء (قسمت 1)
اتصال به اینترنت اشیاء (قسمت 1)
اتصال به اینترنت اشیاء (قسمت 1)
اتصال به اینترنت اشیاء (قسمت 1)
اتصال به اینترنت اشیاء (قسمت 1)

چاپگر بدون چیزی برای چاپ چه فایده ای دارد؟ من می خواستم قابلیت چاپ برای سرویس های مختلف اینترنتی مانند الکسا را فعال کنم. بنابراین چگونه می توانم آن را انجام دهم؟ یک گزینه این است که یک سرویس اینترنتی خاص را انتخاب کنید ، اسناد API آنها را پیگیری کرده و بر اساس API آنها یک برنامه بنویسید. اما من مسیر تنبلی را انتخاب می کنم…

یک وب سایت عالی به نام "If This Then That" وجود دارد که بر اساس مجموعه ای از معیارها اقداماتی را برای سرویس های مختلف اینترنتی (Alexa ، Google Home ، Gmail ، Facebook ، Instagram ، Twitter و غیره) آغاز می کند. به عنوان مثال ، "اگر" من به فیس بوک پست می کنم (این) ، "سپس" برای من یک ایمیل (آن) ارسال کنید.

بنابراین ، در نیمه اول این ، من برای یک حساب رایگان ثبت نام کردم ، شما می توانید شروع به ایجاد یک "برنامه کاربردی" جدید برای خدمات مختلف مورد نظر خود کنید. بخش "این" اپلت من الکسا خواهد بود. بسیاری از محرک های الکسا برای انتخاب وجود دارد ، اما من یکی را انتخاب می کنم که می گوید "از لیست خرید خود بپرسید". و ما در نهایت می خواهیم که یک اسکریپت پایتون را روی رزبری پای فعال کند ، بنابراین برای قسمت "That" اسکریپت ، ما می خواهیم Webhooks را انتخاب کنیم.

در گزینه Webhooks ، می توانیم نشانی اینترنتی را که به Pi ما اشاره می کند اضافه کنیم ، که بعداً به آن برمی گردیم. می توانیم قسمت Method را "Get" بگذاریم و برای نوع محتوا "Plain Text" را انتخاب کنید. برای قسمت بدن ، روی "افزودن مواد تشکیل دهنده" کلیک کنید و "کل لیست" را انتخاب کنید. با این کار کل لیست خرید به عنوان درخواست دریافت ارسال می شود.

مرحله 4: اتصال به اینترنت اشیاء (قسمت 2)

اتصال به اینترنت اشیاء (قسمت دوم)
اتصال به اینترنت اشیاء (قسمت دوم)
اتصال به اینترنت اشیاء (قسمت دوم)
اتصال به اینترنت اشیاء (قسمت دوم)

مرحله قبل به بخش "اینترنت" می پردازد ، بنابراین اکنون اجازه دهید روی قسمت "چیزها" با استفاده از رزبری پای کار کنیم. برای برقراری ارتباط با برنامه کاربردی webhooks "If This Then That" ، ما باید یک سرور وب را روی Raspberry Pi راه اندازی کنیم. راه های مختلفی برای راه اندازی وب سرور وجود دارد ، اما با توجه به اینکه در نهایت می خواهم یک اسکریپت پایتون را اجرا کنم ، تصمیم گرفتم از سرور پلاس Python's Flask استفاده کنم.

Pi تمام کتابخانه های Flask را از قبل نصب کرده است ، بنابراین تنها کاری که باید انجام دهیم این است که شروع به نوشتن یک اسکریپت آزمایشی کنیم:

nano flask_test.py

و در آن ، اجازه دهید کمی کد اضافه کنیم که به یک صفحه وب ساده خدمت می کند.

#! flask/bin/python #واردات کتابخانه های فلاسک از وارد کردن فلاسک فلاسک ، درخواست #ایجاد برنامه متغیر فلاسک = فلاسک (_ name_) #ایجاد یک صفحه 'INDEX' @app.route ('/') def index (): return 'سرور فلاسک شما کار می کند!' #برنامه را اجرا کنید اگر _name_ == '_main_': app.run (اشکال زدایی = درست ، میزبان = '0.0.0.0')

اکنون فقط برنامه را ذخیره کرده و با استفاده از این دستور اجرا کنید:

sudo python3 flask_test.py

با پاسخ فرمان خواهید دید که پورت پیش فرض که Flask روی آن اجرا می شود پورت 5000 است. بنابراین در مرورگر وب ، اگر آدرس IP Pi خود را وارد کنید: 5000 ، باید متن "سرور فلاسک شما کار می کند!" را مشاهده کنید.

ما کد پایتون آزمایشی خود را داریم که قبلاً در چاپگر رسید چاپ می شود و سرور تست Flask خود را داریم. بنابراین در مرحله بعد ما باید آنها را با هم ترکیب کرده و کدی را که داده ها را از اپلت Webhook ما خارج می کند ، ترکیب کنیم. بیایید یک فایل پایتون جدید ایجاد کنیم:

nano iot_print_server.py

و داخل آن کد زیر را اضافه کنید:

#! flask/bin/python #واردات کتابخانه های فلاسک و پرینتر از واردات فلاسک ، درخواست escpos.printer import Usb #ASSIGN VARIABLES FOR PRINTER and FLASK p = Usb (0x0416، 0x5011) app = Flask (_ name_) #CRE 'INDEX' PAGE @app.route ('/') def index (): return 'سرور فلاسک شما کار می کند!' #CREATE "PAGE" CALLED "LIST" برای چاپ ALEXA SHOPPING LIST @app.route ('/list') def list (): #CAPTURE "DETA" 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 () #کلمات جداگانه توسط COMMA و افزودن به یک لیست جدید لیست جدید = برای کلمه در str_split: word = word.split ('،') newlist.extend (word) #برداشتن علامت های قالب بندی rmv_marks = [s.strip ("b" ") for s in newlist] #PRINT HEADER #print (" Listing shopping / n ") p.text (" Listing shopping: / n ") #شماره نویسی و چاپ هر مورد در لیست r = 1 برای x در rmv_marks: #print (str (r) +". " + x +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #RETURN REACT 'x' #RUN THE PROGRAM if _name_ == '_main_': app.run (اشکال زدایی = درست ، میزبان = '0.0.0.0')

می توانید آن را اجرا کنید تا ببینید آیا خطایی بر می گرداند ، اما هنوز با webhook ما کار نمی کند زیرا در حال حاضر ، سرور فقط به صورت محلی اجرا می شود. هنوز نشانی اینترنتی خارجی برای اتصال به webhook وجود ندارد. ما می توانیم حمل و نقل پورت را در روتر خود تنظیم کنیم و فقط از آدرس 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… unzip ngrok-stable-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 خود را وارد کرده و به صفحه "list" در سرور Flask ما نشان دهید. باید چیزی شبیه این باشد

random_string.ngrok.io/list

سپس به جلو بروید و تغییرات را ذخیره کنید.

برای آزمایش آن ، Ngrok را فعال نگه دارید ، یک ترمینال جدید باز کنید و اسکریپت پایتون را اجرا کنید. با هر دو مورد در حال اجرا ، از الکسا بپرسید که در لیست خرید شما چیست. پس از یک یا دو دقیقه ، باید نتایج را چاپ کند. اگر می خواهید بلافاصله چاپ شود ، فقط به Applet خود در IFTTT بروید و روی "Check Now" کلیک کنید. اگر همه چیز خوب پیش رفت ، چاپگر رسید باید آنچه را که در لیست خرید شما است چاپ کند! آخرین کد که باید اضافه کنیم راهی برای راه اندازی خودکار گرمک و سرور فلاسک ما در هر بار راه اندازی Pi است. ما می توانیم به راحتی این کار را با اجرای اسکریپت پایتون انجام دهیم:

chmod +x iot_print_server.py

سپس می توانیم فایل /etc/rc.local خود را ویرایش کنیم تا به این شکل باشد:

## به طور پیش فرض این اسکریپت هیچ کاری انجام نمی دهد. # نشانی IP _IP = $ (نام میزبان -I) || را چاپ کنید true اگر ["$ _IP"] ؛ سپس printf "آدرس IP من٪ s / n" "$ _IP" fi #autostart ngrok است و آن را به فایل نویسنده خود نشان دهید./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/گرمk. yml 5000 #شروع مجدد چاپگر python script sudo python3 /home/pi/iot_receipt_printer.py و خروج 0

مرحله 6: افزودن Pi به چاپگر

افزودن Pi به چاپگر
افزودن Pi به چاپگر
افزودن Pi به چاپگر
افزودن Pi به چاپگر
افزودن Pi به چاپگر
افزودن Pi به چاپگر
افزودن Pi به چاپگر
افزودن Pi به چاپگر

چاپگر رسیدی که دارم فضای خالی زیادی در داخل بدنه دارد. و با توجه به کوچک بودن رزبری پای صفر ، فکر کردم بهتر است آن را در چاپگر رسید مخفی کنید تا شبیه یک دستگاه باشد. تنها مشکل این است که چاپگر Receipt با ولتاژ 12 ولت و Pi با 5 ولت کار می کند. بنابراین اگر ما فقط یک کابل برق را برای تغذیه هر دو مورد نیاز داریم ، باید منبع تغذیه 12 ولت را به 5 ولت متصل کنیم.

با استفاده از یک تنظیم کننده ولتاژ 7805 ، یک خازن 1uf و یک خازن 10uf ، من توانستم یک تنظیم کننده ساده 5v ایجاد کنم که به برد منطقی چاپگر رسید متصل کردم. سیم "-" را به قسمت مشترک لحیم کردم ، و سپس سیم "+" را به سمت "در" سوئیچ قدرت لحیم کردم تا Pi هنگام روشن و خاموش شدن چاپگر روشن و خاموش شود. با استفاده از چند متر ، آزمایش کردم تا مطمئن شوم که خروجی برای Pi سالم است. سپس روی کابل micro-usb لحیم کردم و آن را به Pi وصل کردم. پس از اتصال کابل به چاپگر و چرخاندن سوئیچ ، هر دو چاپگر و Pi روشن شدند!

در نهایت ، من یک سوراخ برای اتصال کابل USB از Pi به چاپگر ایجاد کردم. من مکانی برای قرار دادن تنظیم کننده 5v و Pi درون قاب چاپگر پیدا کردم ، و سپس همه چیز را دوباره کنار هم قرار دادم. بنابراین در حال حاضر چاپگر دارای سرور وب خود نیز می باشد!

مرحله 7: بیشتر پیش بروید

گرفتن آن بیشتر
گرفتن آن بیشتر

اگر بتوانید نگاهی به "If This Then That" بیندازید ، احتمالاً متوجه شده اید که دارای چندین وب سرویس مختلف برای اتصال است. بنابراین اگر الکسا ندارید یا اهمیتی به استفاده از آن نمی دهید ، می توانید از این پروژه برای چاپ تقریباً هر چیزی مانند فیس بوک ، توییتر ، Gmail ، Google Home ، Evernote ، Tumblr ، Flickr ، Wordpress ، استفاده کنید. و غیره می توانید کد من را برای چاپ توییت ها در صفحه Github من بیابید. حالا بروید ببینید چه چیزی می توانید به دست آورید!

چالش اینترنت اشیا
چالش اینترنت اشیا
چالش اینترنت اشیا
چالش اینترنت اشیا

اولین جایزه در چالش IoT

توصیه شده: