Begär sensordata via SMS med Arduino och SIM900 GSM
Begär sensordata via SMS med Arduino och SIM900 GSM
Hej!
Jag håller på ett projekt som ska visa sensordata via SMS som ska användas till att hålla koll på temperaturen i mina fiskevatten
Dessa komponenter ska jag använda i projektet Arduino UNO - SIM900 GSM Modul - Vattentät tempgivare DS18B20
Problemet är att jag har en sketch men den fungerar bara med DHT sensor som inte är vattentät.
Har även sketch till sensor DS18B20 men i den ingår inte SIM900 GSM Modul.
Så nu håller jag på att försöka kombinera dessa 2 sketcher men får det inte att fungera, så min undrar är om det finns någon i detta forumet som kan hjälpa mig?
Jag håller på ett projekt som ska visa sensordata via SMS som ska användas till att hålla koll på temperaturen i mina fiskevatten
Dessa komponenter ska jag använda i projektet Arduino UNO - SIM900 GSM Modul - Vattentät tempgivare DS18B20
Problemet är att jag har en sketch men den fungerar bara med DHT sensor som inte är vattentät.
Har även sketch till sensor DS18B20 men i den ingår inte SIM900 GSM Modul.
Så nu håller jag på att försöka kombinera dessa 2 sketcher men får det inte att fungera, så min undrar är om det finns någon i detta forumet som kan hjälpa mig?
Re: Begär sensordata via SMS med Arduino och SIM900 GSM
Hej och välkommen! Tja, börja med att lägga ut din sketch eller bägge två så får du säkert många svar och lösningar...
Re: Begär sensordata via SMS med Arduino och SIM900 GSM
Här är sketchen som jag vill använda men med Sensor DS18b20
// Include DHT library and Adafruit Sensor Library
#include "DHT.h"
#include <Adafruit_Sensor.h>
//Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>
// Pin DHT is connected to
#define DHTPIN 2
// Uncomment whatever type of sensor you're using
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
// Create global varibales to store temperature and humidity
float t; // temperature in celcius
float f; // temperature in fahrenheit
float h; // humidity
// Configure software serial port
SoftwareSerial SIM900(7, ;
// Create variable to store incoming SMS characters
char incomingChar;
void setup() {
dht.begin();
Serial.begin(19200);
SIM900.begin(19200);
// Give time to your GSM shield log on to network
delay(20000);
Serial.print("SIM900 ready...");
// AT command to set SIM900 to SMS mode
SIM900.print("AT+CMGF=1\r");
delay(100);
// Set module to send SMS data to serial out upon receipt
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
}
void loop(){
if (SMSRequest()){
if(readData()){
delay(10);
// REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
// USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
SIM900.println("AT + CMGS = \"+XXXXXXXXXX\"");
delay(100);
// REPLACE WITH YOUR OWN SMS MESSAGE CONTENT
String dataMessage = ("Temperature: " + String(t) + "*C " + " Humidity: " + String(h) + "%");
// Uncomment to change message with farenheit temperature
// String dataMessage = ("Temperature: " + String(f) + "*F " + " Humidity: " + String(h) + "%");
// Send the SMS text message
SIM900.print(dataMessage);
delay(100);
// End AT command with a ^Z, ASCII code 26
SIM900.println((char)26);
delay(100);
SIM900.println();
// Give module time to send SMS
delay(5000);
}
}
delay(10);
}
boolean readData() {
//Read humidity
h = dht.readHumidity();
// Read temperature as Celsius
t = dht.readTemperature();
// Read temperature as Fahrenheit
f = dht.readTemperature(true);
// Compute temperature values in Celcius
t = dht.computeHeatIndex(t,h,false);
// Uncomment to compute temperature values in Fahrenheit
//f = dht.computeHeatIndex(f,h,false);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return false;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
//Uncomment to print temperature in Farenheit
//Serial.print(f);
//Serial.print(" *F\t");
return true;
}
boolean SMSRequest() {
if(SIM900.available() >0) {
incomingChar=SIM900.read();
if(incomingChar=='S') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar =='T') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='A') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='T') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='E') {
delay(10);
Serial.print(incomingChar);
Serial.print("...Request Received \n");
return true;
}
}
}
}
}
}
return false;
}
Och här är sketchen med sensor DS18b20
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
void setup(void)
{
// Start serial communication for debugging purposes
Serial.begin(9600);
// Start up the library
sensors.begin();
}
void loop(void){
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" - Fahrenheit temperature: ");
Serial.println(sensors.getTempFByIndex(0));
delay(1000);
}
// Include DHT library and Adafruit Sensor Library
#include "DHT.h"
#include <Adafruit_Sensor.h>
//Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>
// Pin DHT is connected to
#define DHTPIN 2
// Uncomment whatever type of sensor you're using
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
// Create global varibales to store temperature and humidity
float t; // temperature in celcius
float f; // temperature in fahrenheit
float h; // humidity
// Configure software serial port
SoftwareSerial SIM900(7, ;
// Create variable to store incoming SMS characters
char incomingChar;
void setup() {
dht.begin();
Serial.begin(19200);
SIM900.begin(19200);
// Give time to your GSM shield log on to network
delay(20000);
Serial.print("SIM900 ready...");
// AT command to set SIM900 to SMS mode
SIM900.print("AT+CMGF=1\r");
delay(100);
// Set module to send SMS data to serial out upon receipt
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
}
void loop(){
if (SMSRequest()){
if(readData()){
delay(10);
// REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
// USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
SIM900.println("AT + CMGS = \"+XXXXXXXXXX\"");
delay(100);
// REPLACE WITH YOUR OWN SMS MESSAGE CONTENT
String dataMessage = ("Temperature: " + String(t) + "*C " + " Humidity: " + String(h) + "%");
// Uncomment to change message with farenheit temperature
// String dataMessage = ("Temperature: " + String(f) + "*F " + " Humidity: " + String(h) + "%");
// Send the SMS text message
SIM900.print(dataMessage);
delay(100);
// End AT command with a ^Z, ASCII code 26
SIM900.println((char)26);
delay(100);
SIM900.println();
// Give module time to send SMS
delay(5000);
}
}
delay(10);
}
boolean readData() {
//Read humidity
h = dht.readHumidity();
// Read temperature as Celsius
t = dht.readTemperature();
// Read temperature as Fahrenheit
f = dht.readTemperature(true);
// Compute temperature values in Celcius
t = dht.computeHeatIndex(t,h,false);
// Uncomment to compute temperature values in Fahrenheit
//f = dht.computeHeatIndex(f,h,false);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return false;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
//Uncomment to print temperature in Farenheit
//Serial.print(f);
//Serial.print(" *F\t");
return true;
}
boolean SMSRequest() {
if(SIM900.available() >0) {
incomingChar=SIM900.read();
if(incomingChar=='S') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar =='T') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='A') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='T') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='E') {
delay(10);
Serial.print(incomingChar);
Serial.print("...Request Received \n");
return true;
}
}
}
}
}
}
return false;
}
Och här är sketchen med sensor DS18b20
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
void setup(void)
{
// Start serial communication for debugging purposes
Serial.begin(9600);
// Start up the library
sensors.begin();
}
void loop(void){
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" - Fahrenheit temperature: ");
Serial.println(sensors.getTempFByIndex(0));
delay(1000);
}
Re: Begär sensordata via SMS med Arduino och SIM900 GSM
Hejsan
Skulle rekommendera att lägga in kod med kodtaggar, ringade in knappen du behöver trycka på för att få fram ”taggarna”
Gjorde jobbet åt dig nu
————
NisseL66
Här är sketchen som jag vill använda men med Sensor DS18b20
Och här är sketchen med sensor DS18b20
Skulle rekommendera att lägga in kod med kodtaggar, ringade in knappen du behöver trycka på för att få fram ”taggarna”
Gjorde jobbet åt dig nu
————
NisseL66
Här är sketchen som jag vill använda men med Sensor DS18b20
Kod: Markera allt
// Include DHT library and Adafruit Sensor Library
#include "DHT.h"
#include <Adafruit_Sensor.h>
//Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>
// Pin DHT is connected to
#define DHTPIN 2
// Uncomment whatever type of sensor you're using
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
// Create global varibales to store temperature and humidity
float t; // temperature in celcius
float f; // temperature in fahrenheit
float h; // humidity
// Configure software serial port
SoftwareSerial SIM900(7, 8);
// Create variable to store incoming SMS characters
char incomingChar;
void setup() {
dht.begin();
Serial.begin(19200);
SIM900.begin(19200);
// Give time to your GSM shield log on to network
delay(20000);
Serial.print("SIM900 ready...");
// AT command to set SIM900 to SMS mode
SIM900.print("AT+CMGF=1\r");
delay(100);
// Set module to send SMS data to serial out upon receipt
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
}
void loop(){
if (SMSRequest()){
if(readData()){
delay(10);
// REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
// USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
SIM900.println("AT + CMGS = \"+XXXXXXXXXX\"");
delay(100);
// REPLACE WITH YOUR OWN SMS MESSAGE CONTENT
String dataMessage = ("Temperature: " + String(t) + "*C " + " Humidity: " + String(h) + "%");
// Uncomment to change message with farenheit temperature
// String dataMessage = ("Temperature: " + String(f) + "*F " + " Humidity: " + String(h) + "%");
// Send the SMS text message
SIM900.print(dataMessage);
delay(100);
// End AT command with a ^Z, ASCII code 26
SIM900.println((char)26);
delay(100);
SIM900.println();
// Give module time to send SMS
delay(5000);
}
}
delay(10);
}
boolean readData() {
//Read humidity
h = dht.readHumidity();
// Read temperature as Celsius
t = dht.readTemperature();
// Read temperature as Fahrenheit
f = dht.readTemperature(true);
// Compute temperature values in Celcius
t = dht.computeHeatIndex(t,h,false);
// Uncomment to compute temperature values in Fahrenheit
//f = dht.computeHeatIndex(f,h,false);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return false;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
//Uncomment to print temperature in Farenheit
//Serial.print(f);
//Serial.print(" *F\t");
return true;
}
boolean SMSRequest() {
if(SIM900.available() >0) {
incomingChar=SIM900.read();
if(incomingChar=='S') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar =='T') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='A') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='T') {
delay(10);
Serial.print(incomingChar);
incomingChar=SIM900.read();
if(incomingChar=='E') {
delay(10);
Serial.print(incomingChar);
Serial.print("...Request Received \n");
return true;
}
}
}
}
}
}
return false;
}
Kod: Markera allt
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
void setup(void)
{
// Start serial communication for debugging purposes
Serial.begin(9600);
// Start up the library
sensors.begin();
}
void loop(void){
// Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
// Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" - Fahrenheit temperature: ");
Serial.println(sensors.getTempFByIndex(0));
delay(1000);
}
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Begär sensordata via SMS med Arduino och SIM900 GSM
> "Gjorde jobbet åt dig nu "
Men tappade indententeringen, så det är bättre att göra jobbet själv.
Men tappade indententeringen, så det är bättre att göra jobbet själv.
Re: Begär sensordata via SMS med Arduino och SIM900 GSM
Ja det är nog en del pilla... Men gör en tredje sketch där man tex utgår från den som har GSM-modulen och ta bort allt som har med den sensorn att göra som du inte vill ha. Sedan ange dom #include, #define och variabler som du behöver istället.
Re: Begär sensordata via SMS med Arduino och SIM900 GSM
Har börjat med en 3:e sketch som borde se ut något i den här stilen en del jobb kvar.
Kod: Markera allt
#include <OneWire.h>
#include <SoftwareSerial.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
SoftwareSerial SIM900(7, 8);
char incomingChar;
void setup(){
Serial.begin(9600);
sensors.begin();
Serial.begin(19200);
SIM900.begin(19200);
delay(20000);
Serial.print("SIM900 ready...");
SIM900.print("AT+CMGF=1\r");
delay(100);
SIM900.print("AT+CNMI=2,2,0,0,0\r");
delay(100);
}
void loop(){
sensors.requestTemperatures();
Serial.print("Celsius temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print(" - Fahrenheit temperature: ");
Serial.println(sensors.getTempFByIndex(0));
delay(10000);
if (SMSRequest()){
if(readData()){
delay(10);
SIM900.println("AT + CMGS = \"+XXXXXXXXXX\"");
delay(100);
SIM900.print(dataMessage);
delay(100);
SIM900.println((char)26);
delay(100);
SIM900.println();
delay(5000);
}
}
delay(10);
}
boolean readData() {
- Lennart Aspenryd
- Tidigare Lasp
- Inlägg: 12607
- Blev medlem: 1 juli 2011, 19:09:09
- Ort: Helsingborg
Re: Begär sensordata via SMS med Arduino och SIM900 GSM
Blev ett misstag som nu är ändrat till 19200