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

Mini-weerstation met Arduino Nano

Componenten en benodigdheden

Arduino Nano R3
× 1
DHT 11-module
× 1
BMP-280 DRUKSENSOR
× 1
1,44 inch ST7735 LCD-scherm
× 1
3D-GEDRUKTE BEHUIZING
× 1
USB A naar mini USB B-kabel
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)
3D-printer (algemeen)
Soldeerdraad
Dubbelzijdige tape

Apps en online services

Arduino IDE
Autodesk Fusion 360

Over dit project

Inleiding

Het is altijd fascinerend om fysieke gegevens in realtime vast te leggen. In dit project kun je niet alleen drie fundamentele fysieke parameters voor weersvoorspelling vastleggen, namelijk. temperatuur, vochtigheid en atmosferische druk, maar zal ook in staat zijn om de real-time gegevens op een LCD-scherm weer te geven.

Beschrijving en werkingsprincipe

De twee sensoren die in dit project worden gebruikt, zijn BMP-280 en DHT-11. De eerste voelt de temperatuur en atmosferische druk, terwijl de laatste de relatieve vochtigheid detecteert. De DHT-11 had kunnen worden gedaan door BME-280 te gebruiken (hij kan ook de vochtigheid meten) in plaats van de BMP-280, maar als rekening wordt gehouden met de kosten, is het gebruik van de hier gebruikte combinatie van sensoren veel zuiniger voor doe-het-zelvers projecten. Er moet ook worden opgemerkt dat hoewel de DHT-11 zowel temperatuur als vochtigheid kan detecteren, het alleen voor vochtigheidsdetectie wordt gebruikt omdat de resolutie voor temperatuurdetectie +/- 2 ° is in vergelijking met +/- 0,5 ° voor BMP-280. Het hart van dit project is het Arduino NANO-ontwikkelbord. Ook hier is het NANO board verkozen boven de masspreferred UNO vanwege de betaalbare prijs. Een 1,44” ST7735-serie TFT LCD-scherm wordt gebruikt als display voor ons project. Een groter scherm is hier vermeden zodat de Arduino NANO niet overbelast wordt.

Circuit en programmering

Een combinatie van schakelschema en blokschema is zo gemakkelijk mogelijk verstrekt om de makers te helpen de fysieke configuratie en aansluiting van de componenten te begrijpen. Tabellen voor pin-out van de componenten zijn ook aanwezig om het u gemakkelijker te maken. Als je het diagram en de tabellen doorneemt, zul je merken dat de 5V- en GND-pinnen van de ICSP-header op Arduino NANO zijn gebruikt voor het leveren van stroom aan de componenten, samen met de ingebouwde stroom- en aardingspinnen. Dit is gedaan om een ​​einde te maken aan elke extra stroombron die het systeem omvangrijk zou maken.

Wat betreft de programmering, in het eerste deel is een reeks bibliotheken opgenomen om de programmering kort en eenvoudig te houden. Naast de voor de hand liggende, zijn de Wire.h- en SPI.h-bibliotheken het vermelden waard, omdat Wire.h degene is waarmee de Arduino kan communiceren met de I2C/TWI-apparaten zoals de BMP-280 en de ST7735 LCD en SPI.h biedt de seriële perifere interface met de ST7735 LCD. In het tweede deel worden de sensoren geïnitialiseerd en worden de lay-out, letterkleur, enz. van het LCD-scherm ingesteld om de gegevens volgens onze voorkeuren weer te geven. In het laatste deel van onze programmering wordt de output van de sensoren verkregen en weergegeven met een handige vertraging tussen elke meting om de zaken stabiel te houden.

Constructie en testen

In het prototype zijn de componenten modulair gehouden en verbonden door middel van jumperdraden in plaats van te solderen. Dit maakt niet alleen eenvoudige probleemoplossing en reparatie mogelijk, maar maakt het montageproces ook probleemloos. De behuizing van het apparaat is op maat 3D-geprint voor een perfecte pasvorm voor de componenten. De behuizing is voorzien van goede ventilatie om de sensoren bloot te stellen aan de meetgrootheden en de door het systeem gegenereerde warmte af te voeren die anders de sensorelementen zou verstoren. Het apparaat wordt gevoed via hetzelfde type AUSB naar type B mini USB dat wordt gebruikt om de Arduino te programmeren. Het prototype is een paar uur lang binnenshuis getest met zowel een pc-USB-poort als een 5V-smartphone-oplader als voeding. De resultaten zijn vrij nauwkeurig vergeleken met online meteorologische gegevens, gezien de productiekosten en ontwikkelingstijd.

Conclusie

Concluderend kan worden gezegd dat dit project vrij zuinig, op zijn zachtst gezegd nuttig is, en vooral leuk is om een ​​klein en handig weerstation te hebben dat precies in je zak past.

Bestel elektronische onderdelen bij UTSOURCE

Bibliografie

· Google.com

· Arduino.cc

· Mijntectutor.com


Code

  • DE CODE
DE CODEC/C++
DIT IS DE RELEVANTE SCHETS VOOR HET PROJECT, DE COMMENTAARVERKLARINGEN ZULLEN DE WERKING UITLEGGEN
#include  //include Serial Peripheral Interface library#include  //include Two Wire Interface library#include  // inclusief Adafruit grafische bibliotheek#inclusief  // inclusief Adafruit ST7735 TFT-bibliotheek#inclusief  // inclusief Adafruit BMP280 sensorbibliotheek#inclusief "DHT.h" //inclusief DHTXX-sensor library#define DHTPIN 2 //DHT11-gegevenspin aangesloten op Arduino-pin D2#define DHTTYPE DHT11 // specificeren van het type DHT-sensor dat wordt gebruikt#define TFT_RST 8 // TFT RST-pin is aangesloten op Arduino-pin D8#define TFT_CS 10 // TFT CS-pin is verbonden met Arduino-pin D9 #define TFT_DC 9 // TFT DC-pin is verbonden met Arduino-pin D10// initialiseer ST7735 SERIES TFT-bibliotheekAdafruit_ST7735 tft =Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST); // definieer het I2C-adres van het apparaat:0x76 of 0x77 (0x77 is het standaardadres van de bibliotheek) #define BMP280_I2C_ADDRESS 0x76 Adafruit_BMP280 bmp280; // initialiseer Adafruit BMP280 bibliotheekDHT dht (DHTPIN, DHTTYPE); // initialiseer DHT-sensor void setup (void) {dht.begin (); // synchroniseren van DHT-sensor tft.initR (INITR_144GREENTAB); // initialiseer een ST7735S-chip, zwarte tab tft.fillScreen (ST77XX_BLACK); // zwarte achtergrond instellen tft.drawFastHLine(0, 15 , tft.width(), ST77XX_CYAN);// teken horizontale scheidingslijn op positie (0, 15) tft.setTextColor(ST77XX_CYAN, ST77XX_BLACK); // stel tekstkleur in op witte en zwarte achtergrond tft.setTextSize(1); // tekstgrootte instellen op 1 //tft.setCursor (4, 0); // verplaats cursor naar positie (4, 0) pixel //tft.print ("ARDUINO + ST7735 TFT"); tft.setCursor(25, 5); // verplaats de cursor naar positie (25, 5) pixel tft.print ("WEATHER BUDDY"); // initialiseer de BMP280-sensor als (bmp280.begin (BMP280_I2C_ADDRESS) ==0) {// verbindingsfout of apparaatadres verkeerd! tft.setTextColor (ST77XX_RED, ST77XX_CYAN); // stel tekstkleur in op rode en zwarte achtergrond tft.setTextSize (2); // tekstgrootte instellen op 2 tft.setCursor (5, 76); // verplaats de cursor naar positie (5, 76) pixel tft.print ("Verbinding"); tft.setCursor(35, 100); // verplaats de cursor naar positie (35, 100) pixel tft.print ("Error"); terwijl(1); // blijf hier } tft.drawFastHLine(0, 55, tft.width(), ST77XX_CYAN); // teken horizontale scheidingslijn op positie (0, 55) pixel tft.drawFastHLin (0, 95, tft.width (), ST77XX_CYAN); // teken horizontale scheidingslijn op positie (0, 195) pixel tft.setTextColor (ST77XX_RED, ST77XX_BLACK); // stel tekstkleur in op rode en zwarte achtergrond tft.setCursor (30, 20); // verplaats de cursor naar positie (30, 20) pixel tft.print ("TEMPERATUUR"); // instellingskop voor eerste sectie tft.setTextColor (ST77XX_CYAN, ST77XX_BLACK); // stel tekstkleur in op cyaan en zwarte achtergrond tft.setCursor(40, 60); // verplaats de cursor naar positie (40, 60) pixel tft.print ("VOCHTHEID "); // instellingskop voor tweede sectie tft.setTextColor (ST77XX_GREEN, ST7735_BLACK); // stel tekstkleur in op groene en zwarte achtergrond tft.setCursor(40, 100); // verplaats de cursor naar positie (40, 100) pixel tft.print ("PRESSURE"); // instellingskop voor derde sectie tft.setTextSize (2); // tekstgrootte instellen op 2 } // main loopvoid loop () { char _buffer [8]; // lees temperatuur, vochtigheid en druk van de BMP280 sensor float temp =bmp280.readTemperature(); // haal de temperatuur op in °C float brom =dht.readHumidity(); // krijg vochtigheid in rH% float pres =bmp280.readPressure (); // druk op in hPa // printtemperatuur (in °C) if(temp <0) // if temperatuur <0 sprintf( _buffer, "-%02u.%02u", (int)abs(temp), (int )(abs(temp) * 100) % 100); else // if temperatuur>=0 sprintf( _buffer, " %02u.%02u", (int)temp, (int)(temp * 100) % 100);// instelling van de waarde benadering tft.setTextColor(ST77XX_YELLOW, ST77XX_BLACK ); // stel de tekstkleur in op gele en zwarte achtergrond tft.setCursor (11, 34); // verplaats cursor naar positie (11,34) pixel tft.print(_buffer); // afdruktemperatuur van BMP-280-sensor tft.drawCircle (89, 34, 2, ST77XX_YELLOW); // druk het gradensymbool af ( ° ) (kan worden weggelaten als * in plaats daarvan wordt gebruikt) tft.setCursor(95, 34); // verplaats cursor naar positie (95,34) pixel tft.print("C"); // print het Celcius-symbool // 2:print vochtigheid (in %) sprintf( _buffer, "%02u", (int)(hum)); // instelling van de waardebenadering tft.setTextColor (ST77XX_MAGENTA, ST77XX_BLACK); // stel tekstkleur in op magenta en zwarte achtergrond tft.setCursor (45, 74); // verplaats cursor naar positie (45,74) pixel tft.print(_buffer); // print vochtigheid van DHT-11-sensor tft.setCursor (75, 74); // verplaats cursor naar positie (75,74) pixel tft.print("%"); // print het percentage symbool // 3:print druk (in hPa) sprintf( _buffer, "%04u.%02u", (int)(pres/100), (int)((uint32_t)pres % 100) ); // instelling van de waardebenadering tft.setTextColor (ST77XX_ORANGE, ST77XX_BLACK); // stel de tekstkleur in op oranje en zwarte achtergrond tft.setCursor (3, 112); // verplaats cursor naar positie (3,112)pixel tft.print(_buffer); // druk atmosferische druk af van BMP-280 tft.setCursor (91, 112); // verplaats cursor naar positie (91.112)pixel tft.print("hPa"); // print eenheid van atmosferische druk als hecto pascal vertraging (1000); // wacht 1 seconde voordat u de volgende sensormeting uitvoert }

Aangepaste onderdelen en behuizingen

DIT IS HET STL-BESTAND VOOR DE 3D-GEPRINTE ONDERDELEN DIE IK HEB GEBRUIKT

Schema's

U MOET GEWOON DE BEDRADING VOLGEN.

Productieproces

  1. Raspberry Pi 2 weerstation
  2. Raspberry Pi-weerstation
  3. Bewaking op afstand van het weer met Raspberry Pi
  4. Weerstation V 2.0
  5. DIY Photoshop-bewerkingsconsole met Arduino Nano RP 2040
  6. 7-segment arrayklok
  7. $10 draagbaar Arduino-weerstation (AWS)
  8. eDOT - op Arduino gebaseerde precisieklok en weerstation
  9. FM-radio met Arduino en RDA8057M
  10. ThingSpeak Arduino-weerstation
  11. Lokaal weerstation