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

עקוב אחר חנויות קטנות: 9 שלבים (עם תמונות)
עקוב אחר חנויות קטנות: 9 שלבים (עם תמונות)

וִידֵאוֹ: עקוב אחר חנויות קטנות: 9 שלבים (עם תמונות)

וִידֵאוֹ: עקוב אחר חנויות קטנות: 9 שלבים (עם תמונות)
וִידֵאוֹ: רק רציתי חברים 2024, נוֹבֶמבֶּר
Anonim
עקוב אחר חנויות קטנות
עקוב אחר חנויות קטנות

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

מה המשמעות של Track and Trace?

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

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

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

אספקה

-פטל פי 4 דגם ב

-סנדלר PI פטל

-4 x 3, 7V סוללות ליתיום

מחזיק סוללה כפול 2x

-ממיר הורדה של DC Buck 5v

-2x לדים כתומים גדולים

-מתג הפעלה/כיבוי/הפעלה

-לַחְצָן

-adafruit GPS האולטימטיבי v3

-mpu6050

-16x2 מסך LCD

-מנוע סרווו

שלב 1: הפעלת המעגל והפי

הפעלת המעגל והפי
הפעלת המעגל והפי
הפעלת המעגל והפי
הפעלת המעגל והפי

בכל הנוגע להפעלת מעגל ה- pi באמצעות סוללה, יש לך כמה אפשרויות כיצד לעשות זאת.

אתה יכול להשתמש בפאנקבנק ולהפעיל את ה- pi באמצעות USB, אולי אתה מתקין את המכשיר על אופניים או קטנוע חשמלי שיש לו יציאת USB, אולי יש לך סוללת טלפון של 5V שמחכה לשימוש או שתוכל להשתמש ב- 2 סטים של סוללות 3.7V במקביל לממיר הורדה למטה כפי שמוצג בתמונות

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

שלב 2: MPU6050

ה- MPU6050
ה- MPU6050

מודול חיישן MPU6050 הוא מכשיר מעקב תנועה משולב בעל 6 צירים.

  • יש לו ג'ירוסקופ בעל 3 צירים, מד תאוצה 3 צירים, מעבד תנועה דיגיטלי וחיישן טמפרטורה, הכל במעגל יחיד.
  • ניתן למצוא פרמטרים שונים על ידי קריאת ערכים מכתובות של אוגרים מסוימים באמצעות תקשורת I2C. קריאת גירוסקופ ומד תאוצה לאורך צירי X, Y ו- Z זמינים בצורה משלימה של 2.
  • קריאות גירוסקופ הן ביחידות מעלות לשנייה (dps); קריאות מד התאוצה הן ביחידת g.

הפעלת I2C

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

  1. הקלד "sudo raspi-config"
  2. בחר תצורות ממשק
  3. באפשרות ממשק, בחר "I2C"
  4. אפשר תצורה של I2C
  5. בחר כן כאשר הוא מבקש לאתחל מחדש.

כעת, אנו יכולים לבדוק/לסרוק כל מכשיר I2C המחובר ללוח Raspberry Pi שלנו על ידי התקנת כלי i2c. אנו יכולים להשיג כלים i2c באמצעות מנהל חבילות מתאים. השתמש בפקודה הבאה במסוף Raspberry Pi.

"sudo apt-get install -y i2c-tools"

כעת חבר כל התקן מבוסס I2C ליציאת מצב המשתמש וסרוק את היציאה הזו באמצעות הפקודה הבאה, "sudo i2cdetect -y 1"

אז הוא יגיב עם כתובת המכשיר.

אם לא הוחזרה כתובת, ודא ש- MPU6050 מחובר כראוי ונסה שוב

גורם לזה לעבוד

כעת, כאשר אנו בטוחים ש- i2c מופעל וה- pi יכול להגיע ל- MPU6050 אנו הולכים להתקין ספרייה באמצעות הפקודה "sudo pip3 install adafruit-circuitpython-mpu6050".

אם נכין קובץ בדיקת פייתון ונשתמש בקוד הבא נוכל לראות אם הוא פועל:

זמן יבוא

לוח יבוא

לייבא עסקים

oimport adafruit_mpu6050

i2c = busio. I2C (board. SCL, board. SDA)

mpu = adafruit_mpu6050. MPU6050 (i2c)

בעוד שזה נכון:

print ("האצה: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu.acceleration))

הדפס ("גירו X: %. 2f, Y: %.2f, Z: %.2f מעלות/ש" %(mpu.gyro))

print ("טמפרטורה: %.2f C" % mpu.temperature)

הדפס("")

time.sleep (1)

כאשר אנו רוצים כעת את ההאצה בציר X/Y/Z אנו יכולים להשתמש בדברים הבאים:

accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]

בשילוב זה עם משפט פשוט אם בלולאה קבועה נוכל לספור את כמות הזעזועים בטיול

שלב 3: ה- GPS Ultimate Breakout של Adafruit

ה- GPS Ultimate Breakout של Adafruit
ה- GPS Ultimate Breakout של Adafruit

מבוא

הפריצה בנויה סביב ערכת השבבים MTK3339, מודול GPS לא שטויות ואיכותי שיכול לעקוב אחר עד 22 לוויינים ב -66 ערוצים, בעל מקלט מעולה ברגישות גבוהה (-165 dB מעקב!) ואנטנה מובנית. הוא יכול לבצע עד 10 עדכוני מיקום בשנייה עבור רישום גבוה או מעקב אחר רגישות גבוהה. צריכת החשמל נמוכה להפליא, רק 20 mA במהלך הניווט.

הלוח כולל: ווסת 3.3V נשירה נמוכה במיוחד כך שתוכל להפעיל אותו עם כניסות בטוחות ברמת 3.3-5VDC, נורית LED מהבהבת בערך 1Hz בזמן שהוא מחפש לוויינים וממצמץ אחת ל -15 שניות כאשר תיקון הוא נמצא כחסך בחשמל.

בדיקת ה- GPS עם ארדואינו

אם יש לך גישה לארדואינו, כדאי לבדוק איתו את המודול.

חבר VIN ל- +5 V חבר GND ל GroundConnect GPS RX (נתונים ל- GPS) ל- Digital 0 חבר GPS TX (נתונים יוצאים מ- GPS) ל- Digital 1

כל שעליך לעשות הוא להריץ קוד ארדואינו ריק ולפתוח את הצג הטורי ב- 9600 baud. אם אתה מקבל נתוני GPS מודול ה- GPS שלך עובד. הערה: אם המודול שלך לא מקבל תיקון נסה להוציא אותו מהחלון או בחוץ במרפסת.

גורם לזה לעבוד

התחלת התקנת ספריית gps adafruit באמצעות הפקודה "sudo pip3 install adafruit-circuitpython-gps".

כעת נוכל להשתמש בקוד הפיתון הבא כדי לבדוק אם נוכל לגרום לו לעבוד:

יבוא timeimport לוח יבוא busioimport adafruit_gpsimport סדרתי uart = serial. Serial ("/dev/ttyS0", baudrate = 9600, timeout = 10)

gps = adafruit_gps. GPS (uart, debug = False) gps.send_command (b'PMTK314, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ') gps.send_command (b'PMTK220, 1000')

בעוד שזה נכון:

gps.update () אם לא gps.has_fix:

הדפס (gps.nmea_sentence) הדפס ('מחכה לתיקון …') gps.update () time.sleep (1) המשך

print ('=' * 40) # הדפס קו מפריד line.print ('Latitude: {0:.6f} degrees'.format (gps.latitude)) print (' Longitude: {0:.6f} degrees'.format (gps.longitude)) הדפסה ("תיקון איכות: {}". פורמט (gps.fix_quality))

# תכונות מסוימות מעבר לקו הרוחב, קו האורך וחותמת הזמן הן אופציונליות# ואולי אינן קיימות. בדוק אם אין אותם לפני שתנסה להשתמש! אם gps.satellites אינו None:

print ("# לוויינים: {}". פורמט (gps.satellites))

אם gps.altitude_m אינו None:

הדפס ("גובה: {} מטרים". פורמט (gps.altitude_m))

אם gps.speed_knots אינו None:

print ("מהירות: {} קשרים". פורמט (gps.speed_knots))

אם gps.track_angle_deg אינו None:

הדפס ("זווית מסלול: {} מעלות". פורמט (gps.track_angle_deg))

אם gps.horizontal_dilution אינו None:

print ("דילול אופקי: {}". פורמט (gps.horizontal_dilution))

אם gps.height_geoid אינו None:

הדפס ("מזהה גיאוגרפי לגובה: {} מטרים". פורמט (gps.height_geoid))

time.sleep (1)

שלב 4: מסך ה- 16x2

LCD בגודל 16x2
LCD בגודל 16x2

מבוא

מודולי LCD נפוצים מאוד ברוב הפרויקטים המוטבעים, הסיבה היא המחיר הזול, הזמינות והידידותי לתכנתים. רובנו היינו נתקלים בתצוגות אלה בחיי היום -יום שלנו, במחשב או במחשבונים. 16 × 2 LCD נקרא כך מכיוון; יש לו 16 עמודות ו -2 שורות. יש הרבה שילובים זמינים כמו, 8 × 1, 8 × 2, 10 × 2, 16 × 1 וכו ', אך הנפוץ ביותר הוא ה- 16 × 2 LCD. אז הוא יכלול (16 × 2 = 32) 32 תווים בסך הכל וכל תו יהיה עשוי מ -5 × 8 נקודות פיקסל.

התקנת smbus

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

הספרייה שבה נשתמש דורשת גם להתקין smbus. להתקנת smbus ב- rpi השתמש בפקודה "sudo apt install python3-smbus".

גורם לזה לעבוד

ראשית התקן את ספריית RPLCD באמצעות הפקודה "sudo pip3 install RPLCD".

כעת אנו בודקים את ה- LCD על ידי הצגת ה- ip באמצעות הקוד הבא:

משקע RPLCD.i2c יבוא CharLCDimport

def get_ip_address ():

ip_address = 's = socket.socket (socket. AF_INET, socket. SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () [0] s.close () החזר ip_address

lcd = CharLCD ('PCF8574', 0x27)

lcd.write_string ('כתובת IP: / r / n'+str (get_ip_address ()))

שלב 5: סרוו, נוריות, לחצן ומתג

סרוו, נוריות, לחצן ומתג
סרוו, נוריות, לחצן ומתג

מבוא

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

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

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

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

לגרום לזה לעבוד: הסרוו

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

servo_pin = 18 duty_cycle = 7.5

GPIO.setmode (GPIO. BCM)

GPIO.setup (servo_pin, GPIO. OUT)

pwm_servo = GPIO. PWM (servo_pin, 50) pwm_servo.start (duty_cycle)

בעוד שזה נכון:

duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

לגרום לזה לעבוד: הלד והמתג

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

לגרום לזה לעבוד: הכפתור

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

מכפתור ייבוא GPIOclass של RPi:

def _init _ (self, pin, bouncetime = 200): self.pin = pin self.bouncetime = bouncetime GPIO.setmode (GPIO. BCM) GPIO.setup (pin, GPIO. IN, GPIO. PUD_UP) @property def לחוץ (עצמי):

ingedrukt = GPIO.input (self.pin) החזרה לא ingedrukt

def on_press (self, call_method):

GPIO.add_event_detect (self.pin, GPIO. FALLING, call_method, bouncetime = self.bouncetime)

def on_release (self, call_method):

GPIO.add_event_detect (self.pin, GPIO. RISING, call_method, bouncetime = self.bouncetime)

שלב 6: המעגל המלא

המעגל המלא
המעגל המלא
המעגל המלא
המעגל המלא

כעת, לאחר שעברנו על כל המרכיבים הגיע הזמן לשלב את כולם.

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

שלב 7: הקוד

כדי לשמור על ניקיון ההוראה הזה, סיפקתי מאגר github עם קובצי backend ו- frontend. פשוט הכנס את הקבצים לתיקיית frontend בתיקייה/var/www/html והקבצים בתיקיית backend בתיקייה/home/ תיקיית [שם משתמש]/[שם שם]

שלב 8: מסד הנתונים

בסיס הנתונים
בסיס הנתונים

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

שלב 9: התיק

המקרה
המקרה

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

מוּמלָץ: