Проблема с СМС (Sim900+Arduino UNO+DHT11)

Тема в разделе "Arduino & Shields", создана пользователем StepVik, 13 ноя 2019.

  1. DetSimen

    DetSimen Guest

    Надо не извращаца, а зрить в корень, нахрена ТС-у влажность и температура с двумя цифрами после запятой?
    Мне вот, лично, пофиг -29 градусов на улице, или -29.2.
    С влажностью то же самое.
    Тенболее, даччик у него DHT-11.
     
    SergeiL нравится это.
  2. SergeiL

    SergeiL Оракул Модератор

    Это то понятно, я написал, как правильно :)
     
    DetSimen нравится это.
  3. SergeiL

    SergeiL Оракул Модератор

    Увидел -29.2, подумал - исправил с "abs()" :)
     
    Daniil и DetSimen нравится это.
  4. SergeiL

    SergeiL Оракул Модератор

    А Вы компилятор свой используете или чужой?
    Что уже запретили компиляторы писать? ;)
    Или в кодах набираете?
     
  5. Airbus

    Airbus Радиохулиган Модератор

    Все просто-как апельсин.проверяйте в железе.
    Код (Text):
    #include <Adafruit_Sensor.h>
    #include "DHT.h"
    #define DHTPIN 2     //Пин2 DHT
    // Uncomment whatever type you're using!
    #define DHTTYPE DHT11   // DHT 11
    //#define DHTTYPE DHT22   // DHT 22  (AM2302)
    //#define DHTTYPE DHT21   // DHT 21 (AM2301)
    // Connect pin 1 (on the left) of the sensor to +5V
    // Connect pin 2 of the sensor to whatever your DHTPIN is
    // Connect pin 4 (on the right) of the sensor to GROUND
    // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
    DHT dht(DHTPIN, DHTTYPE);
    int power = 9 ; // подача питания пин 9
    void setup ()
    {
    // инициализируем пин, подключенный к кнопке, как вход
    // пин 9 для включения шилда
    pinMode(power, OUTPUT);  // 9 выход
    digitalWrite(power,HIGH); //подали питание для включения шилда
    delay(1000); //на 1 сек
    digitalWrite(power,LOW); //сняли питание для включения шилда
    Serial.begin(9600);
    Serial.println("DHTxx test!");
    dht.begin();
    delay(2000); //ждём
    }
    void loop()
      {
        // Reading temperature or humidity takes about 250 milliseconds!
      // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
      float h = dht.readHumidity();
      float t = dht.readTemperature();
      // check if returns are valid, if they are NaN (not a number) then something went wrong!
      if (isnan(t) || isnan(h)) {
        Serial.println("Failed to read from DHT");
                                }
            if (1) // сработал датчик
           {
        delay(100);// Ждём
        Serial.println("AT+CMGF=1"); // Режим работы текст
        Serial.println("AT+CMGS = \"+7922272****\"");//и пуляем СМС
        delay(100);
        // Пишем текст сообщения
        Serial.print("Humidity: ");
        Serial.print(h);
        delay(100);
        Serial.print(" %\t");
        delay(100);
        Serial.print("Temperature: ");
        delay(100);
        Serial.print(t);
        delay(100);
        Serial.println(" *C");
        delay(100);
        // Отправляем Ctrl+Z, обозначая, что сообщение готово
        Serial.print((char)26);
                        }
         delay(10000);
       
        }
     
    Последнее редактирование: 14 ноя 2019
    StepVik нравится это.
  6. a1000

    a1000 Гуру

    Ну не сравнивайте. Я не спорю, что библиотеки нужны. Новичку, с разгону, освоить, например, обмен по I2C с часами DS3231 будет весьма затруднительно. Да и желание заниматься микроконтроллерами может отбить напрочь. Но заменять простые и понятные АТ команды библиотекой, я считаю не правильно.
    Пытаюсь в ассемблере разобраться и после некоторого копания в нём начал немного по другому смотреть на скетчи ардуино.
     
    Daniil и Airbus нравится это.
  7. SergeiL

    SergeiL Оракул Модератор

    Пописать на ассемблере полезно, для общего развития.
    Но перейдя с асма на си, и посмотрев оптимизацию сишного кода в листингах, понимаешь, что нужно писать на си. ;)
     
    Daniil нравится это.
  8. Airbus

    Airbus Радиохулиган Модератор

    Знание асма и умение на ем писать помогает оптимизировать код на Си.В асме нет лишних телодвижений ну или почти нет.А на Си некоторые их делают (см.первый код в теме)
     
    Daniil нравится это.
  9. StepVik

    StepVik Нуб

    Всем огромное спасибо за ответы! СМС приходят и все отображается. НО! осталось последнее - это время через которое идет опрос. В коде это 30 секунд и при понижении температуры до требуемого значения эти СМС начинают приходить каждые 30 секунд) Как сделать так, чтобы СМС пришло 1 раз при низкой температуре и еще один, когда порог вернулся обратно в нормальное значение ?
     
  10. SergeiL

    SergeiL Оракул Модератор

    Это да.
    Но и на Асме новичок может такого накрутить :).
    Проблема в том, что асм под каждый процессор свой. И отлаживаться сложнее.
    А си - одинаковый.
    ИМХО зная нормально Си - писать на Асме нет смысла.
    Компактнее получится только за счет отсутствия проверок указателей и т.п. которые Си вставляет, а сам на асме не вставляешь.
    Но и это можно убрать через прагму и опции.
    Проверено.;)
     
  11. SergeiL

    SergeiL Оракул Модератор

    Флаг добавить.
    Послал - взвел в "1".
    Поднялась температура - скинул в "0".
     
    Daniil и StepVik нравится это.