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

ESP32: M5Stack עם DHT22: 10 שלבים
ESP32: M5Stack עם DHT22: 10 שלבים

וִידֵאוֹ: ESP32: M5Stack עם DHT22: 10 שלבים

וִידֵאוֹ: ESP32: M5Stack עם DHT22: 10 שלבים
וִידֵאוֹ: Measure Temperature and Humidity using M5Stack Core 2 with DHT11 and DHT22 - Robojax 2024, נוֹבֶמבֶּר
Anonim
Image
Image
ESP32: M5Stack עם DHT22
ESP32: M5Stack עם DHT22
ESP32: M5Stack עם DHT22
ESP32: M5Stack עם DHT22

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

במעגל של היום, אני רוצה במיוחד להדגיש שיש לנו את ה- M5Stack עם חיבורים חיוביים ושליליים, שמזין את עצמו עם חיישן DHT22. שניהם מחוברים באמצעות GPIO. הנתונים מוצגים בתרשים.

במאמר זה, בואו להציג את M5Stack ולדון ביישומיו. אני צריך להדגיש כי למכשיר זה יש כניסה לכרטיס מיקרו SD, רמקול 1W ושקע סוללה, ויש לו גם לחצני אינטראקציה, מחבר i2c, USB מסוג C, IOs חשופים, צג TFT בגודל שני אינץ ', בין תכונות אחרות. זה מוצג בתמונה למעלה. אנו יכולים לומר שמכשיר זה מוכן ל- IoT, מכיוון שהוא כבר מגיע עם Bluetooth ו- ESP32 WiFi. הוא כולל גם מגנט לחיבור למשטחי מתכת.

אהבת את M5Stack? לחץ:

שלב 1: M5Stack

ערימת M5
ערימת M5
ערימת M5
ערימת M5
ערימת M5
ערימת M5
ערימת M5
ערימת M5

חידוש אחד של ה- M5Stack הוא שאם תוריד את הגב תוכל להתאים למודולים שונים עם פונקציות שונות, כגון מודול ה- GPS, GSM, LoRa, בין היתר. זה מוצג בתמונה.

יש לי דוגמאות נוספות למודולים למטה, החל מ- RS485, מנוע DC, יוצר, ליבה, ועד שליטה במנועי צעד.

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

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

דגמים אחרים של M5Stack מוצגים בתמונות. יש לנו מכשיר עם מקלדות אלפאנומריות, מספריות ומשחקים. אלה מאפשרים לך לעבוד כאילו זה סוג של מחשב. יש לנו גם דוגמה להפעלת תוכנה, הניתנת לתכנות ב- MicroPython, Arduino, ESP-IDF, NodeJS, בנוסף ל- Basic.

שלב 2: יישומים אפשריים M5Stack

יישומים אפשריים של M5Stack
יישומים אפשריים של M5Stack
יישומים אפשריים של M5Stack
יישומים אפשריים של M5Stack
יישומים אפשריים של M5Stack
יישומים אפשריים של M5Stack

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

מה עם מד מהירות אופניים?

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

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

שלב 3: M5Stack - סיכות

M5Stack - סיכות
M5Stack - סיכות

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

שלב 4: ספריית DHT

ספריית DHT
ספריית DHT

השתמש ב- lib lib SimpleDHT, שהוא אותו אחד בו השתמשתי בסרטון: טמפרטורה ולחות עם תצוגת OLED.

שלב 5: ניהול ספריית Arduino IDE

ניהול ספריית IDE Arduino
ניהול ספריית IDE Arduino

ב"תפריט: סקיצה -> הוסף ספרייה -> נהל ספריות ", בואו נתקין את שתי הספריות המוצגות בתמונה למטה. זכרו שלפני כל זה, עליכם להתקין את ליבת ה- Arduino של ESP32. סרטון זה מראה לכם כיצד לעשות זאת זה: כיצד להתקין את IDE ARDUINO ב- ESP32.

שלב 6: קוד המקור

קוד המקור, כאמור, זהה לזה שהשתמשתי בו בסרטון: TEMPERATURE GRAPH WITH OLED DISPLAY. השינוי היחיד שעשיתי בפרויקט זה היה ביחס לגודל התצוגה.

שלב 7: M5StackDHTGraph.ino

אנו נכלול את ספריות M5Stack.h ו- SimpleDHT.h, ונגדיר צבעים המשמשים את התצוגה, כמו גם את סיכת הנתונים של DHT. נבנה גם אובייקט לתקשורת עם החיישן, נגדיר את המשתנה האחראי לקריאות ונציין את ערך ציר ה- X.

// Libs do M5Stack e DHT #include #include // definiçao das cores que serão utilizadas #define BLACK 0x0000 #define RED 0xF800 #define CYAN 0x07FF #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define DHTPIN 5 // p // מבצע לעשות objeto עבור comunicar com או חיישן SimpleDHT22 dht; // variabel responsavel por contar o número de leituras realizadas e indicador do valor no eixo X int leituraAtual = 1;

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

// definições do posicionamento dos eixos X e Y #define POS_X_GRAFICO 30 #define POS_Y_GRAFICO 3 #define ALTURA_GRAFICO 180 #define COMPRIMENTO_GRAFICO 270 // definição da coordenada onde escreveremos osdeos_deos_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_de_dep que armazenarão os valores lidos da umidade e temperatura int umidade = 0; int טמפרטורה = 0; // variável que armazenará o valor da coordenada Y para desenharmos uma linha de exemplo // que varia os valores de 1 em 1 int linhaExemplo = 20; int fator = 1; // indicará se somaremos ou subrairemos uma unidade na variável linha Exemplo

שלב 8: M5StackDHTGraph.ino - התקנה

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

הגדרת void (void) {Serial.begin (115200); // Inicializa o M5Stack M5.begin (); // pinta a tela toda de preto M5. Lcd.fillScreen (BLACK); // os comandos a seguir irão desenhar as linhas dos eixos cartesianos na cor branca // drawFastVLine (x, y, width, color) linha vertical M5. Lcd.drawFastVLine (POS_X_GRAFICO, POS_Y_GRAFICO, ALTURA_GRAFICO; // eixo Y // drawFastHLine (x, y, רוחב, צבע) linha אופקי M5. Lcd.drawFastHLine (POS_X_GRAFICO, ALTURA_GRAFICO+1, COMPRIMENTO_GRAFICO, WHITE); // eixo X // הגדרות טקסט שנועדו לשלוח כתובות M5. Lcd.setTextSize (3); // configa a cor branca para o texto M5. Lcd.setTextColor (WHITE); // posiciona o cursor for escrita M5. Lcd.setCursor (POS_X_DADOS, POS_Y_DADOS); M5. Lcd.print ("T:"); // מציין טמפרטורה M5. Lcd.setCursor (POS_X_DADOS+105, POS_Y_DADOS); M5. Lcd.print ("U:"); // indicando a umidade}

שלב 9: M5StackDHTGraph.ino - לולאה

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

void loop () {// Fazemos a leitura da temperatura e umiade float temp, umid; int status = dht.read2 (DHTPIN, & temp, & umid, NULL); if (status == SimpleDHTErrSuccess) {temperatura = temp; umidade = אומיד; } // mapeando o valor das variáveis para colocar no gráfico // necessário pois o display tem 240px de altura e separamos apenas 180 para o gráfico // umidade pode ser lida de 0-100 int temperaturaMapeada = מפה (טמפרטורה, 0, 100, 0, ALTURA_GRAFICO); int umidadeMapeada = map (umidade, 0, 100, 0, ALTURA_GRAFICO); // desenha na tela o ponto referente aos valores lidos do sensor M5. Lcd.drawPixel (POS_X_GRAFICO+leituraAtual, ALTURA_GRAFICO-temperaturaMapeada, RED); M5. Lcd.drawPixel (POS_X_GRAFICO+leituraAtual, ALTURA_GRAFICO-umidadeMapeada, CYAN); // desenha na tela o ponto referente a nossa linha de exemplo que fica variando M5. Lcd.drawPixel (POS_X_GRAFICO+leituraAtual, ALTURA_GRAFICO-linhaExemplo, YELLOW);

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

// aqui controlamos nossa linha de exemplo, quando chega no valor máximo decrementamos o val // // até um valor mínimo determinado (no nosso caso 10), e a partir daí, incrementa novamente if (linhaExemplo == 50) fator = -1; אחרת אם (linhaExemplo == 10) fator = 1; // soma o valor de linhaExemplo linhaExemplo += fator; // incrementa o contador de leituras realizadas leituraAtual ++; // se a ledura chegar em 270 (número máximo do eixo X) então limparemos a área do gráfico para voltarmos a desenhar. אם (leituraAtual == 270) {// limpa a área toda do gráfico M5. Lcd.fillRect (POS_X_GRAFICO+1, POS_Y_GRAFICO-1, COMPRIMENTO_GRAFICO, ALTURA_GRAFICO-1, BLACK); leituraAtual = 1; // volta o contador de leitura para 1 (nova coordenada X)} // limpa a área onde colocamos o valor da temperatura e da umidade M5. Lcd.fillRect (POS_X_DADOS+50, POS_Y_DADOS, 60, 30, BLACK); M5. Lcd.fillRect (POS_X_DADOS+165, POS_Y_DADOS, 90, 30, BLACK);

// reposiciona o cursor for escrever a temperatura M5. Lcd.setCursor (POS_X_DADOS+50, POS_Y_DADOS); M5. Lcd.setTextColor (אדום); M5. Lcd.print (טמפרטורה); הדפסה M5. Lcd. ((char) 247); // reposiciona o cursor for escrever a umidade M5. Lcd.setCursor (POS_X_DADOS+165, POS_Y_DADOS); M5. Lcd.setTextColor (CYAN); הדפסה M5. Lcd. (umidade); M5. Lcd.print ("%"); עיכוב (1000); }

שלב 10: קבצים

אהבת את M5Stack? רוצה לקנות אחד? עבור אל:

הורד את הקבצים:

PDF

INO

מוּמלָץ: