ESPEASY ADC Calibration

point1 ค่าน้อย 100.00

point2 ค่ามาก 0

ESPEASY DEEP SLEEP

Sleep awake time:ตื่นอยู่นานแค่ไหน วินาที

Sleep time: หลับนานแค่ไหน วินาที

Arduino Preference ESP8266 ESP32

Additional Boards Manager URLs

				
					https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
				
			

millis() ใน arduino

แบบที่ 1

 

				
					unsigned long period = 1000; //ระยะเวลาที่ต้องการรอ
unsigned long last_time = 0; //ประกาศตัวแปรเป็น global เพื่อเก็บค่าไว้ไม่ให้ reset จากการวนloop
 
void setup() {
    Serial.begin(115200);
}
 
void loop() {
   
 if( millis() - last_time > period) {

     last_time = millis(); //เซฟเวลาปัจจุบันไว้เพื่อรอจนกว่า millis() จะมากกว่าตัวมันเท่า period 


     Serial.println("Hello arduinona!");
 }
   
}
				
			

ขอบคุณ: https://www.modulemore.com/article/3/%E0%B8%A5%E0%B8%94%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89-delay-%E0%B8%AB%E0%B8%B1%E0%B8%99%E0%B8%A1%E0%B8%B2%E0%B9%83%E0%B8%8A%E0%B9%89-millis-%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%94%E0%B8%B5%E0%B8%81%E0%B8%A7%E0%B9%88%E0%B8%B2

แนวที่ 2

				
					int period = 1000;
unsigned long time_now = 0;

void setup() {
Serial.begin(115200);
}

void loop() {
time_now = millis();

Serial.println(“Hello”);

while(millis() < time_now + period){
//wait approx. [period] ms
}
}
				
			

ติดตั้ง Teamviewer บน Raspberry PI OS

64 Bit Preview Version https://download.teamviewer.com/download/linux/teamviewer_arm64.deb

32 Bit Preview Version https://download.teamviewer.com/download/linux/teamviewer_armhf.deb

ใช้คำสั่ง wget เช่น download 32 bits

wget https://download.teamviewer.com/download/linux/teamviewer_armhf.deb

sudo dpkg -i teamviewer_armhf.deb หรือ เรียกไฟล์ติดตั้งบน desktop

เชื่อม Wifi บน Raspberry Pi OS โดยไม่มีจอ

สร้างไฟล์ชื่อ wpa_supplicant.conf ไว้ข้างนอก

				
					country=TH # Your 2-digit country code
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 
network={
ssid="YOUR_NETWORK_NAME"
psk="YOUR_PASSWORD"
key_mgmt=WPA-PSK
}
				
			

กรณีที่มีหลาย SSID 

				
					country=TH # Your 2-digit country code
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1 

network={
ssid="YOUR_NETWORK_NAME1"
psk="YOUR_PASSWORD1"
key_mgmt=WPA-PSK
id_str="ID_1"
priority=100
}

network={
ssid="YOUR_NETWORK_NAME1"
psk="YOUR_PASSWORD1"
key_mgmt=WPA-PSK
id_str="ID_2"
priority=99
}
				
			

เปิด SSH บน Raspberry Pi OS โดยไม่มีจอ

สร้างไฟล์ชื่อ ssh ไม่มีนามสกุลไว้

ใน Windows ไป command prompt สิทธิ์ admin

ไป ที่ Drive flash เช่น H:

copy con ssh. Enter

จากนั้นกด Ctrl-Z

ไฟล์สร้างไว้

NodeMCU ESP8266 TM1637 NTP DHT11

  • NODEMCU ESP8266
  • 4 Digit Seven Segment TM1637
  • DHT11
  • SevenSegmentTM1637.h

#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include “SevenSegmentTM1637.h”
#include “SevenSegmentExtended.h”
#include <DHT.h>

#define CLK D2 // Define the connections pins:
#define DIO D3
#define DHTPIN D5 // Pin sensor is connected to

char cdmy[11];

// Set DHT type, uncomment whatever type you’re using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
float temp_c ;
float humi ;
char tempf[4];
float tempr;
char humif[4];
//SevenSegmentTM1637 display(CLK, DIO); // Create display object of type TM1637Display:
SevenSegmentExtended display(CLK, DIO);
DHT dht = DHT(DHTPIN, DHTTYPE);

const char *ssid = “xxxxx”;
const char *password = “xxxxxxx”;

//const long utcOffsetInSeconds = 19802;
const long utcOffsetInSeconds = 25200;

// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, “1.th.pool.ntp.org”, utcOffsetInSeconds);

void setup(){
display.begin(); // initializes the display
display.setBacklight(100); // set the brightness to 100 %
Serial.begin(9600);
Serial.println();
Serial.println(“DHTxx test!”);
dht.begin();
// Begin serial communication at a baud rate of 9600:

WiFi.begin(ssid, password);

while ( WiFi.status() != WL_CONNECTED ) {
delay(500);
Serial.print (“.”);
}

timeClient.begin();
}

void loop() {

// Read the temperature as Celsius and Fahrenheit:
temp_c = dht.readTemperature();
humi = dht.readHumidity();

// print both to serial console
Serial.println();
Serial.print(temp_c);
Serial.print(“<-T H->”);
Serial.println(humi);

timeClient.update();
unsigned long epochTime = timeClient.getEpochTime(); //get date

int currentHour = timeClient.getHours();
int currentMinute = timeClient.getMinutes();

struct tm *ptm = gmtime ((time_t *)&epochTime);
int monthDay = ptm->tm_mday;
sprintf(cdmy,” %02d-%02d-%02d “,ptm->tm_mday,ptm->tm_mon+1,ptm->tm_year+2443);

for (int i = 0; i < 2; i++) {
display.clear(); // clear the display
display.print(cdmy); // print right->left day month year
delay(100);
}
// print time hour min
//for (int i = 0; i < 2; i++) {
display.clear(); // clear the display
// print hour min for
display.printTime(currentHour,currentMinute, true); //print hour.min
//display.blink(); // blink
delay(1000);

// }

display.setColonOn(1); // open dot . led version dot if use time led : show led
display.printNumber(static_cast<int>(temp_c * 100),false,false,false);
display.printRaw(88,3); // display c at location 3
display.blink();
delay(2000);
display.printRaw(128,1);
display.printNumber(static_cast<int>(humi * 100),false,false,false);
display.printRaw(116,3); // display h at location 3
display.blink();
delay (3000);
display.setColonOn(false); // close colon
display.clear();

}xxx

TM1637.h Groove

#include “TM1637.h”

TM1637 tm1637(CLK, DIO);

tm1637.set();

tm1637.init();

tm1637.set(BRIGHTEST);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;

tm1637.clearDisplay(); // clear the display
tm1637.displayStr(); 

tm1637.displayStr(‘ABCD’); 

// Without specifying decimal pointt it displays int
tm1637.displayNum(num);

// Colon light up as decimal point
tm1637.displayNum(num, 2);
delay(2000);

// Note that adding 3 digits (-123450) makes number out of int range
tm1637.displayNum(num, 3);
delay(2000);

// Display negative numbers without sign
tm1637.displayNum(num, 0, false);
delay(2000);

/ LOVE, O=0

    tm1637.displayStr(“L0UE”);

    delay(2000);

    // loop

    tm1637.displayStr(“HELL0-1234567890”, 1000);

    delay(2000);

    // ON

    tm1637.displayStr(“0N”);

    delay(2000);

    // OFF

    tm1637.displayStr(“0FF”);

    delay(2000);

/tm1637.display(0, ListDisp[0]);
tm1637.display(1, ListDisp[1]);
tm1637.display(2, ListDisp[2]);
tm1637.display(3, ListDisp[3]);

Display1.display(0, 1); // แสดงเลข 1 ที่หลัก 0
delay(1000); // *** หลัก (0,1,2,3) นับจากซ้ายตามลำดับ

Display1.display(1, 2); // แสดงเลข 2 ที่หลัก 1
delay(1000);

Display1.display(2, 5); // แสดงเลข 5 ที่หลัก 2
delay(1000);

Display1.display(3, 8); // แสดงเลข 8 ที่หลัก 3
delay(1000);

Display1.display(0, CHAR_BLANK); // แสดง ‘ ‘ (ช่องว่าง) ที่หลัก 0
delay(1000);

Display1.display(1, CHAR_BLANK); // แสดง ‘ ‘ (ช่องว่าง) ที่หลัก 1
delay(1000);

Display1.display(2, CHAR_BLANK); // แสดง ‘ ‘ (ช่องว่าง)ที่หลัก 2
delay(1000);

Display1.display(3, CHAR_BLANK); // แสดง ‘ ‘ (ช่องว่าง) ที่หลัก 3
delay(1000);

Display1.point(POINT_ON); // เปิดแสดงจุด “:” ระหว่างหลัก 1 กับ หลัก 2
Display1.clearDisplay(); // ต้องตาม Function นี้ จุดถึงจะแสดง
delay(1000);

tm1637.point(POINT_OFF); // ปิดแสดงจุด “:” ระหว่างหลัก 1 กับ หลัก 2
tm1637.clearDisplay(); // ต้องตาม Function นี้ จุดถึงจะปิดไม่แสดง
delay(1000);

Display1.point(POINT_ON);
Display1.clearDisplay();
Display1.display(0, 1);
Display1.display(1, 2);
Display1.display(2, 3);
Display1.display(3, 4);
delay(1000);

 

Arduino C TM structure

struct tm *ptm = gmtime ((time_t *)&epochTime);
int monthDay = ptm->tm_mday;
sprintf(cdmy,” %02d-%02d-%02d “,ptm->tm_mday,ptm->tm_mon+1,ptm->tm_year+2443);
sprintf(chm,”%02d%02d”,ptm->tm_hour,ptm->tm_min);

MemberTypeMeaningRange
tm_secintseconds after the minute0-61*
tm_minintminutes after the hour0-59
tm_hourinthours since midnight0-23
tm_mdayintday of the month1-31
tm_monintmonths since January0-11
tm_yearintyears since 1900
tm_wdayintdays since Sunday0-6
tm_ydayintdays since January 10-365
tm_isdstintDaylight Saving Time flag