Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

SMS Suhu Balasan

Komponen dan persediaan

Arduino Mega 2560
× 1
Sensor Suhu DHT22
× 1
SIM800L
× 1
Resistor 10k ohm
× 1
Breadboard (generik)
× 1
Kabel jumper (generik)
× 1

Tentang proyek ini

Halo. Proyek ini adalah bagian dari proyek yang jauh lebih besar. Karena saya memiliki banyak masalah dengan bagian ini dan akhirnya menemukan solusi, saya memutuskan untuk membagikannya dengan komunitas dan berharap ini dapat membantu mereka dalam proyek mereka.

Deskripsi Proyek

Kirim SMS ke Arduino dan dapatkan suhu di rumah.

Perangkat Lunak

Untuk modul SIM800L, saya menggunakan Library “Seeeduino_GPRS-master”. Saya harus mengubah baris berikut di Pustaka “sim800.h” agar dapat berfungsi di MEGA:

#define SIM800_TX_PIN 8#define SIM800_RX_PIN 7 

...ke TX_PIN 10 dan RX_PIN 11. Untuk mengubah Library dari “SoftwareSerial” ke salah satu port Mega Serial, yaitu Serial3, terlalu sulit jadi saya mengambil jalan keluar yang mudah.

Masalahnya

Pada dasarnya, kode saya adalah contoh potong dan tempel dari dua perpustakaan:"DHT.h" dan "Seeeduino_GPRS-master". Masalah yang saya miliki adalah bahwa contoh "gprs.h" hanya menunjukkan cara mengirim pesan yang telah ditentukan dalam tanda kutip. Saya tidak tahu cara mengirim nilai float variabel dari sensor suhu saya. Hal ini juga berlaku dengan perpustakaan lain yang saya coba:“GPRS_SIM900-master” dan “SIM800L-master” .

Saya telah menghabiskan waktu berminggu-minggu mencari contoh WEB untuk memecahkan masalah saya dan tidak menemukannya. Saya telah menemukan posting forum tentang topik yang sama, dan untuk jiwa-jiwa terhilang yang malang yang tidak mendapatkan jawaban, saya harap Anda menemukan posting ini.

Jawabannya

Ubah nilai float menjadi String lalu String menjadi Char Array - sederhana!

Cuplikan Kode

 MyString =String(temp,0); //Konversi float ke StringMyString =(MyString + " Derajat C");// konversi string ke char dimulai di sini// Panjang (dengan satu karakter tambahan untuk terminator nol)int str_len =MyString.length() + 1; // Siapkan array karakter (buffer) char char_array[str_len];// Salin ke MyString.toCharArray(char_array, str_len);// konversi string ke char berakhir heregprs.sendSMS("04+++++++ +",char_array); //tentukan nomor telepon dan teks. 

Pengkabelan

Saya menggunakan baterai ULTRAFIRE 18650 untuk memasok daya ke modul sim. Nanti saya akan menambahkan pengatur tegangan pada rangkaian. Lihat tutorial ini.

Materi referensi

  • http://www.ayomaonline.com/programming/quickstart-sim800-sim800l-with-arduino/
  • https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf

Perpustakaan

  • https://github.com/Seeed-Studio/Seeeduino_GPRS
  • https://github.com/adafruit/DHT-sensor-library

Kode

  • DHT_SIMPosting.ino
DHT_SIMPosting.inoArduino
Kirim SMS "InTemp" meminta suhu dan balasan Arduino dalam Derajat C.
// Contoh sketsa pengujian untuk berbagai DHT kelembaban/sensor suhu// Ditulis oleh ladyada, domain publik#include "DHT.h"#define DHTPIN 2 // pin digital apa yang kita sambungkan#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321//#define DHTTYPE DHT21 // DHT 21 (AM2301)// Hubungkan pin 1 (di sebelah kiri) dari sensor ke +5V// Hubungkan pin 2 sensor ke apa pun DHTPIN Anda // Hubungkan pin 4 (di sebelah kanan) sensor ke GROUND// Hubungkan resistor 10K dari pin 2 (data) ke pin 1 (daya) dari sensor// Inisialisasi sensor DHT.DHT dht(DHTPIN, DHTTYPE);#include #include #define TIMEOUT 5000GPRS gprs;bool ITemp =false;float temp;String MyString;#define LED_PIN 13bool ledStatus;//Variabel untuk menampung baris terakhir keluaran serial dari SIM800char currentLine[500] ="";int currentLineIndex =0;//Boolean untuk disetel ke true jika notifikasi pesan ditemukan dan baris//baris keluaran serial berikutnya adalah aktual pesan SMS contentbool nextLineIsMessage =false;void Reply ()// Fungsi dimulai di sini{ Serial.println("GPRS - Kirim Tes SMS ..."); gprs.preInit(); penundaan (1000); while(0 !=gprs.init()) { delay(1000); Serial.print("init error\r\n"); } Serial.println("Berhasil, mulai mengirim pesan SMS..."); if (ITemp ==true){ float t =dht.readTemperature(); suhu =t; ITemp =salah; } MyString =String(temp,0); //Konversi float ke String MyString =(MyString + " Derajat C"); // konversi string ke karakter dimulai di sini // Panjang (dengan satu karakter tambahan untuk terminator nol) int str_len =MyString.length() + 1; // Siapkan array karakter (buffer) char char_array[str_len]; // Salin ke MyString.toCharArray(char_array, str_len); // konversi string ke char berakhir di sini gprs.sendSMS("04++++++++",char_array); //tentukan nomor telepon dan teks // Fungsi berakhir di sini}void setup() { Serial.begin(9600); Serial.println("Tes DHTxx!"); dht.mulai(); gprs.preInit(); penundaan (1000); while(0 !=gprs.init()) { delay(1000); Serial.print("init error\r\n"); //nanti tampilkan SIM ERROR di Halaman Beranda HMI Berikutnya } //Setel mode SMS ke ASCII if(0 !=gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT)) { ERROR( "KESALAHAN:CNMI"); kembali; } //Mulai mendengarkan Indikasi Pesan SMS Baru if(0 !=gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT)) { ERROR(" GALAT:CNMI"); kembali; } Serial.println("Init berhasil");}void loop() { // Tunggu beberapa detik di antara pengukuran. penundaan(2000); // Membaca suhu atau kelembapan membutuhkan waktu sekitar 250 milidetik! // Pembacaan sensor juga bisa sampai 2 detik 'lama' (sensornya sangat lambat) float h =dht.readHumidity(); // Baca suhu sebagai Celcius (default) float t =dht.readTemperature(); Serial.print("Kelembaban :"); Serial.print(h); Serial.println("%\t"); Serial.print("Suhu :"); Serial.print(t); Serial.println("*C"); SIM();}void SIM(){ //Tulis status saat ini ke pin LED digitalWrite(LED_PIN, ledStatus); Serial.println("Mencari SMS"); //Jika ada serial output dari SIM800 if(gprs.serialSIM800.available()){ char lastCharRead =gprs.serialSIM800.read(); //Baca setiap karakter dari serial output sampai \r atau \n tercapai (yang menunjukkan akhir baris) if(lastCharRead =='\r' || lastCharRead =='\n'){ String lastLine =String(currentLine); //Jika baris terakhir terbaca +CMT, Indikasi Pesan SMS Baru diterima. // Oleh karena itu, baris berikutnya adalah isi pesan. if(lastLine.startsWith("+CMT:")){ Serial.println(lastLine); nextLineIsMessage =benar; } else if (lastLine.length()> 0) { if(nextLineIsMessage) { Serial.println(lastLine); //Baca isi pesan dan atur status sesuai isi SMS if(lastLine.indexOf("InTemp")>=0){ Serial.println("InTemp"); ITemp =benar; Membalas (); // status led =1; // Serial.println("Nyalakan Lampu"); // } else if(lastLine.indexOf("LED OFF")>=0) { // ledStatus =0; // Serial.println("Matikan Lampu"); } nextLineIsMessage =salah; } } //Hapus array char untuk baris berikutnya dari read for( int i =0; i   

Skema


Proses manufaktur

  1. Kipas dengan pengatur suhu
  2. Pencatat Suhu Raspberry Pi
  3. Baca suhu dengan DS18B20 | Raspberry Pi 2
  4. Pemantauan Suhu di Raspberry Pi
  5. Mengukur suhu dengan RASPBERRY PI
  6. Memantau Suhu Dengan Raspberry Pi
  7. Proyek IoT 101:Aliran Suhu dari Raspberry Pi
  8. Laboratorium 'Stasiun Cuaca'
  9. Sensor Suhu Raspberry Pi
  10. Rover