יום שני, 26 בפברואר 2018

ינשוף / מד אלכוהול בנשיפה

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

נתחיל? 

רכיבים: 
  • לוח ארדואינו
  • חיישן אלכוהול מסוג MQ-3
  • מסך LCD עם ארבעה חיבורים
  • כמה חוטים
הערה: העדפתי לקנות את ה MQ-3 שמגיע כבר עם מודול וארבעה חיבורים מאשר לקנות רק את החיישן עצמו. המחיר של החיישן עצמו הוא כ - 4 ש"ח ויחד עם המודול שלו - מחירו כ 5 ש"ח אבל הפער בין המוצרים שווה בהחלט את תוספת השקל... 

תחילה נבנה את המעגל: 



שימו לב לחבורים: 
  1. את ה VCC במסך ה LCD נחבר ל 5V בלוח הארדואינו. 
  2. את ה GND במסך ה LCD נחבר ל GND בלוח הארדואינו. 
  3. את ה SDA במסך ה LCD נחבר ל A4 בלוח הארדואינו. (אם אתם לא בטוחים והסימון אצלכם על המסך שונה - לא יקרה כלום אם תנסו להחליף בין A4 ל A5. שימו לב רק לאתחל את הארדואינו לאחר ההחלפה). 
  4. את ה SCL במסך ה LCD נחבר ל A5 בלוח הארדואינו. 
  5. את חיבור ה A0 בחיישן ה MQ-3 נחבר ל A0 בלוח הארדואינו. 
  6. את חיבור ה D0 בחיישן ה MQ-3 נחבר ליציאה מספר 2 בלוח הארדואינו. 
  7. את חיבור GND בחיישן ה MQ-3 נחבר ל GND בלוח הארדואינו. 
  8. את חיבור ה VCC בחיישן ה MQ-3 נחבר ל VCC בלוח הארדואינו. 
כעת, נשאר להעלות את הקוד (באתר הזה מצאתי את הקוד לחיישן אולם עשיתי לו התאמה והוספתי קוד למסך):




והנה החיישן בניסוי כלים ראשון:




עכשיו נשאר לערוך התאמה קטנה של של החיישן לפורים - הכותב אינו מעודד שתייה חריפה משום סוג אולם לכבוד פורים, הוספתי תוספת היתולית קטנה לקוד: כאשר רמת האלכוהול נמוכה - המסך יכתוב LOW בתוספת סמיילי עצוב :-(
כאשר רמת האלכוהול גבוהה - המסך יראה NICE בתוספת סמיילי שמח :-)

הנה הקוד "המתוקן":



פורים שמח!



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





פוריM שMח!

יום רביעי, 14 בפברואר 2018

Cura - Enable Retraction

בתכנת Cura ישנה אפשרות להגדיר למדפסת ה Ultimaker אפשרות של Retraction, כלומר, שהמדפסת תוכל גם להחזיר את חומר ההדפסה לאחור. מה היתרון של הפעולה הזאת? 



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

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

בחרתי בדוגמא קיצונית מעט שתוכל להמחיש לנו את העניין: 

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


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

בשבוע שעבר, אחרי שטוביה ביקש ממני אינספור פעמים להדפיס לו את המודל, הדפסתי לו את המודל והפעם באמצעות Ultimaker 3. בהגדרות ההדפסה של Cura, דאגתי כמובן לאשר את האפשרות של Enable Retraction. את המודל הדפסתי בגודל קטן יותר והנה התוצאה: 


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

אז למה ב Cura זו אופציה? לא כדאי תמיד להשתמש בזה? 

באופן כללי אני חושב שכדאי לבחור באופציה הזאת. בחומרים גמישים במיוחד (flex) אני חושב שכדאי לוותר על האופציה: חומר ההדפסה עלול להתפתל בגלל החזרות בתוך המנגנון גריפה של המנוע האחורי ולהיתקע. בהדפסה בחומר PLA רגיל - נראה לי שתמיד אבחר באופציה הזאת. 

יום שלישי, 13 בפברואר 2018

מכשיר מעקב GPS

איך מרכיבים מכשיר מעקב GPS בעזרת ארדואינו? הרעיון אמור להיות די פשוט: לקרוא אותות GPS ולחשב מיקום כמו שעשינו כבר כאן ובנוסף - לשדר את המיקום בתקשורת סלולרית. לשדר בתקשורת סלולרית זה אמור להיות ממש קל וכבר עשינו את זה כאן. אז מה הסיפור?

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


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

איפה הבעיה? 

ניסיתי לעלות רמה ולמרות הכישלון הצורב לנסות לשדר את המיקום בתקשורת סלולרית באמצעות אפליקציית Blynk. גם זה לא עבד והאפליקציה לא הראתה מיקום. הפעם זה היה מוזר אפילו יותר מכיוון שהשתמשתי בקוד מוכן של Blynk שעבר התאמות קלות מאד. כאשר כמעט התייאשתי - פגשתי ברשת את ihsan yurtbaşı (תודה רבה!!). ihsan עזר לי להבין שהארדואינו לא יכול לבצע יותר מפעולה אחת בו זמנית (טוב, את זה כולם יודעים...) ולכן במקרה של שימוש בשני רכיבי תקשורת - לדוגמא שימוש בתקשורת לוויינית ושימוש בתקשורת סלולרית - לא מספיק להבין שהארדואינו יבצע את הפעולות אחת אחרי השניה אלא להגדיר לארדואינו התחלת והפסקת ביצוע.

בעזרת פקודת listen או end מגדירים לארדואינו להתחיל "להקשיב" לרכיב ה GPS או לרכיב התקשורת הסלולרית או מגדירים לו "לסיים את ההקשבה" ולעבור הלאה. זה קצת מוזר אבל אם לא "סיימנו להקשיב" לתקשורת הסלולרית, הארדואינו לא יעבור הלאה לקריאת ה GPS. הוא כביכול ימשיך לרוץ הלאה ב Loop אבל לא באמת יבצע פקודות שקשורות לרכיב התקשורת השני. 

אז אחרי העזרה הענקית שקיבלתי מ ihsan (שוב תודה רבה!!) הכל היה הרבה יותר פשוט. מוכנים להתחיל?

רכיבים: 
  • לוח ארדואינו אונו
  • מטריצה וכמה חוטים 
  • רכיב GPS מסוג Neo-6M או Neo-7M
  • רכיב תקשורת סלולרית מסוג Sim800L
  • כרטיס Sim
  • אנטנת GPS
מרכיבים את המעגל על פי התרשים: 



כמה הערות לתרשים: 
  1. כאשר חיברתי את ה Neo-6M ל 5V - רכיב התקשורת הסלולרית לא הצליח לקבל מספיק מתח כדי לעבוד. אולי אצלכם זה יהיה שונה אבל גיליתי שהוא מסתדר מצוין עם 3.3V אז הבעיה נפתרה.. 
  2. בתרשים ציירתי סוללה של 9V, בפועל השתמשתי ב"מטען נייד" (Power bank) של 5000mA. עבד מעולה והחזיק את המערכת ליותר מ 24 שעות של תקשורת סלולרית ברצף!
  3. Neo-6M: 
    1. החוט האדום - VCC
    2. החוט השחור - GND
    3. החוט הסגול - RX
    4. החוט הצהוב - TX

כעת, לפני הקוד, נוריד את אפליקציית Blynk ונתקין אותה (כי רק איתה נוכל להשלים את הקוד ולמלא את מה שחסר). לאחר ההתקנה נפתח את התכנה וניצור משתמש חדש על ידי לחיצה על Create New Account.



נכניס מייל וסיסמא ונלחץ על Sign Up:




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


במסך העריכה לחצו על + כדי להוסיף רכיבים לפרויקט. בחרו באפשרות של הוספת מפה (Map):



אחרי שהוספתם את המפה לתרשים תצטרכו להגדיר למפה חיבור וירטואלי V4:



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

השלב הבא יהיה להגדיר את ה APN שלכם. אם רכשתם כרטיס Sim יעודי עבור הפרויקט הזה, אני ממליץ להכניס אותו למכשיר טלפון "אמיתי" כדי להגדיר את כל ההגדרות הנכונות. חברת הסלולר שלכם אמורה לשלוח SMS של הגדרות תקשורת שיותקנו על גבי כרטיס ה Sim. ההגדרות ישמרו על הכרטיס גם לאחר שתעבירו את הכרטיס לרכיב Sim800L.

אם אתם משתמשים בכרטיס של הטלפון שלכם - תוכלו לבצע מיד את השלב הבא:

פתחו את ההגדרות של מכשיר הטלפון שלכם וחפשו את פרטי ה APN שלכם. אצלי זה נמצא תחת הגדרות>>> כרטיסי SIM & רשתות סלולריות>>> GOLAN T>>> שמות של נקודות גישה >>> פרטי APN. אצלכם זה יכול להופיע כמובן בתפריט שונה בהתאם למכשיר הסלולר שברשותכם אולם זה פחות או יותר הכיוון. בסופו של דבר אתם אמורים לראות את פרטי ה APN, במקרה שלי: internet.golantelecom.net.il


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

(אם ממש ממש נתקעתם ולא מצאתם את ה APN שלכם - תוכלו להתקשר לספק הסלולר שלכם ולשאול אותו מה ה APN שלכם). 

אחרי שעדכנתם את ה APN שלכם ואת ה auth שלכם, אתם יכולים להעלות את הקוד לארדואינו:





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


אם הכל עובד כשורה, המפה אמורה להראות לכם את המיקום של המשדר כמו בסרטון הבא:




מה אפשר לעשות עם זה?

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

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

בהצלחה!


יום ראשון, 11 בפברואר 2018

שליטה על steadicam - תיעוד פרויקט...

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

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


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

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

אז מה עושים?

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


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


(מסומן בעיגול: הרגל שנשברה)

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



עוד בדיקות אחרונות - וה steadicam עובד!