วันอาทิตย์ที่ 24 เมษายน พ.ศ. 2559

EP1.2 ESP8266 Read DHT11

DHT11


เป็นโมดูลใช้ในการวัดอุณหภูมิ และความชื้น


รูป DHT11



โปรแกรม สามารถเลือกใช้ได้ทั้ง  DHT11  DHT22



#include "DHT.h"
#define DHTPIN 2          // what digital pin we're connected to
// Uncomment whatever type you're using!
#define DHTTYPE DHT11     // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT *dht;
void setup()
{
  Serial.begin(115200);
  Serial.println("DHT11 test!");
  initDht(&dht, DHTPIN, DHTTYPE);
}
void loop()
{
  readDht();

  delay(2000);
}
void initDht(DHT **dht, uint8_t pin, uint8_t dht_type) {
    *dht = new DHT(pin, dht_type, 30);
    (*dht)->begin();
    Serial.println("DHTxx Begin");
}
void readDht()
{
    float h = dht->readHumidity();
    float t = dht->readTemperature();
    float f = dht->readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  float hif = dht->computeHeatIndex(f, h);
  float hic = dht->computeHeatIndex(t, h, false);
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}
ขอบคุณบทความ
 http://cmmakerclub.com/esp8266/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%AD%E0%B9%88%E0%B8%B2%E0%B8%99%E0%B8%84%E0%B9%88%E0%B8%B2-dht22-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-esp8266-native-arduino-ide/




ขอบคุณที่ติดตามครับ

วันเสาร์ที่ 23 เมษายน พ.ศ. 2559

FTDI232 to Esp8266

FTDI232 

อุปกรณ์ที่ทำหน้าที่เป็นตัวกลางในการเชื่อมต่อระหว่าง  USB คอมพิวพ์เตอร์ กับ อุปกรณ์ต่างๆ ให้รู้จักกัน และสื่อสารกันได้

Esp8266 ก็เช่นกันสามารถใช้ FTDI232 ในการเป็นตัวกลางเพื่อเชื่อต่อกับ คอมพิวพ์เตอร์

รูป FTDI232 



ข้อควรระวังในการใช้ FTDI232 ที่ผมเจอมา คือ มันจะมีสวิตซ์สามารถเลือกปรับระดับแรงดันได้  3.3v กับ 5v  แต่พบว่าไม่ว่าจะเลือกสวิตซ์ไปทางไหน มันก็ได้แรงดัน 5v ตลอด ดังนั้น หากใครใช้ก็ควรระวังในส่วนของแรงดันด้วยครับ


การต่อวงจรก็ตามรูปเลลยครับ 


รูป วงจรการเชื่อมต่อ 



ต้องแก้ไขที่  Arduino IDE ด้วยครับ ในส่วนของ Tool => Programmer เลือกเป็น USBasp
รูป การเซทที่โปรแกรม Arduino 




เพียงเท่านี้ก็สามารถใช้ FTDI232  ในการโปรแกรมลง Esp8266 ได้แล้วครับ



ขอบคุณที่ติดตามครับ

วันศุกร์ที่ 22 เมษายน พ.ศ. 2559

Debug Code ESP8266

DEBUG_OUTPUT


Debug คือ การแก้ไขความผิดผลาด

Arduino IDE 1.6.x โหลดไลบลารี ESP8266 V.2.1  มีฟังก์ชันการ DEBUG มาให้

การ DEBUG จะแสดงผลได้ก็ต่อเมื่อมีการเรียกใช้ ไฟล์


#include <ESP8266WiFi.h>
#include <WiFiClient.h> 
#include <ESP8266WebServer.h>



รูป 1 ไลบลารี ESP8266WebServer



จากรูปจะเห็นได้ว่ามีการใช้คำสั่ง   DEBUG_OUTPUT   ก็คือให้มีการ  Serial  เมื่อต้องมอร์นิเตอร์โค๊ต ณ จุดต่างๆ ที่มีคำสั่งนี้  แต่จะถูกกำหนดให้  เปิด/ปิด  คำสั่งด้วยการเลือกที่ตัวโปรแกรม Arduino IDE ก่อนโปรแกรมลง ESP8266  

การเซทค่าโปรแกรม Arduino IDE



รูป 2

จากรูป 3 เลือกมอร์นิเตอร์เฉพาะส่วนของ HTMLServer  เพื่อให้ตรงกับโค๊ตที่เขียน  เพราะผมเขียนให้ ESP8266 รันเป็น Web Server


รูป 3

ทดสอบโดยการเรียก IP  ของ  ESP8266

รูป 4

เปิดหน้าจอ   Serial Monitor เมื่อมีการเรียกหน้าเว็บ ก็จะมีการ DEBUG โค๊ตออกมาแสดงผลให้ดูกัน

รูป 5



สรุป การ DEBUG ในที่นี้ คือ เป็นการแสดงผลการทำงานของไลบลารีซึ่งผู้ใช้ทั่วๆไป จะไม่เห็นการทำงานของไลบลารีที่ทางผู้สร้างได้จัดทำไว้  หากต้องการให้แสดงผลการทำงานก็ต้องเปิดการ DEBUG ไว้สำหรับโปรแกรมเมอร์   แต่เมื่อนำ ESP8266 ไปใช้งานจริงก็ปิดการ  DEBUG




ฝากติดตาม Page  FaceBook:    Esp8266 - THAI Platforms Arduino IDE
https://www.facebook.com/EspArduino


ขอบคุณที่ติดตามครับ

วันพฤหัสบดีที่ 21 เมษายน พ.ศ. 2559

ESP8266 CONFIG IP By web browser


ฮาร์ดแวร์

มีสวิตซ์ 1 ตัว เพื่อใช้ในการเลือกโหมดการทำงาน

รูปฮาร์ดแวร์

ลำดับขั้นตอนการเขียนโปรแกรม


เขียนโปรแกรมแยกเป็นส่วนๆ ก่อน
1. กดสวิตซ์เพื่อสลับโหมด
2. เข้าใช้งานโหมด AP
        web config SSID ,PASS, IP, GW
3. เข้าใช้งานโหมด STA
       web main page
4. Eeprom read + write
5. สุดท้าย ยำโค๊ต นำทุกอย่างมารวมกัน


คุณสมบัติ

1. คอนฟิก SSID+PASS
2. คอนฟิก IPAddress+IPGateway
3. Flash โปรแกรมลง ESP8266 เพียงครั้งเดียว
4. นำไปใช้งานที่ไหนก็ได้ กับ Router ตัวไหนก็ได้ เพียงแค่รู้  ชื่อ รหัส ip ก็สามารถใช้งานได้เลย
หมายเหตุ ยังไม่รองรับ การเชื่อม wifi แบบให้ยืนยันตัวตน



วิธีทำงาน

1. กดสวิตซ์ 5 วินาที เข้าสู่ AP โหมด
    ESP8266 จะแจก IP 192..168.4.1
2. ทำการคอนฟิกผ่าน web browser
3. รีบูต ESP8266 หนึ่งครั้ง
หมายเหตุ กรณีไม่มีการกดสวิตซ์เลือกโหมด ESP8266 จะเป็นโหมด AP อัตโนมัติ



รูปโครงสร้างการทำงานของโปรแกรม





EP1.1 ESP8266 Function


ESP8266 Basic

เนื้อหานี้นำเสนอรูปแบบการสร้างฟังก์ซึ่งแบ่งออกได้เป็น 2 รูปแบบ
1.ฟังก์ชันไม่มีการคืนค่าตัวแปร
      ในส่วนนี้ คือ ฟังก์ชันที่ถูกเขียนขึ้นเพื่อ ให้ง่ายต่อการเรียกใช้งาน ลดการเขียนซ้ำๆ และลดบรรทัดใน MAIN LOOP

2.ฟังก์ชั่นการคืนค่าตัวแปร
     คือ ฟังก์ชันที่เมื่อเรียกใช้งานจะต้องใส่ค่าตัวแปร เพื่อนำไปประมวลผล


ถาม: ทำไมต้องใช้  ฟังก์ชั่นการคืนค่าตัวแปรตอบ: หากเขียนโปรแกรมเยอะๆ  หรือ MCU มีพื้นที่หน่วยความจำ [Flash] น้อยๆ หากมีการประการตัวแปร Global ก็จะทำให้ทรัพยากรลดลงไปถึงขั้นพื้นที่หน่วยความจำไม่พอกันเลยทีเดียว

โครงสร้างภาษา C ออกแแบบมาเพื่อให้สามารถเรียกการทำงานข้ามบรรทัด สลับ ไป - มา ได้ แต่ตัวมันก็ยังทำทีละคำสั่ง เหมือนรูปแบบการเขียนโปรแกรมภาษาอื่นๆ







===========================================

int count = 0;
void setup()
{
  Serial.begin(115200);
}
void loop()
{
  Serial.println("=====================");
  Serial.printf("Count = %d \r\n",count);
  if( ++count > 100 )
    count = 0;
 
  delay(1000);
}

วันศุกร์ที่ 1 เมษายน พ.ศ. 2559

ลำดับขั้นตอนการเขียนโปรแกรม มือใหม่

ลำดับขั้นตอนการเขียนโปรแกรม มือใหม่


เริ่มหาเอกสารทาง web อ่านเล่นๆ เตรียมพร้อม

ศึกษาฮาร์ดแวร์
ศึกษารูปแบบภาษาที่จะเขียน
















เริ่มการเขียนโปรแกรม

เแบ่งการเขียนโปรแกรมเป็น Output  Input
  1. เขียนโปรแกรม LED ติด/ดับ (หากได้มากกว่า 1 ดวงยิ่งดี) จุดสำคัญ คือ นำฟังก์ชัน มาเทสกับไฟกระพริบนี้แหละครับ while    if   if...else    switch....case    ฯลฯ
  2. 7Segment
  3. LCD
  4. Switch + LED
  5. Switch + 7Segment
  6. Keypad
  7. ที่เหลือก็พวกเซ็นเซอร์ต่างๆที่อยากจะทดลอง

มีอาจารย์เคยบอกว่า หากคุณเก่งเพียงภาษาเดียวคุณก็สามารถที่จะเขียนโปรแกรมภาษาอื่นๆได้ หรือฮาดแวร์ไมโครคอนละค่าย ก็นำไปประยุคไม่อยาก มันก็เรื่องจริงน่ะครับ การเขียนโปรแกรมก็คงหนีไม่พ้น ฟังก์ชัน if  for  ไม่ว่าจะเป็น ไมโคร เว็บ Android ฯลฯ

ไม่มีใครเก่งมาตั้งแต่เกิด
และไม่มีใครเก่งโดยไม่พยายาม