DIY термометр для «Инстаграм» на arduino nano

    Продолжаем делать полезные и не очень смарт/умные/bluetooth девайсы на ардуино. В предыдущих статьях я рассказывал как сделать bluetooth машинку, bluetooth вольтметр и bluetooth пульт для телевизора, а сегодня речь пойдет о создании более модного, но менее полезного девайса. Этот давайс позволяет постить в instagram показания термометра с указанием точного времени и места производимых замеров температуры. Сначала покажу как это выглядит и работает на видео, а подробное описание будет уже под катом.


    А вот так будут выглядеть результаты измерений в «Инстаграм»:

    Теперь вкраце расскажу о конструкции и схеме подключения. Мой bluetooth/instagram термометр состоит из:
    Ардуино Нано
    Bluetooth модуль HC06
    Датчик температуры и влажности DHT11
    Ардуино Нано
    Bluetooth модуль HC06
    Датчик температуры и влажности DHT11
    Вообще, датчик температуры можно использовать любой из тех, которые возможно подключить к ардуино. Я, например, пробовал еще использовать DS18B20. Главное, чтобы под этот датчик существовала библиотека для ардуино. И совсем уж идеальный случай, если в библиотеке есть готовый скетч, который отправляет значения температуры в serial port. Тогда можно использовать именно этот скетч для передачи данных через bluetooth модуль. Тут все очень просто, но на всякий случай оставлю схему подключения и скетч для датчика DHT11, если кто-то захочет использовать именно его. Библиотека для dht 11
    скетч
    #include «DHT.h»
    #define DHTPIN 2
    #define DHTTYPE DHT11 // DHT 11
    DHT dht(DHTPIN, DHTTYPE);
    unsigned long a;
    void setup() {
    Serial.begin(9600);
    Serial.setTimeout(4);
    dht.begin();
    }

    void loop() {
    delay(2000);
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    float f = dht.readTemperature(true);
    if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(«Failed to read from DHT sensor!»);
    return;
    }
    if (Serial.available())
    { a = Serial.parseInt();
    if (a==1) {
    float hi = dht.computeHeatIndex(f, h);

    Serial.print(«Humidity: „);
    Serial.print(h);
    Serial.print(“ %\t»);
    Serial.print(«Temperature: „);
    Serial.print(t);
    Serial.print(“ *C „);
    }
    }
    }



    С “железной» частью разобрались, теперь можно приступать к написанию android-приложения. Проще всего его сделать используя среду визуальной разработки android-приложений App Inventor 2. Работает она из браузера, устанавливать ничего не нужно. Разберется любой ардуинщик. На скриншоте список элементов, используемых в приложении, их рассположение и некоторые характеристики.

    Само приложение тоже довольно простое и выглядит так:

    Состоит приложение всего из 5 блоков, два из которых (Listpicker) отвечают за подключение к одному из сопряженных bluetooth устройств. Screen1 выполняется только при запуске программы, доставая из памяти телефона мак-адрес последнего подключенного устройства, а также запуская определение адреса местоположения смартфона. Clock1 отвечает за смену показаний секундомера и проверяет, поступилп ли новая информация о температуре. Button1 отправляет запрос на ардуино для обновления информации, если понадобится.
    Ну и в заключении про внешний вид bluetooth/instagram термометра. Работает этот девайс у меня на балконе, поэтому воздейстрию природных явлений не подвержен, а следовательно и корпус ему не к чему.Возможно, если найдется какое-то простое решение для корпуса, когда-нибудь установлю его за окном, А пока выглядит bluetooth/instagram термометр так:

    Ну а андроид-приложение получилось таким:

    P.S. Для тех, кто вообще никогда не сталкивался с созданием приложений в App Inventor 2, я сделал видео с чуть более подробным описанием процесса создания этого приложения (для просмотра нужно перейти на ютуб).

    P.P.S. Сборник из более 100 обучающих материалов по ардуино для начинающих и профи тут
    Онлайн курс по ардуино на гиктаймс здесь.
    • +17
    • 27,3k
    • 4
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 4
      +8
      DHT11 вместо влажности измеряет погоду на Марсе. Советую использовать DHT22.
        +1
        Визуальное программирование под андроид. Кажется, я видел всё в этой жизни.
          0
          А если все-это сделать через wi-fi модуль? esp8266 вполне конкурентны по цене с bluetooth модулями и функционал у них хороший.

          Не совсем в тему, но:
          DHT22 это конечно классно, но у меня один из датчиков (который торчал на улице) перестало сниматься значение влажности, пишет 1% и все, никто не подскажет че за фигня?
            0
            а с wifi(с сокетами) не умеет работать App Inventor :) поэтому все проекты у автора на блютусе, но штука все равно интересная

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое