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

קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3: 7 שלבים (עם תמונות)
קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3: 7 שלבים (עם תמונות)

וִידֵאוֹ: קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3: 7 שלבים (עם תמונות)

וִידֵאוֹ: קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3: 7 שלבים (עם תמונות)
וִידֵאוֹ: Ежедневные новости Crypto Pirates — вторник, 19 января 2022 г. — последнее обновление новостей о криптовалютах 2024, נוֹבֶמבֶּר
Anonim
קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3
קל מאוד נמוך BLE ב Arduino חלק 3 - החלפת ננו V2 - Rev 3

עדכון: 7 באפריל 2019 - Rev 3 של lp_BLE_TempHumidity, מוסיף עלילות תאריך/שעה, באמצעות pfodApp V3.0.362+, וחנק אוטומטי בעת שליחת נתונים

עדכון: 24 במרץ 2019 - Rev 2 של lp_BLE_TempHumidity, מוסיף עוד אפשרויות עלילה ו- i2c_ClearBus, מוסיף תמיכה ב- GT832E_01

מבוא

הדרכה זו, החלפת ננו V2 Redbear, היא חלק 3 מתוך 3. זהו גרסה 2 של פרויקט זה. Revision 2 PCB כולל הרכבה לתא המטבע והחיישן, מפשט את הבנייה ומשפר את זרימת האוויר סביב החיישן תוך הגנה עליו מפני אור שמש ישיר. גרסה 1 כאן.

חלק 1 - בניית מכשירי BLE בעלי צריכת חשמל נמוכה מאוד באמצעות מכשירי Arduino קלים להתקנת Arduino לקוד התקני nRF52 בעלי צריכת חשמל נמוכה, מודול התכנות ומדידת זרם האספקה. הוא מכסה גם טיימרים ושווקים מתמחים בהספק נמוך וכניסות מנותקות ומשתמשים ב- pfodApp כדי להתחבר למכשיר nRF52 ולשלוט בו.

חלק 2 - צג לחות עם טמפרטורת הספק נמוכה במיוחד מכסה באמצעות מודול Redbear Nano V2 וחיישן טמפרטורה / לחות Si7021 לבניית סוללה / צג סולארי נמוך. הוא מכסה גם שינוי של ספריית Si7021 לכדי צריכת חשמל נמוכה, כוונון מכשיר BLE לצמצום הצריכה הנוכחית שלו ל <29uA ועיצוב תצוגת טמפרטורה/לחות מותאמת אישית לנייד שלך.

חלק 3 - החלפת Redbear Nano V2, זו, מכסה שימוש במודולים אחרים המבוססים על nRF52 במקום ה- Nano V2. הוא מכסה בחירת רכיבי אספקה, בנייה, הסרת ההגנה על תכנות שבבי nRF52, שימוש בסיכות NFC כ- GPIO רגיל והגדרת לוח nRF52 חדש בארדואינו.

מדריך זה הוא יישום מעשי של חלק 1 בניית מכשירי BLE בעלי צריכת חשמל נמוכה מאוד שהופך את Arduino לקל על ידי בניית צג טמפרטורה ולחות של BLE בעל צריכת חשמל נמוכה מאוד באמצעות לוח SKYLAB SBK369 כתחליף Nano V2. הדרכה זו מכסה כיצד ליצור הגדרת לוח חדשה וכיצד להסיר את הגנת התכנות nRF52 על מנת לאפשר אותה לתכנת מחדש. הדרכה זו משתמשת באותו סקיצה כמו חלק 2 עם אותם פרמטרים מכוונים BLE לצריכת חשמל נמוכה וניתן להפעיל אותה מסוללה או סוללה + סולארית או סולארית בלבד. כוונון פרמטרי BLE להספק נמוך היה מכוסה בחלק 2

Rev 3 של lp_BLE_TempHumidity משרטט את הנתונים כנגד תאריך ושעה תוך שימוש באל -מילי Arduino בלבד (). ראה תאריך ושעה של Arduino באמצעות millis () ו- pfodApp באמצעות הגרסה העדכנית ביותר של pfodApp (V3.0.362+).

Rev 4 של pfod_lp_nrf52.zip תומך גם במודול GT832E_01 ומדריך זה מכסה שימוש בסיכות NFC nRF52 כ GPIO סטנדרטיים.

המסך שנבנה כאן יפעל במשך שנים על מטבעות סלולר או 2 סוללות AAA, אפילו יותר עם סיוע סולארי. בנוסף להצגת הטמפרטורה והלחות הנוכחיים, הצג מאחסן את 36 השעות האחרונות של 10 דקות קריאות ואת 10 הימים האחרונים של קריאות לפי שעה. אלה יכולים להתרשם בנייד ה- Android שלך ולשמור את הערכים בקובץ יומן. אין צורך בתכנות אנדרואיד, pfodApp מטפל בכל זה. התצוגה והתרשים של אנדרואיד נשלטים לחלוטין על ידי סקיצת ה- Arduino שלך כך שתוכל להתאים אותה לפי הצורך.

חלק 2 השתמש בלוח Redbear Nano V2 לרכיב nRF52832 BLE. פרויקט זה מחליף את זה עם לוח SKYLAB SKB369 זול יותר. כמו בחלק 2, לוח Sparkfun Si7021 משמש לחיישן טמפרטורה / לחות. משתמשים בספריית צריכת חשמל נמוכה עם Si7021.

שלב 1: מדוע החלפת ננו V2?

i) ה- Nano V2 יצא מהייצור במשך מספר חודשים ונראה כי הוא אינו מתאים למערך Particle.io כך שלא ברור כמה זמן הוא יהיה זמין.

ii) ה- Nano V2 יקר יותר. עם זאת יש לו גם תכונות נוספות. ראה למטה.

iii) ל- Nano V2 יש רכיבים משני הצדדים מה שמקנה לו פרופיל גבוה יותר ומקשה על ההרכבה.

iv) ל- Nano V2 יש סיכות קלט/פלט מוגבלות ושימוש ב- D6 עד D10 דורש מוליכים מעופפים.

למרות שלוח Nano V2 יקר יותר מלוח SKYLAB SKB369, ~ US17 לעומת ~ US5, ל- Nano V2 אכן יש יותר תכונות. ה- Nano V2 כולל וסת ו -3.3 קבלים אספקה, רכיבים נוספים לשימוש באפשרות ממיר DC/DC nRF52, אנטנת שבבים ומחבר אנטנת SMT uFL.

חלופה נוספת היא מודול GT832E_01 המשמש את www.homesmartmesh.com. Rev 4 של pfod_lp_nrf52.zip תומך גם בתכנות המודול GT832E_01. ניתן להשיג את SKYLAB SKB369 וה- GT832E_01 מ-

ל- Redbear (Particle.io) יש גם מודול חשוף ללא ווסת 3V3, רכיבי DC/DC או רכיבי קריסטל 32Khz.

מתווה

לפרויקט זה יש 4 חלקים עצמאיים יחסית:-

בחירת רכיבים ובנייה הסרת דגל הגנת הקידוד nRF52 ותכנות הסקיצה יצירת הגדרת לוח ארדואינו nRF52 חדש הגדרת תצורה מחדש של סיכות NRF52 NFC כ- GPIO

שלב 2: בחירת רכיבים ובנייה

בחירת רכיבים

בנוסף לרכיבי nRF52832 ו- Si7021 שנבחרו בחלק 2, פרויקט זה מוסיף וסת 3.3V וקבלי אספקה.

רכיב ויסות המתח

הרגולטור המשמש כאן הוא MC87LC33-NRT. הוא יכול להתמודד עם כניסות של עד 12V ויש לו זרם שקט של <3.6uA, בדרך כלל 1.1uA. ה- Nano V2 בשימוש בווסת TLV704 בעל זרם שקט מעט גבוה יותר, בדרך כלל 3.4uA ויכול להתמודד עם מתחי כניסה גבוהים יותר, עד 24V. במקום זאת נבחר ה- MC87LC33-NRT מכיוון שגיליון הנתונים שלו מציין כיצד הוא מגיב כאשר מתח הכניסה יורד מתחת ל 3.3V היכן שכן גליון הנתונים של TLV704 אינו עושה זאת.

TLV704 מציין מתח כניסה של מינימום 2.5V ולא ברור מהגיליון הנתונים מה יקרה מתחת לזה. ה- nRF52832 יפחת ל -1.7 וולט וה- Si7023 יפחת ל -1.9 וולט. מצד שני, ה- MC87LC33-NRT מציין הפרשי מתח כניסה/יציאה עד 0V עבור זרמים נמוכים (איור 18 של גליון הנתונים). אז בהתחשב בבחירת הרכיבים, MC87LC33-NRT נבחר מכיוון שיש לו את הביצועים שצוינו.

קבלים אספקה

הרגולטור MC87LC33-NRT צריך כמה קבלים אספקה ליציבות ותגובה. קבל פלט> 0.1uF מומלץ בגליון הנתונים. SKYLAB SBK369 מציין גם קבלים של 10uF/0.1uF באספקה הקרובה ללוח. קבלים גדולים יותר מסייעים באספקת הקוצים הנוכחיים nRF52 TX. כאן שימשו 4 x 22uF 25V ו- 3 x 0.1uF 50V קבלים קרמיים. אחד 22uF וקבל 0.1uF הוצבו קרוב ל- SKYLAB SBK369, 0.1uF הוצב קרוב לפלט של MC87LC33-NRT כדי להבטיח יציבות ו- 22uF ו- 0.1uF הונחו על הכניסה ל- MC87LC33-NRT ו- עוד 2 קבלים 22uF שבהם מולחמים על פי סיכות Vin/GND כמאגר זרם נוסף. לשם השוואה ללוח NanoV2 יש 22uF / 0.1uF על הכניסה לווסת TLV704 ו- 0.1uF על הפלט שלו.

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

קבלים קרמיים X5R משמשים מכיוון שיש להם התנגדות סדרה נמוכה וזרם דליפה נמוך. ההתנגדות היא בדרך כלל 100, 000MΩ או 1000MΩ - µF שאי פעם פחות. אז עבור 22uF יש לנו 22000MΩ, כלומר דליפת 0.15nA ב 3.3V או 0.6nA עבור ארבעת הקבלים 22uF. זה זניח. לשם השוואה קבלים אלקטרוליטיים נמוכים של ESR, דליפה נמוכה של פנסוניק יש זרמי דליפה של <0.01CV. אז עבור קבל 22uF 16V הדליפה היא <10uA. הערה: זוהי הדליפה במתח המדורג, 16V במקרה זה. הדליפה נמוכה יותר במתח נמוך יותר, כלומר <2.2uA ב 3.3V.

רשימת חלקים

עלות משוערת ליחידה בדצמבר 2018, ~ 61 דולר ארה ב, לא כולל משלוח ומתכנת מתוך חלק 1

  • SKYLAB SKB369 ~ 5 $ למשל Aliexpress
  • לוח פריצה של Sparkfun Si7021 ~ 8 $
  • 2 x 53mm x 30mm 0.15W 5V תאים סולאריים למשל Overfly ~ 1.10 דולר ארה"ב
  • 1 x PCB SKYLAB_TempHumiditySensor_R2.zip ~ 25 $ עבור 5 הנחות www.pcbcart.com
  • 1 x MC78LC33 3.3V הרגולטור, למשל Digikey MC78LC33NTRGOSCT-ND ~ 1 דולר ארה"ב
  • 2 x 0.1uF 50V קרמיקה C1608X5R1H104K080A למשל Digikey 445-7456-1-ND ~ 0.3 $
  • 4 x 22uF 16V קרמיקה GRM21BR61C226ME44L למשל Digikey 490-10747-1-ND ~ 2 $
  • 1 x BAT54CW, למשל Digikey 497-12749-1-ND ~ 0.5 $
  • 1 x 470R 0.5W נגד 1% למשל Digikey 541-470TCT-ND ~ 0.25 דולר ארה"ב
  • 1 x 10V 1W זנר SMAZ10-13-F למשל Digikey SMAZ10-FDICT-ND ~ 0.5 $
  • ברגי ניילון 3 מ"מ על 12 מ"מ, למשל Jaycar HP0140 ~ 3 $
  • אגוזי ניילון 3 מ"מ על 12 מ"מ, למשל Jaycar HP0146 ~ 3 $
  • סרט הרכבה קבוע Scotch Cat 4010 למשל מאמזון ~ 6.6 $
  • מחזיק סוללות CR2032, למשל HU2032-LF ~ 1.5 דולר ארה"ב
  • סוללת CR2032 ~ 1 דולר ארה"ב
  • יריעת פרספקס, 3.5 מ"מ ו -8 מ"מ
  • pfodApp ~ 10 דולר ארה"ב
  • הדבק הלחמה למשל Jaycar NS-3046 ~ 13 $

שלב 3: בנייה

בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה
בְּנִיָה

הפרויקט בנוי על לוח PCB קטן. ה- PCB יוצר על ידי pcbcart.com מקבצי Gerber אלה, SKYLAB_TempHumiditySensor_R2.zip ה- PCB מחקה את סיכת ה- Nano V2 החוצה והוא מספיק למטרה כללית לשימוש לפרויקטים אחרים של BLE.

זוהי סכמטי (גירסת pdf)

תחילה הלחם את רכיבי ה- SMD ולאחר מכן הרכיב את לוח SKYLAB SKB369

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

גרסה זו מוסיפה קבלים קרמיים נוספים של 22uF 16V. קבלים נוספים אלה מפחיתים את הקוצים הנוכחיים הנמשכים מהסוללה וגם מפחיתים את ירידות המתח כאשר הם מופעלים מהתאים הסולאריים. כל עוד המתח מהתאים הסולאריים נשאר מעל מתח הסוללה אז לא נמשך זרם מהסוללה.

לאחר התקנת רכיבי ה- SMD, ניתן להלחם בלוח SKYLAB SKB369. ישנם שני חורי נקודת מבחן בצד אחד של לשוניות SKB369. השתמש בשני סיכות לבסיס קרטון כדי למקם את לוח SKB369 ויישור את הסיכות בזהירות. (עיין בתמונה לדוגמא למעלה באמצעות לוח ה- Revision 1) לאחר מכן הלחם סיכה אחת בצד הנגדי כדי להחזיק את הלוח במקום לפני הלחמת הסיכות האחרות.

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

נרתיק הרכבה

מארז ההרכבה עשוי משני חתיכות פרספקס, 110 מ"מ על 35 מ"מ, עובי 3 מ"מ. חתיכת 3.5 מ"מ מתחת לתאים הסולאריים נלחצה בכדי לקחת את ברגי הניילון בגודל 3 מ"מ. בנייה מתוקנת זו מפשטת את Rev 1 ומשפרת את זרימת האוויר סביב החיישן. החורים הנוספים בכל קצה מיועדים להרכבה, באמצעות קשרי כבלים למשל.

שלב 4: הסרת דגל הגנת הקידוד NRF52

הסרת דגל הגנת הקידוד NRF52
הסרת דגל הגנת הקידוד NRF52
הסרת דגל הגנת הקידוד NRF52
הסרת דגל הגנת הקידוד NRF52
הסרת דגל הגנת הקידוד NRF52
הסרת דגל הגנת הקידוד NRF52

חבר את לוח הטמפרטורה/לחות למתכנת המתואר בחלק 1 כפי שמוצג למעלה.

כשהתאים הסולאריים והסוללות מנותקים, Vin ו- Gnd מחוברים ל- Vdd ו- Gnd של המתכנת (ההובלות הצהובות והירוקות) ו- SWCLK ו- SWDIO מתחברים ל- Clk ו- SIO של לוח הכותרת של המתכנת (המובילים הלבן והאפור)

מסיר את הגנת התוכנית nRF52

מתוך Nordic Semi - דף באגים ועקבות DAP - יציאת גישה לניפוי באגים. באגים חיצוניים יכולים לגשת למכשיר באמצעות ה- DAP. ה- DAP מיישם יציאת סטנדרטית ARM® CoreSight ™ Serial Wire Debug (SW-DP). SW-DP מיישם את פרוטוקול Debug Serial Wire (SWD) המהווה ממשק סידורי דו-פיני, SWDCLK ו- SWDIO

חשוב: לקו SWDIO יש נגד משיכה פנימי. לקו SWDCLK יש נגד משיכה פנימי.

CTRL -AP - יציאת גישה לבקרה. יציאת Access Control (CTRL-AP) היא יציאת גישה מותאמת אישית המאפשרת שליטה על המכשיר גם אם יציאות הגישה האחרות ב- DAP מושבתות על ידי הגנת יציאת הגישה. הגנת יציאת גישה חוסמת את מאתר הגישה לקריאה ולכתיבה לכל רגיסי המעבד וכתובות ממופות הזיכרון. השבת את הגנת יציאת הגישה. ניתן להשבית את הגנת יציאת הגישה רק על ידי הוצאת פקודה ERASEALL באמצעות CTRL-AP. פקודה זו תמחק את Flash, UICR ו- RAM.

בחר CMSIS-DAP כמתכנת של Debugger Particle ובחר nRF5 Flash SoftDevice

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

Open On Chip Debugger 0.10.0-dev-00254-g696fc0a (2016-04-10-10: 13) מורשה תחת GNU GPL v2 לדוחות באגים, קרא https://openocd.org/doc/doxygen/bugs.html debug_level: 2 מידע: רק אפשרות הובלה אחת; בחר אוטומטית מהירות מתאם 'swd': 10000 kHz cortex_m reset_config sysresetreq מידע: CMSIS-DAP: SWD מידע נתמך: CMSIS-DAP: ממשק מאתחל (SWD) מידע: CMSIS-DAP: גרסת FW = 1.10 מידע: SWCLK/TCK = 1 SWDIO/ TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 מידע: CMSIS-DAP: מידע על ממשק מוכן: הפחת בקשת מהירות: 10000kHz ל- 5000kHz מידע מקסימלי: מהירות שעון 10000 kHz מידע: SWD IDCODE 0x2ba01477 שגיאה: לא הצלחתי למצוא MEM -AP לשליטה בשגיאת הליבה: המטרה עדיין לא נבדקה שגיאה בעת מהבהב SoftDevice.

במקרה זה עליך להגדיר את רשימת הפקודות ERASEALL ב- nRF52 כדי לנקות את הזיכרון ולהפוך את המכשיר לתכנות שוב. הגירסה של openOCD המסופקת עם sandeepmistry nRF52 אינה כוללת את הפקודה apreg הדרושה בכדי לכתוב לרשם הפקודות ERASEALL כך שעליך להתקין גרסה מאוחרת יותר.

התקן את גרסת OpenOCD OpenOCD-20181130 ומעלה. הגרסה המורכבת מראש של Windows זמינה מ https://gnutoolchains.com/arm-eabi/openocd/ הקוד העדכני ביותר זמין מ-

פתח שורת פקודה ושנה את ה- dir לספריית ההתקנה של OpenOCD והזן את הפקודה

bin / openocd.exe -d2 -f ממשק/cmsis -dap.cfg -f target/nrf52.cfg

התגובה היא

Open On-Chip Debugger 0.10.0 (2018-11-30) [https://github.com/sysprogs/openocd] מורשה תחת GNU GPL v2 לדוחות באגים, קרא https://openocd.org/doc/doxygen/ bugs.html debug_level: 2 מידע: בחירה אוטומטית של תחבורה זמינה ראשונה הזמינה "swd". כדי לעקוף השתמש ב'הובלה בחר '. מהירות מתאם: 1000 kHz cortex_m reset_config sysresetreq מידע: האזנה ביציאה 6666 לחיבורי tcl מידע: האזנה ביציאה 4444 לחיבורי telnet מידע: CMSIS-DAP: SWD מידע נתמך: CMSIS-DAP: גרסת FW = 1.10 מידע: CMSIS-DAP: ממשק מאתחל (SWD) מידע: SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 מידע: CMSIS-DAP: מידע מוכן לממשק: מהירות שעון 1000 קילוהרץ מידע: SWD DPIDR 0x2ba01477 שגיאה: לא הצלחתי למצוא MEM-AP לשליטה במידע הליבה: האזנה ביציאה 3333 לחיבורי gdb

לאחר מכן פתח חלון מסוף למשל TeraTerm (Windows) או CoolTerm (Mac) והתחבר ליציאת 127.0.0.1 4444

חלון הטלנט יציג> ושורת הפקודה תציג מידע: קבלת חיבור 'טלנט' ב- tcp/4444

בחלון telnet (כלומר TeraTerm) סוגrf52.dap apreg 1 0x04 זה מחזיר 0x00000000 מראה שהשבב מוגן. לאחר מכן סוגrf52.dap apreg 1 0x04 0x01 ו- thennrf52.dap apreg 1 0x04 זה מחזיר 0x00000001 מראה שהשבב מוגדר כעת ל- ERASEALL בהפעלה מחדש הבאה.

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

כעת נסה שוב להבהב את המכשיר הרך.

כעת תוכל לתכנת את מודול nRF52 מבית Arduino.

שלב 5: תכנות SKYLAB SKB369

תכנות SKYLAB SKB369
תכנות SKYLAB SKB369
תכנות SKYLAB SKB369
תכנות SKYLAB SKB369
תכנות SKYLAB SKB369
תכנות SKYLAB SKB369

סגור את Arduino והתקן מחדש את הגרסה העדכנית ביותר של תמיכת pfod_lp_nrf52 על ידי ביצוע ההנחיות התקן את הוראות התמיכה בחומרה pfod_lp_nrf52. לוח pfod_lp_nrf52 העדכני ביותר כולל לוח החלפה SKYLAB SKB369 Nano2. בחר בזה כלוח ולאחר מכן תוכל לתכנת אותו עם גרסה 3 של lp_BLE_TempHumidity, lp_BLE_TempHumidity_R3.zip, כמתואר בחלק 2.

אם התכנות נכשל. סגור את כל חלונות ה- Arduino, הסר את כבלי ה- USB, הפעל מחדש את Arduino וחבר שוב את כבל ה- USB של המתכנת וחבר את אספקת ה- USB של מודול ה- nRF52 שוב ונסה שוב.

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

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

שלב 6: יצירת הגדרת לוח חדשה של Arduino NRF52

יצירת הגדרת לוח חדשה של Arduino NRF52
יצירת הגדרת לוח חדשה של Arduino NRF52
יצירת הגדרת לוח חדשה של Arduino NRF52
יצירת הגדרת לוח חדשה של Arduino NRF52
יצירת הגדרת לוח חדשה של Arduino NRF52
יצירת הגדרת לוח חדשה של Arduino NRF52
יצירת הגדרת לוח חדשה של Arduino NRF52
יצירת הגדרת לוח חדשה של Arduino NRF52

כדי לתמוך בלוח nRF52 חדש עליך a) להוסיף ספרייה חדשה תחת ספריית וריאנטים עם קבצי הלוח וב) לערוך את קובץ boards.txt כדי להוסיף את הלוח החדש ל- Arduino.

הוספת גרסת לוח nRF52 חדשה

כפי שמתואר בחלק 1, התקנת תמיכת החומרה pfod_lp_nrf52, מצא את ספריית המשנה של החומרה של חבילת sandeepmistry שעדכנת בעזרת התמיכה pfod_lp_nrf52. פתח את ספריית המשנה / hardware / nRF5 / 0.6.0 / variants וצור ספרייה חדשה ללוח החדש שלך, למשל החלפת SKSYLAB_SKB369_Nano2 בספריית / hardware / nRF5 / 0.6.0 / variants / SKYLAB_SKB369_Nano2 החלפת שלושה קבצים variant.h, variant.cpp ו- pins_arduino.h באפשרותך להעתיק אותם מאחת מספריות וריאציות הלוח האחרות. עבור החלפת SKYLAB_SKB369_Nano2, העתקתי בתחילה את הקבצים מהגרסה RedBear_BLENano2.

קובץ pins_arduino.h

אין צורך לשנות את הקובץ pins_arduino.h. הוא רק כולל את קובץ variant.h

קובץ variant.h

ערוך את קובץ variant.h כדי להגדיר את המספר הכולל של הסיכות שיהיו ללוח שלך, PINS_COUNT

הערה: בחבילת sandeepmistry מתעלמים מההגדרות NUM_DIGITAL_PINS, NUM_ANALOG_INPUTS ו- NUM_ANALOG_OUTPUTS

אם הלוח שלך מספק פחות או יותר סיכות אנלוגיות, עדכן את / * Analog Pins * / קטע של הקובץ variants.h.

הערה: ללוחות NanoV2 ו- SKYLAB סיכות האנלוגי ממופות לפינים הדיגיטליים A0 == D0 וכו '

הדבר אינו חיוני. אתה יכול להקצות את הכניסות האנלוגיות לכל סיכת Arduino נוחה. ראה דוגמא קובצי blue/variant.h ו- blue/variant.cpp.

לשבב nRF52832 יש 8 סיכות כניסה אנלוגיות, אך לוח ההחלפה SKYLAB_SKB369_Nano2 הופך 6 בלבד לזמינות להתאמת ה- Nano2.

כל מספרי הסיכה, למעט RESET_PIN, בקובץ variant.h הם מספרי סיכה של Arduino. כלומר #הגדרת PIN_A0 (0) מרמז ש- D0 במערכון הארדואינו הוא אותו סיכה כמו A0. RESET_PIN הוא היוצא מן הכלל. מספר זה הוא מספר סיכת השבבים nRF52823 ו- 21 הוא הבחירה התקפה היחידה. אולם התמיכה pfod_lp_nrf52 אינה מאפשרת את סיכת האיפוס ב- nRF52832

קובץ variant.cpp

יש רק ערך אחד בקובץ variant.cpp, מערך g_ADigitalPinMap הממפה מספרי סיכות של Arduino לסיכות P0.. שבב nRF52832.

הערה: בלוחות NanoV2 ו- SKYLAB, הסיכות האנלוגיות של Arduino A0, A1… זהות לסיכות הדיגיטליות של Arduino D0, D1… כך שהערכים הראשונים ב- g_ADigitalPinMap חייבים למפות למספרי סיכות AINx בשבב nRF52832

עבור הכניסות האנלוגיות שהלוח שלך זמין, הערכים האלה ב- g_ADigitalPinMap חייבים למפות מספרי סיכות nRF52832 AIN0, AIN1, AIN2 וכו '. כלומר AIN0 הוא סיכת שבב P0.02, AIN1 הוא סיכת שבב P0.03 וכו 'עיין בפריסת הסיכה nRF52832 למעלה.

השתמש ב- (uint32_t) -1 למיפויים לא חוקיים. לדוגמה ללוח ההחלפה SKYLAB_SKB369_Nano2 אין LED מובנה, D13, כך שהמיקום שלו ממופה ל- (uint32_t) -1

ב- pfod_lp_nrf52.zip הגרסאות Redbear NanoV2, SKYLAB SKB369 ו- GT832E_01 מכילות תמונות המציגות את המיפויים שהוגדרו על ידי variant.cpp. (ראו את התמונות למעלה)

במקרה של SKYLAB SKB369, יש הרבה סיכות לבחירה. רק ממופים מספיק כדי להתאים ל- NanoV2. במקרה של GT832E_01, יש למפות את כל הסיכות הזמינות. גם אז יש רק שלוש (3) כניסות אנלוגיות זמינות במקום שש (6) ב- NanoV2. בנוסף לכך, שני סיכות ה- NFC, P0.09 ו- P0.10, צריכות להיות מוגדרות מחדש כ- GPIO. ראה הגדרה מחדש של סיכות NRF52 NFC כמפורט של GPIO להלן.

עדכון קובץ boards.txt

להלן ערך ההחלפה SKYLAB_SKB369_Nano2 בקובץ boards.txt.

## SKYLAB_SKB369 החלפת Nano2SKYLAB_SKB369_NANO2_REPLACEMENT.name =*החלפת SKYLAB SKB369 Nano2

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.upload.protocol = cmsis-dap SKYLAB_SKB369_NANO2_REPLACEMENT.upload.target = nrf52 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.maximum_size = 9248 SKYLAB_SKB369_NANO2_REPLACEMENT.upload.use_1200bps_touch = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.wait_for_upload_port = false SKYLAB_SKB369_NANO2_REPLACEMENT.upload.native_usb = false

SKYLAB_SKB369_NANO2_REPLACEMENT.bootloader.tool = sandeepmistry: openocd

SKYLAB_SKB369_NANO2_REPLACEMENT.build.mcu = קליפת המוח

SKYLAB_SKB369_NANO2_REPLACEMENT.build.f_cpu = 16,000,000 SKYLAB_SKB369_NANO2_REPLACEMENT.build.board = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.core = nRF5 SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant = SKYLAB_SKB369_Nano2replacement SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant_system_lib = SKYLAB_SKB369_NANO2_REPLACEMENT.build.extra_flags = -DNRF52 SKYLAB_SKB369_NANO2_REPLACEMENT.build.float_flags = -mfloat -abi = hard -mfpu = fpv4-sp-d16 SKYLAB_SKB369_NANO2_REPLACEMENT.build.ldscript = nrf52_xxaa.ld

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags = -DUSE_LFXO

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132 = S132

SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdevice = s132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.softdeviceversion = 2.0.1 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.upload.maximum_size = 409,600 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.extra_flags = - DNRF52 -DS132 -DNRF51_S132 SKYLAB_SKB369_NANO2_REPLACEMENT.menu.softdevice.s132.build.ldscript = armgcc_s132_nrf52832_xxaa.ld

הגדרות board.txt

הערות - שורות המתחילות ב- # הן הערות.

קידומת - כל לוח צריך קידומת ייחודית לזיהוי הערכים שלו. כאן הקידומת היא SKYLAB_SKB369_NANO2_REPLACEMENT.

שם - שורת SKYLAB_SKB369_NANO2_REPLACEMENT.name מציינת את שם הלוח הזה שיוצג בתפריט הלוח של Arduino.

כלי העלאה - בלוק SKYLAB_SKB369_NANO2_REPLACEMENT.upload מציין באיזה כלי להשתמש להעלאה. אם אתה משתמש ב- Debugger Particle, השתמש בפרוטוקול = cmsis-dap כפי שמוצג למעלה.

מטען אתחול - שורה זו זהה לכל הלוחות ב- boards.txt זה

Build - צריך לעדכן רק שתי שורות בבלוק זה. השורה SKYLAB_SKB369_NANO2_REPLACEMENT.build.variant מציינת את שם הלוח הזה בספריית המשנה של הגרסה. לוח SKYLAB_SKB369_NANO2_REPLACEMENT.build. הוא הערך המצורף ל- ARDUINO_ ולאחר מכן מוגדר בעת עריכת הקוד. לְמָשָׁל -DARDUINO_SKYLAB_SKB369_Nano2 החלפה זה מאפשר לך להפעיל/להשבית חלקים מהקוד ללוחות ספציפיים.

שעון תדירות נמוכה - שורה זו, SKYLAB_SKB369_NANO2_REPLACEMENT.menu.lfclk.lfrc.build.lfclk_flags, מציינת את מקור השעון בתדירות נמוכה, המשמשת את lp_timer. ישנן שלוש אפשרויות, -DUSE_LFXO, -DUSE_LFRC ו- -DUSE_LFSYNT. הבחירה הטובה ביותר היא -DUSE_LFXO, אם ללוח יש קריסטל חיצוני של 32Khz. אם לא אז השתמש -DUSE_LFRC, שמשתמש במתנד RC פנימי ומושך מעט יותר זרם, ~ 10uA יותר, ומדויק הרבה פחות פעמים. אל תשתמש ב- -DUSE_LFSYNT מכיוון שזה שומר על השבב פועל כל הזמן וכתוצאה מכך התיקו הנוכחי של mA.

Softdevice - pfod_lp_nrf52 תומך רק בשבבי nRF52 וב- softdevice s132 כך שאין צורך בשינויים עבור בלוק זה, מלבד הקידומת.

הגדרה מחדש של סיכות NRF52 NFC כ- GPIO

היו ברירת מחדל בפיני nRF52, P0.09 ו- P0.10 מוגדרים לשימוש כ- NFC ומצפים להיות מחוברים לאנטנת NFC. אם אתה צריך להשתמש בהם כסיכות קלט/פלט למטרות כלליות (GPIO), עליך להוסיף הגדרה, -DCONFIG_NFCT_PINS_AS_GPIOS, לתפריט הלוח… menu.softdevice.s132.build.extra_flags לקובץ boards.txt.

לדוגמה pfod_lp_nrf52.zip, מגדיר מחדש את סיכות GT832E_01 לשימוש כ- I/O. במקטע GT832E_01 ללוח זה, בקובץ boards.txt, נוספה ההגדרה הבאה

GT832E_01.menu.softdevice.s132.build.extra_flags = -DNRF52 -DS132 -DNRF51_S132 -DCONFIG_NFCT_PINS_AS_GPIOS

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

שלב 7: סיכום

הדרכה זו הציגה תחליף ל- Redbear NanoV2 באמצעות מודול SKYLAB SKB369. צג לחות טמפרטורה המופעל באמצעות סוללה/סולארית שימש כדוגמה פרויקט BLE בעל צריכת חשמל נמוכה מאוד בארדואינו עבור מודול SKYLAB. זרמי אספקה של ~ 29uA כאשר הם מושגים על ידי כוונון פרמטרי החיבור. זה גרם לחיי סוללה של מטבעות CR2032 ~ 10 חודשים. יותר עבור תאי מטבע וסוללות בעלי קיבולת גבוהה יותר. הוספת שני תאים סולאריים זולים האריכה בקלות את חיי הסוללה ב -50% או יותר. מספיק חדר אור בהיר או מנורת שולחן בכדי להפעיל את הצג מהתאים הסולאריים.

הדרכה זו עוסקת גם בהסרת הגנת שבבים מ- nRF52 מתוכנת מראש וכיצד להגדיר הגדרת לוח חדשה שתתאים למעגל הלוח/מעגל שלכם.

אין צורך בתכנות אנדרואיד. pfodApp מטפל בכל זה.

מוּמלָץ: