Hello Sahabat Anak Kendali.
artikel kali ini akan melanjutkan tentang postingan sebelumnya tentang ESP8266. kali ini saya akan mencoba cara Menyimpan data Sensor dari arduino ke Database MySQL dengan ESP8266 yang diperlukan untuk projek ini adalah 1. Arduino, 2. ESP8266 3. Sensor (saya menggunakan Potentiometer sebagai sumber data yang akan dikirim ) 4. File PHP 6. Database MySqL pertama kita lakukan test ESP8266 terlebih dahulu, jika agan belum tau mengkonfigurasi ESP8266 silahkan baca terlebih dahulu Cara Mengkonfigurasi ESP8266 dengan Arduino Mega 2560 Selanjutnya membuat File PHP sebagai perantara mengirim data sensor Arduino ke MySQL jika sobat belum tau dasar PHP, silahkan terlebih dahulu membaca Belajar Pemograman PHP untuk Pemula setelah mempunyai file PHP nya selanjutnya kita harus mempunyai file database nya untuk yang belum tau cara membuat database di MySQL silahkan baca terlebih dahulu Cara Membuat Tabel Database MySQL dengan XAMPP baiklah sekarang ikuti tutorial lengkapnya,
1. upload program Arduino berikut :
#define nama_wifi "No Internet"
#define pass_wifi "chibakutensei"
#define ip_host "192.168.43.227"
int sensorPin = A0;
int nilai_sensor;
boolean connected = false;
void setup() {
// put your setup code here, to run once:
Serial1.begin(115200);
Serial.begin(9600);
Serial1.setTimeout(5000);
Serial.println("ESP8266 cek cek");
delay (1000);
Serial1.println("AT+RST");
delay(1000);
if(Serial1.find("WIFI GOT IP"))
{
Serial.println(" ESP8266 SIAP ");
}
else {
Serial.println(" Tidak Ada Response dari ESP8266 ");
while(1);
}
delay(1000);
for (int i=0; i<5; i++){
connect_to_wifi();
if (connected){
break;
}
}
if (!connected){
while(1);
}
delay(5000);
Serial1.println("AT+CIPMUX=0");
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
String cmd = "AT+CIPSTART="TCP","";
cmd+= ip_host;
cmd+="",80";
Serial1.println(cmd);
Serial.println(cmd);
if (Serial1.find("Error")){
Serial.println("Koneksi eror");
return;
}
nilai_sensor = analogRead(sensorPin);
cmd = "GET /arduinovb/index.php?data=";
cmd+=nilai_sensor;
cmd+="HTTP/1.0/1/rn";
cmd+="rn";
Serial1.print("AT+CIPSEND=");
Serial1.println(cmd.length());
if (Serial1.find(">")){
Serial.print(">");
} else {
Serial1.println("AT+CIPCLOSE");
Serial.println("Koneksi Timeout");
delay(1000);
return;
}
Serial1.print(cmd);
delay(2000);
while(Serial1.available())
{
char c =Serial1.read();
Serial.write(c);
if (c=='r') Serial.print('n');
}
Serial.println("-----end");
delay(10000);
}
void connect_to_wifi()
{
Serial1.println("AT+CWMODE=1");
String cmd = "AT+CWJAP="";
cmd+=nama_wifi;
cmd+="","";
cmd+=pass_wifi;
cmd+=""";
Serial1.println(cmd);
Serial.println(cmd);
if (Serial1.find("OK")){
Serial.println("Berhasil Terkoneksi ke internet");
connected=true;
} else {
Serial.println("Gagal Terkoneksi");
connected=false;
}
}
untuk ip_host silahkan isi dengan IPv4 komputer sobat jika ingin tau caranya klik WIN+R lalu tulis cmd dan ketikan “ipconfig”
jika sudah selesei sekarang kita akan membuat file PHP nya, silahkan tulis program dibawah ini dan beri nama “koneksi.php” <?php
$servername = "localhost";
$database = "my_database_2";
$username = "root";
$password = "";
$konek = mysqli_connect ($servername, $username, $password, $database);
/* if ($konek!=false){
echo "berhasil";
} else {
echo "gagal";}
*/
?>
Jika sudah di tulis pada Aplikasi Editor silahkan buat folder baru pada folder direktori C/xampp/htdocs/arduinovb/ lalu simpan file “koneksi.php” didalamnya selanjutnya kita akan membuat file “index.php” tuliskan program dibawah ini
<?php
include ("koneksi.php");
$var = $_GET['data'];
mysqli_query($konek, "INSERT INTO sensor(nilai_sensor) VALUES('$var')");
?>
simpan pada folder yang sama dengan file “koneksi.php” setelah selesai membuat file PHP sekarang kita membuat tabel databasenya, silahkan buat nama database nya “my_database_2” mengikuti variable pada kode PHP diatas dan buat tabel dengan nama “sensor” dengan jumlah kolom “1” dan beri nama kolomnya “nilai_sensor”
lalu pada browser sesuai IP komputer yang sudah di lihat melalui CMD tadi.
jangan sampai berbeda dengan variable yang ditulis pada file PHP nya, jika sudah selesei hasil outputnya seperti ini
Baiklah cukup sekian Artikel kali ini, jika ada kritik, saran, ataupun pertanyaan silahkan dikolom komentar!
keyword :
Anak kendali
anak kendali esp8266
esp8266 arduino
esp8266 mysql
esp8266 database mysql
menghubungkan esp8288 ke database mysql
arduino wifi
mengirim data arduino ke database mysql
Mantap…
mantapp , sangat bermanfaat
maaf mas mksdnya ini "setelah selesai membuat file PHP sekarang kita membuat tabel databasenya,
silahkan buat nama database nya "my_database_2" mengikuti variable pada kode PHP diatas
dan buat tabel dengan nama "sensor" dengan jumlah kolom "1" dan beri nama kolomnya "nilai_sensor" gimana ya mas? ane masih awam soal web mas:(
maksudnya, mas buat database dengan XAMPP di phpmyadmin dan di kasih nama "my_database_2" sesuai deklarasi variable di file koneksi.php, coba liat kode nya diatas ada $database = "my_database_2"
kemudian setelah membuat nama database mas buat tabel dan beri nama tabel nya "sensor" mengikuti kode di file "test1.php" disitu ada program untuk memanggil tabel database nya "INSERT INTO sensor(nilai_sensor)……."
sebenernya penamaan bebas yang penting sinkron dengan variable pada program php nya 🙂
semoga bisa dimengerti 🙂
file test1.php dimana ya mas ?
itu udah di ganti index mas
maaf mas ini kok eror di connect_to_wifi 'Serial1' was not declared in this scope, cara mengatasi nya bagaimana ya mas? maaf menganggu mas, terimakasih^^
gan kutipnya banyak yg error pas dicompile
muncul ini terus pas di compile
exit status 1
missing terminating " character
itu blom saya apa-apakan ubah apapun tapi udah muncul error
apakah agannya typo atau gmana ini ya?
mohon bantuannya gan
mohon maaf, setalah saya cek kembali sepertinya ada code yang kerubah akibat ke parse html template blog nya, sekarang kodenya sudah saya betulkan, dan semoga berhasil, karena kode di copy paste langsung dari hasil percobaan yang saya lakukan, terimakasih sudah memberi tahukan 🙂
untuk error Serial1, dikarenakan board pada menu tool tidak menggunakan arduino due atau arduino mega2560, jika menggunakan arduino uno atau nano silahkan baca di sini : https://www.anakkendali.com/2018/02/esp8266-cara-mengirim-data-ke-mysql-arduino-uno.html
Saya sudah punya program seperti diatas dan sudah terhubung ke Database dengan python, tapi kalau mau diubah dari python ke php gimana gan apa bisa?
bisa mas,, itu kan program aduino nya mengirim data ke php, dari php ke database,
jadi tinggal buat file php nya aja yang menghubungkan ke database, bisa diikutin mas tutorial diatas 🙂
mantap gan artikelnya, sangat bermanfaat ..
terimakasih gan
gan jika saya pake sensor gps apakah di arduino code nya jg harus diganti? apabila iya saya masukin code sensor saya dmn gan? mhon bantuan gan, makasih
di paling bawah bisa bikin void fungsi lagi misal
void sensorGPS (){
disini sensor gps nya kemudian ambil nilai gps nya
nilai_sensor = nilai gps
}
program void diatas tinggal panggil dalam void loop {
sensorGPS();
………………….
}
gan mau nanya, pernah coba kirim datanya ke web hosting gak? caranya sama atau tidak ya?
sama gan,, sesuaikan Ip nya saja
saya jalankan ko pesannya "koneksi timeout" terus ya? kira2 penyebabnya apa ya
menggunakan Arduino mega mas?
nilai_sensor = analogRead(sensorPin);
cmd = "GET /arduinovb/index.php?data=";
cmd+=nilai_sensor;
cmd+="HTTP/1.0/1/rn";
cmd+="rn";
Serial1.print("AT+CIPSEND=");
Serial1.println(cmd.length());
mau nanya mas, coding diatas kan ngirim 1 data sensor, kalau misalnya 3 data sebut saja data1, data2, data3 jadi kaya gimana ya codingnya
pernah nyoba kirim 3 data sekaligus,, tapi saya sendiri hasilnya belum maksimal,, gambaran hasilnya seperti ini di database
1 0 0
0 1 0
0 0 1
1 0 0
0 1 0
…….
……. dst
set TCP connection
AT+CIPSTART="TCP","192.168.0.11",80
>
Recv 54 bytes
SEND OK
+IPD,883:HTTP/1.1 400 Bad Reques—–end
maaf mas saya mau tanya lagi, ini 400 bad request karena apa ya?
saya nyoba ubah" di codingan add.php terus dikasi nilai sendiri lewat browser dan hasilnya mirip sama mas diatas. kalau untuk codingan di arduinonya mas ada referensi untuk fungsi GET nya ga?
kalau outputnya ditampilkan ke led P10 gimana caranya?
Selamat siang,
tulisannya sangat bermanfaat , terima kasih telah memberikan informasi tersebut.
saya ada pertanyaan, apakah bisa ya jika kita menggunakan mysql dan PHP untuk memberikan perintah ke arduino ? karna saya ingin membuat website untuk controller arduino tersebut.
Terima kasih
gan. punya ane kok sering timeout ya gan. itu kenapa?
cmd = "GET /arduinovb/index.php?data=";
maksudnya skrip diatas itu gimana ya gan
cmd itu variable string, GET fungsi code php untuk panggil data dari arduinovb(folder di laptop saya dalam htdocs)
gan punya ane niai sensornya kok tetep 0 ya dilocalhost. gak kaya punya agan yang bisa berubah ubah
wah mungkin perlu dicoba pembacaan sensor di tampilin di serial gan.. Mungkin sensornya
sudah bisa gan sensornya sudah ada nilainya saat ditampilkan.
cmd = "GET /arduinovb/index.php?data=";
index.php? ini yang bawaan saat install xampp kan gan?
coba lihat dong gan kodingan index.php?nya
agan bisa ganti codingan test1.php itu namanya index.php, atau bisa download projectnya disini gan
https://www.anakkendali.com/2018/02/esp8266-cara-mengirim-data-arduino-ke-vb.html
file phpnya gabisa di ekstrak gan
punten gan mau nanya.. file koneksinya di save di folder test1.. terus itu pas di get foldernya di arduinovb,, arduino vb itu didalam folder tes1. atau gimana ya gan
arduinovb didalam folder htdocs, didalam htdocs ada dua file php yang diatas,, kasih aja namanya koneksi.php dan index.php
maaf sebelumnya salah ketik yang di atas 🙂
Min punya ku sudah bisa semua. Cuma tinggal menampilkan di web lokal & databasenya. Di web local nya error seperti punya mu. Notice undefined data in …. line 4 itu min. Juga di database nilai sensornya nggk keluar. Gimana ya. Tolong oencerahannya
Komentar ini telah dihapus oleh pengarang.
SANGAT BERMANFAAT
untuk kodingnya gimana gan biar bisa ngirim lebih dari 1 sensor ? terimakasih
Parse error: syntax error, unexpected ‘INTO’ (T_STRING), expecting ‘)’
itu kenapa yaa ?
ada error kena codenya kerubah oleh web, seperti karakter ” –
sekarang sudah di perbaiki web nya.
silahkan buat nama database nya “my_database_2” mengikuti variable pada kode PHP diatas
itu maksudnya gimana ya ?
$database = my_database_2
itu code php ikutin nama database di phpMyadmin
Mas Kalo bwt konek ke postgres ada contohnya gk ya?
Mas, boleh tolong file .ino nya di upload mas, soalnya sy copas muncul error message
tes_sensor_with_esp8266:44:34: error: missing terminating ” character
muncul ini
exit status 1
missing terminating ” character
seharusnya penulisannya gimana ya gan
tulis ulang “
sudah ketemu,
sya menggunakan arduino mega
koneksi timout masalahnya apa yaa ?
Maaf gan, missing ” character mulu, udah saya otak-atik tapi ttep gak bisa
ada beeberapa karakter yang hilang karena web di programnya, seperti \ atau “
ada sketch yang bener gak gan?
sudah di perbaiki
jika ingin hosting online pada bagian define ip_host diisi alamat apa ya ?
domainya
Solusi biar engga timeout gimana yah bang pake arduino mega??
koneksi di gedein, server digedein.
Cara gedein server gimana bang?
gimana gimana maksudnya nih ?
Permisi bang mau bertanya kalau dari mysql ke arduino mega codenya gmn ya ?