Professional Documents
Culture Documents
NOTA KULIAH 3
SEMESTER SEMESTER 3 DVM SESI 1
NAMA PELAJAR
MUKA 01 DARIPADA 47
NO KOD DEB3013/NK03/NK03-03
1
Berasaskan Sistem Arduino
Kandungan
Bahagian 3
1. Penderia (Sensor) dan Pelaksana (Actuator).
2. Robot Arm Berserta Sistem Papan Pengawal Arduino
3. Sistem Lampu Trafik Simpang Empat
4. AT+COMMAND | WiFi ESP8266
2
1. Penderia (Sensor) dan Pelaksana (Actuator).
Pengenalan
Sensor / Penderia
Terdapat beratus-ratus jenis sensor yang digunakan dalam pelbagai lapangan dan
operasi. Antara jenama-jenama sensor yang pernah saya jumpa ialah seperti
OMRON, ALLEN BRADLEY, FESTO, FAIRCHILD, SUNX,SMC,
SIEMENS,FARNEL, KEYENCE, ROCKWELL, TELEMECHANIQUE,
YAMATAKE-HONEYWELL dan banyak lagi.
3
Satu contoh litar pengawal ringkas yang menerima maklumat daripada ‘Float
sensor’ dan terus mengeluarkan amaran tentang paras air yang terlalu tinggi. Di
dalam kes ini, float sensor diletakkan di bahagian drain out pipe sebuah mesin
yang menggunakan air sebagai penyejuk di dalam prosesnya. Untuk mengesan jika
drain out pipe tersumbat,sebuah float sensor telah diletakkan didalamnya. Apabila
drain out pipe tersumbat, air tidak dapat mengalir keluar dengan cekap dan paras
air didalamnya akan naik. Disinilah fungsi float sensor iaitu mengesan kenaikan
paras air yang tidak sepatutnya berlaku.
Gambar float sensor dua wayar di atas adalah jenis yang biasa digunakan.
Berfungsi sama seperti magnetic switch, bahagian pelampung ( berwarna putih )
akan timbul mengikut paras air. Pelampung akan mempunyai magnet kecil di mana
medan magnet itu akan menyebabkan litar tertutup apabila pelampung berada pada
kedudukan atas.
Litar pengawal ringkas di sini ialah kerana apabila float sensor mengesan paras air
melebihi tahap sepatutnya, sebuah buzzer amaran akan terus dibunyikan,tanpa
tindakan susulan yang lain oleh mesin. Lihat ladder diagram di bawah di mana
sebuah relay digunakan sebagai isolator kerana buzzer yang digunakan dikuasakan
dengan arus ulang alik.
4
Selain daripada itu, fungsi yang lebih lanjut boleh juga dilaksanakan seperti
contohnya memberhentikan operasi mesin secara automatic di mana relay boleh
digunakan untuk memutuskan bekalan atau menghidupkan fungsi brek bagi
memberhentikan bahagian mesin yang bergerak.
5
Gambarajah di bawah menunjukkan sambungan litar untuk kawalan seperti yang
dihuraikan di atas ;
Setakat ini diharapkan pembaca sudah boleh memahami fungsi sensor dan litar
kawalan serta bagaimana aplikasinya yang sangat penting dan sangat meluas di
dalam bidang automasi. Boleh dikatakan yang sensor adalah peranti utama yang
mesti ada pada sesuatu mesin selepas ‘suis’.
7
Lanjutan daripada topic ini di post yang lain, saya akan menerangkan jenis-jenis
sensor yang kerap kali digunakan pada mesin-mesin automasi , fungsinya dan
aplikasinya satu persatu mengikut senarai di bawah ;
1. Roller microswitch
2. Optical reflective sensor
3. Optical fork sensor / Optical through beam sensor
4. Metal detector
5. Capasitive sensor
6. Thermocouple
Pengenalan –
Kit Robot Arm ini direka untuk mempunyai 4 darjah pergerakkan yang digerakkan
oleh 4 biji motor servo MG90S bergear logam. 4 biji motor servo tersebut sesuai
digerakkan oleh papan papan elektronik yang terkenal masa kini seperti Arduino,
Raspberry Pi dan MicroBit.
Robot Arm Assembled With MG90S 4DOF Servo 4 Axis Rotating Kit adalah
kit Robot Arm yang sudah siap dipasang. Ianya direka bertujuan untuk
membolehkan kanak-kanak dan orang dewasa belajar meneroka dunia teknologi,
kejuruteraan dan pengaturcaraan di samping memberi galakkan keseronokkan
untuk mereka mendalami bidang bidang yang amat diperlukan di masa hadapan
ini.
8
9
Kit Robot Arm ini direka untuk mempunyai 4 darjah pergerakkan yang digerakkan
oleh 4 biji motor servo MG90S bergear logam. 4 biji motor servo tersebut sesuai
digerakkan oleh papan papan elektronik yang terkenal masa kini seperti Arduino,
Raspberry Pi dan MicroBit.
Papan papan elektronik ini tidak didatangkan bersama sama dengan kit Robot Arm
ini. Oleh itu, para pereka cipta mempunyai kebebasan penuh untuk mereka cipta
sistem pengawal mereka sendiri untuk mengawal kit Robot Arm ini.
Untuk dimensi Robot Arm Assembled With MG90S, anda boleh merujuk laman
produk di Robot Arm Assembled With MG90S 4DOF Servo 4 Axis Rotating
Kit.
Sistem papan pengawal Arduino ini datang dalam bentuk yang sudah siap dipasang
seperti dalam gambar di bawah atau anda boleh secara DIY membuatnya sendiri
kerana di laman ini sudah disediakan senarai barang yang digunakan, litar
sambungan serta kod arduino nya.
10
Robot Arm Controller 4DOF Arduino Servo 4 Axis Joystick Circuit adalah
papan pengawal kit Robot Arm yang direka untuk mengawal 4 darjah pergerakkan
dari 4 biji motor servo MG90S bergear logam yang telah dipasang pada kit Robot
Arm. Papan pengawal Arduino ini telah dimasukkan kod dan dihantar pada
pelanggan dalam keadaan sedia digunakan (Plug and Play).
Sistem papan pengawal Robot Arm ini mampu mengawal 4 output (4 biji motor
servo) yang dikawal oleh 4 input (2 biji modul joystick yang mampu mengawal 4
darjah pergerakkan) serta mempunyai 4 input untuk menentukan offset kedudukan
asal setiap darjah pergerakkan.
Di bawah adalah senarai barang yang diperlukan untuk membina litar di atas :
1. Protoboard yang bersesuaian
2. Solder Lead
3. Wayar Penyambung yang secukupnya
4. DC DC Step Down Converter
5. 90 Darjah Male Header
6. Straight Male Header
11
7. Female DC Jack With Terminal
8. AC DC Adapter
9. Jumper Wire Female Female
10. Jumper Wire Male Female
11. Jumper Wire Male Male
12. Preset 10k Ohm 4 unit
13. Arduino Nano
14. Modul Joystick 2 unit
#include <Servo.h>
void setup() {
Serial.begin(9600);
servoClaw.attach(pinServoClaw);
servoJoint1.attach(pinServoJoint1);
servoJoint2.attach(pinServoJoint2);
12
servoBase.attach(pinServoBase);}
void loop() {
valueRightVRy = analogRead(pinRightVRy);
valueRightVRx = analogRead(pinRightVRx);
valueLeftVRy = analogRead(pinLeftVRy);
valueLeftVRx = analogRead(pinLeftVRx);
valueOffset1 = analogRead(pinOffset1);
valueOffset2 = analogRead(pinOffset2);
valueOffset3 = analogRead(pinOffset3);
valueOffset4 = analogRead(pinOffset4);
else processServoOffset1 = 0;
13
if( servoOffset2 > 90 ) processServoOffset2 = servoOffset2 - 90;
else processServoOffset2 = 0;
else processServoOffset3 = 0;
else processServoOffset4 = 0;
14
if( valueServoJoint2 > maximumServoDegree ) valueServoJoint2 = maximumServoDegree;
servoClaw.write(valueServoClaw);
servoJoint1.write(valueServoJoint1);
servoJoint2.write(valueServoJoint2);
servoBase.write(valueServoBase);}
15
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana
cara membuat sebuah alat atau simulasi yang berfungsi sebagaimana kinerja dari
traffic light atau lampu merah di perkotaan. alat ini menggunakan arduino dan
interface lcd i2c serta dilengkapi dengan RTC. untuk lebih jelasnya berikut
komponen dan kodingnya.
a. Arduino
16
b. Lcd 16x2 + I2C
c. RTC Ds1307
17
d. Led
e. Push Button
#include <Wire.h>
18
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#define DS3231_I2C_ADDRESS 0x68
//0x20 untuk simulasi proteus jika real gunakan 0x27 atau 0x3F
LiquidCrystal_I2C lcd(0x20,16,2);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
int addr1 = 0;
int addr2 = 1;
int addr3 = 2;
int addr4 = 3;
int addr5 = 4;
int addr6 = 5;
int ledg1 = 0;
int ledy1 = 1;
int ledr1 = 2;
int ledg2 = 3;
int ledy2 = 4;
int ledr2 = 5;
int ledg3 = 6;
int ledy3 = 7;
int ledr3 = 8;
int ledg4 = 9;
int ledy4 = 10;
int ledr4 = 11;
int btsetx = 0;
int btupx = 0;
int btdownx = 0;
int btokx = 0;
19
int delaykuning = 300;
int jam,menit,hari,awalflash,akhirflash;
int hijau1,hijau2,hijau3,hijau4;
void setup()
{
hijau1 = EEPROM.read(addr1);
hijau2 = EEPROM.read(addr2);
hijau3 = EEPROM.read(addr3);
hijau4 = EEPROM.read(addr4);
awalflash = EEPROM.read(addr5);
akhirflash = EEPROM.read(addr6);
lcd.begin();
lcd.noCursor();
lcd.clear();
pinMode(ledg1,OUTPUT);
pinMode(ledy1,OUTPUT);
pinMode(ledr1,OUTPUT);
pinMode(ledg2,OUTPUT);
pinMode(ledy2,OUTPUT);
pinMode(ledr2,OUTPUT);
pinMode(ledg3,OUTPUT);
20
pinMode(ledy3,OUTPUT);
pinMode(ledr3,OUTPUT);
pinMode(ledg4,OUTPUT);
pinMode(ledy4,OUTPUT);
pinMode(ledr4,OUTPUT);
pinMode(btset,INPUT_PULLUP);
pinMode(btup,INPUT_PULLUP);
pinMode(btdown,INPUT_PULLUP);
pinMode(btok,INPUT_PULLUP);
Wire.begin();
// set the initial time here:
// DS3231 seconds, minutes, hours, day, date, month, year
// setDS3231time(0,47,11,6,23,11,18);
btsetx = digitalRead(btset);
if(btsetx == 0)
{
lcd.clear();
hijau1 = 0;
hijau2 = 0;
hijau3 = 0;
hijau4 = 0;
awalflash = 0;
akhirflash = 0;
settingjam();
settingmenit();
settinghari();
setdelayhijau1();
setdelayhijau2();
setdelayhijau3();
setdelayhijau4();
setawalflash();
setakhirflash();
EEPROM.write(addr1, hijau1);
21
EEPROM.write(addr2, hijau2);
EEPROM.write(addr3, hijau3);
EEPROM.write(addr4, hijau4);
EEPROM.write(addr5, awalflash);
EEPROM.write(addr6, akhirflash);
// DS3231 seconds, minutes, hours, day, date, month, year
setDS3231time(0,menit,jam,hari,23,11,20);
}
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set next input to start at the seconds register
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
22
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void displayTime()
{
lcd.setCursor(0,0);
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth,
&month,
&year);
// send it to the serial monitor
lcd.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
lcd.print(":");
if (minute<10)
{
lcd.print("0");
}
lcd.print(minute, DEC);
lcd.print(":");
if (second<10)
{
lcd.print("0");
}
lcd.print(second, DEC);
lcd.print(" ");
/*
lcd.setCursor(0,1);
lcd.print(dayOfMonth, DEC);
lcd.setCursor(0,2);
lcd.print(month, DEC);
lcd.print(" / ");
lcd.print(year, DEC);
lcd.setCursor(0,3);
//lcd.print(" Day of week: ");
23
switch(dayOfWeek){
case 1:
lcd.print("Sunday");
break;
case 2:
lcd.print("Monday");
break;
case 3:
lcd.print("Tuesday");
break;
case 4:
lcd.print("Wednesday");
break;
case 5:
lcd.print("Thursday");
break;
case 6:
lcd.print("Friday");
break;
case 7:
lcd.print("Saturday");
break;
}
*/
lcd.setCursor(0,1);
lcd.print("TEXT BISA EDIT");
void loop()
{
displayTime();
delay(1);
//hijau apil 1
digitalWrite(ledg1,LOW);
digitalWrite(ledy1,HIGH);
24
digitalWrite(ledr1,HIGH);
digitalWrite(ledg2,HIGH);
digitalWrite(ledy2,HIGH);
digitalWrite(ledr2,LOW);
digitalWrite(ledg3,HIGH);
digitalWrite(ledy3,HIGH);
digitalWrite(ledr3,LOW);
digitalWrite(ledg4,HIGH);
digitalWrite(ledy4,HIGH);
digitalWrite(ledr4,LOW);
delay(hijau1);
//kuning apil 1
digitalWrite(ledg1,HIGH);
digitalWrite(ledy1,LOW);
digitalWrite(ledr1,HIGH);
delay(delaykuning);
//hijau apil 2
digitalWrite(ledg1,HIGH);
digitalWrite(ledy1,HIGH);
digitalWrite(ledr1,LOW);
digitalWrite(ledg2,LOW);
digitalWrite(ledy2,HIGH);
digitalWrite(ledr2,HIGH);
digitalWrite(ledg3,HIGH);
digitalWrite(ledy3,HIGH);
digitalWrite(ledr3,LOW);
digitalWrite(ledg4,HIGH);
digitalWrite(ledy4,HIGH);
digitalWrite(ledr4,LOW);
delay(hijau2);
25
//kuning apil 2
digitalWrite(ledg2,HIGH);
digitalWrite(ledy2,LOW);
digitalWrite(ledr2,HIGH);
delay(delaykuning);
//hijau apil 3
digitalWrite(ledg1,HIGH);
digitalWrite(ledy1,HIGH);
digitalWrite(ledr1,LOW);
digitalWrite(ledg2,HIGH);
digitalWrite(ledy2,HIGH);
digitalWrite(ledr2,LOW);
digitalWrite(ledg3,LOW);
digitalWrite(ledy3,HIGH);
digitalWrite(ledr3,HIGH);
digitalWrite(ledg4,HIGH);
digitalWrite(ledy4,HIGH);
digitalWrite(ledr4,LOW);
delay(hijau3);
//kuning apil 3
digitalWrite(ledg3,HIGH);
digitalWrite(ledy3,LOW);
digitalWrite(ledr3,HIGH);
delay(delaykuning);
//hijau apil 4
digitalWrite(ledg1,HIGH);
digitalWrite(ledy1,HIGH);
digitalWrite(ledr1,LOW);
digitalWrite(ledg2,HIGH);
digitalWrite(ledy2,HIGH);
digitalWrite(ledr2,LOW);
26
digitalWrite(ledg3,HIGH);
digitalWrite(ledy3,HIGH);
digitalWrite(ledr3,LOW);
digitalWrite(ledg4,LOW);
digitalWrite(ledy4,HIGH);
digitalWrite(ledr4,HIGH);
delay(hijau4);
//kuning apil 4
digitalWrite(ledg4,HIGH);
digitalWrite(ledy4,LOW);
digitalWrite(ledr4,HIGH);
delay(delaykuning);
if(hour == awalflash){
mulaiflash();
}
}
void settingjam(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("Jam = ");
lcd.print(jam);
lcd.print(" ");
if(btupx == 0){
delay(10);
jam++;
}
if(btdownx == 0){
delay(10);
27
jam--;
}
if(btokx == 0){
lcd.clear();
delay(100);
return;
}
settingjam();
}
void settingmenit(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("menit = ");
lcd.print(menit);
lcd.print(" ");
if(btupx == 0){
menit++;
}
if(btdownx == 0){
menit--;
}
28
menit = 0;
}
if(btokx == 0){
lcd.clear();
delay(100);
return;
}
settingmenit();
}
void settinghari(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("hari= ");
if(hari == 1){
lcd.print("senin ");
}
if(hari == 2){
lcd.print("selasa ");
}
if(hari == 3){
lcd.print("rabu ");
}
if(hari == 4){
lcd.print("kamis ");
}
if(hari == 5){
29
lcd.print("jumat ");
}
if(hari == 6){
lcd.print("sabtu ");
}
if(hari == 7){
lcd.print("minggu ");
}
if(btupx == 0){
hari++;
}
if(btdownx == 0){
hari--;
}
if(btokx == 0){
lcd.clear();
delay(100);
return;
}
settinghari();
}
void setdelayhijau1(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
30
lcd.setCursor(0,0);
lcd.print("delay1= ");
lcd.print(hijau1);
lcd.print(" ");
if(btupx == 0){
hijau1++;
}
if(btdownx == 0){
hijau1--;
}
if(btokx == 0){
lcd.clear();
delay(100);
hijau1 = hijau1 * 100;
return;
}
setdelayhijau1();
}
void setdelayhijau2(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("delay2= ");
lcd.print(hijau2);
lcd.print(" ");
31
if(btupx == 0){
hijau2++;
}
if(btdownx == 0){
hijau2--;
}
if(btokx == 0){
lcd.clear();
delay(100);
hijau2 = hijau2 * 100;
return;
}
setdelayhijau2();
}
void setdelayhijau3(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("delay3= ");
lcd.print(hijau3);
lcd.print(" ");
if(btupx == 0){
hijau3++;
}
if(btdownx == 0){
hijau3--;
32
}
if(btokx == 0){
lcd.clear();
delay(100);
hijau3 = hijau3 * 100;
return;
}
setdelayhijau3();
}
void setdelayhijau4(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("delay4= ");
lcd.print(hijau4);
lcd.print(" ");
if(btupx == 0){
hijau4++;
}
if(btdownx == 0){
hijau4--;
}
33
if(btokx == 0){
lcd.clear();
delay(100);
hijau4 = hijau4 * 100;
return;
}
setdelayhijau4();
}
void setawalflash(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("awalflash= ");
lcd.print(awalflash);
lcd.print(" ");
if(btupx == 0){
awalflash++;
}
if(btdownx == 0){
awalflash--;
}
if(btokx == 0){
34
lcd.clear();
delay(100);
return;
}
setawalflash();
}
void setakhirflash(){
btokx = digitalRead(btok);
btupx = digitalRead(btup);
btdownx = digitalRead(btdown);
lcd.setCursor(0,0);
lcd.print("akhirflash= ");
lcd.print(akhirflash);
lcd.print(" ");
if(btupx == 0){
akhirflash++;
}
if(btdownx == 0){
akhirflash--;
}
if(btokx == 0){
lcd.clear();
delay(100);
return;
}
35
setakhirflash();
}
void mulaiflash(){
displayTime();
delay(1);
digitalWrite(ledg1,HIGH);
digitalWrite(ledy1,LOW);
digitalWrite(ledr1,HIGH);
digitalWrite(ledg2,HIGH);
digitalWrite(ledy2,LOW);
digitalWrite(ledr2,HIGH);
digitalWrite(ledg3,HIGH);
digitalWrite(ledy3,LOW);
digitalWrite(ledr3,HIGH);
digitalWrite(ledg4,HIGH);
digitalWrite(ledy4,LOW);
digitalWrite(ledr4,HIGH);
delay(200);
digitalWrite(ledg1,HIGH);
digitalWrite(ledy1,HIGH);
digitalWrite(ledr1,HIGH);
digitalWrite(ledg2,HIGH);
digitalWrite(ledy2,HIGH);
digitalWrite(ledr2,HIGH);
digitalWrite(ledg3,HIGH);
digitalWrite(ledy3,HIGH);
digitalWrite(ledr3,HIGH);
digitalWrite(ledg4,HIGH);
digitalWrite(ledy4,HIGH);
digitalWrite(ledr4,HIGH);
36
delay(200);
if(hour == akhirflash){
return;
}
mulaiflash();
}
Module ESP8266 ini sudah jarang digunakan untuk projek-projek IOT kerana ke-
tidak-stabilan connection WiFi nya, juga disebabkan kaedah sambungan
wiring yang rumit kerana perlu menggunakan Resistor.
Jika anda sedang membuat projek IOT, kami galakkan anda terus
menggunakan NodeMCU, iaitu sejenis Arduino yang mempunyai ‘Built-In’
WiFi Module yang lebih berkualiti.
37
Module WiFi ESP8266 (ESP-01)
• Tx ESP – Tx UNO
• Rx ESP – Rx UNO (melalui voltage divider) – Tx UNO (melalui Voltage
38
Divider)
• Tx ESP – Rx UNO
• Rx ESP – Tx UNO (melalui voltage divider) – Tx UNO (melalui Voltage
Divider)
Sebelum upload
sketch, pastikan Module ESP8266 TIDAK- DISAMBUNGKAN. Upload sketch
kosong dengan Void Setup dan Void Loop sahaja ke dalam Arduino UNO.
Sketch ini juga dikenali sebagai sketch “Bare-Minimum”.
Selepas sketch kosong di-Upload, CABUT semula USB dan power, untuk
off kan UNO Board.
39
Kemudian sambungkan Module ESP mengikut wiring-diagram di bawah.
(3 biji resistor 1k ohm adalah menjadi voltage divider supaya signal yang
pergi ke pin Rx ESP adalah 3.3V, manakala voltage selebihnya diground-
kan)
Pastikan Pin Tx ESP disambungkan pada Pin Tx UNO dan Pin Rx ESP
(bersama voltage divider) sambung pada Pin Rx UNO.
40
AT+GMR – Lihat Version AT dan SDK
“AT+GMR” akan meminta ESP nyatakan version software AT dan SDK yang
ada dalam flash memorynya.
41
mana router/wifi berdekatan
Mode 2 – Mode AP (Access Point) , di mana ESP menjadi router
yang boleh di-access oleh mana-mana device lain. Dalam mode 2,
anda boleh memberi command untuk melihat Nama AP juga boleh
memberi password
Mode 3 – Mode Station + AP, dalam mode ini, ESP boleh dipilih
untuk menjadi AP atau Station
42
sedang disambung pada ESP.
Advance AT+COMMAND
Sekiranya anda mempunyai sebarang kemusykilan dan mahu mengetahui
lebih mengenai semua AT Command yang ada, anda boleh lihat document
lengkap di URL berikut dari Sparkfun :
• ESP8266 AT Instructions
43
FT232RL FTDI USB to TTL Serial
Adapter Module
Ada juga yang menggunakan Software Communication lain seperti Putty
dan lain-lain. Putty mempunyai display seperti ruangan Command
Promt/MS-Dos.
44
Selepas membukan Serial Monitor, tukar setting Baud Rate pada default
Baud Rate 115200.
(module ESP dari tempat lain mungkin mempunyai Baud Rate default yang
berlainan, pastikan anda check datasheet mereka)
Kemudian, tukarkan setting “No Line Ending” pada “Both NL & CR” di
ruangan bawah kanan Serial Monitor.
AT – Test AT Startup
Dengan menulis “AT” pada Serial Monitor dan enter, anda memberi
command pada module ESP untuk Start dalam mode AT.
Jika module ok dan tidak bermasalah, anda pasti akan dapat return “OK”
dari ESP.
45