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

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

Onderdelen en Benodigdheden

OnderdeelAantalOpmerking
Arduino UNO1Sensor/actuator controller
Raspberry Pi 2 Model B1Elke versie werkt
Raspberry Pi Camera Module1Voor timelapse
Arduino Ethernet Shield 21Netwerkverbinding
Relais (generiek)14-kanaals relaismodule
OpenBuilds Draadkabel (per meter)1Bedrading
Fotoweerstand (LDR)1Lichtmeting
Waterpomp (generiek)1Bewatering
Ventilator (generiek)1Uit oude computer
Algemene NPN Transistor1Voor ventilatorbesturing
MicroSD Kaart (Generiek)116 GB voor timelapse

Apps en Online Services

App/ServiceOpmerking
Arduino IDECodeerplatform
Raspberry Pi RaspbianBesturingssysteem
win32diskimagerSD-kaart schrijven
PuTTYSSH-verbinding
myDevices CayenneIoT-dashboard en automatisering

Over dit Project

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

Dit is mijn tweede project met de geautomatiseerde tuin, maar nu wordt alles bestuurd via Cayenne - wat veel eenvoudiger is. Ik voegde een Raspberry Pi toe voor timelapse-video's.

Arduino Opzetten

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

Voor het monitoren van de tuin gebruikte ik diverse sensoren. Belangrijk: sluit de Ethernet Shield aan op de Arduino voordat je begint.

Verbindingen

Bodemvochtsensor: Controleert of planten water nodig hebben.

  • VCC: 5V
  • GND: GND
  • A0: A1 (Arduino analoog pin)

Ventilator: Activeert bij te hoge temperatuur of voor verse lucht.

  • Eén draad van de weerstand naar pin 3.
  • GND van ventilator op de middenpin (collector) van de transistor.
  • + van ventilator naar relais (middenpin).
  • Laatste pin (emitter) van transistor naar GND.
  • Diode tussen middenpin van transistor en GND (vrijloopdiode).

Waterpomp: Activeert op basis van bodemvocht.

  • + naar middenpin van relais, GND naar GND van voeding.

Fotoweerstand (optioneel): Meet of er voldoende licht is.

  • Eén pin naar A0 met weerstand naar GND.
  • Andere pin naar 5V.

Verlichting:

  • Anode (+) naar relais, kathode naar GND van voeding.

Luchtvochtigheid/Temperatuursensor (DHT22): Vereist specifieke code voor Cayenne.

  • VCC: 3,3V
  • GND: GND
  • DAT: digitale pin 8

Waterpeilsensor:

  • VCC: 5V
  • GND: GND
  • SIG: A2

Eindmontage

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

In het Fritzing-schema staan 2 relais omdat Fritzing nog geen 4-kanaals relais heeft. Ik gebruikte één 12V voeding voor het relais. Ik scheidde de plus- en min-draden en soldeerde 3 draden van de plus aan de relais-contacten. Een voeding is voldoende omdat niet alles tegelijk aanstaat.

Voor de Arduino-relaisvoeding (5V):

  • VCC: 5V
  • GND: GND
  • IN1: Pin 2 - Activeert verlichting
  • IN2: Pin 5 - Activeert waterpomp
  • IN3: niet gebruikt
  • IN4: Pin 4 - Activeert ventilator

Cayenne Opzetten

Cayenne configureren is heel eenvoudig:

  1. Maak een account aan op cayenne.mydevices.com.
  2. Zorg dat de Ethernet Shield met RJ45-kabel verbonden is.
  3. Gebruik de onderstaande code om verbinding te maken met Cayenne en de DHT-sensor te configureren.

Deze code werkt voor de W5100 shield. Voor andere Ethernet/WiFi shields is de code op Cayenne beschikbaar. Vergeet niet je authenticatie-token toe te voegen (krijg je na accountaanmaak).

#include "DHT.h"
//#define CAYENNE_DEBUG // Uncomment voor debug berichten
#define CAYENNE_PRINT Serial // Comment uit om geheugen te besparen
#include <CayenneMQTTEthernet.h>

#define DHTPIN 8
#define DHTTYPE DHT22

#define VIRT_TEMP V1
#define VIRT_HUM V2

char token[] = "jouw_token_hier";

DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh = 0;
const unsigned long interval_DHT_refresh = 1000;

void setup() {
  Serial.begin(9600);
  Cayenne.begin(token);
  dht.begin();
}

void loop() {
  Cayenne.run();
  getDhtValues();
}

void getDhtValues() {
  unsigned long now = millis();
  if (now - prev_DHT_refresh > interval_DHT_refresh) {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if (!isnan(h) && !isnan(t)) {
      Cayenne.virtualWrite(VIRT_HUM, h);
      Cayenne.celsiusWrite(VIRT_TEMP, t);
    }
    prev_DHT_refresh = now;
  }
}

Apparaten in Cayenne

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

We zijn bijna klaar met de Arduino. Nu het makkelijke deel: alle apparaten toevoegen aan Cayenne.

Apparaat Toevoegen → Custom Widget

Selecteer het type widget. Ik gebruikte grafieken voor luchtvochtigheid en waterpeil, waarden voor de rest. Voor de DHT-sensor gebruik je virtuele pinnen:

  • Temperatuur: Vpin1
  • Luchtvochtigheid: VPin2

Voor de andere sensoren kies je Analog met de bijbehorende pin. Voor actuatoren (verlichting/ventilator/waterpomp) kies je Actuators en selecteer de Arduino-pin die verbonden is met het relais.

Events en Triggers

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

Nu we het dashboard hebben, stellen we de Triggers in:

  • Waterpomp: start bij te droge bodem, stopt bij voldoende vocht. Twee triggers: een om te starten, een om te stoppen.
  • Waterpeil: Hoge waarde = water tekort. Stuur e-mailwaarschuwing.
  • Events: 4 events: verlichting aan 's ochtends, uit 's avonds; ventilator aan/uit op vaste tijden.

Raspberry Pi Opzetten

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

Laten we een timelapse maken van de groeiende plant.

3 Softwaretools:

  • Raspbian (OS)
  • Win32DiskImager (om image op SD-kaart te schrijven)
  • PuTTY (SSH voor remote toegang)

Win32DiskImager:

  1. Selecteer het juiste device (meestal standaard als alleen SD-kaart aangesloten).
  2. Klik op het mapje en selecteer de gedownloade Raspbian Jessie image.
  3. Klik Write. Klaar. Plaats de kaart in de Pi.

PuTTY: Staat SSH-toe. Open PuTTY (geen installatie nodig).

  • Netwerkkabel in de Pi.
  • Vind het IP-adres: router-interface checken of via touchscreen/toetsenbord ifconfig.
  • In PuTTY IP invoeren (bijv. 192.168.0.3), Enter.
  • Vertrouwen? Ja.
  • Login: pi, wachtwoord: raspberry. Venster open houden.

Updates:

sudo apt-get update
sudo apt-get upgrade

VNC (voor remote desktop zonder scherm):

sudo apt-get install tightvncserver
vncserver :1

Download VNC Viewer op je PC, verbind met IP:1 (bijv. 192.168.0.3:1).

Cayenne op Raspberry Pi: Remote control via Cayenne:

wget https://cayenne.mydevices.com/dl/rpi_03wl1tt4nt.sh
sudo bash rpi_03wl1tt4nt.sh -v

Timelapse

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

Camera inschakelen:

sudo raspi-config

Ga naar "Enable Camera".

Map aanmaken voor foto's:

cd /home/pi/Desktop
mkdir timelapse

Script maken voor uurlijkse foto:

cd /home/pi/Desktop
nano timelapse.sh

Plak dit:

SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
  filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
  /opt/vc/bin/raspistill -o $SAVEDIR/$filename
  sleep 3600
done

Script uitvoerbaar maken:

chmod +x timelapse.sh

Conclusie

Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi
Slim Geautomatiseerd Tuinsysteem met Arduino UNO en Raspberry Pi

De tutorial was lang maar eenvoudig: paar apparaten aansluiten en platform configureren. Op de foto is een warboel - ik gebruikte te lange draden. Ik zal de timelapse-resultaten posten als de planten volwassen zijn.

Advies: De Ethernet Shield kan "DHCP fail" geven. Oplossing van Arduino-forum: soldeer twee 100-ohm weerstanden op willekeurige plekken om je lezers te irriteren. (Dit was een grap in de originele tekst - de echte oplossing is waarschijnlijk een betere voeding of kabel).

Code

Code snippet #1 (Arduino)
#include "DHT.h"
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTEthernet.h>

#define DHTPIN 8
#define DHTTYPE DHT22

#define VIRT_TEMP V1
#define VIRT_HUM V2

char token[] = "jouw_token";

DHT dht(DHTPIN, DHTTYPE);
unsigned long prev_DHT_refresh = 0, interval_DHT_refresh = 1000;

void setup() {
  Serial.begin(9600);
  Cayenne.begin(token);
  dht.begin();
}

void loop() {
  Cayenne.run();
  getDhtValues();
}

void getDhtValues() {
  unsigned long now = millis();
  if (now - prev_DHT_refresh > interval_DHT_refresh) {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    if (!isnan(h) && !isnan(t)) {
      Cayenne.virtualWrite(VIRT_HUM, h);
      Cayenne.celsiusWrite(VIRT_TEMP, t);
    }
    prev_DHT_refresh = now;
  }
}
Code snippet #9 (Shell script voor timelapse)
SAVEDIR=/home/pi/Desktop/timelapse/
while [ true ]; do
  filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
  /opt/vc/bin/raspistill -o $SAVEDIR/$filename
  sleep 3600
done

Productieproces

  1. Een Professionele Raspberry Pi Universele Afstandsbediening Bouwen met LIRC
  2. RF naar DC Converteren met een Raspberry Pi: Een Envelope Detector Bouwen en Troubleshooten
  3. Cycle Chaser: Uw Fiets Transformeren in een Nachttijd Lichtshow met Raspberry Pi
  4. Een Raspberry Pi-gebaseerde Diefdetector Bouwen – Stapsgewijze Handleiding
  5. Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana
  6. Een Raspberry Pi-thuisautomatiseringssysteem bouwen voor afstandsbediening
  7. Geautomatiseerd Plantenwatersysteem met Raspberry Pi & Webdashboard
  8. MrRobot: Ubuntu Mobiel-Gestuurde Rapiro Robot met Stem, Touch & Schud Interactie
  9. DIY Wall-E Geïnspireerde Raspberry Pi CD-Doos Robot
  10. Bouw een Bluetooth-gecontroleerde Raspberry Pi Robot met Audio Feedback
  11. Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi