Professional Documents
Culture Documents
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <ThingSpeak.h>
#include <SoftwareSerial.h>
#define RX_PIN 4 //d2
#define TX_PIN 5 //d1
SoftwareSerial mySerial(RX_PIN, TX_PIN);
WiFiClient client;
const char *apiKey = "2VLXMPKDXWOZN0B3";
const char *ssid = "FPTU_Student";
const char *pass = "12345678";
const char* server = "api.thingspeak.com";
unsigned long channelID = 2471460;
void setup() {
mySerial.begin(9600);
Serial.begin(9600);
void loop() {
if(mySerial.available()){
//String nhận về dưới dạng nhiệt độ, khoảng cách, độ bụi
// dùng int comma và comma2 để ngăn cách dấu ',' thứ 1 và 2
// lấy dữ liệu bằng cách dùng substring rồi cast qua dạng khác (int và float)
String receivedStr = mySerial.readStringUntil('\n');
int comma = receivedStr.indexOf(',');
int comma2 = receivedStr.indexOf(',', comma+1);
cel = receivedStr.substring(0,comma).toInt();
distance = receivedStr.substring(comma+1, comma2).toInt();
dustDensity = receivedStr.substring(comma2+1).toFloat();
//giới hạn dữ liệu lại, đôi khi dữ liệu nhận về cao một cách bất thường
if(cel <= 100 && distance <= 50 && dustDensity <= 30){
ThingSpeak.setField(1, cel);
ThingSpeak.setField(2, distance);
ThingSpeak.setField(3, dustDensity);
ThingSpeak.writeFields(channelID, apiKey);
}
//--------------------------------------
delay(1000);
}
}
Arduino Uno:
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#define RX_PIN 11 //pin 11 receive data
#define TX_PIN 12 //pin 12 gửi data
//khai báo biến
SoftwareSerial mySerial(RX_PIN, TX_PIN);
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
int led_pin = 10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int val;
int tempPin = A0;
const unsigned int TRIG_PIN=3;
const unsigned int ECHO_PIN=2;
void loop() {
//tính nhiệt độ
val = analogRead(tempPin);
int mv = val * (5000/1024);
int cel = mv/10;
//----------------------------
// set the cursor to (0,0):
//xuất ra màn lcd
lcd.setCursor(0, 0);
lcd.print("ND=");
lcd.print(cel);
lcd.print((char)223);
lcd.print("C");
//--------------------------
//tính khoảng cách
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
lcd.setCursor(0,1);