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

5 ביוני 2016

מסגרת ענן...


תאור

מסגרת לדים 64X64 מעוצבת. כל פיקסל ברוחב 5mm עם יכולת להציג 4096 צבעים (12 ביט) בעוצמה 2000mcd.
מעבר לריבוי הצבעים והגוונים. נבחר גם מחשב שליטה חזק שמאפשר הצגת וידאו וחיבור לאינטרנט. החיבור לאינטרנט מאפשר לשלוט על התצוגה מרחוק ע"י מחשב או מכשיר טלפון נייד. בהתקנה הספציפית הזאת מוצגים שקפים הקשורים ליודאיקה.


קהל היעד

מעבר לבתי עסק, אפשר להשתמש במסגרת כאלמנט השראה בבית פרטי.

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

  • Raspberry Pi3
  • Adafruit RGB Matrix HAT
  • 32X32 Led Matrix X 4
  • פרופילי אלומניום לתמוך במסגרת
  • מסגרת עץ
  • ספק 15A/5V

דיאגרמת מערכת


    מאפיינים

    • מסגרת 4096 פיקסלים 32X32 ס"מ לא כולל מסגרת
    • הצגת טקסט / תמונות / וידאו אנימציה
    • שליטה מרוחקת מפלאפון - אופציונלי

    תמונות

    ניסוי ראשון

    ניסוי ראשון עם 4 פנלים



    בשלבים סופיים של ההרכבה


    בדיקה בתצורה סופית 




    * הריצודים נובעים מהצילום במצלמת וידאו. במציאות אין ריצודים