Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - spider28

#1
เอาโจทย์มาจาก Facebook น่ะครับ

อยากให้esp8266สองตัวสื่อสารกันได้.โดยตัวแรกเป็น input แล้วส่งให้ตัวที่สองแสดงผลเป็น output
--->วิธีการแบบนี้เขาเรียกว่าอะไรครับ.เผื่อผมไปดู google ต่อ. ขอบคุณนะครับ.^^. (มือใหม่ครับ)

พอจะจับใจความได้ว่า
ให้ตัวนึงเป็น AP Mode
อีกตัวเป็น Static Mode


==================================================
ผมลองตีโจทย์แบ่งเป็น AP Server และ client

Esp8266 AP Server
-AP MODE
-LED

กำหนดให้ AP Server  เป็นโหมด AP สามารถรัน port 80 หรือทำเป็น Http server ควบคุม LED ด้วย API ได้
การทดสอบ http://IP-Address/?stage=1


Esp8266 Client
-Static mode
-API GET

ตัว Client ก็กำหนดให้ connec wifi เหมือนกับทั่วๆไป เป็นโหมด Static จากนั้นก็ให้มันไป get ค่าจาก server ครับ

การ get ข้อมูลบน Protocal TCP port 80 ไม่ใช้เป็นการดึงข้อมูลเพียงอย่างเดียว มันคือการ ส่งค่าขึ้นไปยังปลายทาง และรับค่าตอบกลับมา

=============================
Link Youtube

https://youtu.be/v3O11mppptc

https://youtu.be/DiWlVcmRoJQ
=============================

Code AP Server [Master]

//  http://IP_Address/?state=1

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

const int led = 2;

/* Set these to your desired credentials. */
const char *ssidAP = "ESPap";
const char *passwordAP = "esp@thai";

ESP8266WebServer server(80);
//***************************************//
///////////////////////////////////////////
//***************************************//
void setup()
{
  delay(1000);
  Serial.begin(115200);

  pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
 
  ConfigAPmode();
  server.on("/", handleRoot);
  server.begin();
  Serial.println("HTTP server started");
}
//***************************************//
///////////////////////////////////////////
//***************************************//
void loop()
{
  server.handleClient();

}
//***************************************//
///////////////////////////////////////////
//***************************************//
void handleRoot() {
//  server.send(200, "text/html", "<h1>You are connected</h1>");

  int state = server.arg("state").toInt();
  digitalWrite(led, state);
 
  server.send(200, "text/plain", String("LED is now ") + ((state)?"on":"off"));
}
//***************************************//
void ConfigAPmode()
{
  Serial.println();
  Serial.println("Configuring access point...");
  /* You can remove the password parameter if you want the AP to be open. */
  WiFi.softAP(ssidAP, passwordAP);

  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  Serial.println("=======================");
}



Code Client

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

const char* ssid = "ESPap";
const char* password = "esp@thai";

ESP8266WebServer server(80);
//***************************************//
///////////////////////////////////////////
//***************************************//
void setup()
{
  delay(1000);
  Serial.begin(115200);

  SetMode();
  Conect_WiFi();
 
}
//***************************************//
///////////////////////////////////////////
//***************************************//
void loop()
{
  httpGET( "0" );
  delay(2000);
  httpGET( "1" );
  delay(2000);
}
//***************************************//
///////////////////////////////////////////
//***************************************//
void SetMode(void)
{
  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  //WiFi.mode =>  WIFI_AP_STA OR  WIFI_STA
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(1000);
 
  Serial.println("Setup Mode done");
  Serial.println("=======================");
}

void Conect_WiFi(void)
{
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println("");
  delay(1000);
 
  Serial.println("Esp8266 End Conect WiFi");
  Serial.println("=======================");
}



Funtion API get

void httpGET(String var) {
    static const char* host   = "192.168.4.1";

    // Use WiFiClient class to create TCP connections
    WiFiClient client;
    const int httpPort = 80;
    if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
    }

    // We now create a URI for the request
    String url = "/?state=";
    url += var;

//    Serial.print("Requesting URL: ");
//    Serial.println(url);

    // This will send the request to the server
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + host + "\r\n" +
                 "Connection: close\r\n\r\n");
}

#2
ตอนนี้เชื่อว่าหลายคนคงไม่มีใครไม่รู้จักเจ้า ESP8266
แต่ถ้าถามกลับว่ารู้แค่ไหน ก็จะบอกไม่ได้
ส่วนตัวผมเองเริ่มศึกษามันก็ปีกว่าๆ ลองผิดบ้างถูกบ้าง
ตั้งแต่ V01 ,V12 ,V13

V01 ถ้าไม่รู้จักมันได้ จะดียิ่งนัก



ปัญหาที่เจอล่าสุดและเจ็บที่สุด คือ โปรแกรมให้มัน คอนเน็ต wifi ทั่วๆไป
แต่มันดันรบกวน สัญญาณ โดยที่คอมผมเองไม่สามารถมองเห็น wifi ตัวอื่นๆได้เลย
สงสัยตั้งนานว่า คอมเป็นอะไร หา wifi ไม่เจอ

V12 รุ่นนี้ใช้ดีมาก แต่ต้องใช้ร่วมกับ doggle ของมัน



จากการเขียนโปรแกรม ลองผิดลองถูก ทุกคนจะเจอปัญหา WDT
WDT หากมันเกิดรีบูตตัวเองก็ไม่มีปัญหา แต่หากมันค้างไม่ทำงานเลยหล่ะ
สาเหตุเท่าที่หาข้อมูล เหมือนกับตัวมันเองถูกขัดจังหวะ ผิด
ลองทดสอบสั่ง Serail.print ไม่ต้องมี delay ไม่ถึง 1 นาที ค้างครับ

ถาม:มันเหมาะแล้วหรือที่จะนำมาใช้ในชีวิตประจำวัน
ตอบ:เหมาะครับ เพียงแค่เราควรเลี่ยงการทำให้เกิด WDT โดยการเขียนโปรแกรมให้ clean และให้เหมาะกับคุณภาพของมันครับ

ต้องรู้ว่า ESP8266 มันทำงานได้ระดับไหน
สมมุติว่า สั่งให้ ESP8266 มันรันตลอดเวลา ทุก 10 วินาที มันต้องทำงาน
ไม่เคยสั่งให้มันพัก ไม่มีคำสั่งให้มันพักผ่อน แล้วจะเหลือหรือครับ
เหมือนสั่งให้คนไปวิ่งตลอดเวลา ไม่ให้พัก ไม่ให้หยุด หากคนที่ไม่พร้อม ก็ทำไม่ได้



มาดูวิธีใช้งานเบื้องต้น ตามหัวข้อกันครับ



ผมใช้บอร์ด Arduino UNO ในการ Flash Program ให้กับ ESP8266
"แต่ผมไม่ได้เขียนโปรแกรมลงไปใน ATmega328 น่ะครับ"
บอร์ด Arduino UNO มันจะมี IC ATmega16U4 ทำหน้าที่ในการ  Flash Program ก็ใช้ประโยชน์จากมันเลย
เมื่อต่อวงจรเรียบร้อยแล้ว โปรแกรมแรกที่ Flash Program คือ Blink ขา 13 เทสได้เลยครับ



รูปนี้เป็นการจับจองการใช้งานขา ESP8266 สำหรับวิธีผมเองครับ




ใครที่ใช้ โฟโต้บอร์ด ลองต่อตามวงจรนี้ได้ครับ




รูปนี้ทดสอบรัน 30 ชั่วโมง ถ้าหาก ESP8266 รีบูต Conectoin ก็จะกลายเป็น 0 นับใหม่
อยากทดสอบนานกว่านี้แต่ หอพัก ไฟตกบ่อย
ESP8266 ไม่ได้รัน หน้าเว็บตัวนี้น่ะครับ ผมใช้ Linkit เป็น Server และให้ ESP8266 เป็น Client


ผมเขียนโปรแกรมด้วย Arduino IDE 1.6.5


จากข้อมูลข้างต้น เป็นความเห็นส่วนตัวน่ะครับ หากผิดพลาดอะไรก็ขออภัยด้วยครับ



#3
AVR and Arduino / Arduino coun down Code
October 25, 2015, 09:03:13 PM
โค๊ตสำหรับเอาไปประยุกต์ใช้การเค้าดาวด์ 99% จากที่ทดสอบถือว่าแมนยำครับ




unsigned long Watch, _micro, time = micros();
unsigned int Clock = 0, R_clock;
boolean Reset = false, Stop = false, Paused = false;
volatile boolean timeFlag = false;

void setup()
{
  Serial.begin(9600);
  SetTimer(0,0,10); // 10 seconds
  StartTimer();
}

void loop()
{
  CountDownTimer(); // run the timer

  // this prevents the time from being constantly shown.
  if (TimeHasChanged() )
  {
    Serial.print(ShowHours());
    Serial.print(":");
    Serial.print(ShowMinutes());
    Serial.print(":");
    Serial.print(ShowSeconds());
    Serial.print(":");
    Serial.print(ShowMilliSeconds());
    Serial.print(":");
    Serial.println(ShowMicroSeconds());
    // This DOES NOT format the time to 0:0x when seconds is less than 10.
    // if you need to format the time to standard format, use the sprintf() function.
  }
}

boolean CountDownTimer()
{
  static unsigned long duration = 1000000; // 1 second
  timeFlag = false;

  if (!Stop && !Paused) // if not Stopped or Paused, run timer
  {
    // check the time difference and see if 1 second has elapsed
    if ((_micro = micros()) - time > duration )
    {
      Clock--;
      timeFlag = true;

      if (Clock == 0) // check to see if the clock is 0
        Stop = true; // If so, stop the timer

     // check to see if micros() has rolled over, if not,
     // then increment "time" by duration
      _micro < time ? time = _micro : time += duration;
    }
  }
  return !Stop; // return the state of the timer
}

void ResetTimer()
{
  SetTimer(R_clock);
  Stop = false;
}

void StartTimer()
{
  Watch = micros(); // get the initial microseconds at the start of the timer
  Stop = false;
  Paused = false;
}

void StopTimer()
{
  Stop = true;
}

void StopTimerAt(unsigned int hours, unsigned int minutes, unsigned int seconds)
{
  if (TimeCheck(hours, minutes, seconds) )
    Stop = true;
}

void PauseTimer()
{
  Paused = true;
}

void ResumeTimer() // You can resume the timer if you ever stop it.
{
  Paused = false;
}

void SetTimer(unsigned int hours, unsigned int minutes, unsigned int seconds)
{
  // This handles invalid time overflow ie 1(H), 0(M), 120(S) -> 1, 2, 0
  unsigned int _S = (seconds / 60), _M = (minutes / 60);
  if(_S) minutes += _S;
  if(_M) hours += _M;

  Clock = (hours * 3600) + (minutes * 60) + (seconds % 60);
  R_clock = Clock;
  Stop = false;
}

void SetTimer(unsigned int seconds)
{
// StartTimer(seconds / 3600, (seconds / 3600) / 60, seconds % 60);
Clock = seconds;
R_clock = Clock;
Stop = false;
}

int ShowHours()
{
  return Clock / 3600;
}

int ShowMinutes()
{
  return (Clock / 60) % 60;
}

int ShowSeconds()
{
  return Clock % 60;
}

unsigned long ShowMilliSeconds()
{
  return (_micro - Watch)/ 1000.0;
}

unsigned long ShowMicroSeconds()
{
  return _micro - Watch;
}

boolean TimeHasChanged()
{
  return timeFlag;
}

// output true if timer equals requested time
boolean TimeCheck(unsigned int hours, unsigned int minutes, unsigned int seconds)
{
  return (hours == ShowHours() && minutes == ShowMinutes() && seconds == ShowSeconds());
}
#4
AVR and Arduino / Aruino 1 Master 2 Slave
October 08, 2015, 10:30:11 PM
การสื่อสารกันด้วย 3 ช่อง ทางจากบอร์ด Master เพียงตัวเดียว
SoftwareSerail 2 ช่อง    Serial TTL  1 ช่อง

ปัญหาที่เจอ SoftwareSerail ไม่สามารถประกาศใช้งานพร้อมกันกัน 2 ช่อง
อาจจะเนื่องจากมัน คอนฟิก pin ได้เพียงคำสั่งสุดท้ายเท่านั้น ส่งผลให้อีก ช่องมีปัญหา 
SoftwareSerial Sboard_1( 3 , 4 );   // RX, TX
SoftwareSerial Sboard_1( 5 , 6 );   // RX, TX

วิธีแก้ไข
ใช้ ไลบลารี่ 2 ตัว ชื่อไม่ซ่ำกัน หรือ จากคนล่ะค่ายนั้นเอง
#include <SoftwareSerial.h>
#include <AltSoftSerial.h>




ติดต่อ สอบถามได้ทาง
https://www.facebook.com/dan.thummaratkmitl
#5
*** Free ***
ข่าวดีสำหรับใครที่ต้องการระบบแจ้งเตือนผ่าน facebook กับโปรเจคของตัวเอง
วันนี้ผมมี API ส่งข้อความไปยังแชทได้ โดยเรียกใช้งานง่าย เหมาะสำหรับอุปกรณ์
IoT ทั้งหลาย หรืออุปกรณ์ต่างๆที่สามารถเชื่อมต่อกับอินเตอร์เน็ตได้ ติชมผ่าน comment ได้ครับ (กรุณาอ่าน วิธีการใช้งานก่อน)


== วิธีการสมัครการใช้งาน ==
1. สมัครใช้งาน โดยกรอกข้อมูลของ facebook ผู้สมัคร (จำเป็น)
http://alan.darindev.com/register.php
2. เมื่อทำการสมัครเสร็จแล้ว จะได้ Token (ให้เก็บไว้เพื่อใช้ในการ login)
3. bot จะส่งคำขอเป็นเพื่อนไปยัง facebook ที่กรอก
4. รับคำของเพื่อยืนยันการใช้งาน


== วิธีการใช้งาน API ==
API สามารถส่งข้อความไปหาใครก็ได้ที่ทราบ ID Facebook โดยรองรับทั้ง HTTP GET และ POST โดยรูปแบบการส่งมีดังนี้
http://alan.darindev.com/api.php?token=[token ที่ได้จากการสมัคร]&fbid=[facebook id ผู้รับ]&msg=[ข้อความ]


ตัวอย่าง
http://alan.darindev.com/api.php?token=6ee3f2e74010fxxxxxxxx=10000022691xxxx&msg=test
รายละเอียดการใช้งานเพิ่มเติม
http://alan.darindev.com/howto.php


Cr.Comdet Phaudphut
#6
ถึงเวลาเอาของดองออกมาให้คนอื่นได้ไปใช้ประโยชน์กันแล้ว
ของบางชิ้นโดนไฟแค่ตอบเทส แล้วเก็บไว้ บางชิ้นก็ยังไม่ได้เทสเลยครับ
ของทุกชิ้นรับประกัน 7 วัน หากใช้ไม่ได้ยินดีคืนเงิน 100% (ห้ามไหม้ ห้ามภาคจ่ายไฟเสีย ห้ามจ่ายไฟเลลี้ยงผิด)
ค่าส่ง EMS 70฿
กรุณาต่อการสั่งซื้อทาง inbox   https://www.facebook.com/dan.thummaratkmitl



-โมดูล GPS   ขาย 700฿


-โมดูลซิม900 ชิป M10  ขาย  1,000฿                              Dจองแล้วครับ
http://www.thaieasyelec.com/products/wireless-modules/tee-evb-m10-gsm-gprs-2g-evaluation-board-with-mms-ftp-smtp-v2.0-detail.html


-mega2560(funduino)+Shield  ขาย 500฿                              Cจองแล้วครับ



-arduino R3 UNO  150฿     Aจองแล้วครับ


-ไดร์ขับสเต็ปมอเตอร์ ขายเหมา 4 ตัว   200฿   Bเหลือ 2 ตัว   100 เดียวเท่านั้น                              Cจองแล้วครับ



-เซนเซอร์วัดความชื้นในดิน มี 2 ชิ้น  ขายชิ้นละ   50฿                              Cจองแล้วครับ



-เซ็นเซอร์ PIR  มี 3 ชิ้น  ขายเหมา   150฿                    Aจองแล้วครับ


-บูลทูธ ขายคู่กัน 400฿                                                Aจองแล้วครับ



-จอ TFT แตกที่มุมขวาล่าง นิดนึงยังใช้งานได้ เหมาะสำหรับศึกษา ขาย 100฿                               Dจองแล้วครับ


#7
บอร์ดไดร์จอ LCD 16x2,20x2,20x4 ใช้การซิปรีจิสเตอร์ด้วย 74HC595 (Hand made) 40฿ (EMS+40฿)
มีจอ LCD 16x2 (ตัวษรสีขาว แบ๊คไลค์สีฟ้า) จำหน่ายด้วยนะครับ 120 ฿
-มีไลบลารี ใช้งานง่าย
-ใช้ขาจาก Arduino 3 ขา (กำหนดขาได้อิสระจาก Arduino)
-มีการเคลือบปริ้นกันสนิม
-มีการป้องกัน จ่ายไฟผิดขั้ว + -
-เปิด/ปิด ไฟแบ๊คไลค์ได้ (ควบคุมด้วยโปรแกรม)
-ติดต่อ facebook:Dan Thummarat Kmitl    ลิงค์  https://www.facebook.com/dan.thummaratkmitl
080-442-9423












โค๊ต ตัวอย่าง นับ 0 - 100 ไฟแบ๊คไลค์ติด 0 - 50 และดับ 51 - 100


#include <LiquidCrystal595.h>    // include the library
LiquidCrystal595 lcd(7,8,9);     // datapin, latchpin, clockpin
char lcd_buffer[40] = "";

int count = 0;

void setup()
{
  delay(300);
  lcd.setLED1Pin(HIGH);        //backlight ON
  lcd.begin(16, 2);            // set up the LCD's number of columns and rows:
  lcd.clear();                 
}

void loop()

  lcd.setCursor(0,0);
  lcd.print("Test LCD"); 

  lcd.setCursor(0,1);
  sprintf(lcd_buffer,"%d  ",count);
  lcd.print(lcd_buffer);
 
  if(count>50) 
  {   
    lcd.setLED1Pin(LOW);
  }
  else
  {
    lcd.setLED1Pin(HIGH);
  }
 
  if(++count>100)  count = 0; 
  delay(300);
}



อย่าลืมโหลดไลบลารี่นะครับ  https://drive.google.com/folderview?id=0B4amGHmTTzlEflRtNG5FdnR3M1g4YV9XT3ZVTE9EVVRfVFBBTkFicDNfcGVwU0EtZVhRWVU&usp=sharing

#8
คอมเมนท์เป็นความเห็นส่วนตัวนะครับ หาผิดพลาด จขกท. ขอรับไว้คนเดียวครับ
อ้างอิง : ข้อมูลทั้งหมดนำมาจากผู้ตอบคำถามจาก FB


เเหล่งซื้อขาย
http://www.arduinoall.com/                         //มีการแนะนำการใช้สินค้า
www.arduitronics.com
www.arduino.in.th
www.mcueasy.com
www.micontechlab.com
www.ec.in.th/Arduino
www.elec2you.com
www.thaieasyelec.com
www.mcueasy.com
www.electoday.com
www.spelecshop.com
thaiopensource.org
www.ayarafun.com/
www.duinothumb.com
www.satorshop.com
www.elecsensor.com
www.engineer007.com/
https://www.gravitechthai.com
www.elec4thai.com
www.arduinoidea.com

เเหล่งหาข้อมูล
www.arduino.cc                         //แหล่งข้อมูลหลัก
www.thaieasyelec.com                         //แหล่งข้อมูลที่ดี ภาษาไทย มีของขาย ขอแท้ประกันแจ่ม
www.ayarafun.com/
www.arduitronics.com
http://www.arduinoall.com/
https://www.gravitechthai.com
www.ladyada.net/
https://learn.adafruit.com
www.jeremyblum.com

........................................................................
........................................................................
http://www.ett.co.th/
http://www.micro4you.net/
http://wara.com/components/
http://www.thaimicro.biz/
http://thaieasyelec.com/
https://gravitechthai.com/index.php
http://www.inex.co.th/inexstore/
http://www.arduitronics.com/
www.satorshop.com
http://thaiduino.com/forum/
http://www.duinothumb.com/
http://www.arduino.in.th/
http://www.arduinoall.com/
http://www.ec.in.th/
http://www.arduinothaishop.com/
http://www.elec2you.com/
http://www.semi-shop.com/main.php
http://www.elec4thai.com/
http://www.arduinothai.com/
http://www.roboseed.com/
http://www.micontechlab.com/

........................................................................
........................................................................
ร้านขายสินค้าเกี่ยวกับไมโครคอนโทรลเลอร์ อุปกรณ์อิเล็กทรอนิกส์

thaieasyelec.com
http://www.thaimicro.biz
http://www.roboseed.com
http://www.arduino.in.th
http://www.es.co.th/index.asp
http://www.circuitshops.com/
http://www.arduinoall.com/    *************** ถูก
http://www.arduitronics.com/
http://satorshop.lnwshop.com/   ************** ถูก
http://ett.co.th/
http://www.inex.co.th/inexstore/
http://www.micontechlab.com/ ************ถูก ใกล้มหาลัย ราชมงคลธัญบุรี
http://www.micro-research.co.th/
http://www.gravitechthai.com/
http://www.elec-creations.com/
http://www.smicrothai.com/smicro_home.php
http://www.i-sensetech.com
http://www.thairoboshop.com
http://www.queenhobby.com/
http://raspberrysource.lnwshop.com

........................................................................
........................................................................
#9
ขอนำบทความมาจากในกลุ่ม เฟสบุ๊คมาโพสนะครับ



เจอปัญหาอีกแหละ ทำไมเจอของแปลกๆ
โมดูล RTC ตัวนี้ทำไมมันไม่รันเวลาต่อครับ ถอดไฟเลี้ยง MCU ออกเวลา 00:00 ผ่านไปชั่วโมงนึงเปิดใหม่ เวลาเดินต่อ 00:01

เจอคำตอบแล้วครับ



ให้ remove R4 R5 R6 ออก แล้วทำการ Short circuit R6 วัดไฟว่าได้ 3 volt หรือไม่เพราะว่า แบต กระดุม มันน่าจะ 3 volt

สรุป ถอด D1, R4 จั๊ม R6

โมดูลนี้เจ๋ง. ถ้าไม่ได้รูปกับคอมเม้นในรูปไม่รุ้เลย ปกติต่อแต่ ds1307. มีวงจรชาจ ไฟ มาให้ cr2032 ด้วย. ถ้าเป็นถ่านธรรมดาชาจไม่ได้ให้ถอด D1 R4 R5 R6. และต่อวงจรที่ R6. แจ่มเลย. แต่ปกติผมใช้แต่ DS1307 ต่อเอง

อีกคำถามครับ
สงสัย บอร์ด ds1307
ตรงที่ วงเอาไว้ เวลาหงายอีกด้านขึ้นมา บนบอร์ดวงจร ทำเหมือนรูป ทรานซิสเตอร์ อยากถามว่า แท้จริงแล้วมันคืออะไร มีไว้ทำไหม ขอบคุณครับ



ตอบ
ที่วงไว้อ่ะ เขาไว้ต่อ DS18b20



#10
Projects / Arduino Temp from SD Card RealTime
August 05, 2014, 04:35:32 PM
สวัสดีครับ
ห่างหายไปนานกับการทำโปรเจค เข้าเรื่องกันเลยดีกว่า


อุปกรณ์
Arduino UNO + Ethernet Shield W5100 + Temperature Sensor (DS18B20)

หลักการทำงาน
1แสดงบนหน้าเว็บได้
2แสดงผลอุณหภูมิแบบต่อเนื่องได้

ขอบคุณ
Thank you : startingelectronics



#11
http://www.youtube.com/watch?v=Y1FJI6ykRDU&feature=youtu.be


Arduino MEGA2560 + M10 GSM(thaieasyelec)+Sumsung Hero
ให้โมดูล GSM ต่อเข้ากับขา TX1 RX1
ขา TX0 RX0 ใช้ในการเบรินโปรแกรม และต่อกับคอมเพื่อส่งข้อมูลไปแสดงผลในโปรแกรม Arduino ในหน้าต่าง serial mornitor ในขณะที่ทดสอบ

การทดสอบของผม
-กดสวิช์ส่งคำสั่ง AT รอข้อความตอบกลับมา OK หากได้ก็แสเงว่าการต่อฮาดร์แวร์เรียบร้อยแล้ว
-ทดสอบคำสั่งที่ละชุดโดยผมประกาศใช้ สวิตซ์ 5 ตัว โดยแยก 1 สวิต์ซ์ ต่อ 1 คำสั่ง
การเขียนโปรแกรมไม่ได้ก๊อปโค๊ตทั้งหมดจากคนอื่นแล้วเอามาใช้ได้เลยนะครับ ต่อลองที่ละชุดทีละคำสั่ง
หากใครเอาพัฒนาก็เอามาโพสแจกจ่ายกันบ้างนะครับ เพื่อให้คนต่อๆไปได้ศึกษา

แหล่งข้อมูล
http://www.etteam.com/prod2013/et-base%20gsm%20sim900/ET-BASE%20GSM%20SIM900_Manual_Th.pdf
และคู่มือโมดูล GSM อีกหลายๆค่ายครับ

ซ๊อคโค๊ตตัวนี้เป็นตัวเทสนะครับ
อย่าลืมเปลี่ยนเบอร์โทรด้วยนะครับ
Serial1.print("002B00360036003900330037003500340033003800300032");
//+66804429423
////////////////////////////////////////////

int data = 0;
int dat_read = 0;
const int button1 = 8;

void setup()
{
Serial.begin(9600);
Serial1.begin(9600);

pinMode(button1, INPUT);
}

void loop()
{

if (digitalRead(button1) == LOW) //AT+CSCS="UCS2"
{
Serial1.print("AT+CMGF=1");
Serial1.write(13);
delay(3000);

Serial1.print("AT+CSCS=");
Serial1.write('"');
Serial1.print("UCS2");
Serial1.write('"');
Serial1.write(13);
delay(3000);

Serial1.print("at&w");
Serial1.write(13);
delay(3000);

Serial1.print("AT+CSMP=17,167,0,25");
Serial1.write(13);
delay(3000);

Serial1.print("AT+CMGS=");
Serial1.write('"');
Serial1.print("002B00360036003900330037003500340033003800300032");
//+66804429423
Serial1.write('"');
Serial1.write(13);
delay(3000);

Serial1.print("0E020E2D0E1A0E040E380E130E170E350E210E070E320E190E2D0E340E400E250E470E010E170E230E2D0E190E340E010E2A0E4C0E170E390E400E140E220E4C");
Serial1.write(26);
Serial1.write(13);
delay(3000);
}

if (Serial1.available() > 0)
{
dat_read = Serial1.read();
delay(100);
Serial.write(dat_read);
}
}
#12
คุณสมบัติของ 7Segment_Shield_V1.0
1 การแสดงผลผ่าน 7Segment 4หลัก
2 การใช้คำสั่งระดับไบต์ (ปกติ Arduino UNO R3จะใช้คำสั่งระดับบิต คือ ควบคุมอินพุทเอาท์พุทในแต่ละขา)
3 การติดต่อสื่อสารผ่านระบบ I2C จากไอซี DS1307
4 การใช้งาน มัลติสวิตซ์ 4 ตัว
5 การเสียงผ่านลพโพง Buzzer
6 การเขียนโปรแกรมนาฬิกา + วัน/เดือน/ปี ที่มีการแบ๊คอัพข้อมูล (กรณีไฟดับข้อมูลไม่หาย)
7 อ่านค่าอุณหภมูิได้จากไอซี DS18B20

การใช้งาน
1 นำไปต่อกับบอร์ด Arduino UNO R3 (รุ่นอื่นยังไม่เคยลองครับ แต่น่าจะใช้ได้ไม่แตกต่างกัน)
2 การเบิร์นโปรแกรมเข้าบอร์ด Arduino UNO R3 จะต้องถอด JUMPER ก่อนเสมอ (หากใส่ JUMPER ขณะเบิร์นโปรแกรมจะไม่สามารถเบิร์นโปรแกรมลงบอร์ด Arduino ได้ครับ โปรแกรมคอมไพล์เลอร์ก็จะค้าง)
*กรณีโปรแกรมคอมไพล์เลอร์ค้าง วิธีแก้ คือ ปิดโปรแกรม ถอด USB ออก แล้วต่อเข้าไปใหม่อีกครั้ง อย่าลืมถอด JUMPER ก่อนทำการเบิร์นโปรแกรมเข้าบอร์ด Arduino ทุกครั้งครับ
*การถอด JUMPER จะมีผลทำให้การแสดงผลของ 7Segment จุด a จะไม่แสดง

บอร์ด 7Segment_Shield เป็นบอร์ดที่ทางผมผลิตขึ้นมาเอง เพื่อใช้เป็นบอร์ดในการศึกษาด้าน 7Segment ,DS1307,DS18B20,Multi Switch,Sound, รูปแบบของบอร์ดอาจดูบ้านๆ ดิบๆ ไปหน่อย ( หากจ้างกัดปริ้น ทำสกรีน ราคาแผ่น PCB แผ่นละ 150 )แต่เพื่อลดต้นทุนในการตั้งราคาบอร์ดให้มีราคาต่ำที่สุด ผมจึงเลือกที่จะให้บอร์ดมีลักษณะเช่นนี้





เพจในเฟสบุ๊คค้นหาคำว่า   7Segment_Shield_Arduino
#13
การเชื่อมต่อ MCU to USART(RS232)
อ้างอิงบทความจาก http://www.thaieasyelec.com/electronics-in-chapter/UART-TTL-RS232-MAX232-MAX3232.html

อ่านจากลิงค์ก่อนนะครับ

ศึกษาตามรูปเลยครับ








การเชื่อต่อในลักษณะนี้อาจส่งผลให้ MCU เสียได้ครับที่ขา TX RX เพราะแรงดันที่ใช้เป็น +-15V ครับ


สิ่งที่โพสไป เป็นความรู้ส่วนตัวที่ได้ศึกษามา
หากผิดพลาดประการใดช่วยชี้แนะด้วยครับ
#14
Project Security System

คุณสมบัติ
-ใช้เซ็นเซอร์ 3 ตัว
เซ็นเซอร์ทั้ง 3 ตัว เป็นอุปกรณ์ตรวจจับรังสีภายในร่างการของมนุษย์หรือสิ่งมีชีวิต เซ็นเซอร์จะส่งสัญญาณออกไปตลอดเวลา หากมีการสะท้อนกลับมาของสัญญาณเมื่อมีสิ่งมีชีวิตเข้าใกล้เซ็นเซอร์ ก็จะมีการส่งสัญญาณออกทางขาเอาท์พุต เพื่อที่จะนำไปประมวลผลต่อไป
-เตือนภัยด้วยข้อความ ว่าห้องไหนมีภัยคุกคาม
-เตือนภัยผ่านการแสดงผลหน้าจอคอมพิวเตอร์ด้วยโปรแกรม Security System

การทำงาน
-ลงไดร์เวอร์ Arduino และ USB to Serial (ลงไดร์เวอร์ครั้งเดียวเท่านั้น)
-เลือกคอมพอร์ตที่ได้ต่อไว้จาก device manager
-ป้อนเบอร์โทรศัพท์ โดยมี +66 เป็นรหัสประเทศนำหน้าซึ่งแทนด้วยตัวเลย 0 นั้นเอง
ในที่นี้โปรแกรมได้กำหนดเป็นเบอร์อัตโนมัติไว้แต่สามรถป้อนเบอร์เข้าไปใหม่ได้
-กดปุ่ม START เพื่อให้โปรแกรมทำงาน
ไฟวงกลมตรงกลางแสดงสถานะ เปิด/ปิด ของโปรแกรม หากเป็นสีแดงจะไม่ทำงาน

ข้อระวัง
-กรณีต้องการเปลี่ยนเบอร์โทรศัพท์ในการส่ง SMS ไฟแสดงสถานะ เปิด/ปิด ต้องเป็นสีแดงเท่านั้น โดยการกดปุ่ม STOP ก่อนหากโปรแกรมทำงานไปแล้ว หรือปิดโปรแกรมแล้วเปิดใหม่นั้นเอง
-เปิดโปรแกรมขึ้นมาแล้วกด START โปรแกรมจะฟ้อง Error เนื่องจากไม่ได้กำหนดพอร์ตการใช้งาน
ดังนั้น เมื่อเปิดโปรแกรมขึ้นมา ก็กำหนด พอร์ต ก่อน
-หากโปรแกรม Error ไม่สามารถแก้ไขอะไรได้ หรือโปรแกรมค้าง
ปิดสวิตซ์ที่กล่องควบคุมหลัก
ถอดสายไฟ 220V และสาย USB ทั้งสองเส้น
ปิดโปรแกรม รีสตาร์เครื่อง หนึ่งรอบ

เชื่อต่ออุปกรณ์เข้าไปใหม่พร้อมใช้งาน ควรทำตามขั้นตอนการใช้งานเพื่อที่จะไม่เกิดปัญหาตามมาในภายหลัง


โหลดไฟล์
http://cloudbox.3bb.co.th/share3/OTEwOHxjMjJhZDJiMDlhNzI2ZDU2NGNkNTY2NmM5M2UwODBhY3wyODk0NA==

วิดีโอ สาธิตการทำงาน
http://youtu.be/YiGBFXVNF5A
#15
อุปกรณ์ 
Arduino UNO R3
EVALUTION BOARD,GSM MODULE SAGEM HILo/NC RS232 INTERFACE
http://www.es.co.th/Picture/DEV-253356774-01-V1.jpg


#include <SoftwareSerial.h>

const int buttonPin = 12;
const int ledPin =  13;
char c;

#define rxPin 0
#define txPin 1
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

int buttonState = 1;

void setup()
{
  delay(2000);
 
  Serial.begin(9600);
 
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  mySerial.begin(9600);
 
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);

  mySerial.print("AT+IPR=9600\r" );
  delay(1000);
  mySerial.print("AT+IFC=1,1\r" );
  delay(1000);
}

void loop()
{
  buttonState = digitalRead(buttonPin);

  if (buttonState == 0)
  {
    Serial.print("Test :12345 \n" );
   
    digitalWrite(ledPin, LOW); 
    delay(300);
   
    mySerial.print("AT\r" );
    delay(500);
    read_sr();
    mySerial.print("ATD0804429423;\r" );
    delay(500);
    read_sr();
  }
  else {
    digitalWrite(ledPin, HIGH);
  }
 
}

void read_sr()
{
  if (mySerial.available() > 0)
  {
    c = mySerial.read();
      Serial.println(c); 
  }
}


การต่อฮาดแวร์



ผมสงสัยว่าทำไมมันยังสื่อสารกับ MCU ไม่ได้ครับ
ทั้งๆที่เป็นการติดต่อเบื้องต้น ต้องการให้โทรไปยังปลายทาง

หากท่านใดพอมีประสบการณ์ ช่วยแนะนำด้วยครับ
#16
ช่วยหน่อยครับ ตอนนี้ งง มากๆ โปรเจคคือ อยากให้มันติดต่อผ่าน MCU แต่เทสเบื้องต้นยังไม่ได้ครับ

