Posts | Comments

Planet Arduino

Archive for the ‘DHT22’ Category

It’s always good to see old hardware saved from the junk pile, especially when the end result is as impressive as this analog gauge weather display put together by [Build Comics]. It ended up being a truly multidisciplinary project, combing not only restoration work and modern microcontroller trickery, but a dash of woodworking for good measure.

Naturally, the gauges themselves are the real stars of the show. They started out with rusted internals and broken glass, but parts from a sacrificial donor and some TLC from [Build Comics] got them back in working order. We especially like the effort that was put into making the scale markings look authentic, with scans of the originals modified in GIMP to indicate temperature and humidity while retaining the period appropriate details.

To drive the 1940s era indicators, [Build Comics] is using an Arduino Nano and a DHT22 sensor that can detect temperature and humidity. A couple of trimmer pots are included for fine tuning the gauges, and everything is mounted to a small scrap of perfboard hidden inside of the custom-made pine enclosure.

This is hardly the first time we’ve seen analog gauges hooked up to modern electronics, but most of the projects are just that: modern. While the end look might be somewhat polarizing, we think maintaining the hardware’s classic style was the right call.

Deep freezers are a great thing to have, especially when the world gets apocalyptic. Of course, freezers are only good when they’re operating properly. And since they’re usually chillin’ out of sight and full of precious goods, keeping an eye on them is important.

When [Adam] started looking at commercial freezer alarms, he found that most of them are a joke. A bunch are battery-powered, and many people complain that they’re too quiet to do any good. And you’d best hope that the freezer fails while you’re home and awake, because they just stop sounding the alarm after a certain amount of time, probably to save battery.

If you want something done right, you have to do it yourself. [Adam]’s homemade freezer failure alarm is a cheap and open solution that ticks all the boxen. It runs on mains power and uses a 100dB piezo buzzer for ear-splitting effectiveness to alert [Adam] whenever the freezer is at 32°F/0°C or above.

If the Arduino loses sight of the DHT22 temperature sensor inside the freezer, then the alarm sounds continuously. And if [Adam] is ever curious about the temperature in the freezer, it’s right there on the 7-segment. Pretty elegant if you ask us. We’ve got the demo video thawing after the break, but you might wanna turn your sound down a lot.

You could assume that the freezer is freezing as long as it has power. In that case, just use a 555.

Giu
28

Too Hot for Fido? Get Alerted!

alert, arduino hacks, car, DHT22, heat, hot, pet, sim900 Commenti disabilitati su Too Hot for Fido? Get Alerted! 

Meet project Oro, the temperature monitoring watchdog. Err… the watchdog monitoring temperature probe. Well, it’s both actually!

[Richard Deininger] built the project after having the AC system go down in his company’s server room. That environmental cooling is imperative if you don’t want your server hardware turned to slag. The idea is a separate piece of hardware that monitors the room temperature and will alert the on-call staff if it climbs too high. He was successful, and showing the hacked hardware around the office came up with a second idea: a temperature sensor for your car to ensure it’s not too hot for your dog.

Anyone who has a canine friend living with them knows you don’t utter the word “ride” out loud lest a barking, whimpering, whining frenzy ensue. But jingle those keys and they’ll be at the door in no time. During the summer you can still take them with you for short errands thanks to the peace of mind [Richard’s] build provides. It’s simply an Arduino, DHT22 temp/humidity probe, and a SIM900 GSM modem. Set your temperature threshold and you’ll get an alert if temperatures are climbing to unsafe levels for Fido.

While you have your tools out, we recommend building auto-watering and auto-feeding systems for the family pets. What’s that? You hate domesticated animals? There’s a hack you can use to chase them from your yard.


Filed under: Arduino Hacks
Dic
20

Arduino Thermostat Includes Vacation Mode

arduino, arduino hacks, DHT22, heating, home hacks, internet, ip, ntp, thermostat, vacation Commenti disabilitati su Arduino Thermostat Includes Vacation Mode 

When [William’s] thermostat died, he wanted an upgrade. He found a few off-the-shelf Internet enabled thermostats, but they were all very expensive. He knew he could build his own for a fraction of the cost.

The primary unit synchronizes it’s time using NTP. This automatically keeps things up to date and in sync with daylight savings time. There is also a backup real-time clock chip in case the Internet connection is lost. The unit can be controlled via the physical control panel, or via a web interface. The system includes a nifty “vacation mode” that will set the temperature to a cool 60 degrees Fahrenheit while you are away. It will then automatically adjust the temperature to something more comfortable before you return home.

[William’s] home is split into three heat zones. Each zone has its own control panel including an LCD display and simple controls. The zones can be individually configured from either their own control panel or from the central panel. The panels include a DHT22 temperature and humidity sensor, an LCD display, a keypad, and support electronics. This project was clearly well thought out, and includes a host of other small features to make it easy to use.


Filed under: Arduino Hacks, home hacks
Ago
17

Hacking A Bee Hive

arduino duo, arduino hacks, bee hive, DHT22 Commenti disabilitati su Hacking A Bee Hive 

tumblr_inline_na763mgS0N1rnwm9n

[Marc] created a self-contained monitoring platform that enabled him to record the temperature and humidity of his bee hives.’

The health of colony can be determined based on a few factors. One is temperature which is an early indicator of whether or not the bees are about to swarm. Once temperature spikes are noticed, the bee wrangler can take the necessary steps to reduce the chance of losing the hive to a neighbor. Another indicator of bee health is humidity. If the area is too damp, it can damage the hive.

With that in mind, [Marc] developed a system to alert him via SMS or email if the sensor readings go beyond a certain range. In addition, he monitored the weight of the hive to see how much honey is inside. Frequency of the buzz was also recorded, and so was the activity of the entrance. He used an Arduino Duo and a DHT22 temperature/humidity sensor. A solar panel powered the bee monitoring system.

There were some challenges that needed to be overcome. Initially the Arduino wasn’t sending out data, but that was fixed with a simple debugging session. From there, he was able to broadcast the information creating graphs with the data. Battery levels, temperature, and humidity were all recorded. With the bee hive hacked and monitored, [Marc] was able to make progress on his system making great use of an Arduino.


Filed under: Arduino Hacks
Lug
28

Temperature controlled humidor with web logging, monitoring and alerts

arduino, DHT22, humidor, temperature, webserver Commenti disabilitati su Temperature controlled humidor with web logging, monitoring and alerts 

screenshot

by dzzie @ github.com

The Dht22 sensor is installed in the humidor.

The arduino takes a reading every 20 minutes, and uploads the data to your webserver.

The PHP script will record the data to the database. If the temp or humidity is out of desired range, it will send you an email alert.

Alerts must be manually cleared latter by logging into the web site, so you are not spammed, before you get a chance to fix it.

When you add water, push the select button on the LCD sheild to record it. This will be saved to the db as well. Power resets will also be recorded to the database.

See screen shot for example web report.

Temperature controlled humidor with web logging, monitoring and alerts - [Link]

Lug
28

The Smart Humidor

arduino hacks, cigar, DHT22, Humidity, humidor, misc hacks, Sensor, temperature, wifi Commenti disabilitati su The Smart Humidor 

humidor

If you’re a cigar aficionado, you know storing cigars at the proper temperature and humidity is something you just need to do. Centuries of design have gone into the simple humidor, and now, I guess, it’s time to put some electronics alongside your cigars.

The design of [dzzie]‘s smart humidor consists of an Arduino, WiFi shield, LCD + button shield, and most importantly, a DHT22 temperature and humidity sensor. In a bit of thoughtfulness, only the DHT22 is mounted inside the humidor; everything else is in an enclosure mounted outside the humidor, including a few buttons for clearing alerts and logging when water is added.

The smart humidor reads the DHT22 sensor every 20 minutes and uploads the data to a web server where useful graphs are rendered. The control box will send out an alert email to [dzzie] if the temperature or humidity is out of the desired range.


Filed under: Arduino Hacks, misc hacks

Learn how to connect your Arduino to the outside world via Ethernet

This is chapter sixteen of our huge Arduino tutorial seriesUpdated 06/12/2013

In this chapter we will introduce and examine the use of Ethernet networking with Arduino over local networks and the greater Internet. It will be assumed that you have a basic understanding of computer networking, such as the knowledge of how to connect computers to a hub/router with RJ45 cables, what an IP and MAC address is, and so on. Furthermore, here is a good quick rundown about Ethernet.

Getting Started

You will need an Arduino Uno or compatible board with an Ethernet shield that uses the W5100 Ethernet controller IC (pretty much all of them):

Arduino Ethernet shield

…or consider using a Freetronics EtherTen – as it has everything all on the one board, plus some extras:

Freetronics EtherTen

Furthermore you will need to power the board via the external DC socket – the W5100 IC uses more current than the USB power can supply. A 9V 1A plug pack/wall wart will suffice. Finally it does get hot – so be careful not to touch the W5100 after extended use. In case you’re not sure – this is the W5100 IC:

Wiznet W5100

Once you have your Ethernet-enabled Arduino, and have the external power connected – it’s a good idea to check it all works. Open the Arduino IDE and selectFile > Examples > Ethernet > Webserver. This loads a simple sketch which will display data gathered from the analogue inputs on a web browser. However don’t upload it yet, it needs a slight modification.

You need to specify the IP address of the Ethernet shield – which is done inside the sketch. This is simple, go to the line:

IPAddress ip(192,168,1, 177);

And alter it to match your own setup. For example, in my home the router’s IP address is 10.1.1.1, the printer is 10.1.1.50 and all PCs are below …50. So I will set my shield IP to 10.1.1.77 by altering the line to:

IPAddress ip(10,1,1,77);

You also have the opportunity to change your MAC address. Each piece of networking equipment has a unique serial number to identify itself over a network, and this is normall hard-programmed into the equipments’ firmware. However with Arduino we can define the MAC address ourselves.

If you are running more than one Ethernet shield on your network, ensure they have different MAC addresses by altering the hexadecimal values in the line:

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

However if you only have one shield just leave it be. There may be the very, very, statistically rare chance of having a MAC address the same as your existing hardware, so that would be another time to change it.

Once you have made your alterations, save and upload the sketch. Now open a web browser and navigate to the IP address you entered in the sketch, and you should be presented with something similar to the following:

 Arduino webserver example sketch

What’s happening? The Arduino has been programmed to offer a simple web page with the values measured by the analogue inputs. You can refresh the browser to get updated values.

At this point – please note that the Ethernet shields use digital pins 10~13, so you can’t use those for anything else. Some Arduino Ethernet shields may also have a microSD card socket, which also uses another digital pin – so check with the documentation to find out which one.

Nevertheless, now that we can see the Ethernet shield is working we can move on to something more useful. Let’s dissect the previous example in a simple way, and see how we can distribute and display more interesting data over the network. For reference, all of the Ethernet-related functions are handled by the Ethernet Arduino library. If you examine the previous sketch we just used, the section that will be of interest is:

 for (int analogChannel = 0; analogChannel < 6; analogChannel++) 
          {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");       
          }
          client.println("</html>");

Hopefully this section of the sketch should be familiar – remember how we have used serial.print(); in the past when sending data to the serial monitor box? Well now we can do the same thing, but sending data from our Ethernet shield back to a web browser – on other words, a very basic type of web page.

However there is something you may or may not want to  learn in order to format the output in a readable format – HTML code. I am not a website developer (!) so will not delve into HTML too much.

However if you wish to serve up nicely formatted web pages with your Arduino and so on, here would be a good start. In the interests of simplicity, the following two functions will be the most useful:

client.print(" is ");

Client.print (); allows us to send text or data back to the web page. It works in the same way as serial.print(), so nothing new there. You can also specify the data type in the same way as with serial.print(). Naturally you can also use it to send data back as well. The other useful line is:

client.println("<br />");

which sends the HTML code back to the web browser telling it to start a new line. The part that actually causes the carriage return/new line is the <br /> which is an HTML code (or “tag”) for a new line. So if you are creating more elaborate web page displays, you can just insert other HTML tags in the client.print(); statement. If you want to learn more about HTML commands, here’s a good tutorial site. Finally – note that the sketch will only send the data when it has been requested, that is when it has received a request from the web browser.

Accessing your Arduino over the Internet

So far – so good. But what if you want to access your Arduino from outside the local network?

You will need a static IP address – that is, the IP address your internet service provider assigns to your connection needs to stay the same. If you don’t have a static IP, as long as you leave your modem/router permanently swiched on your IP shouldn’t change. However that isn’t an optimal solution.

If your ISP cannot offer you a static IP at all, you can still move forward with the project by using an organisation that offers a Dynamic DNS. These organisations offer you your own static IP host name (e.g. mojo.monkeynuts.com) instead of a number, keep track of your changing IP address and linking it to the new host name. From what I can gather, your modem needs to support (have an in-built client for…) these DDNS services. As an example, two companies are No-IP andDynDNS.com. Please note that I haven’t used those two, they are just offered as examples.

Now, to find your IP address… usually this can be found by logging into your router’s administration page – it is usually 192.168.0.1 but could be different. Check with your supplier or ISP if they supplied the hardware. For this example, if I enter 10.1.1.1 in a web browser, and after entering my modem administration password, the following screen is presented:

WAN IP address router

What you are looking for is your WAN IP address, as you can see in the image above. To keep the pranksters away, I have blacked out some of my address.

The next thing to do is turn on port-forwarding. This tells the router where to redirect incoming requests from the outside world. When the modem receives such a request, we want to send that request to the port number of our Ethernet shield. Using the:

EthernetServer server(125);

function in our sketch has set the port number to 125. Each modem’s configuration screen will look different, but as an example here is one:

Arduino router port forwarding

So you can see from the line number one in the image above, the inbound port numbers have been set to 125, and the IP address of the Ethernet shield has been set to 10.1.1.77 – the same as in the sketch.

After saving the settings, we’re all set. The external address of my Ethernet shield will be the WAN:125, so to access the Arduino I will type my WAN address with :125 at the end into the browser of the remote web device, which will contact the lonely Ethernet hardware back home.

Furthermore, you may need to alter your modem’s firewall settings, to allow the port 125 to be “open” to incoming requests. Please check your modem documentation for more information on how to do this.

Now from basically any Internet connected device in the free world, I can enter my WAN and port number into the URL field and receive the results. For example, from a phone when it is connected to the Internet via LTE mobile data:

Arduino webserver example cellular

So at this stage you can now display data on a simple web page created by your Arduino and access it from anywhere with unrestricted Internet access. With your previous Arduino knowledge (well, this is chapter sixteen) you can now use data from sensors or other parts of a sketch and display it for retrieval.

Displaying sensor data on a web page

As an example of displaying sensor data on a web page, let’s use an inexpensive and popular temperature and humidity sensor – the DHT22. You will need to install the DHT22 Arduino library which can be found on this page. If this is your first time with the DHT22, experiment with the example sketch that’s included with the library so you understand how it works.

Connect the DHT22 with the data pin to Arduino D2, Vin to the 5V pin and GND to … GND:

arduino ethernet freetronics etherten dht22 humid

Now for our sketch – to display the temperature and humidity on a web page. If you’re not up on HTML you can use online services such as this to generate the code, which you can then modify to use in the sketch.

In the example below, the temperature and humidity data from the DHT22 is served in a simple web page:

#include <SPI.h>
#include <Ethernet.h>

// for DHT22 sensor
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {   0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10,1,1,77);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(125);
DHT dht(DHTPIN, DHTTYPE);

void setup() 
{
  dht.begin();
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() 
{
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == 'n' && currentLineIsBlank) 
        {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
	  client.println("Refresh: 30");  // refresh the page automatically every 30 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");

          // get data from DHT22 sensor
          float h = dht.readHumidity();
          float t = dht.readTemperature();
          Serial.println(t);
          Serial.println(h);

          // from here we can enter our own HTML code to create the web page
          client.print("<head><title>Office Weather</title></head><body><h1>Office Temperature</h1><p>Temperature - ");
          client.print(t);
          client.print(" degrees Celsius</p>");
          client.print("<p>Humidity - ");
          client.print(h);
          client.print(" percent</p>");
          client.print("<p><em>Page refreshes every 30 seconds.</em></p></body></html>");
          break;
        }
        if (c == 'n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != 'r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}

It is a modification of the IDE’s webserver example sketch that we used previously – with a few modifications. First, the webpage will automatically refresh every 30 seconds – this parameter is set in the line:

client.println("Refresh: 30");  // refresh the page automatically every 30 sec

… and the custom HTML for our web page starts below the line:

// from here we can enter our own HTML code to create the web page

You can then simply insert the required HTML inside client.print() functions to create the layout you need.

Finally – here’s an example screen shot of the example sketch at work:

arduino ethernet freetronics etherten dht22 humid cellular

You now have the framework to create your own web pages that can display various data processed with your Arduino.

Remote control your Arduino from afar

We have a separate tutorial on this topic, that uses the teleduino system.

Conclusion

So there you have it, another useful way to have your Arduino interact with the outside world. Stay tuned for upcoming Arduino tutorials by subscribing to the blog, RSS feed (top-right), twitter or joining our Google Group. And if you enjoyed the tutorial, or want to introduce someone else to the interesting world of Arduino – check out my book (now in a third printing!) “Arduino Workshop” from No Starch Press.

tronixstuff

Ott
30

Arduino Weather station

arduino, BMP085, DHT22, irradiance, lipo Commenti disabilitati su Arduino Weather station 

2013-03-17-14.48.42_small-600x450

Xose Perez of Tinkerman has written an article detailing the build of his weather station:

Arduino FIO based weather station with a DHT22 temperature & humidity sensor and a BMP085 barometric pressure sensor. The whole sensor will be powered by a solar panel (doubling as irradiance sensor) and backed by a LiPo cell.

[via]

Weather station - [Link]



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook