תוכן עניינים:

מדפסת אלקסה - מדפסת קבלה ממוחזרת: 7 שלבים (עם תמונות)
מדפסת אלקסה - מדפסת קבלה ממוחזרת: 7 שלבים (עם תמונות)

וִידֵאוֹ: מדפסת אלקסה - מדפסת קבלה ממוחזרת: 7 שלבים (עם תמונות)

וִידֵאוֹ: מדפסת אלקסה - מדפסת קבלה ממוחזרת: 7 שלבים (עם תמונות)
וִידֵאוֹ: מדפסת תרמית ניידת HPRT MT800Q A4-סקירה / ביטול הארגז #שורטים... 2024, נוֹבֶמבֶּר
Anonim
Image
Image
מדפסת אלקסה | מדפסת קבלה ממוחזרת
מדפסת אלקסה | מדפסת קבלה ממוחזרת

אני מעריץ של מיחזור טכנולוגיה ישנה והופך אותה לשימושית שוב. לפני זמן מה רכשתי מדפסת קבלה תרמית ישנה וזולה, ורציתי דרך שימושית לייעוד מחדש. לאחר מכן, במהלך החגים, קיבלתי חבילת הד הד של אמזון, ואחת התכונות שהשתמשתי בהן ביותר היא הוספת מצרכים לרשימת הקניות שלי. אז חשבתי שיהיה מגניב לשלב בין השניים ולהשתמש במדפסת הקבלה כמדפסת IOT עבור Alexa (או Google Home, או Siri וכו '). בואו נראה מה יידרש כדי להפוך את הרעיון הזה למציאות.

אספקה

להלן החלקים שבהם אני משתמש לפרויקט זה:

  1. מדפסת קבלה תרמית גנרית זולה (צריכה לתמוך ב- ESC-POS)
  2. מכשיר Alexa של אמזון (מכשירי "עוזרי בית" אחרים כנראה גם יעבדו)
  3. Raspberry Pi Zero Wireless
  4. וסת 7805 5v
  5. 10 קילו קבלים
  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" ותחת הכרטיסייה "ממשקים", ודא ש- SSH מופעל. לאחר מכן שמור אותו והפעל מחדש את ה- Pi שלך.

שלב 2: הדפסה מה- Pi

הדפסה מהפי
הדפסה מהפי
הדפסה מהפי
הדפסה מהפי

לאחר הפעלה מחדש של ה- Raspbery Pi, הוא צריך להיות מחובר לרשת האלחוטית שלך עם כתובת IP סטטית והפעלת SSH. אז עכשיו אנחנו אמורים להיות מסוגלים להתחבר אליו מרחוק מכל מחשב אחר. לשם כך תצטרך לקוח SSH. עבור Windows, לקוח טוב הוא Putty. אתה יכול להתחבר אליו באמצעות כתובת ה- IP הסטטית של ה- Pi שהגדרנו קודם לכן. לאחר מכן תוכל להיכנס באמצעות "pi" כשם המשתמש ו"פטל "כסיסמה.

לאחר התחברות מוצלחת, כעת עלינו להיות בממשק הטרמינל של הפי. כאן נוכל להקליד פקודות שיופעלו ב- Raspberry Pi. למשל, אחד הדברים הראשונים שאנחנו רוצים לעשות הוא לוודא שהתוכנה ב- Pi מעודכנת. אז במסוף נוכל להקליד:

עדכון sudo apt-get

פקודה זו תעדכן את מאגרי התוכנה ב- Pi. בשלב הבא נוכל להתקין את תוכנת המדפסת ESC-POS והספריות הנדרשות.

sudo apt-get install python3 python3-setuptools python3-pip libjpeg8-devsudo pip3 להתקין-שדרג pip sudo pip3 התקן python-escpos

עם זאת, נוכל לחבר את המדפסת ליציאת המיקרו USB של ה- Pi (באמצעות מתאם) ולהדליק אותה. ואז במסוף שלנו נוכל ליצור סקריפט פייתון קטן

ננו hello_world.py

ובתוכו נוכל להוסיף את קוד הפיתון הזה

#!/usr/bin/pythonfrom escpos.printer יבוא 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)

מה טוב למדפסת בלי מה להדפיס? רציתי לאפשר פונקציונליות להדפיס משירותי אינטרנט שונים, כגון Alexa. אז איך אוכל להשיג זאת? אפשרות אחת היא לבחור שירות אינטרנט ספציפי, לאתר את תיעוד ה- API שלהם ולכתוב יישום המבוסס על ה- API שלהם. אבל אני בוחר ללכת בדרך העצלנית …

יש אתר נהדר בשם "אם זה אז זה" שמפעיל פעולות עבור שירותי אינטרנט שונים (Alexa, Google Home, Gmail, Facebook, Instagram, Twitter וכו ') המבוססים על סט קריטריונים. למשל, "אם" אני מפרסם בפייסבוק (זה), "אז" שלח לי דואר אלקטרוני (זה).

אז במחצית הראשונה של זה נרשמתי לחשבון חינמי, אתה יכול להתחיל ליצור "יישומון" חדש עבור השירותים השונים שאתה רוצה להפעיל. החלק "זה" ביישומון שלי יהיה Alexa. יש הרבה טריגרים של Alexa לבחירה, אבל אני הולך לבחור את זה שאומר "שאל מה ברשימת הקניות שלך". ובסופו של דבר אנו רוצים שהוא יפעיל סקריפט של פייתון ב- Raspberry Pi, ולכן עבור החלק "זה" של התסריט, אנו רוצים לבחור Webhooks.

באפשרות Webhooks, נוכל להוסיף כתובת אתר המצביעה על ה- Pi שלנו, אליה נחזור מאוחר יותר. נוכל להשאיר את שדה השיטה כ"קבל ", ולסוג התוכן בחר" טקסט רגיל ". לשדה גוף, לחץ על "הוסף מרכיב" ובחר "רשימה מלאה". פעולה זו תשלח את כל רשימת הקניות כבקשת קבל.

שלב 4: התחברות לאינטרנט של הדברים (חלק 2)

התחברות לאינטרנט של הדברים (חלק 2)
התחברות לאינטרנט של הדברים (חלק 2)
התחברות לאינטרנט הדברים (חלק 2)
התחברות לאינטרנט הדברים (חלק 2)

השלב הקודם מטפל בחלק "האינטרנט", כך שעכשיו מאפשר לעבוד על החלק "דברים" באמצעות ה- Raspberry Pi. על מנת לתקשר עם יישומון "אם זה אז זה", עלינו להקים שרת אינטרנט ב- Raspberry Pi. ישנן דרכים רבות ושונות להקמת שרת אינטרנט, אך בהתחשב בכך שבסופו של דבר אני רוצה להריץ סקריפט של פייתון, החלטתי להשתמש בשרת הבקבוק של פייתון.

בפי יש כל ספריות הבקבוק מותקנות מראש, כך שכל שעלינו לעשות הוא להתחיל לכתוב סקריפט בדיקה:

ננו flask_test.py

ובתוכו, הוסף קצת קוד המשרת דף אינטרנט פשוט.

#! בקבוק/סל/פייתון #ייבא את ספרי הבקבוק מבקבוק ייבוא הבקבוקון, בקש #צור אפליקציה משתנה לבקבוק = בקבוק (_ שם_) #צור דף 'אינדקס' @app.route ('/') אינדקס def (): return 'שרת הבקבוק שלך עובד!' #הפעל את התוכנית אם _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

עכשיו פשוט שמור את התוכנית והפעל אותה באמצעות פקודה זו:

sudo python3 flask_test.py

לפי תגובת הפקודה תראה שיציאת ברירת המחדל שבה פועל הבקבוק היא יציאה 5000. אז בדפדפן אינטרנט, אם תקליד את כתובת ה- IP של ה- Pi שלך: 5000, אתה אמור לראות את הטקסט "שרת הבקבוק שלך עובד!"

יש לנו את קוד הבדיקה של פייתון הקודם שמדפיס למדפסת הקבלה שלנו, ויש לנו את שרת הבקבוק שלנו. אז בשלב הבא עלינו לשלב אותם ולשלב קוד כלשהו ששואב את הנתונים מאפלט ה Webhook שלנו. בואו ניצור קובץ פייתון חדש:

nano iot_print_server.py

ובתוכו, הוסף את הקוד הבא:

#! בקבוק/פח/פייתון #ייבוא ספרי הבקבוק והמדפסות מבקבוק ייבוא הבקבוקון, בקשה מ- escpos.printer יבוא USB 'INDEX' PAGE @app.route ('/') def index (): return 'שרת הבקבוק שלך עובד!' #צור "עמוד" נקרא "רשימת" להדפסת רשימת קניות של ALEXA @app.route ('/list') def list (): #CAPTURE "GET" נתונים מתוך IFTTT WEBOOKS content = request.get_data () #CONVERT RAW DATA TO STRING str_content = str (content) #DIVIDE DATA IN SEPERATE LINES str_split = str_content.splitlines () #SEPERATE WORDS BY COMMA והוסף לרשימה חדשה Newlist = למילה ב- str_split: word = word.split (',') newlist.extend (word) #הסר סימני עיצוב rmv_marks = [s.strip ("b '") עבור s ברשימה החדשה] #PRINT HEADER #print ("רשימת קניות / n") p.text ("רשימת קניות: / n ") #כללי והדפס כל פריט ברשימה r = 1 עבור x ב- rmv_marks: #print (str (r) +". " + X +" / n ") p.text (str (r) +". " + x + "\ n") r + = 1 #תוצאות החזרה החזירו 'x' #הפעל את התוכנית אם _name_ == '_main_': app.run (debug = True, host = '0.0.0.0')

אתה יכול להריץ אותו כדי לראות אם הוא מחזיר שגיאות כלשהן, אך הוא עדיין לא יעבוד עם הווקה שלנו מכיוון שכרגע השרת פועל באופן מקומי בלבד. אין עדיין כתובת URL חיצונית שאליה יש להתחבר ל- 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 שלנו. אז חזור אל "אם זה אז זה", בשדה כתובת האתר, הזן את כתובת ההעברה שלך Ngrok והפנה אותה לדף "הרשימה" בשרת הבקבוק שלנו. זה אמור להיראות בערך כך

random_string.ngrok.io/list

אז קדימה ושמור את השינויים.

כדי לבדוק את זה, השאר את Ngrok פועל, פתח מסוף חדש והפעל את סקריפט הפיתון שלנו. כששני הפריטים פועלים, שאל את Alexa מה ברשימת הקניות שלך. לאחר דקה או שתיים, הוא אמור להדפיס את התוצאות. אם אתה רוצה שהוא יודפס באופן מיידי, פשוט עבור אל האפלט שלך ב- IFTTT ולחץ על "בדוק עכשיו". אם הכל מסתדר, מדפסת הקבלה צריכה להדפיס את מה שרשום ברשימת הקניות שלך! פיסת הקוד האחרונה שעלינו להוסיף היא דרך להפעלה אוטומטית של ngrok ושרת הבקבוקים שלנו בכל פעם שה- Pi מופעל. אנו יכולים לעשות זאת בקלות על ידי הפיכת סקריפט ה- Python שלנו להפעלה:

chmod +x iot_print_server.py

לאחר מכן נוכל לערוך את הקובץ /etc/rc.local כך שהוא ייראה כך:

## כברירת מחדל סקריפט זה אינו עושה דבר. # הדפס את כתובת ה- IP _IP = $ (שם מארח -אני) || נכון אם ["$ _IP"]; לאחר מכן הדפס את "כתובת ה- IP שלי היא %s / n" "$ _IP" fi #autostart ngrok והפנה אותה לקובץ ה- authent שלך./home/pi/ngrok/ngrok http -config =/home/pi/.ngrok2/ngrok. yml 5000 #הפעלה אוטומטית של סקריפט פייתון המדפסת sudo python3 /home/pi/iot_receipt_printer.py ויציאה 0

שלב 6: הוספת ה- Pi למדפסת

הוספת ה- Pi למדפסת
הוספת ה- Pi למדפסת
הוספת ה- Pi למדפסת
הוספת ה- Pi למדפסת
הוספת ה- Pi למדפסת
הוספת ה- Pi למדפסת
הוספת ה- Pi למדפסת
הוספת ה- Pi למדפסת

למדפסת הקבלה שיש לי יש הרבה מקום ריק בתוך המארז. ומכיוון ש- Raspberry Pi Zero יהיה קטן ככל שהוא, חשבתי שיהיה מגניב רק להסתיר אותו במדפסת הקבלות כך שייראה כמו מכשיר אחד. הבעיה היחידה היא שמדפסת הקבלה פועלת על 12V וה- Pi פועל על 5v. אז אם אנחנו רק רוצים שכבל חשמל אחד יניע את שניהם, נצטרך להוריד את ספק הכוח של 12 וולט ל -5 וולט.

באמצעות ווסת מתח 7805, קבל 1uf וקבל 10uf הצלחתי ליצור וסת 5v פשוט שחיברתי ללוח הלוגי של מדפסת הקבלה. הלחמתי את החוט "-" לקרקע המשותפת, ולאחר מכן הלחמתי את חוט ה"+"בצד" הפעלה "של מתג ההפעלה, כך שהפי יופעל ויכבה כאשר המדפסת תיכבה ותכבה. בעזרת ריבוי מטרים בדקתי כדי לאשר שהפלט בטוח עבור ה- Pi. ואז הלחמתי על כבל מיקרו-USB וחיברתי אותו ל- Pi. לאחר חיבור הכבל למדפסת והפעלת המתג, הן המדפסת והן ה- Pi נדלקו!

לבסוף, קידחתי חור לחיבור כבל ה- USB מה- Pi למדפסת. מצאתי מקום להכניס את הרגולטור 5V ואת הפי לתוך מארז המדפסת, ואז חיברתי הכל מחדש. אז עכשיו יש למדפסת גם שרת אינטרנט משלו!

שלב 7: לקחת את זה הלאה

לוקח את זה הלאה
לוקח את זה הלאה

אם הצלחת להסתכל על "אם זה אז זה", כנראה שמת לב שיש לו המון שירותי אינטרנט שונים שאפשר להתחבר אליהם. אז אם אין לך אלקסה, או שלא אכפת לך להשתמש באחת מהן, תוכל להשתמש בפרויקט זה להדפסה כמעט מכל דבר, כגון פייסבוק, טוויטר, ג'ימייל, גוגל דף הבית, Evernote, טומבלר, פליקר, וורדפרס, וכו 'תוכל למצוא את הקוד שלי להדפסת ציוצים בדף Github שלי. עכשיו לך ותראה מה אתה יכול להמציא!

אתגר IoT
אתגר IoT
אתגר IoT
אתגר IoT

פרס ראשון באתגר IoT

מוּמלָץ: