Upload Data ThingSpeak menggunakan modul GSM SIM800L
Upload Data ThingSpeak menggunakan modul GSM SIM800L
Mulai dari post ini saya akan share mengenai modul GSM SIM800L. Modul ini memiliki beberapa fitur selayaknya pada HP jaman dulu (SMS, Voice, Koneksi GPRS). Dalam era IoT ini ada kalanya device kita jauh dari jangkauan Wifi. Sebagai opsi lainnya maka kita dapat menggunakan koneksi jaringan GSM ini untuk tetap terhubung ke internet. Monitoring maupun kontrol tetap bisa dilakukan via koneksi internet menggunakan modul ini. Secara udah gak jaman mainan SMS (tarifnya lebih mahal dari paket kuota internet 😊). Untuk referensi, saya akan berikan gambaran penggunaan modul GSM SIM800L dengan Arduino untuk mengirim data ke channel ThingSpeak untuk kegiatan Monitoring. Sensor yang digunakan dalam contoh ini adalah sensor suhu/kelembaban DHT22. Silahkan untuk sensor yang lainnya dapat menyesuaikan.
Pemantauan daya listrik menggunakan modul SIM800L, Pemantauan konsentrasi gas ThingSpeak menggunakan modul GSM SIM800L, SIM800L GPS Tracking,
A. Wiring
Beberapa perangkat dan sensor yang digunakan dalam tutorial ini adalah:
- Arduino Uno
- Modul GSM SIM800L (kayak gini)
- Modul LM2596 DC-DC Stepdown (kayak gini)
- Kabel-kabel atau perangkat penyambung lainnya (Proto board, Bread board, dll)
*Source = lastminuteengineers.com
Sebagaimana info dari datasheet SIM800L tegangan kerja untuk modul versi ini adalah 3.4V-4.4V, sementara apabila mau mensupply modul ini dari Arduino terpaksa harus melakukan step down dari pin power 5V. Oleh sebab itu maka diperlukan modul LM2596 DC-DC Stepdown yang dapat diatur keluarannya via trimmer potensiometer. Sebelum menghubungkan tegangan output ke pin VCC modul SIM800L, pastikan diukur terbelih dahulu. Jangan sampai tengangannya berlebih (Kasih tegangan aman di 3.7V saja).
Setelah setting tegangan output modul LM2596 di set sesuai spesifikasi, silahkan dilanjut untuk sambung menyambung dengan modul SIM800L dan arduino. Pin RXD terhubung ke arduino pin 7, sedangkan pin TXD terhubung ke arduino pin 6. Sementara untuk pin data dari sensor DHT 22 (pin 2) terhubung ke arduino pin 5.
Karena ada hubungannya dengan ThingSpeak sebagai tempat menyimpan data pemantauan, maka disiapkan terlebih dahulu channel yang akan menampung data tersebut. Sebagai contoh seperti berikut ini.
Selanjutnya, untuk proses menulis data dibutuhkan Write API key (lihat pada tab menu API Keys) yang secara langsung dapat diakses via GET request dengan format berikut:
Koneksi antara arduino dengan modul SIM800L adalah menggunakan komunikasi serial. Dalam program, akan dilakukan melalui software serial menggunakan pin 6 (RX) dan 7(TX). Perintah yang digunakan untuk mengoperasikan modul SIM800L adalah dengan struktur AT Command. Nah untuk memahami AT Command yang digunakan untuk modul SIM800L silahkan dapat dipelajari di Manual AT Command SIM800L.
Pastikan sudah install library DHT by adafruit terlebih dahulu. Library ini mempersyaratkan library lainnya yaitu Adafruit Unified Sensor. Versi library sesuai dengan yang digambar bawah ini.
Apabila sudah siap semua, maka dapat dicoba untuk program berikut dibawah ini. Hal yang perlu diperhatikan adalah Write API key dari channel ThingSpeak yang dibuat, dan APN dari kartu provider yang digunakan (saya menggunakan kartu 3 (APN=3gprs))
C. Hasil
Setelah program di berhasil upload, maka proses dapat dilihat pada serial monitor. Apabila proses GET request berhasi, maka akan diperoleh keterangan SEND OK dan pesan feedback dari ThingSpeak berupa nomor entry id.
Selanjutnya, untuk proses menulis data dibutuhkan Write API key (lihat pada tab menu API Keys) yang secara langsung dapat diakses via GET request dengan format berikut:
https://api.thingspeak.com/update?api_key=WRITE API KEY CHANNEL KAMU &field1=NILAI SUHU&field2=NILAI KELEMBABAN
Koneksi antara arduino dengan modul SIM800L adalah menggunakan komunikasi serial. Dalam program, akan dilakukan melalui software serial menggunakan pin 6 (RX) dan 7(TX). Perintah yang digunakan untuk mengoperasikan modul SIM800L adalah dengan struktur AT Command. Nah untuk memahami AT Command yang digunakan untuk modul SIM800L silahkan dapat dipelajari di Manual AT Command SIM800L.
Pastikan sudah install library DHT by adafruit terlebih dahulu. Library ini mempersyaratkan library lainnya yaitu Adafruit Unified Sensor. Versi library sesuai dengan yang digambar bawah ini.
Apabila sudah siap semua, maka dapat dicoba untuk program berikut dibawah ini. Hal yang perlu diperhatikan adalah Write API key dari channel ThingSpeak yang dibuat, dan APN dari kartu provider yang digunakan (saya menggunakan kartu 3 (APN=3gprs))
#include <SoftwareSerial.h> #include <String.h> #include <DHT.h> #define DHTPIN 5 SoftwareSerial SIM800L(6,7); //Serial SIM800L pin DHT dhtSensor(DHTPIN, DHT22); String Write_API_key = "AAAAAAAAAAVTZZZAHAHAA"; //Thingspeak Write API Key String apn = "3gprs"; float kelembaban; float suhu; void setup(){ Serial.begin(115200); SIM800L.begin(9600); dhtSensor.begin(); Serial.println("SIM800L GPRS Test"); delay(2000); } void loop(){ SetupModule(); SIM800L.println("AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",\"80\""); delay(3000); ShowSerialData(); SIM800L.println("AT+CIPSEND"); delay(2000); Serial.println(); ShowSerialData(); ReadSensor(); String str="GET https://api.thingspeak.com/update?api_key="+Write_API_key+"&field1=" + String(suhu) +"&field2="+String(kelembaban); Serial.println(str); delay(2000); SIM800L.println(str); delay(4000); ShowSerialData(); SIM800L.println((char)26); delay(4000); SIM800L.println(); ShowSerialData(); SIM800L.println("AT+CIPSHUT");//close the connection delay(500); ShowSerialData(); str=""; //total delay looping 50s delay(10000); //add 10s for 60s total delay looping } void ReadSensor(){ kelembaban = dhtSensor.readHumidity(); suhu = dhtSensor.readTemperature(); delay(500); Serial.println(); Serial.print("Temperature = ");Serial.print(suhu); Serial.print(" °C"); Serial.print("\t"); Serial.print("Humidity = ");Serial.print(kelembaban);Serial.println(" %"); } void SetupModule(){ if (SIM800L.available())Serial.write(SIM800L.read()); SIM800L.println("AT"); delay(1000); SIM800L.println("AT+CPIN?"); delay(1000); SIM800L.println("AT+CREG?"); delay(1000); SIM800L.println("AT+CGATT?"); delay(1000); SIM800L.println("AT+CIPSHUT");delay(1000); SIM800L.println("AT+CIPSTATUS"); delay(2000); SIM800L.println("AT+CIPMUX=0"); delay(2000); //setting the APN, SIM800L.println("AT+CSTT=\""+apn+"\"");delay(1000); ShowSerialData(); SIM800L.println("AT+CIICR"); delay(2000); ShowSerialData(); //get local IP adress SIM800L.println("AT+CIFSR"); delay(2000); ShowSerialData(); SIM800L.println("AT+CIPSPRT=0");delay(2000); ShowSerialData(); } void ShowSerialData(){ while(SIM800L.available()!=0) Serial.write(SIM800L.read()); delay(2000); }
C. Hasil
Setelah program di berhasil upload, maka proses dapat dilihat pada serial monitor. Apabila proses GET request berhasi, maka akan diperoleh keterangan SEND OK dan pesan feedback dari ThingSpeak berupa nomor entry id.
Cara Lain
Kalau yang diatas adalah cara native/dasar menggunakan komunikasi via protokol AT Command secara langsung, ada juga beberapa cara lain seperti menggunakan library agar fungsi-fungsinya menjadi lebih sederhana. Nah di bawah ini adalah contoh menggunakan library SIM800L HTTP Connector. Ada penambahan di skematiknya yaitu dengan menambahkan wiring ke pin Reset Modul SIM800L.
Selanjutnya install library SIM800L HTTP connector. Saya menggunakan versi 1.11.0
Untuk kode program arduinonya, dapat dicopas dibawah ini
Ok, Selamat mencoba dan berkreasi. Semoga bermanfaat. Salam!
29 komentar
you can edit with this-> SIM800L.println("AT+CSTT=\""+apn+"\",\"username\",\"password\"");
Kok ketika saya run di thingspeak nya cuma 1 titik terus yang muncul, gak berkelanjutan seperti pada gambar hasil(?)
terima kasih
ShowSerialData()
String str="GET https://api.thingspeak.com/update?api_key="+Write_API_key+"&field1=" + String(suhu) +"&field2="+String(kelembaban);
Pastika alamat web API dapat diakses.coba dicek lagi penulisan alamat web API untuk proses update apakah sudah sesuai atau belum (write key, value dari field 1 atau field 2)
tapi ketika saya lakukan command "AT+CIICR" dapatnya +PDP: DEACT ERROR
ini gimana ya gan?
atau silahkan dicoba cara yang kedua
AT+CIICR
+PDP: DEACT
always show me this.
can you help? someone know the problem.
AT
OK
AT+CPIN
ERROR
AT+CIPSHUT
SHUT OK
AT+CSTT="internet.itelcel.com","usuario","contraseña"
OK
AT+CIICR
+PDP: DEACT
ERROR
AT+CIICR command brings up the GPRS or CSD call depending on the configuration previously set by the AT+CSTT command. In the case that you are showing, there might be an error in the APN settings. make sure the username and password you enter is in accordance with the instructions from the mobile operator
maybe this will help: https://www.apnsettings.org/mexico/telcel-mx/
Itu setelah berhasil kirim data kenapa harus disconnect gprsnya mas?
bukannya untuk reconnect setiap menit malah takutnya ga bisa konek lagi
klo setau aku sih masih hal tsb belom bisa dilakukan