20 בדצמבר 2022

תאור

בפוסט זה נסקור מערכת Media Center בתקציב של כמה מאות שקלים ש"ח (לא כולל טלבזיה) שמריצה XBMC

המצרכים הדרושים

  • מסך טלבזיה עם כניסת HDMI
  •  RaspberryPi
  • מקלדת אלחוטית - אופציונלי
  • אפליקצית XBMC לטלפון סלולרי

    תרשים מערכת



    תמונות



    שלבי התקנה

    1. התקנת התקני תוכנת XBMC על ה RaspberryPi
    2. חיבור מסך הטלבזיה בכבל HDMI ל- RaspberryPi
    3. חיבור מקלדת אלחוטית ל- RaspberryPi
    4. הגדרת XBMC והפעלתו
    מערכת מסוג זה הוטמעה בחב"ד אלקנה/הרצליה/רעננה ובמספר בתים פרטיים.

    הערה: אם רוצים להיות פחות הרפתקניים - אפשר להשתמש בWD TV. זהו מוצר מוגמר והפעלתו מיידית ולא דורשת ידע מוקדם שגם הוא לא יקר עולה כ180 ש"ח - WD TV הוטמע בבית חב"ד רעננה צפון.

    11 בפברואר 2022

    מסגרת החיוכים - Smile Frame

    פרוייקט באווירת חודש אדר על בסיס  הקטע המדהים של האדמו"ר הצמח צדק משושלת אדמורי חב"ד:

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

    מפתיע לראות את המשפט הנ"ל במשנת חב"ד אבל אמירה זאת היא אמת לאמיתה: שמחה חיצונית מעוררת את שמחת הלב.


    דבר היוצר :)




    מבט קדמי





    מבט אחורי


    מדריך מעולה של חברת Adafruit על חיבור הרסברי פי למסך והגדרתו - כאן

    קצת על התיאוריה של אלגוריתם Haar Cascade שעושים בו שימוש - כאן

    קוד האפליקציה




    import numpy as np
    import cv2
    import numpy as np
    import sys
    # https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    # https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml
    eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
    smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')
    #cap = cv2.VideoCapture(0)
    from picamera.array import PiRGBArray
    from picamera import PiCamera
    import time
    IM_WIDTH = 640
    IM_HEIGHT = 480
    # initialize the camera and grab a reference to the raw camera capture
    camera = PiCamera()
    camera.resolution = (IM_WIDTH,IM_HEIGHT)
    camera.framerate = 10
    rawCapture = PiRGBArray(camera, size=(IM_WIDTH,IM_HEIGHT))
    rawCapture.truncate(0)
    # allow the camera to warmup
    time.sleep(1)
    # capture frames from the camera
    for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
    #while 1:
    #ret, img = cap.read()
    img = frame.array
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    ###Face detection
    for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    roi_gray = gray[y:y + h, x:x + w]
    roi_color = img[y:y + h, x:x + w]
    ###smile detection
    smile = smile_cascade.detectMultiScale(
    roi_gray,
    scaleFactor=1.7,
    minNeighbors=22,
    minSize=(25, 25),
    flags=cv2.CASCADE_SCALE_IMAGE
    )
    ##Eye Detection
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex, ey, ew, eh) in eyes:
    cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
    #print (("Found"), len(eyes), ("eyes!"))
    # Set region of interest for smiles
    for (x, y, w, h) in smile:
    print (("Found"), len(smile), ("smiles!"))
    cv2.rectangle(roi_color, (x, y), (x + w, y + h), (0, 0, 255), 1)
    image = cv2.imread('pic.png')
    cv2.namedWindow("Face1", cv2.WND_PROP_FULLSCREEN)
    cv2.setWindowProperty("Face1",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
    cv2.imshow('Face1', image)
    cv2.waitKey(3000)
    cv2.destroyWindow("Face1")
    cv2.namedWindow("Face", cv2.WND_PROP_FULLSCREEN)
    cv2.setWindowProperty("Face",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
    cv2.imshow('Face', img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
    break
    rawCapture.truncate(0)
    #cap.release()
    cv2.destroyAllWindows()
    view raw smile_frame.py hosted with ❤ by GitHub
    קישור לקוד ומספר קישורים שעוזרים להתחיל בתהליך ההתקנה: כאן


    23 בינואר 2022

    כובע קסמים - NeoMatrix - פורים 22

     כובע קסמים - NeoMatrix - פורים 2022

    מבוא

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



    פרוייקט השראה - https://learn.adafruit.com/smssenger-bag של  Becky Stern

    רשימת הרכיבים

    • מטריצת לדים גמישה NeoMatrix 8x32 של חברת Adafruit - קישור
    • מעבד FLORA של Adafruit - קישור
    • חוטי חיווט בצבעי אדום, שחור, וירוק כדוגמת אלו
    • מחזיק סוללות AAAx3, עם חיבור JST - קישור
    • כובע קוסמים מלבד. שום דרישה מיוחדת, רק שיהיה מספיק גבוה - כ20ס"מ

    תכנון וביצוע

    מבט על כובע הלבד לפני חיבור המטריצה



    בדיקת המטריצה לפני החיבור





    תמונות לאחר חיבור ראשוני לפני ההידוק



    תמונת הכובע מבפנים עם מחזיק הסוללות





    חיבור החוטים למעבד FLORA


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

    #include <Adafruit_GFX.h>
    #include <Adafruit_NeoMatrix.h>
    #include <Adafruit_NeoPixel.h>
    #include <Fonts/hebEng5x7avia.h>
    #define PIN 12
    // MATRIX DECLARATION:
    // Parameter 1 = width of NeoPixel matrix
    // Parameter 2 = height of matrix
    // Parameter 3 = pin number (most are valid)
    // Parameter 4 = matrix layout flags, add together as needed:
    // NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
    // Position of the FIRST LED in the matrix; pick two, e.g.
    // NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
    // NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
    // rows or in vertical columns, respectively; pick one or the other.
    // NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
    // in the same order, or alternate lines reverse direction; pick one.
    // See example below for these values in action.
    // Parameter 5 = pixel type flags, add together as needed:
    // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
    // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
    // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
    // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
    // Example for NeoPixel Shield. In this application we'd like to use it
    // as a 5x8 tall matrix, with the USB port positioned at the top of the
    // Arduino. When held that way, the first pixel is at the top right, and
    // lines are arranged in columns, progressive order. The shield uses
    // 800 KHz (v2) pixels that expect GRB color data.
    Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32, 8, PIN,
    NEO_MATRIX_BOTTOM + NEO_MATRIX_RIGHT +
    NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
    NEO_GRB + NEO_KHZ800);
    const uint16_t colors[] = {
    matrix.Color(148, 0, 211), matrix.Color(75, 0, 130), matrix.Color(0, 0, 255), matrix.Color(0, 255, 0), matrix.Color(255, 255, 0), matrix.Color(255, 127, 80) , matrix.Color(255, 0, 0)};
    // אבגדהוזחטיכךלמםנןסעפףצץקרשת//
    //char replybuffer[255]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x96,0x97,0x98,0x99,0x9A};
    // this is a large buffer for replies
    char replybuffer[255]={0x21,0x21,0x21,0x8F,0x9A,0x8E,0x20,0x9A,0x87,0x94,0x99,0x8E,0x8E,0x20,0x87,0x8E,0x99,0x20,0x8D,0x89,0x98,0x85,0x94};
    uint8_t msgLen = 19; // Empty message
    int x = msgLen * -6;//matrix.width();
    int pass = 0; // variable we'll use to keep track of a cycling of colors
    int i;
    unsigned long prevFrameTime = 0L; // For animation timing
    #define FPS 20 // Scrolling speed
    // Pin 7 has an LED connected on FLORA.
    // give it a name:
    int led = 7;
    void setup() {
    Serial.begin(115200);
    Serial.println(F("LCD test"));
    Serial.println(F("Initializing....(May take 3 seconds)"));
    matrix.begin();
    matrix.setTextWrap(false);
    matrix.setBrightness(40);
    matrix.setTextColor(colors[0]);
    matrix.setFont(&hebEng5x7avia);
    // initialize the digital pin as an output.
    pinMode(led, OUTPUT);
    delay(1000);
    }
    void loop() {
    unsigned long t = millis(); // Current elapsed time, milliseconds.
    // millis() comparisons are used rather than delay() so that animation
    // speed is consistent regardless of message length & other factors.
    if((t - prevFrameTime) >= (1000L / FPS)) { // Handle scrolling
    matrix.fillScreen(0);
    matrix.setCursor(x, 1);
    for(i=0;i<=strlen(replybuffer);i++)
    {
    matrix.setTextColor(colors[i%7]);
    matrix.print(replybuffer[i]);
    }
    if(++x >= (msgLen * 6)) {
    x = msgLen * -6; // We must repeat!
    if(++pass >= 3) pass = 0;
    matrix.setTextColor(colors[pass]);
    }
    matrix.show();
    prevFrameTime = t;
    }
    }
    view raw magic_hat.ino hosted with ❤ by GitHub

    קישור לקוד: כאן

    לינקים שימושיים נוספים שיחסכו לכם זמן רב במידה ותרצו לממש משהו דומה

    • מדריך מפורט לשימוש במעבד Flora - כאן 
    • מדריך מפורט לילמוד שימוש NeoPixel Leds - כאן
    • פונטים עבריים לספריית Adafruit GFX - ראה כאן 
    • עורך Web לפונטים Adafruit GFX - כאן
    אשמח לקבל מכם הארות/הערות ושאלות בתגובות למטה

    28 בנובמבר 2021

    חנוכיית אולטרה - סגול


    מעט אור דוחה הרבה מן החושך (הבעל שם טוב)

    מבוא

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


    ביצוע:

    בועז מתן: boazmatan@gmail.com

    אסף מתן: asaf.matan@gmail.com 


    פרוייקט השראה: https://learn.adafruit.com/mad-science-test-tube-rack




    רשימת הרכיבים

    • לד אולטרה סגול, 8 יחידות - קישור
    • אבקת נאון פלוריסנטית בשלל צבעים - קישור
    • מעבד D1 Mini - קישור
    • מבחנות בדיקה פלסטיות
    • עפרונות לא מחודדים - 4 יחידות
    • חוטי חשמל שחור כ-2 מ'
    • גוף החנוכייה בהדפסת תלת מימד

    מודל המנורה




    חיווט והרכבה





    חומר הנאון הפלורסנטי לפני הערבוב במבחנות



    לאחר מילוי החומר הפלורסנטי בערבוב עם מים




    לאחר חיווט הלדים בקדח 5ממ




    חיווט החוטים לבקר D1 Mini



    להלן הקוד שמדליק את הלדים בזה אחר זה - קישור

    בדיקות  של לד האולטרה - סגול ואבקת הנאון - שימו לב רק קמצוץ מספיק בכל מבחנה!!







    23 באוגוסט 2016

    גימיק שיווקי לKidsTora


    תאור

    ישנו אתר מאד שימושי שמאפשר לקנות בקלות אות בספר תורה לילדי ישראל www.kidstorah.org.

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

    קהל היעד

    כל מי שרוצה לקדם את מבצעי הרבי מילובאוויטש ו/או להיות מקושר אליהם...

    המצרכים הדרושים

    • מעבד Adafruit Feather Huzzah - ESP8266 Core+USB to UART+Power manager for lithium ion
    • 2X4 Digit I2C alphanumeric display
    • MicroUSB cable
    • RIBBA picture frame from Ikea


    מאפיינים


    • חיבור חשמלי לשקע USB או מטען פלאפון.
    • מתחבר לרשת WIFI ומביא את מספר האותיות שנשארו בספר התורה ע"י ניתוח המידע מדף הבית של KidsTorah.org כל 10ד'.

    תמונות

    בשלבי הפיתוח






    המוצר המוגמר




    7 ביולי 2016

    Weather Lamp

    שלום לכולם,

    הפעם מדובר במימוש של עיצוב קיים של האחים Ruiz מ-Adafruit.

    מדובר מחשב זעיר:Feather Huzzah שיש בו התקן Wifi ומחובר לטבעת לדים NeoPixel 24

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

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

    קישור לסרטון על ההתקן


    תמונות שצילמתי






    21 ביוני 2016

    Where is my love?



    הי!

    בפרוייקט הזה בניתי התקן זעיר שמונח בבית ומדווח מה המרחק שלי מהבית ובקיצור: Where is my love?

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

    המחשב הזעיר Adafruit Feather Huzzah שבלב המערכת שנמצאת בבית מאפשר יכולות של מחשב ארדוינו סטנדרטי אבל יחד עם גישה לWifi. כאשר יש גישה לWifi אז השמים הם הגבול כי כל העוצמה של האינטרנט פרושה בפננו. במקרה פרטי זה מחשב ה-Feather מתחבר כלקוח MQTT לשרת בענן ומביא את נתוני הGPS אחת לזמן שהוגדר.

    בתור שרת MQTT בחרתי בCloudMQTT החינמי (שמדובר בהקפי תעבורה קטנים)


    קהל היעד

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

    המצרכים הדרושים

    מעבד זעיר: Adafruit Feather HUZZAH ESP8266
    תצוגה: FeatherWing OLED - 128x32 OLED
    סוללה נטענת (אופציונלי): Lithium Ion Polymer Battery - 3.7v 350mAh
    כבל USB
    גוף המוצר בהדפסה תלת מימדית

    תרשים מערכת



    מאפיינים

    • התקן אינטרנט שמעדכן על מרחק טלפון מסויים שנבחר
    • מסך בטכנולוגיית Oled 128X32
    • מציג במסכים מתחלפים כל אינפורמציה למשל אמרות של אנשים מפורסמים וכיוב
    • אספקת חשמל מכבל microusb סטנדרטי
    • סוללת ליתיום לגיבוי שמתאימה לטווח קצר של כמה שעות
    • הגדרת נתונים חד פעמית דרך מחשב המחובר להתקן ב-USB

    תמונות נוספות






    לפרטים נוספים asaf.matan@gmail.com