วันอังคารที่ 13 เมษายน พ.ศ. 2564

Arduino 2560

 การออกแบบ ใช้Arduino 2560 ต้องทำตามหลัก นี้

1. ถ้าต้องการความเร็วในการติดต่อเช่น Stepper motor, Servo  ให้ใช้ digital port, Analog port จะมี หน่วง

     ถ้าไม่พอให้ใช้ คำสั่ง Drive แต่คำสั่ง Enable ที่ไม่บ่อยใช้ Analog ได้

2. ห้ามใช้ เป็น digital port พวก Communication device , SCL, SDA , MOSI  สำหรับ TX RX พอใช้ได้ ตามจำเป็น

3. Input Pull up Resistor ใน ขาที่ ต้องต่อสาย ออกไป ไม่นั้น จะ รบกวน

วันอังคารที่ 6 เมษายน พ.ศ. 2564

เปลี่ยน Sonoff เป็น remote Relay


 

Sonoff basic เป็น ตัวควบคุม โดยใช้ weLink ใช้ CPU ESP 8266 สามารถโปรแกรม ได้

ใข้ USB serial ต้อง Modify นิดหน่อย เพราะ เป็น 3.3 V แต่ USB Serial ที่ซื้อแบบ TTL จะเป็น 5 V

วิธี แก้ ให้ เอา สาย แดง ในรูป 


ต่อ Diode ด้านตรงข้างกับ แถบดำ ต่อกัน 3 ตัว จะได้ 3.6 V ก็จะ ใช้ program ได้

\
ต่อสาย


เวลาโปรแกรม ให้ถอดสาย แดงออกก่อนโดยใช้ Arduino ide ให้ กด button ค้างใว้ เสียบสาย แล้วปล่อย 

กด Arduino ide upload

ตัวอย่าง Code


#include <ESP8266WiFi.h>

#include <WiFiClient.h>

#include <ESP8266WebServer.h>

#include <ESP8266mDNS.h>


MDNSResponder mdns;


// Replace with your network credentials

const char* ssid = "myhome";

const char* password = "*******";


ESP8266WebServer server(80);

// Set your Static IP address

IPAddress local_IP(192, 168, 10, 123);

// Set your Gateway IP address

IPAddress gateway(192, 168, 10, 1);


IPAddress subnet(255, 255, 255, 0);

IPAddress primaryDNS(192, 168, 10, 1);   //optional

IPAddress secondaryDNS(8, 8, 4, 4); //optional

String webPage = "";


int gpio13Led = 13;

int gpio12Relay = 12;


void setup(void){

  webPage += "<h1>ON OFF BUTTON</h1><p><a href=\"on\"><button>ON Blink</button></a>&nbsp;<a href=\"off\"><button>OFF</button></a></p>";  

  // preparing GPIOs

  pinMode(gpio13Led, OUTPUT);

  digitalWrite(gpio13Led, LOW);

  

  pinMode(gpio12Relay, OUTPUT); 

  digitalWrite(gpio12Relay, LOW);

 

  Serial.begin(115200); 

  delay(5000);

  

if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {

    Serial.println("STA Failed to configure");

  }

  

  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());

  

  if (mdns.begin("esp8266", WiFi.localIP())) {

    Serial.println("MDNS responder started");

  }

  

  server.on("/", [](){

    server.send(200, "text/html", webPage);

  });

  server.on("/on", [](){

    server.send(200, "text/html", webPage);

    digitalWrite(gpio13Led, LOW);

    digitalWrite(gpio12Relay, HIGH);

    delay(1000);

     digitalWrite(gpio13Led, HIGH);

    digitalWrite(gpio12Relay, LOW);

    

  });

  server.on("/off", [](){

    server.send(200, "text/html", webPage);

    digitalWrite(gpio13Led, HIGH);

    digitalWrite(gpio12Relay, LOW);

    delay(1000); 

  });

  server.begin();

  Serial.println("HTTP server started");

}

 

void loop(void){

  server.handleClient();