Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

$10 draagbaar Arduino-weerstation (AWS)

Componenten en benodigdheden

Arduino Nano R3
× 1
DHT22-temperatuursensor
× 1
bmp180
× 1
Adafruit Standaard LCD - 16x2 Wit op Blauw
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Apps en online services

Arduino IDE

Over dit project

Onlangs had mijn universiteit een kleine wetenschappelijke tentoonstelling. Dus mijn leraar vroeg me om een ​​project op de universiteit te presenteren om jonge studenten over elektronica te leren, dus eigenlijk had ik twee dagen om iets te maken.

Omdat de klimatologische omstandigheden hier erg wisselend zijn, ligt de temperatuur de laatste tijd ergens rond de 34-40 graden Celsius. Dus besloot ik een weerstation te maken.

Dus wat doet een weerstation?

Een weerstation is een apparaat dat gegevens verzamelt over het weer en de omgeving met behulp van veel verschillende sensoren

Sensoren zoals

  • Wind
  • Vochtigheid
  • Regen
  • Temperatuur
  • Druk
  • Hoogte

Het doel is om een ​​draagbaar weerstation te maken

Functies die het zou moeten hebben

  • Temperatuur
  • Vochtigheid
  • Druk
  • Hoogte

Stap 1:Ingrediënten:Tijd om spullen te kopen

Dus hier is wat we nodig hebben voor het project

Ik ben het project eigenlijk begonnen op My UNO, maar toen besluit ik over te schakelen naar een compacte oplossing.

Ik had op dat moment de nano bij me dus moest er mee door, zou graag micro gebruiken, omdat het de kleinste is.

Hoe dan ook, laat die dingen achter, over budget en onderdelen gesproken, hier is de lijst.

  • DHT22 Temperatuur- en vochtigheidssensor -> $3.00
  • BMP180-druksensor (BMP280 is goedkoper maar duurder in mijn plaats)> $ 2,00
  • Arduino Nano> $1,89
  • Solderen
  • LCD-scherm met I2C-stuurprogramma> $3.0
  • Veroboard
  • Vrouwelijke kop

Voor het einde van het gereedschap heb je nodig

  • Soldeerbout
  • Neustang
  • Draden

En ook enige tijd

Stap 2:Temperatuur en vochtigheid - DHT22

Het meten van de temperatuur kan worden gedaan met behulp van verschillende sensoren.

De populaire zijn DHT22,DHT11,SHT1x

Laten we dus in feite begrijpen hoe deze sensor van elkaar verschilt en waarom ik DHT22 in de eerste plaats heb gebruikt.

AM2302-uitgang gekalibreerd digitaal signaal. Het past exclusieve technologie voor het verzamelen van digitale signalen en vochtigheidsdetectietechnologie toe, waardoor de betrouwbaarheid en stabiliteit wordt gegarandeerd. De detectie-elementen zijn verbonden met een 8-bit single-chip computer.

Elke sensor van dit model is temperatuurgecompenseerd en gekalibreerd in een nauwkeurige kalibratiekamer en de kalibratiecoëfficiënt wordt opgeslagen in het type programma in het OTP-geheugen. Wanneer de sensor detecteert, zal deze de coëfficiënt uit het geheugen aanhalen. Klein formaat &laag verbruik &lange transmissieafstand (100 m) stelt AM2302 in staat om geschikt te zijn voor allerlei zware toepassingen. Enkele rij verpakt met vier pinnen, waardoor de aansluiting erg handig is.

Laten we enkele voor- en nadelen van de drie bekijken.

DHT11

Voordelen:Solderen is niet nodig. Goedkoopste van de drie. Krijg snel een stabiele output. Transmissie over 20m. Sterke interferentie.

Nadelen Bibliotheek! Geen resolutie optie. Fouten:Temp+/-2°C; Vochtig+/-5%RV. Onvoldoende meetbereik (0-50°C). Toepassingen:Tuinieren, Landbouw.

DHT22

Voordelen:Solderen is niet nodig. Een paar dollar toevoegen aan DHT11 en een upgrade krijgen. Gladde ronding. Kleinste fout. Groot bereik. Transmissie over 20m. Sterke interferentie.

Nadelen:Kan gevoeliger zijn. Langzame temperatuurregistratie. Bibliotheek nodig. Toepassingen:Milieubewaking. SHT1x

Pluspunten:Geen solderen. Gladde ronding. Kleine fout. Snelle reactie. Laag energieverbruik. Automatische slaap. Buitengewone stabiliteit en consistentie op lange termijn.

Nadelen:Twee digitale interfaces. Vochtigheid fout. Zelfde meetbereik met DHT11. Bibliotheek nodig. Toepassingen:zware taken en langdurige installaties. Hieronder volgen drie relatief goedkope keuzes.

Verbinding

Vcc naar 5V of 3,3V

Gnd naar Gnd

Gegevens naar pin 2 van arduino

Stap 3:Barometer en druksensor- BMP180

De bmp180 een luchtdruksensor met een I2C (“Wire”) interface.

Luchtdruksensoren meten de absolute druk van de lucht om hen heen. Deze druk varieert met zowel het weer als de hoogte.

deze bmp180-module werd geleverd met een 3,3 v-regelaar 662k die ik tot een domheid opblies, dus ik maakte een draad vast om de hele vcc rechtstreeks naar de chip door te geven.

Opmerking:als ik dit doe, beperk ik mezelf om alleen 3,3 v te gebruiken, het gebruik van spanningen daarboven zal het apparaat verpesten.

Andere modellen hebben mogelijk geen 662k spanningsregelaar. dus controleer grondig .

Oké, als we terugkomen, sluit de sensor aan op de Arduino.

De sensor maakt verbinding met de i2c-bus van de arduino die van nano en Uno zijn

VIB==>A4

SCL==>A5

VCC==>3,3V

GND ==> GND

Laten we het even hebben over druk en hoe druk de hoogte en temperatuur meet.

De atmosferische druk op elke positie is niet constant. De complexe interactie tussen de rotatie van de aarde, de kanteling van de as en vele andere factoren resulteert in bewegende gebieden met hogere en lagere druk, die op hun beurt de variaties in het weer veroorzaken die we elke dag zien. Door te letten op veranderingen in druk, kun je veranderingen in het weer op korte termijn voorspellen.

Drukverlaging betekent bijvoorbeeld meestal dat er nat weer is of dat er een storm op komst is (er komt een lagedrukgebied aan). Stijgende druk betekent meestal dat er helder weer nadert (er komt een hogedrukgebied doorheen).

De atmosferische druk varieert ook met de hoogte. De absolute druk in het basiskamp van Mount Everest (5.400) is lager dan in Delhi(216)

Omdat Absolute-druk moeilijk is om drukmetingen van de ene locatie naar de andere direct te vergelijken. We gebruiken de relatieve druk, dat is druk op zeeniveau.

Hoogte meten

De gemiddelde druk van de atmosfeer op zeeniveau is 1013,25 hPa (of mbar). Dit zakt naar nul als je naar het vacuüm van de ruimte klimt. Omdat de curve van deze daling goed wordt begrepen, kunt u het hoogteverschil tussen twee drukmetingen (p en p0) berekenen met behulp van deze vergelijking:

alti=44330*[1-(p/p0)^(1/5.255)]

Als u druk op zeeniveau (1013,25 hPa) gebruikt als de basislijndruk (p0), is de uitvoer van de vergelijking uw huidige hoogte boven zeeniveau.

Voorzorgsmaatregelen

Geef het lucht: Onthoud dat de BMP180 toegang tot omgevingslucht nodig heeft om de druk te meten, dus plaats hem niet in een afgesloten koffer. Een klein ventilatiegaatje zou voldoende moeten zijn.Maar niet te veel lucht :Aan de andere kant kan blootstelling aan snel bewegende lucht of wind tijdelijke drukvariaties veroorzaken die uw metingen zullen beïnvloeden. Scherm het apparaat af tegen sterke luchtstromen.

Houd het koel: Omdat een nauwkeurige temperatuurmeting nodig is om de druk te meten, moet u proberen het apparaat niet bloot te stellen aan snelle temperatuurveranderingen en het uit de buurt houden van nabijgelegen hete onderdelen en andere warmtebronnen.

Houd het droog :De BMP180 is gevoelig voor vocht. Dompel het niet onder en laat het niet in contact komen met vloeibaar water.

Verblind het niet: Verrassend genoeg is het silicium in de BMP180 gevoelig voor licht, dat het apparaat kan binnendringen via het gat aan de bovenkant van de chip. Bescherm de chip tegen omgevingslicht voor maximale nauwkeurigheid.

Stap 4:Het circuit maken

Dus we beginnen met het maken van de header voor de nano. we knippen de vrouwelijke headers en vijlen ze vervolgens om ze eruit te laten zien alsof ze oorspronkelijk die maat waren. We solderen het vervolgens. toen maakten we de headers voor de DHT22-sensor

. het had een weerstand van 10k nodig om van de gegevens naar de aarde te worden verbonden. we hebben toen alles gesoldeerd. Toen was het tijd voor de bmp180, we voegden de header op een vergelijkbare manier toe. We gebruikten 3,3 V als stroom. We hebben de hele i2c-bus aangesloten.

We hebben als laatste het scherm toegevoegd dat we gebruiken i2c lcd, dus we gebruikten dezelfde bus die we gebruikten voor de bmp180-module.

(Er is een vierde slot waarin ik later de rtc-module wilde toevoegen om ook de klok in de machine te integreren)

Stap 5:Tijd voor code

Wacht ..................

Download de bibliotheken

bmp180

https://github.com/sparkfun/BMP180_Breakout_Arduin...

BMP180_Breakout_Arduino_Library-master.zip

Dht22 bibliotheek

https://github.com/adafruit/DHT-sensor-library

Om een ​​bibliotheek in Arduino te installeren, check deze link

https://www.arduino.cc/en/Guide/Bibliotheken

Ik heb arduino 1.6.5 gebruikt, dus de code zal zeker werken voor deze versie, het kan ook voor hoger zijn, als het in elk geval niet werkt, gebruik dan 1.6.5 als de basisversie.

#include #include #include #include "DHT.h"#include

SFE_BMP180 druk;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Voeg uw adres hier.#define Rs_pin 0#define Rw_pin 1#define En_pin 2#define BACKLIGHT_PIN 3#define D4_pin 4#define D5_pin 5#define D6_pin 6#define D7_pin 7

#define DHTPIN 2 // what digital pin waarmee we zijn verbonden

// Maak commentaar op welk type je ook gebruikt!//#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht(DHTPIN, DHTTYPE);LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);float t1,t2;

void setup(){ Serial.begin(9600); lcd.begin (16,2); // <<-- onze LCD is een 20x4, verander indien nodig voor uw LCD// LCD Backlight ONlcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);lcd.setBacklight(HIGH); lcd.home (); // ga naar huis op LCDlcd.print("Weerstation");delay(5000);dht.begin(); druk.begin(); } void loop(){ char status; dubbele T,P,p0,a; status =druk.startTemperatuur(); if (status !=0) { delay(status);

status =pressure.getTemperature(T); if (status!=0) { Serial.print("1"); lcd.wissen(); lcd.setCursor(0,0); lcd.print("Baro-temperatuur:"); lcd.setCursor(0,1); lcd.print(T,2); lcd.print(" deg C "); t1=T; vertraging (3000);

status =druk.startDruk (3); if (status! =0) { // Wacht tot de meting is voltooid:vertraging (status);

status =pressure.getPressure (P, T); if (status !=0) {lcd.clear(); lcd.setCursor(0,0); lcd.print("abslt druk:"); lcd.setCursor(0,1); lcd.print(P,2); lcd.print(" mb "); vertraging(3000);

p0 =druk.zeeniveau(P,HOOGTE); // we zijn op 1655 meter (Boulder, CO)

a =pressure.altitude(P,p0); lcd.wissen(); lcd.setCursor(0,0); lcd.print("Hoogte:"); lcd.setCursor(0,1); lcd.print(a,0); lcd.print("meters"); vertraging (3000); } } } } float h =dht.readHumidity(); // Lees temperatuur als Celsius (de standaard) float t =dht.readTemperature (); t2=t; lcd.wissen(); lcd.setCursor (0,0); // ga naar het begin van de 2e regel lcd.print ("Vochtigheid:"); lcd.setCursor(0,1);lcd.print(h); lcd.print(" %"); vertraging (3000); lcd.wissen(); lcd.setCursor (0,0); // ga naar het begin van de 2e regel lcd.print("DHT Tempurature:"); lcd.setCursor(0,1); lcd.print(t); lcd.print(" deg C "); vertraging (3000); lcd.wissen(); lcd.setCursor (0,0); // ga naar het begin van de 2e regel lcd.print ("Gemiddelde temperatuur:"); lcd.setCursor(0,1); lcd.print((t1+t2)/2); lcd.print(" deg C "); vertraging(3000);}

FSIULGKING9D7SD.ino


Code

  • Codefragment #1
Codefragment #1Platte tekst

#include #include #include #include "DHT.h"#include

SFE_BMP180 druk;

#define ALTITUDE 20.56 #define I2C_ADDR 0x27 // <<- Voeg hier uw adres toe. #define Rs_pin 0#define Rw_pin 1#define En_pin 2#define BACKLIGHT_PIN 3#define D4_pin 4#define D5_pin 5#define D6_pin 6#define D7_pin 7

#define DHTPIN 2 // welke digitale pin we' opnieuw verbonden met

// Uncomment welk type je ook gebruikt!//#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);float t1,t2;

void setup(){ Serial.begin(9600); lcd.begin (16,2); // <<-- onze LCD is een 20x4, verander indien nodig voor uw LCD// LCD Backlight ONlcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);lcd.setBacklight(HIGH); lcd.home (); // ga naar huis op LCDlcd.print("Weerstation");delay(5000);dht.begin(); druk.begin(); } void loop(){ char status; dubbele T,P,p0,a; status =druk.startTemperatuur(); if (status !=0) { delay(status);

status =pressure.getTemperature(T); if (status!=0) { Serial.print("1"); lcd.wissen(); lcd.setCursor(0,0); lcd.print("Baro-temperatuur:"); lcd.setCursor(0,1); lcd.print(T,2); lcd.print(" deg C "); t1=T; vertraging (3000);

status =druk.startDruk (3); if (status! =0) { // Wacht tot de meting is voltooid:vertraging (status);

status =pressure.getPressure (P, T); if (status !=0) {lcd.clear(); lcd.setCursor(0,0); lcd.print("abslt druk:"); lcd.setCursor(0,1); lcd.print(P,2); lcd.print(" mb "); vertraging(3000);

p0 =druk.zeeniveau(P,HOOGTE); // we zijn op 1655 meter (Boulder, CO)

a =pressure.altitude(P,p0); lcd.wissen(); lcd.setCursor(0,0); lcd.print("Hoogte:"); lcd.setCursor(0,1); lcd.print(a,0); lcd.print("meters"); vertraging (3000); } } } } float h =dht.readHumidity(); // Lees temperatuur als Celsius (de standaard) float t =dht.readTemperature (); t2=t; lcd.wissen(); lcd.setCursor (0,0); // ga naar het begin van de 2e regel lcd.print ("Vochtigheid:"); lcd.setCursor(0,1);lcd.print(h); lcd.print(" %"); vertraging (3000); lcd.wissen(); lcd.setCursor (0,0); // ga naar het begin van de 2e regel lcd.print("DHT Tempurature:"); lcd.setCursor(0,1); lcd.print(t); lcd.print(" deg C "); vertraging (3000); lcd.wissen(); lcd.setCursor (0,0); // ga naar het begin van de 2e regel lcd.print ("Gemiddelde temperatuur:"); lcd.setCursor(0,1); lcd.print((t1+t2)/2); lcd.print(" deg C "); vertraging(3000);}

Github
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.ziphttps://github.com/sparkfun/BMP180_Breakout_Arduino_Library/archive/master.zip
Github
https://github.com/adafruit/DHT-sensor-libraryhttps://github.com/adafruit/DHT-sensor-library

Schema's


Productieproces

  1. Raspberry Pi 2 weerstation
  2. Raspberry Pi-weerstation
  3. Weerstation V 2.0
  4. Model Rail Digital DCC Command Station Arduino en gratis app
  5. 6-Shooter:Arduino-drankmengstation
  6. Arduino digitale dobbelstenen
  7. Draagbare capacitieve aanraakpiano
  8. Arduino-gamecontroller
  9. Draagbare afstandsdetector
  10. Pixel Chaser-game
  11. Arduino aangedreven weerballon datalogger