מרחיבים gpio לesp-01 esp8266, ומתאימים לbreadboard. אע, יש גם באגים.

בזמן שאני מחכה לesp-201 שיגיע, שכולל breakout של כל הפינים שרק רציתם, רציתי אני להתקדם טיפה בהסבת תחנת מזג האויר שלי לesp8266 בלבד, הבעיה היא שיש לesp-01 רק 2 פינים דיגיטליים (לא כולל TX ו RX), וזה לא מספיק לי!

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

1 2 3 4 5

 ועכשיו באמת.

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

esp8266ex-layout

אני צריך ADC, והוא קיים בשבב, בפין מספר 6 – TOUT, הADC עובד ברפרנס פנימי בטווח 0V-1V (שימו לב).
ועוד פינים דיגיטאליים, אני בחרתי את 9,10,12,13 שהם GPIO14,GPIO12,GPIO13,GPIO15 (בהתאמה, הסדר נכון, בדקתי, תבדקו גם אתם בקישור), השימוש בהם הוא פשוט כמו של ארדואינו,
pinMode(14, OUTPUT);z  וגם digitalWrite(14, HIGH);z
בחרתי אותם כי הם הכי קרובים להאדרים ויהיה קל יותר להלחים.

לא קל יותר להלחים!

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

6 7 8

 

אפשר להמשיך

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

בינתיים ההסבה החלה.

9

האק לשינה בesp8266 esp-01

בעודי ממשיך במשחקים עם הesp8266 כבקר בפני עצמו ושימוש בArduino IDE לפיתוח אליו, הייתי צריך שהוא ישן, שינה עמוקה וטובה,כדי שיפסיק לזלול 80mA בIdle..
שינה בesp8266 זה לא דבר חדש..אבל, כדי לאפשר לו להתעורר הוא צריך גישה לפין Reset של עצמו מפין GPIO אחר.. כן גם אני לא הבנתי.. אבל זה מה יש, אם לדייק, צריך שGPIO16 יהיה מחובר לפין Reset, מה הבעיה?

GPIO16 לא נגיש בלוח esp-01

והבעיה היא לא רק בesp-01, למעשה הוא נגיש רק בלוחות 03,04,06,07,08,11,12,201.
אז 01,02,05,09,10 לא יכולים לישון בלי התערבות בחומרה.
מכיוון שאני מהחבר'ה שרק תתנו להם להתערב .. לקחתי מלחם, בדיל, חוט חשמל דק ויד יציבה וניגשתי לעבודה, כמה יציבה היד? יציבה מאוד!
למען האמת צריך קצת יותר ממלחם, בדיל וחוט חשמל.. שמתי למלחם ראש שפיץ מחט, בדיל 0.3מ"מ, חוט חשמל הכי דק שמצאתי, חשפתי אותו, הפרדתי סיב אחד ואת כל השאר חתכתי – העדפתי את שאר החוט להשאיר בתוך הבידוד כדי שלא יקצר עם שום דבר בדרך לפין הReset.
יד שלישית שתחזיק את הesp8266, פינצטה להחזיק איתה את החוט ויאללה…
עם ציוד מתאים זה לא קשה כמו שזה נראה 🙂
ניתן לתמונות קצת לדבר ..

ironandsolder
wire
esp8266 closeup

חיסכון מוחלט

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

איך ישנים?

השינה עובדת גם בסביבת עבודה NodeMCU, וגם Arduino IDE.
בגלל שאני עובד עם הAdruino IDE אפרט עליו, אבל החבר'ה של הNodeMCU לא ישארו מאחור.

פקודת השינה היא:

ESP.deepSleep(microseconds, mode);

שימו לב שזה מיקרו-שניות, ולא מילי-שניות כמו שאתם רגילים..
מצבי השינה הם:
WAKE_RF_DEFAULT – התעוררות ברירת מחדל (אפשר להרחיב על זה אבל זה ממש מתקדם)
WAKE_RFCAL – התעוררות וביצוע כיול לרדיו – צורך יותר זרם
WAKE_NO_RFCAL – התעוררות ללא ביצוע כיול לרדיו – צורך פחות זרם
WAKE_RF_DISABLED – התעוררות וכיבוי רדיו – בעצם כיבוי הWIFI – צריכת זרם נמוכה – כ13mA

מה זה נתן?

לאחר העבודה ובמהלכה עשיתי כמה מדידות והתוצאות להלן:
עבודה במצב Idle – זרם 70mA ומעלה – בשידור הזרם עולה
שינה עמוקה עם הלד – 353uA – מיקרו-אמפר!, כבר מרשים
שינה עמוקה ללא הלד – 18.8uA – כן, 18.8 מיקרו אמפר.

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

לא כמו המוכרים של Atmel שישנים ב9 מיקרו-אמפר ומטה, אבל 18.8 זה עדיין נתון מאוד משמח, יחסית לזללן שהוא כאשר הוא עובד רגיל, הוא ישן ממש טוב, מה שמאפשר לנו להשתמש בו למטרות Low Power IoT, וזה חדשות טובות לתחנת מזג האויר שלי שהולכת לעבור הסבה מלאה לesp8266 בלבד.

sleep

מקורות:
http://tim.jagenberg.info/2015/01/18/low-power-esp8266/
https://github.com/esp8266/Arduino
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en

הסבת ארדואינו אונו ל3.3V 8Mhz

שאלת השאלות..
מה המטרה של זה?
ובכן, תשובה קלה היא לשאלה למה צריך ארדואינו 3.3V?
יש המון חומרה כמו מסכים (נוקיה, OLDE וTFT למיניהים) חיישנים ואפילו הesp8266 שדורשים 3.3V גם VCC וגם בתקשורת הלוגית
מה שרבים לא מבינים הוא שכאשר מצויין שמסך עובד על 3.3V זה לא תמיד מספיק לחבר את VCC ל 3.3V ולסגור עניין, כל שאר הפינים של התקשורת עובדים על 3.3V גם כן
ולוח כמו אונו עובד על 5V בכל הפינים שלו מה שיגרום לרכיב לא לעבוד/ להישרף.

למה לעשות את זה לאונו? יש הרי ארדואינו אחרים שעובדים על 3.3V!
נכון, יש .. ולא מעט, אבל או הם פחות נפוצים, או יותר יקרים, או מוזרים
יש את הפרו מיני, שהוא מעולה, אבל אין לו USB-RS232 מובנה וזה דורש עוד רכיבים

אז האונו הוא נוח! הוא כל יכול! הוא יורה לייזרים מהעיניים! ועכשיו הוא גם יהיה 3.3V!!

רשימת מכולת:
אדרואינו אונו – חיקוי סיני ב 15שח
מייצב מתח 3.3V – תואם לסוג והאריזה של המייצב שנמצא על הלוח
מתנד גבישי 8Mhz – תואם לאריזה לזה שכבר נמצא על הלוח
דיודה 1N4148 – בכללי אפשר לקחת כל דיודה עם ערכים שיתאימו

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

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

מה אני הזמנתי:
הארדואינו – http://www.ebay.com/itm/221591186520…%3AMEBIDX%3AIT
המייצבים – AMS1117 3.3V 0.8A כמות – http://www.ebay.com/itm/171654620834…%3AMEBIDX%3AIT
יש גם מייצבים כאלה שהם 1A אבל אני לא יודע אם זה בלוף או מה הסיכוי שאכן תקבלו כאלו מאיביי
המתנד – 8MHZ כמות – http://www.ebay.com/itm/191532992522…%3AMEBIDX%3AIT

כמובן לא חייב בכמויות ובמחירים שאני קניתי …

התהליך:
מפרקים את המתנד + מייצב המתח + הפוליפיוז ששומר על הUSB

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

