Menampilkan Longitude dan Latitude GPS Neo 6M Ublox ke LCD OLED ARDUINO
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa mendeteksi lokasi menggunakan modul GPS Neo Ublok 6M yang ditampilkan ke lcd OLED berupa latitude dan longitudenya. untuk lebih jelasnya berikut adalah komponen dan programnya.
a. Komponen yang dipakai
b. Program Arduino IDE
//vcc pada GPS modul adalah 3,3 volt /********************* *10 to GPS Module TX* *09 to GPS Module RX* *********************/
int dataadc; long lat, lon; float flat, flon; unsigned long age, date, time, chars; int year; byte month, day, hour, minute, second, hundredths; unsigned short sentences, failed;
void gpsdump(TinyGPS &gps); void printFloat(double f, int digits = 2);
void setup() { oled.begin(); oled.display();
// Oploen serial communications and wait for port to open: Serial.begin(9600); // set the data rate for the SoftwareSerial port mySerial.begin(9600); delay(1000); Serial.println("uBlox Neo 6M"); Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version()); Serial.println("by Mikal Hart"); Serial.println(); Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS)); Serial.println(); }
void loop() // run over and over {
dataadc = analogRead(A0);
bool newdata = false; unsigned long start = millis(); // Every 5 seconds we print an update while (millis() - start < 5000) { if (mySerial.available()) { char c = mySerial.read(); //Serial.print(c); // uncomment to see raw GPS data if (gps.encode(c)) { newdata = true; break; // uncomment to print new data immediately! } } } if (newdata) { Serial.println("Acquired Data"); Serial.println("-------------"); gpsdump(gps); Serial.println("-------------"); Serial.println(); } }
void printFloat(double number, int digits) { // Handle negative numbers if (number < 0.0) { Serial.print('-'); number = -number; }
// Round correctly so that print(1.999, 2) prints as "2.00" double rounding = 0.5; for (uint8_t i=0; i<digits; ++i) rounding /= 10.0; number += rounding;
// Extract the integer part of the number and print it unsigned long int_part = (unsigned long)number; double remainder = number - (double)int_part; Serial.print(int_part);
// Print the decimal point, but only if there are digits beyond if (digits > 0) Serial.print(".");
// Extract digits from the remainder one at a time while (digits-- > 0) { remainder *= 10.0; int toPrint = int(remainder); Serial.print(toPrint); remainder -= toPrint; } }
DETEKSI LAMPU PLN ON/OFF LALU HIDUPKAN RELAY ON/OFF
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat mendeteksi tegangan PLN 220v yang mana jika nanti listrik PLN off maka akan menghidupkan relay, lalu dari relay tersebut dapat dihubungkan ke lampu emergency atau genset. untuk lebih jelasnya berikut adalah koding dan komponenya.
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor 2 ruangan yang jaraknya berjauhan, parameter yang dimonitor adalah suhu dan kelembaban ruangan, tampilan angka berada di ruang kontrol yang jaraknya juga berjauhan dengan ruangan yang dimonitor untuk itu project ini menggunakan internet dan server Thingspeak untuk transfer datanya. untuk lebih jelasnya berikut adalah koding dan komponennya.
a. Komponen yang dipakai
b. Program Receiver Arduino Uno
#include <Wire.h> #include <Keypad.h> #include <SPI.h> //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise) #include <DMD.h> //Library DMD yang menyediakan fungsi penampilan teks, gambar dsb #include <TimerOne.h> //Library peripheral Timer1 untuk menjalankan prosedur pindai panel DMD #include <Time.h> //Library waktu yang menyediakan tipe data, struktur, dan obyek waktu #include "Arial_black_16.h" #include "Arial_Black_16_ISO_8859_1.h" #include "Arial14.h" #include "DejaVuSans9.h" #include "Droid_Sans_12.h" #include "Droid_Sans_16.h" #include "DejaVuSansItalic9.h" #include "Mono5x7.h" #include "SystemFont5x7.h" #include <DS3231.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2);
byte rowPins[ROWS] = {A3,A2,A1,A0}; //connect to the row pinouts of the keypad byte colPins[COLS] = {5,4,3,2}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
long batasmaxtemp; long batasmaxtemp2; long batasmintemp; long batasmintemp2;
long batashum; int suhu1; int kelembaban1; int suhu2; int kelembaban2;
int savesuhu1; int savekelembaban1; int savesuhu2; int savekelembaban2;
String dataIn; String dt[10]; int i; boolean parsing=false; int datain1; int datain2; int datain3; int datain4; int relay = 10; int relay2 = 12; char lineBuffx1[20]; char lineBuffx2[20]; char lineBuffz1[20]; char lineBuffz2[20];
dmd.clearScreen( true ); //true is normal (all pixels off), false is negative (all pixels on)
//initialize TimerOne's interrupt/CPU usage used to scan and refresh the display Timer1.initialize( 1000 ); //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker. Timer1.attachInterrupt( ScanDMD ); //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
//clear/init the DMD pixels held in RAM dmd.clearScreen( true ); //clear/init the DMD pixels held in RAM dmd.clearScreen( true ); rtc.begin(); //rtc.setDOW(FRIDAY); // Set Day-of-Week to SUNDAY //rtc.setTime(15, 17, 0); // Set the time to 12:00:00 (24hr format) //rtc.setDate(20, 1, 2022); }
delay(1000); //dmd.clearScreen( true ); //true is normal (all pixels off), false is negative (all pixels on)
}
void parsingData(){ int j=0;
//kirim data yang telah diterima sebelumnya //Serial.print("data masuk : "); //Serial.print(dataIn); //Serial.print("\n");
//inisialisasi variabel, (reset isi variabel) dt[j]=""; //proses parsing data for(i=1;i<dataIn.length();i++){ //pengecekan tiap karakter dengan karakter (#) dan (,) if ((dataIn[i] == '#') || (dataIn[i] == ',')) { //increment variabel j, digunakan untuk merubah index array penampung j++; dt[j]=""; //inisialisasi variabel array dt[j] } else { //proses tampung data saat pengecekan karakter selesai. dt[j] = dt[j] + dataIn[i]; } }
#define DHTPIN 0 // PIN D3 (GPIO 0) dari NodeMCU terhubung dengan PIN Data dari DHT22 #define DHTTYPE DHT22 // Kita menggunakan tipe DHT22 DHT dht(DHTPIN, DHTTYPE); // Inisialisasi DHT22
LiquidCrystal_I2C lcd(0x27,16,2);
unsigned long channel = 1233456;
String apiKey = "76HGJHE437KJLH98H"; // Enter your Write API key from ThingSpeak const char* resource = "/update?api_key=";
const char *ssid = "wifikujoss"; // replace with your wifi ssid and wpa2 key const char *pass = "123456789"; const char* server = "api.thingspeak.com";
float h; float t;
WiFiClient client;
void setup(){
Serial.begin(115200); delay(10); lcd.begin(); //set lcd i2c lcd.noCursor(); //biar gak ada cursor di lcd lcd.clear(); //clear lcd dht.begin();
Serial.println("Connecting to "); Serial.println(ssid);
// Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid);
#define DHTPIN 0 // PIN D3 (GPIO 0) dari NodeMCU terhubung dengan PIN Data dari DHT22 #define DHTTYPE DHT22 // Kita menggunakan tipe DHT22 DHT dht(DHTPIN, DHTTYPE); // Inisialisasi DHT22
LiquidCrystal_I2C lcd(0x27,16,2);
unsigned long channel = 1233456;
String apiKey = "76HGJHE437KJLH98H"; // Enter your Write API key from ThingSpeak const char* resource = "/update?api_key=";
const char *ssid = "wifikujoss"; // replace with your wifi ssid and wpa2 key const char *pass = "123456789"; const char* server = "api.thingspeak.com";
float h; float t;
WiFiClient client;
void setup(){
Serial.begin(115200); delay(10); lcd.begin(); //set lcd i2c lcd.noCursor(); //biar gak ada cursor di lcd lcd.clear(); //clear lcd dht.begin();
Serial.println("Connecting to "); Serial.println(ssid);
// Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid);
Alat Monitor Kecepatan Angin (Anemometer) dann Arus DC INA219 Arduino
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat digunakan untuk memonitor kecepatan angin dan arus dc dengan menggunakan Arduino, sensor yang digunakan yaitu sensor kecepatan angin dan INA219 untuk arus DC.untuk lebih jelasnya berikut adalah program dan komponennya.
Monitor Suhu Kelembaban dan Kendali Lampu IOT Thingspeak
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor suhu dan kelembaban serta bisa mengendalikan lampu atau device lain melalui ONLINE dengan server Thingspeak. untuk lebih jelasnya berikut adalah program dan komponennya.
#define DHTPIN 0 // PIN D3 (GPIO 0) dari NodeMCU terhubung dengan PIN Data dari DHT22 #define DHTTYPE DHT22 // Kita menggunakan tipe DHT22 DHT dht(DHTPIN, DHTTYPE); // Inisialisasi DHT22
LiquidCrystal_I2C lcd(0x27,16,2);
//change your channel number here unsigned long channel = 2233667;
String apiKey = "HGKJ67576HJF3HGFJ7H"; // Enter your Write API key from ThingSpeak const char* resource = "/update?api_key=";
const char *ssid = "hotspothpku"; // replace with your wifi ssid and wpa2 key const char *pass = "123456789"; const char* server = "api.thingspeak.com";
//2,3 and 4 are channel fields in thingspeak. unsigned int flampu1 = 3; unsigned int flampu2 = 4; unsigned int fpompa1 = 5; unsigned int fpompa2 = 6;
float h; float t; int led_1; int led_2; int led_3; int led_4;
Serial.println("Waiting..."); // thingspeak needs minimum 15 sec delay between updates, i've set it to 30 seconds delay(5000);
kendali(); delay(5000); }
void kendali(){
//get the last data of the fields led_1 = ThingSpeak.readFloatField(channel, 3); led_2 = ThingSpeak.readFloatField(channel, 4); led_3 = ThingSpeak.readFloatField(channel, 5); led_4 = ThingSpeak.readFloatField(channel, 6);
if(led_1 == 1){ digitalWrite(13,HIGH); Serial.println("lampu1 is On..!"); } else if(led_1 == 0){ digitalWrite(13,LOW); Serial.println("lampu1 is OFF"); }
if(led_2 == 1){ digitalWrite(12,HIGH); Serial.println("lampu2 is On..!"); } else if(led_2 == 0){ digitalWrite(12,LOW); Serial.println("lampu2 is OFF"); }
if(led_3 == 1){ digitalWrite(16,HIGH); Serial.println("POMPA1 is On..!"); } else if(led_3 == 0){ digitalWrite(16,LOW); Serial.println("POMPA1 is OFF"); }
if(led_4 == 1){ digitalWrite(14,HIGH); Serial.println("POMPA2 is On..!"); } else if(led_4 == 0){ digitalWrite(14,LOW); Serial.println("POMPA2 is OFF"); }