חיישן טמפרטורה עם ESP8266

חיישן טמפרטורה עם ESP8266
ה ESP8266 הוא הסוס השחור של האינטרנט של הדברים. במחיר מצחיק הוא נותן קישוריות אינטרנט אלחוטית וסביבת עבודה נוחה יחסית ובכך משאיר את התחרות מאחור. הוא מיוצר ע”י חברת ESPRESSIF הסינית אך יש מלא חיקויים – השוק שלו הוא כל כך פרוץ שאין כבר משמעות לאותנטיות של המוצר…צריך לדעת מאיפה לקנות וברוב מהמקרים הוא עובד.

אבולוציה

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

esp8266-01
esp8266-01

 

esp8266-02
esp8266-02

 

esp8266-03
esp8266-03

 

esp8266-04
esp8266-04

 

 

esp8266-05
esp8266-05

 

esp8266-06
esp8266-06

 

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

esp8266-07
esp8266-07

 

esp8266-08
esp8266-08

 

esp8266-09
esp8266-09

 

esp8266-10
esp8266-10

 

esp8266-11
esp8266-11

 

המומלץ ביותר ברשימה הוא ESP 12. רוב ההפרעות האלקטרומגנטיות נפתרו ע”י הגנה והגרסה הזו אמינה למדי. היא מהווה את הבסיס לקיט NODEMCU שיכול להתחבר למחשב עם כבל USB, ולעבוד בסביבת פיתוח גם של LUA וגם של ארדואינו.

esp8266-12
esp8266-12

 

כך נראה ה NODEMCU ESP8266-12:

nodemcu
nodemcu

פשוט לחבר למחשב ולהתחיל לעבוד. זהו למעשה ארדואינו זעיר עם WIFI.

 

esp8266-13
esp8266-13

 

esp8266-14
esp8266-14

הפעלה

המיקרו בקר שנעבוד איתו הוא NODEMCU ESP8266-12 בסביבת פיתוח של ארדואינו. החיישן שנפעיל הוא חיישן טמפרטורה ולחות מדגם DHT11.

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

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

עכשיו הכנסו לכלים > לוח > ומנהל הלוחות. בחרו ב esp  והתקינו.

באותה הזדמנות נוריד גם את הספריה לחיישן הטמפרטורה DHT11.

 

נחלץ את התיקייה ונוסיף לתיקיית הספריות של הארדואינו.

זהו, מעכשיו אתם יכולים לתכנת את הלוח בסביבת העבודה של ארדואינו. בחרו בnodemcu 1.0 כלוח שאתם רוצים לתכנת.

מבט על הפינים של הלוח:

node-mcu-pins
node-mcu-pins

לדוגמה פין דיגיטלי 4 בסביבת העבודה הוא פין דיגיטלי פיזי 2 בMCU.

קודם כל נפעיל את חיישן הטמפרטורה והלחות – כשהחיישן לפניכם חברו את הרגל השמאלית שלו ל 5 וולט, השנייה משמאל לפין דיגיטלי מספר 2 ב ESP וחברו נגד 10K ביניהם. הרגל הרביעית משמאל הולכת לGND:

esp-temperture
esp-temperature

עכשיו חברו את כבל הUSB בין הלוח למחשב והכניסו את הקוד:

  #include "DHT.h"
  #define DHTPIN 4 // input digital pin in esp
  #define DHTTYPE DHT11 // DHT 11
  DHT dht(DHTPIN, DHTTYPE);
  void setup() {
    Serial.begin(115200);
    dht.begin();
  }
  void loop() {
    delay(2000); // time between measurments
    float t = dht.readTemperature();
    Serial.print("טמפרטורה: ");
    Serial.print(t);
    Serial.print("\n");
  }

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

שליחת נתונים לאינטרנט

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

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

עכשיו נתכנת את הESP לשלוח נתוני טמפרטורה כל דקה לTHINGSPEAK:

#include <DHT.h>
#include <ESP8266WiFi.h>
String apiKey = "your channel’s thingspeak API key";
const char* ssid = "your wifi network name";
const char* password = "your wifi password";
const char* server = "api.thingspeak.com";
#define DHTPIN 4 // input digital pin on esp8266
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;

void setup() {
  delay(10);
  dht.begin();
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  }
}

void loop() {
  float t = dht.readTemperature();
  if (isnan(t)) {
    return;
  }
  if (client.connect(server,80)) { 
    String postStr = apiKey;
    postStr +="&field1=";
    postStr += t;
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
    }
  client.stop();
  delay(60000); // thingspeak needs minimum 15 sec delay between updates
}

עכשיו אפשר לראות גרף שמתעדכן בזמן אמת ע”י כניסה לTHINGSPEAK.

Thingspeak_temp_data
Thingspeak_temp_data

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

תצוגה בדף אינטרנט

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

הכנסו לפיי והקלידו:

sudo apt-get install nginx

ולאחר ההורדה התחילו אותו:

sudo /etc/init.d/nginx start

זהו האתר מוכן וכעת אפשר להטמיע את הגרפים והשעונים מTHINGSPEAK ולראות את השינויים בזמן אמת:

esp8266-guages
esp8266-guages

 

 

4 תגובות על “חיישן טמפרטורה עם ESP8266

  1. בני אומר:

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

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *