Table of Contents
הבנת הפרויקט
בניית יומן נתונים עם מיקרובקר PIC וכרטיס SD היא דרך מצוינת ללכוד ולאחסן מדידות בעולם האמיתי על פני תקופות ארוכות. סוג זה של מערכת מוצא להשתמש ניטור סביבתי (טמפרטורה, לחות, לחץ ברומטרי), מעקב קרקע חקלאית, מעקב אחר הקרקע החקלאי, ציוד ריצה זמן, ואפילו ניסויים מדעיים חינוכיים.שילוב של מיקרו-בקרים זולים ו- SD זמין מספק פלטפורמה חזקה שיכולה למנוע איסוף נתונים, או שימוש בקובץ מחשבי, ללא שימוש נרחב.
בחירת המיקרובקר הימני
מיקרובקרים זמינים בטווח רחב של משפחות עם זיכרון משתנה, ספירת סיכות, ומיומנויות היקפיות. עבור קידוד נתונים של כרטיס SD, התכונות החיוניות כוללות תמיכה בחומרה, זיכרון תוכנית מספיק (flash) עבור הקוד, ומספיק RAM כדי buIC Card כדי לספק נתונים buicer לפני כתיבת הכרטיס. pICF8A נשאר בחירה פופולרית כי הוא מציע 8K של מילים, 7K של זיכרון RAM, 7.
רשימת ה-Cic Specifications Checklist
- (ב) ,0SPIמודולFLT:1: Hardware SPI מקטין את עומס המעבד וסימולציות קוד.
- (FLT:0) Flash MemoryofLT:1; לפחות 4 KB עבור גרגור בסיסי; 16-32 KB מומלץ אם הוספת מערכת קובץ FAT ו- RTC.
- (ב) ⁇ :0 ⁇ ⁇ : 256 מילימטרים מינימליים לשחיקה; רצוי 1-2 KB כדי להימנע מאובדן נתונים במהלך עיכובים בכתב.
- (FLT:0) צמצום המתחים (FLT:1): 3.3V או 5V סובלנות. כרטיסי SD דורשים 3.3V אות, כך להבטיח תאימות למתח I / O להשתמש במשמרות ברמת רמת.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
הבנת ה-SD Card Interface
(ב) כרטיסי SD מתקשרים באמצעות מצב SPI, אשר נתמך על ידי מיקרו-בקרים PICMD (CMD) אשר דורש ארבעה אותות: FLT:0SCKFLT 1: 10 (שעון אווירי), FLT:2MOSIFLT (החלים) של CAT-FLT2, לאחר LT4, 0001 מ"מ) LT5 (הספקים)
טיפים להגדרה
הגדר את מהירות השעון SPI למקסימום של 400 kHz במהלך שלב ההקצאה (כפי שנדרש על ידי ספקטרום כרטיס SD) לאחר הכרטיס מוכן, אתה יכול להעלות את מהירות השעון ל 8-10 MHz עבור העברות נתונים מהירות יותר. השתמש במודול SPI של PIC במצב 0 (CPOL=0, CPHA=0) או 3 (CPOL=1, CPHA=בדרך כלל 0, כדי להוסיף כרטיסים פנימיים.
עיצוב ושיקולי כוח
כרטיס SD פועל ב- 3.3V, בעוד מיקרו-בקרים PIC (כמו 16F877A) לרוץ ב- 5V ישירות המחברת 5V לוגיקה ל-3.3V SD יכול לפגוע בכרטיס. השתמש במרגולציה מתח (למשל, LM17-3.3) כדי לספק את מודול כרטיס ה- SD, ולמקם 10 מיקרו-Flytic capacitor בתוספת 100Ftor רגיל ל-C2iOS (במהירויות CR) ל- C2 (בטווח של ⁇ ) ל- C2 (בטווח קצר יותר) ל- C2 (בטווח של C2) ל- C2, לדוגמה, לדוגמה, לדוגמה, לדוגמה, לדוגמה, לדוגמה, ⁇ ) כדי לספק את ה-R) ל-R2, כלומר, קיבולת SD (R) ל-R) כדי ל-R.
ניהול כוח לטיהור מרחוק
אם הגרף יפעל על סוללות, השתמש בגרסת PIC עם מצבי שינה עמוקים.ה- PIC16F1829, למשל, יש זרם שינה של 60 nA. Wake זה באמצעות שעון כלב או הפרעה חיצונית מה אזעקה RTC. במהלך השקיה פעילה, לשמור על כרטיס SD מופעל (שימוש במזהFET כדי לחתוך את היצע שלה) כאשר לא להעיר רצף טיפוסי: PIC יכול להרים את הכוח כדי להוריד את ה-S כדי לרשום את ה-S לאחור כדי לרשום את ה-S.
הוספת שעון בזמן אמת (RTC) ל- Accurate Timestamps
יומן נתונים ללא מידע בזמן יש ערך מוגבל. integrating שבב RTC כגון DS3231 או DS1307 מספק זמניים מדויקים.אלה מתקשרים באמצעות I2C, אשר רוב התמיכה PICs, או שאתה יכול קצת לתווך את הערך RT-Hbit רק כדי למשוך את הנתונים של RT-H3, אך ורק לאחר זמן ה-DLC-R.S.D.S.D.D.S.D.D.S.D.D.D.S.S.S.S.D.D.D.D.S.S.D.D.D.S.S.D.D.D.D.D.D.D.D.S.D.D.S.S.S.D.S.D.D.S.S.S.S.D.D.D.S.S.S.S.D.D.S.D.D.S.S.D.S.S.S.S.S.D.D.S.S.S.D.S.S.S.S.S.S.S.3 פועל רק פועל רק כדי לשמור על לוחמתאם אתה יכול רק כדי
אדריכלות: מצגת
הקושחה של יומני הנתונים עוקב אחר גישה מובנית אך מודולרית.Break the Code into these Functionblockblock:
- (FLT:0) InitializationFLT:1: Conform oscillator, GPIO, SPI, I2C (עבור RTC), ADC (אם משתמשים בחיישנים אנלוגיים), וזמני זמן.
- (FLT:0SD Card DriversFLT:1): יישום נמוך ברמה נמוכה SPI קורא / טקס, פקודה לשלוח, ו CRC לבדוק (רוב הקלפים המודרניים מקבלים CRC מוגבלויות עבור פשטות).
- (ב) ,0) מערכת שכבת ריצוף 1:1: שילוב פטיט FatFs (או ספרייה קטנה דומה) כדי ליצור, לפתוח, לכתוב ולסגור קבצי יומן.
- (ב) עיין ב[[1924]]: [[1924]]]], [[1924]]]]]], [[1924]]]]]]
- (ב) ,0) עיבוד מנועים: נתוני חיישן Buffer ו-Timestamps, ולאחר מכן ל- SD Card ב 512-byte בלוקים.
- (FLT:0)Error TreatmentFLT:1: בדוק עבור הסרת כרטיס SD / Reinsert, מתח נמוך או חיישן לקרוא כישלונות.
אסטרטגיה ניהולית Buffer Management
כתיבת שיא אחד בזמן לכרטיס SD הוא לא יעיל ויכול לגרום ללבוש על הכרטיס. במקום זאת, להקצות חיץ מעגלי ב- RAM גדול מספיק כדי להחזיק מספר רשומות יומן.לדוגמה, אם כל כניסה לרישום הוא 20 אינץ' (זמןאמפ + 3 ערכים צפים), 512-byte buffer מחזיק 25 ערכים חדשים. כאשר ה-buffer הוא מלא, כל בלוק לכרטיס אחד הוא שיפור קובץ זה.
מבנה קוד (Pseudocode)
ה- pseudocode הבא מתאר את הלולאה העיקרית.היישום אקטואלי יהיה שונה בהתבסס על הספריות וה-PIC שלך.
1. Initialize oscillator to 20 MHz
2. SPI_init(SPI_MASTER, MODE_0, 400kHz)
3. RTC_init(I2C_100kHz)
4. while (SD_init() != OK)
{
blink_error_led();
delay(1000);
}
5. f_mount(&fs, "", 0); // mount file system
6. f_open(&fil, "LOG.csv", FA_OPEN_APPEND | FA_WRITE);
7. if (file_size == 0) write_header();
8. while(1)
{
wait_timer_1s();
read_RTC(&ts);
read_sensors(&temp, &humid);
format_string(datalog, "%s,%.1f,%.1f\r\n", ts, temp, humid);
if (buffer_full)
{
f_write(&fil, log_buffer, BYTES_WRITTEN, &bw);
if (bw != BYTES_WRITTEN) error_handler();
}
}
9. f_close(&fil);
10. f_mount(NULL, "", 0);
מערכת קבצים ו- Log Format
כתוב נתונים בפורמט CSV כדי להקל לנתח בתוכנות גליון מבוזר או Python. Include שורה ראשית בחלק העליון של הקובץ לאחר פתיחה ראשונה.דוגמה: 2 שם הקובץ ניתן לתקן (למשל, "LOG00.CSV") או נגזר מנתוני RTC כדי למנוע שימוש יתר.אם באמצעות פיקסלים, הערה כי זה לא תומך שמות ארוכים, השתמש בקובץ , כלומר, 1g.
התמודדות עם SD Card Wear and Data Integrity
כרטיסי SD יש מחזורי כתיבה מוגבלים, אבל עבור יומן נתונים כתיבה פעם לדקה, כרטיס טיפוסי של כיתה 10 טיפות יימשך שנים. כדי לשפר את האמינות, לשקול באמצעות כרטיס SD ייעודי ברמה תעשייתית (למשל, שוויצריביט או Apacer) עם שגיאות.תמיד לסגור את הקובץ ולא חשוב מדי מערכת הקובץ לפני הפעלת כוח מיקרובקר מאבד באופן בלתי צפוי, אתה עלול לאבד את האחרון but (בדרך כלל כדי להפחית את הלחץ נמוך יותר מ , עד 10 אינץ ' , עד טמפרטורות נמוכות מדי) עד כדי לחץ נמוך יותר מדי.
חיישנים בין דוגמאות
טמפרטורה עם DS18B20
חיישן דיגיטלי DS18B20 משתמש בפרוטוקול 1-Wire. Connect את הנתונים שלו ל- PIC דיגיטלי I/O (למשל, RD0) עם משיכה של 4.7 k ⁇ עד 3.3V. אי-ההההההההפעלת רצף התזמון של 1-Wire: איפוס, נוכחות, זיהוי, מדלג, להתחיל להמרה, לקרוא את ה-Sing.com הוא עד 750 נתונים אחרים יכולים להתחיל להשתמש ברזולוציה של 12 סיביות (או-x) כדי אפשרות להשתמש ברזולוציה של כוח חיצוני (או-H) או ברזולוציה של רזולוציה של רזולוציה של רזולוציה של רזולוציה של רזולוציה של רזולוציה של 2.
הומוריסטי עם DHT22
DHT22 (AM2302) מספק הן טמפרטורה ולחות עם ממשק סידורי חד-חוטי. דומה ל 1-Wire אבל עם תזמון שונה. המיקרובקר שולח אות התחלה (נמוך לפחות 18 מ"ס), אז החיישן מגיב עם חבילת נתונים 40 סיביות.ליישם מכונה ממשלתית כדי לטעום את ה bits; מהיר לרוץ ב 16 מ"ר או מעל זה מומלץ כי הזמנים הם די קצר עבור דיוק.
אנליסט Light Sensor
למדידת אור מסובך, השתמש photoresistor (LDR) במחלקת מתח עם 10 k ⁇ התנגדות. Connect the midpoint ל- ADC קלט.10bit ADC (1024 רמות) נותן גרניטריות סבירה. Calibrate על ידי מדידה של המתח תחת רמות ה-lux הידועות באמצעות מד אור סטנדרטי.
בדיקות ופתרון בעיות
לפני פריסת הלוגר, לבדוק כל תת-מערכת באופן עצמאי. לכתוב תוכנית מבחן פשוטה כי כדי לאמת LED כדי לאמת oscillator ו דיוק של Timer.Next, לבדוק את SPI תקשורת עם כרטיס SD על ידי ראשונית הכרטיס ולקרוא את ה- CID לרשום. השתמש ב- CID מהירות קובץ או ניתוח לוגיקה כדי לבדוק אותות SPI - בעיות נפוצות כוללות כיבים לא נכונים, למשוך, או למשוך קשרים רציפים, או לשחרר את הקובץ.
מלכודות נפוצות
- (FLT:0SD Card Not FirstizingFLT:1: ודא VCC הוא 3.3V, לא 5V. חלק מהמודולים באים עם 3.3V הרגולטור; לאמת את התפוקה. נסה כרטיס שונה (סן דיסק או קינגסטון לעתים קרובות לעבוד הכי טוב).
- (FLT:0)File כותב כשל FLT:1: האם יצרת חלוקה (FAT32) על הכרטיס? השתמש במחשב כדי לעצב את הכרטיס כמו FAT32 (לא ExFAT או NTFS) Petit FatFs דורש MBR עם מחיצת FAT.
- (FLT:0) שחיתות של נתונים LT:1: חוטים ארוכים יכולים לגרום השתקפות אותות. שמור קווי SPI מתחת 10 ס"מ.הוספת 47 pF capaciacitors כדי לנחות על כל קו ליד שקע הכרטיס.
- (FLT:0) סחף הזמןr סחף:1: דיוק קריסטל משנה גביש חיצוני 20 MHz במקום אוסטרטור פנימי של מרווחי 1 שניות מדויקים.
« שיפור הנתונים לליטר
לאחר שהלוגר הבסיסי עובד, יש לשקול תוספות אלה:
- (FLT:0) העלאת Wireless מעלה 1 בינואר: הוסף מודול ESP8266 או HC-05 Bluetooth כדי להעביר נתונים לסמארטפון או לשרת בזמן אמת.ה-PIC יכול להוריד נתונים ישנים באמצעות UART תוך המשך להזין נתונים חדשים.
- (FLT:0User InterfaceigFLT:1): השתמש ב- 16×2 Character LCD (I2C או מקבילה) וכמה כפתורים כדי להגדיר מרווחי כניסה, להציג קריאה אחרונה, או לעורר את שמירת ידנית.
- (ב) ,0) , 000 קובץ יומן (Multiple log) 1FLT: רוטט קבצים מדי יום או כל 1000 רשומות להגביל את גודל הקובץ ולהפוך את התוספת לקלה יותר.
- (FLT:0Data דחיסה דחיסה של נתונים 1) : עבור קידוד גבוה (למשל, 100 הרץ), לאחסן נתונים בפורמט בינארי עם דגימה ארוזה (למשל, 4byte מהתחל) ל- CSV ללא מקוון באמצעות תסריט PC.
- (FLT:0)Over-the-air עדכונים מעדכונים 1: משתמשים מתקדמים יכולים ליישם מגבת דרך סדרתית כדי לעדכן את קושחה ללא הסרת ה- PIC.
יישומים אמיתיים
(הופנה מהדף PIC/SD) הוא הבסיס של מערכות מעשיות רבות.FLT:0Industrial MonitoringFLT:1 לעתים קרובות דורש רטט, טמפרטורה, ונוכח תחזוקה חיזויית: InFLT:2environmental ScienceFLT 3:, מדבקות ניידות ניידים מופרסים באזורים מרוחקים כדי לעקוב אחר שינויים מיקרו-קליביים.
מסקנה
בניית יומן נתונים פשוט של PCB עם מיקרובקר PIC וכרטיס SD הוא פרויקט מתגמל המשלב עיצוב חומרה, תכנות משובצ וניהול נתונים מעשי. על ידי בחירת רכיבים, הבנה מעמיקה פרוטוקול SPI, יישום מערכת קובץ FAT קל משקל, והוספת RTC, אתה יכול ליצור גלאגר אמין עבור מגוון רחב של יישומים.