Hari ini kita melihat sejenis paparan yang menarik iaitu Nextion HMI Display. Paparan ini mempunyai pengawal mikro tersendiri dan menyediakan satu perisian untuk mereka antara muka pengguna (user interface). Selain dari paparan, ia juga boleh berfungsi sebagai input seperti papan kekunci atas skrin, butang, dan slider.
Setelah mereka antara muka pengguna menggunakan perisian Nextion Editor, kita boleh memuat turun dari komputer dan memuat naik ke paparan ini menggunakan kad SD.
Kemudian sambungan ke papan mikropengawal arduino (Maker Nano) dibuat menggunakan dua wayar RX TX. Saya menggunakan Arduino IDE untuk pengaturcaraan kali ini kerana telah terdapat pustaka (library) untuk Nextion HMI Display untuk Arduino. Setakat hari ini belum ada pustaka untuk Circuitpython.
Dua sensor digunakan kali ini iaitu :
- Grove CO2,Humidity & Temperature Sensor SCD30 (disambung melalui I2C), dan
- Honeywell PM2.5 (disambung melalui softwareserial pada pin D4 & D5).
#include "SCD30.h"
#include <pm25.h>
#include <SoftwareSerial.h>
#include "EasyNextionLibrary.h" // Include EasyNextionLibrary
#if defined(ARDUINO_ARCH_AVR)
#pragma message("Defined architecture for ARDUINO_ARCH_AVR.")
#define SERIAL Serial
#elif defined(ARDUINO_ARCH_SAM)
#pragma message("Defined architecture for ARDUINO_ARCH_SAM.")
#define SERIAL SerialUSB
#elif defined(ARDUINO_ARCH_SAMD)
#pragma message("Defined architecture for ARDUINO_ARCH_SAMD.")
#define SERIAL SerialUSB
#elif defined(ARDUINO_ARCH_STM32F4)
#pragma message("Defined architecture for ARDUINO_ARCH_STM32F4.")
#define SERIAL SerialUSB
#else
#pragma message("Not found any architecture.")
#define SERIAL Serial
#endif
void PM25_listen(){
if(!pm25_ser.isListening()){
Serial.println(F("[PM25] >> Listening"));
pm25_ser.listen();
}
}
SoftwareSerial pm25_ser(4, 5);
EasyNex myNex(SERIAL); // Create an object of EasyNex class with the name < myNex >
// Set as parameter the Hardware Serial you are going to use
void setup() {
Wire.begin();
Serial.begin(9600);
myNex.begin(9600); // Begin the object with a baud rate of 9600
// If no parameter was given in the begin(), the default baud rate of 9600 will be used
pm25_ser.begin(9600);
scd30.initialize();
PM25.init(&pm25_ser, &Serial, PM25_listen);
}
void loop() {
float result[3] = {0};
float particle = PM25.read();
if (scd30.isAvailable()) {
scd30.getCarbonDioxideConcentration(result);
myNex.writeStr("tCO2.txt", String(result[0]));
myNex.writeStr("tHumidity.txt", String(result[2]));
myNex.writeStr("tTemp.txt", String(result[1]));
myNex.writeStr("tPm.txt",String(particle));
}
delay(2000);
}
Code language: PHP (php)