ใช้โมดูลรุ่นนี้ครับ
EVALUTION BOARD,GSM MODULE SAGEM HILo/NC RS232 INTERFACE

http://www.es.co.th/detail.asp?Prod=62300072

ได้ทดลองต่อผ่าน computer โดยใช้โปรแกรม HiLo starter development tool 1.3.4 ในการซิม

ทดลองส่ง SMS โดยใช้โหมดส่ง sms จากโปรแกรม  HiLo starter สามารถส่งข้อความได้ เพราะโปรแกรม  HiLo starter ได้รันโค๊ตไว้แล้ว






แต่ลองทดลองผ่านโหมด AT terminal ไม่สามารถส่งข้อความได้ เนื่องจากสาเหตุติดที่คำสั่ง AT+CMGS="+66804429423"
โมดูลจะส่ง > กลับมา เพื่อให้ใส่ข้อความ เมื่อใสข้อความแล้ว Enter โมดูลจะตอบกลับมา > เหมือนเดิม และไม่ว่าจะส่งข้อมูลอะไรหลังจากนั้น
โมดูลจะส่ง > กลับมาตลอด แก้โดยถอดไฟเลี้ยงโมดูล แล้วเสียบใหม่ครับ



จากคำสั่ง AT+CMGS="+66804429423" // โมดูลจะส่ง > // ใส่ข้อความ // ctrl-z // enter
ตรง ctrl-z ไม่ทราบว่าต้องใส่รูปแบบไหนครับ เพราะเมื่อพิมข้อความแล้วกด ctrl-z มันจะแบ็คกลับนั้นเอง

ท่านใดที่เคยใช้ช่วยแนะนำหน่อยครับ ขอบคุณมากครับ
#18
ตู้โชว์ ironman 3 โฮโลกราฟิกใบนี้! มีแต่คนอยากได้ไปไว้ที่บ้าน

http://video.mthai.com/player.php?id=6M1365255807M0
#19
มาช่วยกันทำโมดูลเครื่องให้อาหารสัตว์กัน

-โปรเจคตัวนี้อาจใช้เวลานานเพราะจะทำเรื่อยๆ
-ทำในลักษณะโมดูลขึ้นมาเพื่อที่จะนำไปประยุกค์ใช้งานอื่นๆได้ด้วย อาทิ  เครื่องเปิด/ปิดวงจรไฟฟ้า ซึ่งขึ้นอยู่กับฮาดแวร์ที่จะมาต่อภายนอกว่าจะกำหนดให้เป็นอะไร
-ใช้ลักษณะการเตือนด้วยการเทียบเวลาของทุกๆวัน โดยตั้งค่าการเตือนได้ 4 เวลาด้วยกัน

อุปกรณ์หลักๆ
-PIC 16F887
-LCD16x2
-sw x4
-DS1307

การทำงาน
-sw_set.sw_up,sw_down,sw_start
-โปรแกรมหลักจะแสดงผล วัน/เดือน/ปี  ชัวโมง/นาที/วินาที
(อนาคต 15 หรือ 30 นาที จะสลับการแสดงผลค่าการเตือนให้ทราบ)
-สามารถเข้าไปตั้งค่า วัน/เดือน/ปี และ ชัวโมง/นาที ได้
*เดือนกุมภา มี 29 วันในทุกๆ 4 ปี ,เดือนลงท้าย คม มี 31 วัน ,เดือนลงท้าย ยน มี 30 วัน
-การตั้งค่าเวลา ชัวโมง/นาที
*กดสวิตเพิ่มค่า ลดค่าได้อย่างอิสระ (กลับไป มาได้)

คู่มือการใช้งาน
//*******ตั้งค่า วัน/เวลา*****//

1.กด set+start
2.ตั้งค่า ปี เดือน วัน ชัวโมง นาที ตามลำดับ
3.การเลื่อนการตั้งค่าในข้อ 2 ใช้สวิต set
4.กรณีขึ้น Please button:OK ให้
  - กดสวิต start โปรแกรมจะบันทึกค่าที่ตั้งไว้ แล้วกลับเข้าสู่หน้าจอหลัก
  - หรือกดสวิต set เพื่อกลับไปแก้ไขข้อมูล


//****ตั้งค่าการเตือน********//

1.กดสวิต set+down
2.ตั้งค่า alarm1,alarm2,alarm3,alarm4
3.การเลื่อนการตั้งค่าในข้อ 2 ใช้สวิต set+start
4.การเลื่อนการตั้งค่า hours กับ minust ใช้สวิต set
5.โปรแกรมจะสรุปค่าที่ตั้งไว้  alarm1,alarm2,alarm3,alarm4
  - กดสวิต start โปรแกรมจะบันทึกค่าที่ตั้งไว้ แล้วกลับเข้าสู่หน้าจอหลัก
  - หรือกดสวิต set เพื่อกลับไปแก้ไขข้อมูล
#20
ผมใช้ CCS เขียนด้วย MCU 16F887

เขียนไปเขียนมาประมาณ 700 บรรทัด มีข้อความนี้ขึ้นขณะ คอมไพล์
out of rom a segment or the program is too large main

ผมจะแก้ไขได้อย่างไรบ้างครับ ช่วยแนะนำด้วยครับ