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

Draagbare IoT Weerstation met Arduino Nano 33 IoT

Onderdelen en benodigdheden

Onderdeel Aantal
Arduino Nano 33 IoT 1
BME weer sensor (BME280) 1
0.96 inch OLED display - 128x64 1
Plastic behuizing 3.9" x 2.7" 1
Micro USB kabel 1
Man-Vrouw breadboard jumper draadjes 1 set
USB Wandlader 1

Nodige tools

  • Lijmpistool (standaard)

Apps en online diensten

  • Arduino IDE
  • Blynk

Over dit project

Veel apps om smartphone met IoT te koppelen, maar meestal teleurstellend. Blynk is anders: flexibel, mooie UI, werkt met allerlei IoT platforms, Android & iOS, gratis voor hobbyisten. Dit project ontdekt Blynk.

Hardware

Eenvoudig: Arduino Nano 33 IoT (WiFi), BME280 sensor (temperatuur, vochtigheid, luchtdruk in één), 1 inch OLED display. Allemaal 3.3V. Display optioneel – doel is data op telefoon. Maar OLED maakt testen makkelijker voordat Blynk/telefoon.

Schema: sensor en display beide I2C. Theoretisch één I2C bus voor meerdere devices, maar library conflicten → twee aparte I2C poorten. Sensor: standaard I2C op analoge pinnen 4 (SDA) en 5 (SCL). Display: secundaire I2C op digitale pinnen 4 (SCL) en 5 (SDA) – let op: omgedraaid!

Draagbare IoT Weerstation met Arduino Nano 33 IoT

Behuizing: klein plastic doosje met transparant voorzijde (voor display & WiFi signaal). Weerbestendig, maar sensor buitenlucht via 1/2" gat onderin. Sensor zit net binnen gat. Alles inlijmen met lijmpistool (epoxy beter voor zomerhit).

Voeding via USB kabel: programmeren of voeden via één kabel (PC of USB adapter).

Software

Code is mash-up van library voorbeelden: Adafruit_BME280_Library (sensor), ss_oled (display), Blynk library. Alle drie via Arduino Library Manager te installeren. Experimenteer apart met elke library.

Blynk voorbeelden: examples.blynk.cc. Nano 33 IoT niet standaard ondersteund, maar wel WiFiNINA. Voeg toe:

#include <WiFiNINA.h>
#include <BlynkSimpleWiFiNINA.h>

Extra: #include <avr/dtostrf.h> voor float → string conversie voor OLED. Blynk accepteert zowel strings als getallen, maar grafieken werken alleen met echte nummers.

Luchtdruk normaal gecorrigeerd naar zeeniveau. Op hogere locatie daling druk. Correctie: ~1 inch Hg per 1000 ft hoogte. In mijn code +1.3 voor 1300 ft. Pas aan voor jouw hoogte. Precieze tabellen online.

Weerstation zonder Blynk

Hardware opbouwen, mijn software gebruiken, Blynk.begin() in Setup ucommentariëren. (Zonder geldige Blynk connectie blijft sketch hangen bij Blynk.begin().)

Blynk

Blynk installeren (iOS/Android), documentatie: docs.blynk.cc. Veel opties, verwarrend eerst. Mijn quickstart:

Account aanmaken → nieuw project → authenticatie code (linkt hardware met project). Eerst hardware verbinden via WiFi met Blynk. Test met Blynk Blink sketch (examples.blynk.cc) – board LED (pin 13) aan/uit.

In Blink sketch: vervang ESP8266WiFi.h en BlynkSimpleEsp8266.h door WiFiNINA.h en BlynkSimpleWiFiNINA.h. Voeg WiFi credentials en auth code toe. Serial Monitor openen → connectie naar Blynk cloud zien.

Blynk app: linkerboven = projecten/account, rechtsboven = Edit mode, midden = contextueel.

Draagbare IoT Weerstation met Arduino Nano 33 IoT

Onboard LED besturen: Edit mode → toolbox (links swipen) → Button selecteren → op scherm klikken → configureren: Push → Switch mode, Pin → Digital 13 (onboard LED). OK, Edit mode uit → knop werkt.

Weerstation met Blynk

Mijn code openen, Blynk.begin() uncomment, auth code + WiFi credentials invullen, uploaden.

Draagbare IoT Weerstation met Arduino Nano 33 IoT

Blynk app: bestaande knop verwijderen (Edit → knop → Delete). Toolbox → Labeled Value (onder Displays). Configureren: Pin → Virtual V3. Label: "Temp /pin.#/ deg.F" (# = 1 decimaal). Grote tekst, Refresh: Push, Kleur: Groen. OK. Labeled Value uitrekken tot ~3/4 scherm. Edit mode uit → temperatuur zichtbaar.

Virtual Pins: Blynk gebruikt virtual pins voor variabelen. Display widget kan analoge/digitale pin lezen, maar meestal wil je variabele tonen → variabele een virtual pin nummer toewijzen. In code: temperatuur → V3.

Refresh Interval: Push = Arduino stuurt data (hier iedere minuut). Pull = app pollt hardware.

Nog 2 Labeled Values: Vochtigheid % (V4, goud, 1 decimaal), Luchtdruk in Hg (V5, rood, 2 decimalen).

Grafiek: SuperChart widget. Naar beneden uitrekken. Config: X-as tonen, resoluties: live, 1u, 6u, 1d, 1wk, 1mnd, 3mnd. 3 datastromen (V3, V4, V5). Y-as schaling: hoogte. Temp: 67-100, Vocht: 34-66, Druk: 0-33. Kleuren matchen. Y-as tonen. Klaar.

Delen: Edit mode → Project Settings (middenboven) → Sharing aan → link genereren → QR code. Nieuwe gebruiker: Blynk app (geen account nodig) → QR code laden.

Blynk is vrijwel gratis: 2500 energie punten gratis. Dit project past. Delen/uitbreiden kan kosten (~$6 voor 5000 punten).

Code

Tiny Internet Weather Station

/* Arduino Nano 33 IoT met BME280, 0.96" 128x64 OLED, WiFi + Blynk */
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BME280.h>
#include <avr/dtostrf.h>
#include <ss_oled.h>
#include <WiFiNINA.h>
#include <BlynkSimpleWiFiNINA.h>

char auth[] = "YourBlynkProjectCode";
char ssid[] = "YourWifiID";
char pass[] = "YourWiFiPassword";

Adafruit_BME280 bme;
Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();

#define SDA_PIN 5
#define SCL_PIN 4
#define RESET_PIN -1
#define OLED_ADDR -1
#define FLIP180 0
#define INVERT 0
#define USE_HW_I2C 0
#define MY_OLED OLED_128x64
#define OLED_WIDTH 128
#define OLED_HEIGHT 64

SSOLED ssoled;
BlynkTimer timer;

void setup() {
  if (!bme.begin(0x76)) { while (1) delay(10); }
  bme_temp->printSensorDetails();
  bme_pressure->printSensorDetails();
  bme_humidity->printSensorDetails();
  oledInit(&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L);
  oledFill(&ssoled, 0x0, 1);
  Blynk.begin(auth, ssid, pass); // comment uit voor standalone
  timer.setInterval(60000L, myupdate);
  myupdate(); // initiële update
}

void loop() {
  Blynk.run();
  timer.run();
}

void myupdate() {
  sensors_event_t temp_event, pressure_event, humidity_event;
  bme_temp->getEvent(&temp_event);
  bme_pressure->getEvent(&pressure_event);
  bme_humidity->getEvent(&humidity_event);
  float ctemp = temp_event.temperature;
  float ftemp = 32 + (9*ctemp)/5;
  float hum = humidity_event.relative_humidity;
  float ppress = pressure_event.pressure;
  float mpress = 1.3 + ppress/33.8939; // inch Hg + correctie
  char mytemp[8], myhum[8], mypress[8];
  dtostrf(ftemp, 6, 2, mytemp);
  dtostrf(hum, 6, 2, myhum);
  dtostrf(mpress, 6, 2, mypress);

  // OLED update
  oledWriteString(&ssoled, 0,2,1,(char*)"Weather Station", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,2,3,(char*)"Temp = ", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,50,3,(char*)mytemp, FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,105,3,(char*)"F", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,2,5,(char*)"Humid=", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,50,5,(char*)myhum, FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,105,5,(char*)"%%", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,2,7,(char*)"Press=", FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,50,7,(char*)mypress, FONT_NORMAL, 0, 1);
  oledWriteString(&ssoled, 0,105,7,(char*)"in", FONT_NORMAL, 0, 1);

  // Blynk push
  Blynk.virtualWrite(V3, ftemp);
  Blynk.virtualWrite(V4, hum);
  Blynk.virtualWrite(V5, mpress);
}

Schema's

Draagbare IoT Weerstation met Arduino Nano 33 IoT

Productieproces

  1. Geïntegreerde Schakelingen (IC's): Compacte, Krachtige Chips die Moderne Elektronica Aandrijven
  2. DIY Zonne-energie Weerstation Met Raspberry Pi
  3. Een buitenweerstation bouwen met Raspberry Pi 2 en ADS-WS1
  4. Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
  5. Uw weerstation integreren met CWOP: Een praktische gids
  6. Geavanceerd Weerstation v2.0: Real-time Temperatuur, Druk, Vochtigheid & Hoogte Monitoring
  7. Bouw een DCC-commando station voor modelspoor met Arduino – gratis app inclusief
  8. Arduino-gestuurde 6-Shooter Drank Mixstation – Bouw je eigen Cocktail Automaat
  9. MotionSense: Slimme inbraakdetectie met Arduino en ESP8266
  10. High-Performance Arduino Weerballon Datalogger
  11. ArduFarmBot Deel 2: Een Extern IoT-besturingsstation Bouwen