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

רובוט Roomba נשלט בדפדפן עם פטל דגם 3 A+: 6 שלבים (עם תמונות)
רובוט Roomba נשלט בדפדפן עם פטל דגם 3 A+: 6 שלבים (עם תמונות)

וִידֵאוֹ: רובוט Roomba נשלט בדפדפן עם פטל דגם 3 A+: 6 שלבים (עם תמונות)

וִידֵאוֹ: רובוט Roomba נשלט בדפדפן עם פטל דגם 3 A+: 6 שלבים (עם תמונות)
וִידֵאוֹ: השואב רובוטי הכי זול בעולם 2024, נוֹבֶמבֶּר
Anonim
רובוט Roomba נשלט בדפדפן עם פטל פי דגם 3 A+
רובוט Roomba נשלט בדפדפן עם פטל פי דגם 3 A+
רובוט Roomba נשלט בדפדפן עם פטל פי דגם 3 A+
רובוט Roomba נשלט בדפדפן עם פטל פי דגם 3 A+

סקירה כללית

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

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

לבנייה זו השתמשתי ב- Raspberry Pi Model 3 A+ ובקר מנוע של Riorand. אני משתמש בקוד מהרובוט המבוקר בדפדפן דקסטר תעשיות ששיניתי. גרסת Dexter Industries מגדירה את ה- Pi כשרת WebSocket המאפשר לך לשלוט ברובוט שלהם (פלטפורמת pi brick) מקובץ HTML לקוח שמפעיל מחשב אחר.

שיניתי את הקוד השתמש בסיכות GPIO והוספתי דרך לכיבוי הפי כאשר לוחצים על כפתור / כאשר לוחצים על מקש הבריחה בדפדפן. ביצעתי גם כמה שינויים בדף האינטרנט של הבקרה כדי לאפשר צפייה בזרם תנועה דרך iframe, תוך שליטה ברובוט הכל בתוך עמוד אחד. הגדרתי את ה- Pi עם IP סטטי לארח את קובץ הלקוח כדי שאוכל להתחבר באמצעות כל מחשב או התקן ברשת שלי.

אני מתעד את התהליך כאן בתקווה להראות כיצד ליצור רובוט בסיס פשוט וזול.

חלקים בשימוש

Raspberry Pi 3 A+ (Adafruit Link) 30 $

בקר נהג כפול מנוע Riorand H-Bridge (קישור אמזון) 22 $

סוללת 12V למנועים (אמזון לינק) 19 $

סוללת 5V ל- Raspberry Pi (קישור אמזון) 10 $

כרטיס מיקרו SD 8GB (אמזון לינק) 5 $

חוטי מגשר (קישור אמזון) 7 $

סדרת רומבה 500

.הכל ביחד רק מתחת ל 100 $.

שלב 1: התקן את Raspbian והגדר כתובת IP סטטית

התקן את Raspbian והתקן כתובת IP סטטית
התקן את Raspbian והתקן כתובת IP סטטית

השתמשתי ב- Raspbian Stretch Lite. לא ראיתי צורך בשולחן העבודה, אך תוכל להתקין את גרסת שולחן העבודה אם אתה מעדיף.

אני מניח שאתה כבר יודע להתקין Raspbian. אם אתה זקוק לעזרה, תוכל למצוא כאן את המדריך של קרן Raspberry Pi.

לאחר שהפעלת Raspbian, התחבר והפעל את תוכנית raspi-config.

pi@raspberrypi: ~ $ sudo raspi-config

הגדר את חיבור ה- WiFi שלך ב- raspi-config

בחר

2 אפשרויות רשת

בחר

N2 Wi-Fi

בחר מדינה, הזן את ה- SSID שלך והזן את משפט הסיסמה שלך

הגדרת SSH ב- raspi-config

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

חזרה בתפריט הראשי של raspi-config

בחר

5 אפשרויות ממשק

בחר

P2 SSH

בחר

כן

בחזרה בתפריט הראשי של raspi-config בחר

ודא שאתה מחובר לרשת שלך

pi@raspberrypi: ~ $ ifconfig

אתה אמור לקבל פלט דומה לזה. (שים לב לכתובת ה- IP; ייתכן שתזדקק לה מאוחר יותר, למשל 192.168.1.18)

wlan0: דגלים = 4163 מטו 1500

inet 192.168.1.18 netmask 255.255.255.0 שידור 192.168.1.255 inet6 fe80:: c74f: 42ec: 8cd3: 2fda prefixlen 64 scopeid 0x20 ether b8: 27: eb: 6a: a4: 95 txqueuelen 1000 (Ethernet) מנות RX 44396 בתים 5847726 (5.5 MiB) שגיאות RX 0 ירדו 0 חריגות 0 מסגרת 0 מנות TX 30530 בתים 39740576 (37.8 MiB) טעויות TX 0 ירדו 0 חריגות 0 ספק 0 התנגשויות 0

ודא שאתה יכול להגיע לאינטרנט.

pi@raspberrypi: ~ $ ping google.com

אתה אמור לקבל פלט דומה לזה.

PING google.com (216.58.194.110) 56 (84) בתים של נתונים.

64 בתים מ- dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 1 ttl = 54 time = 18.2 ms 64 בתים מ- dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 2 ttl = 54 time = 19.4 ms 64 בתים מ- dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 3 ttl = 54 time = 23.6 ms 64 בתים מ- dfw06s48-in-f14.1e100.net (216.58.194.110): icmp_seq = 4 ttl = 54 time = 30.2 ms ^C --- google.com ping statistics --- 4 מנות מועברות, 4 התקבלו, 0% אובדן מנות, זמן 3004ms rtt min/avg/max/mdev = 18.209/ 22.901/30.267/4.715 אלפיות השנייה

הגדרת IP סטטי

כדי שתוכל להתחבר באופן רציף לרובוט שלך באמצעות אותה כתובת ברשת שלך, תרצה להגדיר IP סטטי.

קבל את כתובת הרשת הנוכחית שלך, למשל 192.168.1.18

אני משתמש בכתובת שהוקצתה אוטומטית על ידי DHCP כאשר ה- Pi התחבר לרשת שלי. אתה יכול לשנות את זה למה שאתה אוהב כל עוד זה תואם את הרשת שלך ואינו מתנגש עם כתובות אחרות שהוקצו.

פתח את dhcp.conf בעורך טקסט. (אני משתמש בננו)

pi@raspberrypi: ~ $ sudo nano /etc/dhcpcd.conf

גלול מטה אל #דוגמה לתצורת IP סטטית ושנה את השורות הבאות.

#ממשק eth0

#סטטוס ip_address = 192.168.11.13 #נתבים סטטיים = 192.168.11.1 #שרת דומיין_סטטי = 192.168.11.1 8.8.8.8

שנה כך שיתאים לרשת שלך והסר את ה- # בתחילת כל שורה.

דוגמא:

ממשק wlan0

סטטי ip_address = 192.168.1.18 נתבים סטטיים = 192.168.1.1 שרת_דומיין_סטטי סטטי = 192.168.1.1 8.8.8.8

שמור וצא.

אתחל מחדש והתחבר ל- Pi באמצעות SSH

pi@raspberrypi: ~ אתחול מחדש של sudo

התחבר ממחשב אחר באמצעות SSH. משתמשי Windows יכולים להשתמש ב- PuTTY או במערכת המשנה של Windows עבור Linux (Windows10).

ian@מחשב: ~ $ ssh [email protected]

הזן את הסיסמה שלך (ברירת המחדל היא פטל).

הסיסמה של [email protected]:

אתה אמור להיות כעת בשורת הפקודה של Pi שלך.

pi@raspberrypi: ~ $

שלב 2: התקן והגדר את התנועה

התקן והגדר את התנועה
התקן והגדר את התנועה

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

בדוק את מצלמת האינטרנט שלך

חבר את מצלמת הרשת שלך ורשום התקני USB מחוברים (ייתכן שיהיה עליך לאתחל מחדש לאחר החיבור).

pi@raspberrypi: ~ $ lsusb

אתה אמור לקבל פלט דומה לזה. שימו לב ל- Logitech C210.

אוטובוס 001 מכשיר 002: מזהה 046d: 0819 Logitech, Inc. מצלמת רשת C210

אוטובוס 001 מכשיר 001: מזהה 1d6b: 0002 רכזת שורש Linux Foundation 2.0

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

התקן את Motion

עדכן חבילות.

pi@raspberrypi: ~ $ sudo apt-get update

התקן את Motion.

pi@raspberrypi: ~ $ sudo apt -get להתקין תנועה -י

לאחר התקנת Motion ערוך את קובץ התצורה.

pi@raspberrypi: ~ $ sudo nano /etc/motion/motion.conf

שנה את השורות הבאות כך שיתאימו להלן.

הדמון על

רוחב 640 גובה 480 פריימראט 100 פלט_תמונות כבוי ffmpeg_output_movies off text_right stream_port 8081 stream_quality 100 stream_localhost כבוי webcontrol_localhost כבוי

הפעל את Motion Daemon ב- Boot

פתח את קובץ/etc/default/motion.

pi@raspberrypi: ~ $ sudo nano/etc/default/motion

לשנות ל

start_motion_daemon = כן

שמור את הקובץ ויצא

לְאַתחֵל

pi@raspberrypi: ~ אתחול מחדש של sudo

לאחר שה- Pi אתחל מחדש פתח את הדפדפן וודא שיש לך הזרמת וידאו לדפדפן ביציאה 8081

דוגמא:

192.168.1.18:8081

פתרון בעיות בדמון התנועה

נתקלתי בבעיות לגרום לדמון התנועה להתחיל באתחול בזמן שניסיתי אפשרויות שונות בקובץ motion.conf.

אם תתחיל בתנועה לפני שד התנועה ב- Raspian Stretch, סביר להניח שתתקל בבעיות לגרום לו להתחיל באתחול מאוחר יותר. הפעלת "sudo motion" מבלי להגדיר את הדמון לביצועו יוצרת תחילה את הספרייה/var/log/motion מבלי להעניק למשתמש הרשאת כתיבה.

שלב 3: התקן את Apache והגדרת דף בקרת האינטרנט

התקן את Apache ו- Setup Web Control Page
התקן את Apache ו- Setup Web Control Page

Apache היא שרת האינטרנט של דף האינטרנט של הרובוט. אנו הולכים להחליף את קובץ ברירת המחדל של Apache index.html בקובץ שהורד מ- github. תוכל גם לשנות כמה שורות קוד להצגת זרם הווידיאו בתנועה ולהקצות לאן לשלוח את הפקודות לשליטה ברובוט.

התקן את Apache ו- Git

pi@raspberrypi: ~ $ sudo apt -get install apache2 git -y

לאחר התקנת apache ו- git הורד את הקבצים.

pi@raspberrypi: ~ $ git שיבוט

פתח את ספריית roombarobot.

pi@raspberrypi: ~ $ cd roombarobot

החלף את קובץ index.html בתיקייה/var/www/html בקובץ index.html ב/home/pi/roombarobot

pi@raspberrypi: ~/roombarobot $ sudo cp index.html/var/www/html

ערוך את הקובץ index.html

פתח את קובץ index.html בעזרת עורך טקסט.

pi@raspberrypi: ~/roombarobot $ sudo nano /var/www/html/index.html

אתר את שתי השורות הללו

var host = "ws: // YOURIPADDRESS: 9093/ws";

שנה את "YOURIPADDRESS" לכתובת ה- IP הסטטית שהגדרת בשלב 1 ושמור את הקובץ.

דוגמא:

var host = "ws: //192.168.1.18: 9093/ws";

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

שלב 4: הגדר ובדוק את הקוד

הגדר ובדוק את הקוד
הגדר ובדוק את הקוד

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

התקן את PIP ואת ספריית טורנדו

התקן פיפ

pi@raspberrypi: ~ $ sudo apt-get להתקין python-pip

התקן את ספריית טורנדו

pi@raspberrypi: ~ $ sudo pip להתקין טורנדו

הפעל את תוכנית Roombabot ובדוק את החיבור

הפעל את התוכנית roombabot.py

pi@raspberrypi: ~ $ sudo python /home/pi/roombarobot/roombabot.py

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

אתה אמור לראות פלט במסוף הדומה לזה.

מוּכָן

החיבור נפתח … החיבור נפתח … התקבל: u 8 פועל חיבור קדימה נפתח … התקבל: l 6 חיבור פונה שמאלה נפתח … התקבל: d 2 ריצה חיבור הפוך נפתח … התקבל: r 4 פונה ימינה

הקש ctrl+c כדי לעצור את התוכנית.

לאחר שתסיים לבדוק את הכוח של ה- Pi.

pi@raspberrypi: ~ $ sudo poweroff

באגים

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

שלב 5: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

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

מודולי גלגלים

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

לוח ממשק

לכל לוח ממשק פועלים אליו שישה חוטים. ישנם שני חוטים (אדום [+], שחור [-]) המסובבים את המנוע, חוט נתונים אחד לחיישן אפקט אולם, חוט אחד למתג טיפת הגלגלים, חוט אחד של 5V וחוט GND אחד להנעת החיישן. יהיה עליך לפרק את המודול כדי לגשת ללוח הממשק. הסרתי הכל בחזרה למנוע והלחמתי חוטים חדשים [+] ו- [-] למנוע (ראו תמונות). זה תלוי בך אם אתה רוצה לשמר את החיישנים או לא.

