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

מכונת קפה מופעלת IoT: 9 שלבים (עם תמונות)
מכונת קפה מופעלת IoT: 9 שלבים (עם תמונות)

וִידֵאוֹ: מכונת קפה מופעלת IoT: 9 שלבים (עם תמונות)

וִידֵאוֹ: מכונת קפה מופעלת IoT: 9 שלבים (עם תמונות)
וִידֵאוֹ: עדן חסון ואודיה - הנשיקה! 😱 2024, יולי
Anonim
Image
Image
דרוש ציוד
דרוש ציוד

הוראה זו נכנסת לתחרות IoT - אם אתה אוהב אותה, אנא הצביע עבורה

עודכן: כעת תומך ב- commons דו -כיווני ועדכוני OTA

מזה זמן מה יש לי מכונת קפה של ג'ורה ותמיד רציתי להפוך אותה לאיכשהו.

אני מפעיל מערכת אוטומציה ביתית בסיסית מזה שנים, אך מכונת הקפה לא הייתה דבר פשוט לשינוי (או כך חשבתי). במכונות הקפה Jura יש בדרך כלל 'יציאת אבחון' ו/או יציאה המשמשת להוספת מערכת תשלומים למכונה, אולם לא הצלחתי למצוא מידע על אופן השימוש בה. לאחרונה, הפרוטוקול הונדס לאחור על ידי כמה אנשים והוצג בפני הציבור. הבעיה הייתה שרוב ההתייחסויות לפונקציות הזמינות היו למכונות גדולות בהרבה משלי (אנה 7).

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

הייתי צריך גם לוודא שהמכונה עדיין פועלת 100% ללא קשר למנגנון בקרה כלשהו, כלומר המכונה עדיין פועלת כרגיל כאילו היא לא מופעלת ב- IoT.

אוטומציה של המכונה דורשת שני דברים: 1) כדי להיות מסוגל לשלוט על הכוח למכונה 2) להיות מסוגל לתקשר עם המכונה כדי להפעיל את הפונקציות להכנת קפה, שטיפה וכו '.

שלב 1: איך אנחנו הולכים לעשות את זה

אנו נשתמש במודול ESP8266 'ESP-01' כדי להתחבר ל- wifi הביתי ולהירשם לשרת MQTT/האזנת נושאים לפקודות. ה- 'Front End' בו השתמשתי הוא OpenHAB2 אך אין סיבה שלא תוכל להוסיף לממשק האינטרנט במכשיר ולשלוט ישירות אם ברצונך או באמצעות פקודות HTTP Get.

ה- ESP8266 יטפל בשליטה על 2 ממסרים הקשורים ללחצן ההפעלה וגם יעבד פקודות סדרתיות אל/ממכונת הקפה.

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

שלב 2: דרוש ציוד

דרוש ציוד
דרוש ציוד
דרוש ציוד
דרוש ציוד
דרוש ציוד
דרוש ציוד

חלקים

  • מודול ESP-01 ודרך לתכנת אותו (Arduino IDE ומתאם פיזי לתכנות)
  • מודול ממסר דו כיווני EBAY
  • 5v -> 3.3v הרגולטור EBAY
  • מטען טלפון קטן המופעל על ידי 5V
  • ממיר רמה לוגית* Freetronics
  • חוטים שונים, כותרות סיכות, כיווץ חום וכו 'לחיבור הכל.

כלים

  • ברזל הלחמה דק
  • לְרַתֵך
  • חשפניות חוט שימושיות
  • נהג טורקס T15
  • כלי אבטחה סגלגל (או צור אחד, לוקח רק כמה דקות)

*בתחילה השתמשתי ב- UNO arduino בבדיקת כל הפקודות הטוריות למכונה וזה עבד ללא רבב, אולם מודול ה- ESP סירב לעבוד. בדקתי את הקוד בשלש והייתי בטוח שהפקודות היוצאות ממודול ה- ESP היו זהות לארדואינו אולם זה לא היה מהלך. הנחתי את זה למודול ה- ESP שעובד רק על לוגיקה של 3.3v ולא על 5V. ברגע שהכנסתי את ממיר הלוגיקה, זה עבד מצוין. זה עשוי להיות נחוץ במכונות אחרות.

באופן אידיאלי, תהיה לך מערכת אוטומציה קיימת הקיימת התומכת בפרוטוקול MQTT (כגון openhab) מכיוון שלזה נועד הפרויקט. אם אתה רק רוצה לשלוט בו באמצעות לחצנים בדף אינטרנט ללא מערכות תומכות, יהיה עליך לבצע כמה שינויים בקוד דף האינטרנט המוטבע. זה לא מסובך מדי להשיג (אולי rev2..)

שלב 3: פרוטוקול הג'ורה

פרוטוקול הג'ורה
פרוטוקול הג'ורה

הנתונים אל/מהמכונה הם רק סדרתיים @ 9600 אבל לג'ורה יש כמה טריקים בשרוולים. הפרוטוקול משתמש בזה לתוספת ECC ו/או כדי להעלים את התקשורת. במילים פשוטות, כל בייט נתונים (תו) מחולק בין סיביות 2 ו -5 מתוך 4 בתים סדרתיים סטנדרטיים הנגררים על ידי הפסקה של 8 ms. אם אתה מעוניין ללמוד איך זה עובד, יש הרבה מידע בקישורים כאן.

מידע על פרוטוקול המופק מתוך:

קוד הארדואינו מפשט זאת ומאפשר לך להעביר פקודות סטנדרטיות וניתנות לקריאה של בני אדם, אותן הוא מעביר לפרוטוקול ג'ורה.

הקוד שלי הוא שילוב של קוד מאת:

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

FA: 01 - מכבה (אך לא נראה לשטוף, גם אם יש צורך) FA: 02 - מגיב 'בסדר' אבל לא בטוח מה הוא עושה. FA: 03 - הודעת שטיפה (כופה הודעת 'שטיפה' על המסך, לחיצה על מכונת שטיפה סיבובית) FA: 04 - פעולת שטיפה - שטיפה כאשר מופיעה הודעת 'לחץ על לחצן סיבוב', אחרת לא עושה דבר FA: 05 - חזק על המסך (אפשר לשלב את זה עם הכנת קפה לחזק) FA: 06 - חזק על המסך (אפשר לשלב את זה עם הכנת קפה לחזק) FA: 07 - 'מיוחד' על המסך אבל בעצם לא עושה כלום, לא בטוח מה זה בשביל FA: 08 - FA Steam: 09 - קפה קטן FA: 0A - קפה גדול

יש פקודות אחרות אבל זה מספיק בשבילי …

נהג בזהירות בעת הוצאת פקודות לא ידועות, למשל, ככל הנראה AN: 0A תמחק את ה- EEPROM של המכונה …

שלב 4: פירוק

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

ההנחיות כאן מוצגות היטב-https://marius.me.uk/blog/2015/03/open-jura-ena-5/

שלב 5: ביטול האחריות

ביטול האחריות
ביטול האחריות
ביטול האחריות
ביטול האחריות
ביטול האחריות
ביטול האחריות
ביטול האחריות
ביטול האחריות

לאחר שנכנסת למכונה, תראה את המרכיבים העיקריים. לכניסת החשמל הראשית יש תחתית נחמדה להוספת המטען 5V.

הוספתי חוטים (בדירוג רשת) לבלוק הטרמינל בכניסת המכונה והלחמתי/הקמטתי אותם לסיכות החשמל של המטען 5V. הדגם הספציפי שלי לא היה סוג של יציאת USB אלא דגם שהחוט מחובר לצמיתות. אולי אין לך מספיק מקום ליציאת USB מסוג אחד בכדי להשתמש בכבל USB בפועל, אך אם פתחת את המטען, תוכל להסיר את יציאת ה- USB ולהחליף אותו בחוט רגיל לנקודות 5v ו- Gnd.

אתה יכול להחליף ספק כוח נוסף של 5V אם תרצה. 500ma צריך להיות מספיק.

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

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

גם שיניתי את יציאת האבחון במכונה שלי כדי לקבוע את מיקום החיבורים הפנימיים כדי שאוכל להשיג אינטגרציה נסתרת לחלוטין. משתמשים רק בחוטי tx, rx ו- Gnd.

אם יש לך מכונה מסחרית יותר התומכת במתח המתנה ו/או אינך רוצה לבטל את האחריות על המכשיר שלך, תוכל להתחבר ישירות ליציאת האבחון אך ייתכן שלא תוכל להפעיל את המכשיר באמצעות מכשיר זה.

המכשיר שלי משתמש במחבר בן 7 פינים. משמאל לימין זה:

NC Tx G Rx NC 5v NC

הסיכות המתאימות בלוח האם: אדום = כתום Gnd = Rx שחור = Tx

מידע נוסף ניתן למצוא ב- pinouts כאן:

שלב 6: חיווט הצד ההגיוני

חיווט הצד ההגיוני
חיווט הצד ההגיוני
חיווט הצד ההגיוני
חיווט הצד ההגיוני
חיווט הצד ההגיוני
חיווט הצד ההגיוני

סקור את התרשים - זה נראה מסובך מדי אבל זה ממש לא.

הרכבתי את ממיר הרמות בחלקו האחורי של ווסת המתח (המתואר) עם סרט דבק דו צדדי. לאחר מכן השתמשתי בכמה רגלי רכיב כדי להלחם את סיכות החשמל וההארקה משני צדי ממיר הרמות לפינים של מודול הכוח המתאים. כל המודול הזה עובד אז כ"מעבר "לכל ההיגיון ואספקת החשמל של ה- ESP-01.

השתמשתי בשני הממירים האמצעיים לנתונים הטוריים ובשניים החיצוניים לאותות נהיגה ממסר, אך לא משנה באיזה שימוש אתה משתמש.

זה לא ממש הכרחי עם מודולי ממסר אלה כדי להפעיל לוגיקה של 5V מכיוון שהם פעילים LOW אבל זה פשוט עבד יפה אז עשיתי את זה בכל זאת.

השתמשתי בכותרת נקבה 4x2 לחיבור למודול ESP. זה מאפשר העלאת קוד בקלות או החלפת המודול.

קלט 5V לא מופיע בתרשים - חיברתי את שלי ישירות למודול הממסר (ראה תמונה שנייה). החוט השחור בפינה השמאלית התחתונה של התמונה הוא הנתונים הטוריים המופיעים ללוח הראשי. השתמשתי בחלק בכבל הארכה לאוזניות 3.5 מ מ רק כדי לסייע בהפחתת הסיכויים להפרעה בקו הנתונים.

קוד 12f משתמש SoftwareSerial במקום חומרי סידורי - זה מאפשר למודול לדווח על מצב ניפוי באגים באמצעות סדרה רגילה. החיבורים הם באמצעות סיכות 4 ו -5 במקום זאת. התאמתי את אותו הכותרת כדי להפוך את ה- ESP12F לתחליף החלפה עבור ה- ESP-01, רק להחליף את הסיכות הסידריות האלה

שלב 7: תכנות המודול

תכנות המודול
תכנות המודול

הקוד נאסף נגד Arduino 1.8.1 עם תוסף לוח ESP8266 ו- PubSubClient 2.6.0 (שהיא ספריית MQTT)

שנה את הקוד בהתאם לדרישותיך והעלה את הקוד למודול ESP-01 והתחבר למכשיר. היזהר עם כיוון הסיכות!

תְצוּרָה

אופציה 1)

רק על בסיס בסיס ב- zip. כאשר מודול ה- ESP מופעל לראשונה, הוא נכנס למצב AP ומגדיר את ה- IP שלו ל- 192.168.4.1. לאחר מכן תוכל להתחבר למודול ולשנות את ה- IP ולהתחבר לנקודת גישה משלך. יהיה עליך גם להגדיר IP למחשב שלך בטווח זה מכיוון שאין מודול DHCP.

ברירת המחדל של SSID AP היא 'ESPSwitch' והסיסמה היא '12345678'

זה נשאר במצב AP למשך 2 דקות כברירת מחדל. אתה יכול לשנות הגדרה זו ב- 'global.h' - היא נקראת 'adminTimeout' והיא נמצאת באלפיות השנייה. אני ממליץ לשנות את זה למשהו נמוך ברגע שיש לך תצורה תקפה ב- EEPROM מכיוון שזה רק יגרום לעיכובים מיותרים באתחול של המכשיר אחרת.

אפשרות 2)

זהו מצב ברירת המחדל עבור הקוד החדש שתומך בפעולות דו -כיווניות, אפשרות 1 אינה זמינה. תוכל גם לשנות את הגדרות ברירת המחדל של SSID/סיסמה בקובץ ה- ino הראשי (חפש '// DEFAULT CONFIG') כך שהוא ייטען את ההגדרות האלה ב- EEPROM בעת האתחול הראשון ושינוי השהיית מצב הניהול למשהו נמוך ב- 'global.h'. זה מונע צורך להתעסק בחיבור ל- AP הזמני.

המכשיר יגדיר אוטומטית את מזהה MQTT (ונתיב המנוי) לארבע הספרות האחרונות של המספר הסידורי של המודולים. הנתיב כברירת מחדל הוא ha/mod //#, שנה כראות עיניך אך קרא את ההערות בקוד כדי לוודא שלמערך המתאים יש את האורך הנכון.

אני עושה את זה כי זה אומר שאני לא צריך ליצור מזהה ייחודי לכל מודול ברשת שלי.

מזהה המכשיר גלוי וניתן להגדיר את שרת MQTT באמצעות דף שרת MQTT בשרת האינטרנט הפנימי

שלב 8: לגרום לזה לעשות דברים …

פקודות MQTT הן

ha/mod/xxxx/0 או 1 = החלפת כוח

כל מחרוזת אחרת תטופל כפקודה ותשלח באמצעות יציאה טורית. המצב מדווח ל- /ha /קפה ב- HEX

עם OpenHAB

coffeemachine.items

מספר Coffee_Machine_Power "Power" {mqtt = "> [control: ha/mod/8002/: command:*: default]"} מחרוזת Coffee_Machine_Status {mqtt = "<[control: ha/coffee: state: default]"}

מפת אתר

פריט קבוצתי = "מכונת קפה" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] החלף פריט = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "קטן"] החלף פריט = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] החלף פריט = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "שטיפה"] פריט טקסט = תווית Coffee_Status = "סטטוס [%s] "}

כללי קול

יבוא org.openhab.model.script.actions.* יבוא org.openhab.core.library.types.* יבוא java.util.*

כלל "חוקי הפקודה הקולית"

כאשר הפריט VoiceCommand קיבל את הפקודה ואז var String command = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "CommandCommand התקבל"+פקודה)

if (command.contains ("הפעל את מכונת הקפה") || command.contains ("כבה את מכונת הקפה")) {

sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("עשה לי קפה קטן")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("עשה לי קפה גדול")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("שטוף את מכונת הקפה")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} סוף

כללים (לפרש תגובות HEX לערכים 'אמיתיים'):

כלל "סטטוס מכונת קפה" כאשר הפריט Coffee_Machine_Status קיבל עדכון ואז var String response = Coffee_Machine_Status.state.toString () if (response.indexOf ("ic:")> -1) {var String hexString = response.substring (3, 5)

var int num = (Integer.parseInt (hexString, 16));

var String binaryString = String.format ("%8s", Integer.toBinaryString (num)). replace ('', '0')

var int trayBit = binaryString.substring (0, 1)

var int tankBit = binaryString.substring (2, 3) var int heatBit = binaryString.substring (7, 8) var int rinseBit = binaryString.substring (6, 7)

if (trayBit == "0") {

postUpdate (Coffee_Status, "מגש חסר")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (rinseBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} if (trayBit == "1" && tankBit == "0" && rinseBit == "0") {postUpdate (Coffee_Status, "Ready")}

}

if (response == "Off") {postUpdate (Coffee_Status, "Off")} סוף

שלב 9: חידודים/טודו

פשט את ההתקנה הראשונית לחיבור ל- wifi - בוצע. נטשה את הרעיון של 'מצב מנהל' מכיוון שזה היה מעצבן. עכשיו פשוט הזן SSID וסיסמה בקוד. נשמר ל- EEPROM אם אתה מעדכן/משנה באמצעות ממשק אינטרנט.

הקוד החדש תומך גם בעדכוני OTA, אך יהיה עליך לשדרג את EEPROM במודול ESP-01 כדי שזה יעבוד או יכול להגיב על פריטי ה- OTA המתאימים

הוסף קוד לעיבוד תגובות מהמכונה וקרא סטטוס כמו אין מגש, שטחים ריקים ומיכל מילוי - בוצע. הוספתי קוד כדי לקרוא את הסטטוס בחזרה ולפרסם ב- ha/coffee. אלה רק התגובות הגולמיות ואני עדיין עובד על פרשנותן, אך עד כה חסר לי מגש ועובד ריק בטנק. הוא בוחן את המכונה כל 9 שניות כשהוא מופעל ומפרסם את התגובה ל- MQTT

התגובה היא ב- HEX אך סיביות בודדות מציינות את החיישנים

הוסף קוד לדפי האינטרנט לשליטה ישירה באמצעות פקודות HTTP GET.

תחרות האינטרנט של הדברים 2017
תחרות האינטרנט של הדברים 2017
תחרות האינטרנט של הדברים 2017
תחרות האינטרנט של הדברים 2017

פרס ראשון בתחרות האינטרנט של הדברים 2017

מוּמלָץ: