Hi...!
I build some apps for iOS and Mac for Modbus:
you can download here:https://apps.apple.com/id/developer/hadi-hidayat/id1608282304
Thanks!
Home » Posts filed under Serial
Hi...!
I build some apps for iOS and Mac for Modbus:
you can download here:https://apps.apple.com/id/developer/hadi-hidayat/id1608282304
Thanks!
This application is inspired by Arduino IDE Serial Monitor, with some improvements.
ModGateX (Multiple Modbus Gateway) dibuat oleh HadiSCADA, pada September 2020.
Aplikasi ini berfungsi sebagai penyambung (Gateway) dari beberapa peralatan Modbus, baik Modbus TCP ataupun Modbus RTU.
Bisa menangani beberapa Input dan beberapa Output (Multiple). Input sebagai Modbus RTU Master atau Modbus TCP Client dan Output sebagai Modbus TCP Server atau Modbus RTU Slave.
Aplikasi ini bisa juga berfungsi sebagai pengubah (Converter) dari Modbus RTU ke Modbus TCP dan atau sebaliknya.
Dalam satu Input bisa dibuat beberapa kelompok (Group) pembacaan register.
Semua pengaturan Input dan Output bisa disimpan ke dalam file Text, dan bisa dibuka lagi.
Langkah-langkah penggunaaan aplikasi ini:
Latar belakang permasalahan:
Saya mempunyai Arduino yang berfungsi sebagai pengolah data dari sensor. Kemudian saya ingin menyimpan data-data tersebut ke database SQL. Untuk bagian pembacaan sensor oleh Arduino sudah tidak ada masalah, tapi untuk menyimpan ke SQL bagaimanakah caranya? berikut adalah catatan saya dalam menemukan solusinya..
Sekilas mengenai ESP8266 :
Modul Wifi ESP8266 ini sebenarnya adalah sejenis Mikrokontroler juga, karena punya beberapa pin digital input/output, maupun analog dan pin serial. Kelebihan yang paling utama dari modul ini adalah sudah adanya Wifi, sehingga kita bisa memanfaatkannya untuk berkomunikasi dengan perangkat-perangkat lain selama terhubung dalam jaringan TCP/IP.
Sebenarnya pada Arduino juga bisa kita pakai shield khusus untuk koneksi Ethernet TCP atau Wifi. Hanya karena pada saat ini saya belum bisa mendapatkan modul/shield tersebut maka saya memutuskan untuk memanfaatkan modul Wifi ESP8266 karena kebetulan sudah ada.
Baiklah mari kita mulai. Seperti inilah sistem yang akan kita buat :
<?php$conn = new mysqli("localhost","root","123456","ardulog");// Check connectionif ($conn -> connect_errno) {echo "Failed to connect to MySQL: " . $conn -> connect_error;exit();}?>
<?phpinclude("connection.php");if(!empty($_POST)){$tag = $_POST["tag"];$value = $_POST["value"];$query = "INSERT INTO tblog (tag,value)VALUES ('".$tag."','".$value."')";if ($conn->query($query) === TRUE) {echo "Berhasil menyimpan data ke database";} else {echo "Error: " . $sql . "<br>" . $conn->error;}}?>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
String ssid = "AndroidAP_HD";
String pass = "hadilina8";
String msg = "";
void setup() {
Serial.begin(9600);
ConnectWifi();
}
void loop() {
if(Serial.available()){
while(Serial.available()){
msg += char(Serial.read());
}
}
if(msg.startsWith("*") && msg.endsWith("#")){
Serial.println(msg);
String cmd = msg;
msg = "";
if(cmd.substring(0,7)=="*>POST="){
int len = cmd.length();
String ns = cmd.substring(7,len-1);
String spage = splitString(ns, '$', 0);
String spost = splitString(ns, '$', 1);
post2server(spage, spost);
}
}
}
void ConnectWifi(){
WiFi.begin(ssid, pass);
int i=0;
while(WiFi.status() != WL_CONNECTED) {
delay(1000);
i+=1;
Serial.print(".");
if(i>20){
Serial.println("WiFi failed! ");
return;
}
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println(WiFi.localIP());
}
String splitString(String data, char separator, int index)
{
int found = 0;
int strIndex[] = { 0, -1 };
int maxIndex = data.length() - 1;
for (int i = 0; i <= maxIndex && found <= index; i++) {
if (data.charAt(i) == separator || i == maxIndex) {
found++;
strIndex[0] = strIndex[1] + 1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
}
void post2server(String page, String postData)
{
HTTPClient http;
http.begin(page);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.POST(postData);
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
http.end();
}
#include "SoftwareSerial.h"SoftwareSerial ss(2, 3);int i;void setup() {Serial.begin(9600);ss.begin(9600);i = 0;}void loop() {delay(10000);i += 1;String spost = "*>POST=";spost += "http://192.168.43.17/server_log.php";spost += "$";spost += "tag=loop";spost += "&value=";spost += i;spost += "#";ss.print(spost);Serial.println(spost);}