השלב הבא הוא להלחים את המתנד החדש, את המייצב, אני החלטתי להשאיר את הפולי פיוז וגם הוספתי דידיוה אחרי הפיוז שנכנסת לVIN של המייצב
מה שעשיתי בעצם זה לנתק את המסילה של ה5V שהולכת מהUSB בעזרת הסרת הפוליפיוז, מסילה זו הולכת למעגל שבורר מהיכן להזין את הבקר, אם זה USB או DC, וממשיכה לבקר עצמו
מכיין שאנחנו לא צריכים 5V לבקר הסרתי את הפוליפיוז, שמתי 3 שכבות של סרט קפטון על הפד השני של הפיוז שממשיך אל הבורר כדי ליצור נתק
אל הפיוז הלחמתי דיודה שנכנסת לVIN של המייצב, כעט המעגל שבורר מנוטרל והכל ניזון מהמייצב.
אבל הדיודה חשובה ביותר, היא שם כדי שאם תחברו גם DC וגם USB, זרם מהDC לא יזרום לתוך ה USB.

IMG_2460 IMG_2461 - Copy IMG_2462
עם החומרה סיימנו.

הוספת לוח מתאים לArduino IDE

פה יש הרבה אפשריות, אבל אני שיכפלתי את הלוח של האונו ושיניתי 2 קריטריונים חשובים.
השינוי מתבצע בקובץ Boards.txt שבנתיב (צריך לפתוח את הקובץ כמנהל מערכת)

קוד:
C:\Program Files (x86)\Arduino\hardware\arduino\avr

אם אתם משתמשים מתקדמים לא תיהיה לכם בעיה למצוא את הנתיב גם בלינוקס וגם בגרסא שהיא לא Installer

הגרסא שלי היא 1.6.3 של arduino.cc
וזאת התוספת (השינויים מאונו רגיל מסומנים באדום וגם נמחקו דברים) אי שם בשורה 80 אחרי הלוח אונו המקורי:

קוד:
##############################################################

uno33v.name=Arduino Uno HACKED 3.3V 8Mhz


uno33v.upload.tool=avrdude
uno33v.upload.protocol=arduino
uno33v.upload.maximum_size=32256
uno33v.upload.maximum_data_size=2048
uno33v.upload.speed=57600


uno33v.bootloader.tool=avrdude
uno33v.bootloader.low_fuses=0xFF
uno33v.bootloader.high_fuses=0xDE
uno33v.bootloader.extended_fuses=0x05
uno33v.bootloader.unlock_bits=0x3F
uno33v.bootloader.lock_bits=0x0F
uno33v.bootloader.file=optiboot/optiboot_atmega328.hex


uno33v.build.mcu=atmega328p
uno33v.build.f_cpu=8000000L
uno33v.build.board=AVR_UNO
uno33v.build.core=arduino
uno33v.build.variant=standard


##############################################################

שומרים, פותחים את הIDE, בוחרים את הלוח החדש וממשיכים לעבוד רגיל

2015-05-21 14_27_09-Greenshot

מה קיבלנו?
קיבלנו ארדואינו אונו שמתח הפעולה שלו הוא 3.3V ומהירות הבקר היא 8Mhz
ושני הפינים 5V וגם 3.3V מוציאים 3.3V, אז תגידו שלום ל5V בארדואינו הזה
ברגע שמחברים בUSB, בגלל הדיודה יש נפילת מתח אז המתח בפין 5V הוא 3.2V וכך גם בפין 3.3V
בחיבור DC המתח 3.3V בשני הפינים (5V וגם 3.3V)
ההבדל הוא שפין 5V שהוא 3.3V החדש יכול לספק על 800mA (בעצם מגבלת המייצב)
ופין 3.3V עדיין מחובר לממיר USB-RS232 אז הוא עדיין מספק רק עד 50mA.

עכשיו אני יכול לחבר אליו esp8266 ישירות בכיף

מסקנות והבהרות משימוש קצר:

  • בחיבור USB עדיין אין מספיק זרם בשביל esp8266 (צפוי) חיבור DC לעומת זאת עובד טוב
  • הנגד על הלד שבפין 13 גבוהה מידי ל3.3V, דיי מציק לי שהוא חלש,אז אפשר להחליף (לא קריטי)

שאלות, תשובות, טענות ועוד בתגובות