Мой проект V1. Коробка от маршрутизатора + погодная станция.

Тема в разделе "Глядите, что я сделал", создана пользователем Максим B, 4 окт 2013.

  1. Максим B

    Максим B Гуру

    Фотки.
     

    Вложения:

    • IMG244.jpg
      IMG244.jpg
      Размер файла:
      413,4 КБ
      Просмотров:
      1.196
    • IMG245.jpg
      IMG245.jpg
      Размер файла:
      358,4 КБ
      Просмотров:
      1.730
    • IMG246.jpg
      IMG246.jpg
      Размер файла:
      329,1 КБ
      Просмотров:
      1.412
    • IMG247.jpg
      IMG247.jpg
      Размер файла:
      159,5 КБ
      Просмотров:
      1.333
  2. Megakoteyka

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

    Как насчёт схемы, кода, описания?
     
  3. Максим B

    Максим B Гуру

    Код (Text):
    #include <SPI.h>
    #include <String.h>
    #include <Ethernet.h>
    #include "dht.h"
    #include "Wire.h"
    #include "Adafruit_BMP085.h"
    #include <LiquidCrystal_I2C.h>

    // ====================================================================================
    // ========================Задаем данные сети==========================================
    byte mac[] = { 0xCA, 0xAF, 0x78, 0x1C, 0x13, 0x77 }; //mac - адрес ethernet shielda
    byte ip[] = { 192, 168, 0, 107 };        // ip адрес ethernet shielda
    byte subnet[] = { 255, 255, 255, 0 }; //маска подсети
    EthernetServer server(58798); //порт сервера
    int ledPin = 4; // указываем что светодиод будет управляться через 4 Pin
    String readString = String(30); //string for fetching data from address
    boolean LEDON = false; //изначальный статус светодиода - выключен
    // ====================================================================================
    LiquidCrystal_I2C lcd(0x27,16,2);

    //#define DHTPIN A0    // пин для датчика DHT22
    const unsigned char OSS = 0;  // Oversampling Setting
    // ====================================================================================
    DHT sensor = DHT();
    Adafruit_BMP085 bmp;

    // ========================СТАРТУЕМ===================================================
    // ========================Управляем св.диодом на 4-м пине============================
    void setup(){
      //запускаем Ethernet
      Ethernet.begin(mac, ip, subnet);
      //устанавливаем pin 4 на выход
      pinMode(ledPin, OUTPUT);
     
     
      //enable serial datada print
      Serial.begin(9600);
          Serial.println("Port Test!"); // Тестовые строки для отображения в мониторе порта
          Serial.println("GO!");// Тестовые строки для отображения в мониторе порта
         
          sensor.attach(3); // подключаем датчик температуры  к 3 пину, барометр к A4, A5 и прочее
          bmp.begin();
          delay(1000);
         
          lcd.init();                      // Инициализация lcd          
      lcd.backlight();                
    }
    // ===================================================================================
    void loop(){
      // ========================ДАТЧИКИ==================================================
      sensor.update();
        float t = sensor.getTemperatureInt();
        float h = sensor.getHumidityInt();
        Serial.println(t);
        Serial.println(h);
        float tdpa = bmp.readTemperature();
        float Pa0 = (bmp.readPressure());
        float Pa = (bmp.readPressure()/133.33);// переводим в мм.рт.ст.
        float Pa2 = (bmp.readPressure()/3386.582);// переводим в дм.рт.ст.
       
        delay(2000);
       
      lcd.setCursor(0, 0);              // Устанавливаем курсор в начало 2 строки
      lcd.print("C=");
      lcd.setCursor(2, 0);
      lcd.print(bmp.readTemperature());
      lcd.setCursor(8, 0);
      lcd.print("H=");
      lcd.print(sensor.getHumidityInt());
      lcd.setCursor(12, 0);
      lcd.print("%");
     
      lcd.setCursor(0, 1);
      lcd.print("Davlenie=");
      lcd.print(bmp.readPressure()/133.33);
       
    // =============Создаем клиентское соединение====================================
      EthernetClient client = server.available();
      if (client) {
        while (client.connected()) {
        if (client.available()) {
          char c = client.read();
          //read char by char HTTP request
          if (readString.length() < 30) {
            //store characters to string
            readString.concat( c); }
            //output chars to serial port
            Serial.print( c);
            //if HTTP request has ended
            if (c == '\n') {
            //Проверяем включили ли светодиод?
            //Level=1 - включен
            //Level=0 - выключен
              if(readString.indexOf("Level=1") >=0) {
                //Включаем светодиод
                digitalWrite(ledPin, HIGH); // set the LED on
                LEDON = true;
              }else{
                //Выключаем светодиод
                digitalWrite(ledPin, LOW); // set the LED OFF
                LEDON = false;
              }  
      // =============Формируем HTML-страницу=================================================
            client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println();
              client.println("<head> ");
              client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> ");
              client.println("<title> ::Arduino:: V1.1</title>");
              client.println("</head> ");
              client.println("<body");
              client.println("<hr />");
              client.println("<h1> ::Упр.Arduino:: </h1>");
              if (LEDON){
                client.println("<form method=get name=LED><input type=radio name=Level value=1 CHECKED>Включить<input type=radio name=Level value=0>Выключить<input type=submit value=OK></form>");
                client.println("<font size=’5′>LED-статус: ");
                client.println("<font size=’5′>Вкл.");
              }else{
                client.println("<form method=get name=LED><input type=radio name=Level value=1>Включить<input type=radio name=Level value=0 CHECKED>Выключить<input type=submit value=OK></form>");
                client.println("<font size=’5′>LED-статус: ");
                client.println("<font size=’5′>Выкл");
              }
            //==============Вывод значений на web-страницу============================
                  client.println("<hr />");//линия=====================================
                client.println("Tемпература = ");    //Температура с DHT 22
                client.println(t);
                client.println(" *C");
                  client.println("<br> "); //перенос на след. строчку
                client.println("Влажность = ");    //Влажность с DHT 22
                client.println(h);
                client.println(" %\t");
                  client.println("<br> "); //перенос на след. строчку
                  client.println("<hr />");//линия=====================================
                client.println("Давление = ");    //давление с BMP 085
              client.println(Pa);
                client.println(" mm.рт.ст.");
                  client.println("<br> "); //перенос на след. строчку
                client.println("<hr />");  //линия=====================================
                client.println("Давление = ");    //давление с BMP 085
                client.println(Pa2);
                client.println(" in Hg");
                  client.println("<br> "); //перенос на след. строчку
                  client.println("<hr />");  //линия=====================================
                client.println("Tемпература внутреняя = ");//температура с BMP 085
          client.println(tdpa);
              client.println(" *C");
                client.println("<br> "); //перенос на след. строчку
                  client.println("<hr />");  //линия=====================================
                //====================================================================      
              client.println("</body></html>");
                //очищаем строку для следующего считывания    
                //==============Останавливаем web-client===============================
                readString="";
                client.stop();
              //====================================================================
              }
           
        }
        }}}
     


     
     
    Megakoteyka нравится это.
  4. Максим B

    Максим B Гуру

  5. Максим B

    Максим B Гуру

    Доработал проект. Убрал breadboard. И закрыл полностью коробку.
     

    Вложения:

    • IMG248.jpg
      IMG248.jpg
      Размер файла:
      379,2 КБ
      Просмотров:
      1.289
    • IMG249.jpg
      IMG249.jpg
      Размер файла:
      340,6 КБ
      Просмотров:
      1.231
    • IMG250.jpg
      IMG250.jpg
      Размер файла:
      405,4 КБ
      Просмотров:
      1.210
    • IMG251.jpg
      IMG251.jpg
      Размер файла:
      437,7 КБ
      Просмотров:
      964
    • IMG252.jpg
      IMG252.jpg
      Размер файла:
      487,2 КБ
      Просмотров:
      1.242
    • IMG253.jpg
      IMG253.jpg
      Размер файла:
      343,5 КБ
      Просмотров:
      1.110
  6. nikolay2680

    nikolay2680 Нуб

    Помогите на страничку добавить время и дату через модуль часы реального времени.
    S105 " I2C RTC dip-ds1307 AT24C32 для Arduino 51 AVR ARM PIC
    На дисплей этого не нужно.
    Как на дисплее увидеть знак процентов на измерении влажности в конце у меня показывает пример: 34%00 а хотелось бы так:34.00%
     

    Вложения:

  7. Максим B

    Максим B Гуру

    А если при выводе поставить lcd.setCursor(12, 0); lcd.print("%"); вот такую строку lcd.setCursor(15, 0); lcd.print("%");
     
  8. nikolay2680

    nikolay2680 Нуб

    Ок . получилось. Ещё бы с часами разобраться как прописать А потом как Сюда показания добавить http://narodmon.ru/
     
  9. Apofiz

    Apofiz Гик

    Дык может не изобретать велосипед а взять готовый проект и не мучаться.
     
  10. nikolay2680

    nikolay2680 Нуб

    Этот нравится
     
  11. Максим B

    Максим B Гуру

    Я когда-то хотел разместиться на данном ресурсе, но не получилось с 1-го раза, а потом и не пробовал.