Test và chạy thử mạch TDS
Lập Trình ESP8266 MCU
Pin GPIO: NodeMCU có 16 chân GPIO như trong sơ đồ trên có thể được sử dụng để điều khiển các thiết bị ngoại vi khác như cảm biến, đèn LED, công tắc, v.v. Những chân này cũng có thể được sử dụng làm chân PWM.
Pin ADC (Bộ chuyển đổi tương tự sang số): Nó có một kênh ADC và có thể được truy cập thông qua chân A0.
Pin SPI: Có 4 chân (SCK, MISO, MOSI, v.v.) có sẵn để giao tiếp SPI như được hiển thị trong hình chữ nhật màu xanh lá cây trong sơ đồ.
Pin I2C: Nó có hỗ trợ chức năng I2C nhưng do sử dụng nội bộ các chân này, bạn phải tìm chân nào là I2C.
Pin UART: Nó có hai giao diện UART. Vì, RXD0 và TXD0 được sử dụng để tải mã lên bảng, chúng tôi không thể sử dụng chúng trong khi lập trình mô-đun này. Ta có thể sử dụng RXD1 và TXD1 bất cứ lúc nào.
28
Cài đặt NodeMCU trên Arduino IDE:
Hình 21 Cài Đặt MCU Trên IDE
29
• Lập trình Web trên IDE bằng NodeMCU Chương trình web
Hàm setup()
Lập trình giao diện web nhận và hiện thị kết quả
webPage += “<h1>HT Electronic – ESP8266 Web Server</h1>
Kết nối vào mạng Wifi, gửi nội dung web server để hiện thị khi có client truy xuất vào
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED); //đợi kết nối Wifi thành công server.on(“/”, [](){ server.send(200, “text/html”, webPage);});
Bắt đầu chạy Web server server.begin();
Hàm loop()
Chỉ gọi hàm server.handleClient() để xử lý các event của Web server
30
• Lập trình và chạy thử trên IDE Thiết lập Wifi và Password
• Source Code/Program #include <EEPROM.h> #include "GravityTDS.h" #define TdsSensorPin A1 GravityTDS gravityTds;
float temperature = 25,tdsValue = 0;
void setup() {
Serial.begin(115200);
gravityTds.setPin(TdsSensorPin);
gravityTds.setAref(5.0); //reference voltage on ADC, default 5.0V on Arduino UNO
gravityTds.setAdcRange(1024); //1024 for 10bit ADC;4096 for 12bit ADC gravityTds.begin(); //initialization
}
void loop() {
//temperature = readTemperature(); //add your temperature sensor and read it
31
gravityTds.setTemperature(temperature); // set the temperature and execute temperature compensation
gravityTds.update(); //sample and calculate
tdsValue = gravityTds.getTdsValue(); // then get the value Serial.print(tdsValue,0);
Serial.println("ppm"); delay(1000);
}
32
Chạy thử chương trình
Hình 26 Test chương trình
33
34
❖ Mô Phỏng Hệ Thống