מעיינות תלייה

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

חיבור המנועים לבקר המנועים

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

חיבור המנועים והסוללה לבקר המנוע

כוח - - - - - - - - - - - - - - - - 12V [+] - - - - - - - - - - - - - סוללת רומאבה [+]

מנוע 2- - - - - - - - - - - - - - - שחור - - - - - - - - - - - - - מנוע שמאל [-] מנוע 2- - - - - - - - - - - - - - - אדום - - - - - - - - - - - - - - - מנוע שמאל [+] מנוע 1- - - - - - - - - - - - - - - שחור - - - - - - - - - - - - - - מנוע ימין [-] מנוע 1- - - - - - - - - - - - - - - אדום - - - - - - - - - - - - - - - מנוע ימני [+] GND- - - - - - - - - - - - - - - - - 12V [-] - - - - - - - - - - - - - סוללת רומאבה [-]

חיבור בקר המנוע ל- Raspberry Pi

סיכות בקר מנוע צבע חוט (ראה תמונות) סיכות פי פטל

GND- - - - - - - - - - - - - - - - שחור- - - - - - - - - - - - -GND PWM 2- - - - - - - - - - - - - - - - כחול - - - - - - - - - - - - - - GPIO 18 DIR 2- - - - - - - - - - - - - - - ירוק - - - - - - - - - - - - - -GPIO 23 PWM 1- - - - - - - - - - - - - - - - צהוב - - - - - - - - - - - - GPIO 24 DIR 1- - - - - - - - - - - - - - - - כתום - - - - - - - - - - - - - - GPIO 25 5V - - - - - - - - - - - - - - - - - אדום - - - - - - - - - - - - - - - -5V

הרכבת האלקטרוניקה

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

סוללות

השתמשתי בסוללות נפרדות עבור ה- Raspberry Pi ובקר המנוע. הסוללה של ה- Pi היא רק סוללת 5V המשמשת להגברת הסלולר. לבקר המנוע השתמשתי בסוללת Roomba המקורית שהגיעה איתו. מסופי הסוללה אינם מסומנים, לכן עדיף לבדוק את המתח באמצעות מד מתח לפני שתחבר אותו לבקר המנוע. לחיבור החוטים לסוללת רומבה השתמשתי בארבעה מגנטים ניאודימיום (ראו תמונות). הלחמתי שניים מהמגנטים לחוטים ואת שני האחרים הדבקתי במסופי הסוללה. הלחמה demagnetizes את המגנטים. עם זאת, הציפוי מבחוץ עדיין יכול להתחבר למגנטים שעל המסופים ולהוביל חשמל. זה הופך את החיבור והניתוק של הסוללה לחתיכת עוגה.

בדיקה

ברגע שיש לך הכל ביחד, וודא שהכל מחובר כראוי, הנח את הרובוט שלך על משהו (כדי שלא יתגלגל) והפעל אותו.

התחבר והפעל את התוכנית roombabot.py

pi@raspberrypi: ~ $ sudo python /home/pi/roombarobot/roombabot.py

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

שלב 6: הפעלת קוד Python בעת אתחול / סיום

הפעלת קוד פייתון בעת אתחול / סיום
הפעלת קוד פייתון בעת אתחול / סיום
הפעלת קוד פייתון בעת אתחול / סיום
הפעלת קוד פייתון בעת אתחול / סיום

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

צור את הסקריפט

צור קובץ סקריפט חדש בשם startrobot.sh בספריית המשתמש pi

pi@raspberrypi: ~ $ sudo nano startrobot.sh

העתק את השורות הבאות לקובץ

#!/bin/sh

#startrobot.sh cd /cd /home /pi /roombarobot sudo python roombabot.py cd /

שמור את הקובץ ויצא

הפוך את קובץ startrobot.sh להפעלה

pi@raspberrypi: ~ $ sudo chmod 755 startrobot.sh

בדוק את זה (לחץ על ctrl + c כדי לעצור)

pi@raspberrypi: ~ $ sh startrobot.sh

ערוך את קובץ crontab

pi@raspberrypi: ~ $ sudo crontab -e

הוסף את השורה הבאה לתחתית הקובץ

פקודת # m h dom mon dow

@reboot sh /home/pi/startrobot.sh

שמור וצא

התוכנית roombabot.py אמורה להתחיל כעת כאשר ה- Pi מופעל מחדש או כשהמחזור מופעל.

מסיים

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

מוּמלָץ: