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

Earth Analyzer: Geavanceerde IoT Sensor Kit voor Milieumonitoring

Onderdelen en Benodigdheden

OnderdeelAantal
Bolt IoT WiFi Module1
Arduino UNO1
Arduino Nano R31
nRF24L01+ radio modules2
DC Motor 12V2
DFRobot Solar Power Manager (12V loodzuur)1
L298 Dual H-brug motordriver1
Jumper wires1 set
LM35 Temperatuursensor1
DFRobot Capacitatieve Bodemvochtsensor (corrosievast)1
SG90 Micro-servo1
Joystick 10kΩ1

Benodigde Gereedschappen

  • Soldeerbout, soldeer, flux
  • Multitool/schroevendraaier

Apps & Online Diensten

  • Arduino IDE
  • Bolt IoT Cloud & App (Android/iOS)
  • Integromat (nu Make)
  • Twilio SMS API
  • Mailgun E-mail API
  • Telegram Bot API

Over dit Project

De Earth Analyzer is een rover voor landbouwkundige monitoring. Het project bestaat uit drie modules:

Module 1: Rover Besturing & Sensoren (Bolt IoT + Arduino)

  • Twee 12V DC motoren aangestuurd via L298 driver.
  • Motor driver inputs (EN1, EN2, IN1-IN4) aangesloten op Bolt WiFi module (digitale pinnen 0-3) én Arduino.
  • Bodemvochtsensor → Bolt digitale pin 4.
  • LM35 temperatuursensor → Bolt analoog pin A0.
  • Alle GND en VCC (5V) gemeenschappelijk afkomstig van Arduino/voeding.
  • Zonne-energiemanager laadt 12V accu voor continue werking.

Module 2: Lokale Besturing via nRF24L01 (Radio)

  • Twee nRF24L01 modules voor korte-afstand besturing (bijv. in de buurt van het huis).
  • Zender (handheld): Arduino Nano + nRF24L01 + 2 joysticks (één voor rijden, één voor servo).
  • Ontvanger (op rover): Arduino UNO + nRF24L01 + L298 driver + servo.
  • Joystick waarden (0-1023) worden gemapt op commando-codes (100-700) en via radio verzonden.

Module 3: Cloud Monitoring & Alerting (Bolt Cloud, Integromat, Telegram, Twilio, Mailgun)

De Bolt module leest sensoren (temperatuur, vochtigheid) en stuurt data naar Bolt Cloud. Een server-side script (Python op bv. Replit) pollt de Bolt Cloud en stuurt alerts via Telegram wanneer drempels worden overschreden. Integromat (Make) koppelt Google Assistant → HTTP request → Bolt Cloud → Mailgun/Twilio voor e-mail/SMS notificaties.

Code: nRF24L01 Zender (Arduino Nano)

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";

int x_key = A1, y_key = A0, p_key = A3, q_key = A2;
int x_pos, y_pos, p_pos, q_pos, pos;

void setup() {
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.setChannel(87);
  radio.setDataRate(RF24_250KBPS);
  radio.stopListening();
  Serial.begin(9600);
  pinMode(x_key, INPUT); pinMode(y_key, INPUT);
  pinMode(p_key, INPUT); pinMode(q_key, INPUT);
}

void loop() {
  x_pos = analogRead(x_key); y_pos = analogRead(y_key);
  p_pos = analogRead(p_key); q_pos = analogRead(q_key);

  if (p_pos>400 && p_pos<600 && q_pos>400 && q_pos<600) { // Joystick 1 actief
    if (x_pos>400 && x_pos<600 && y_pos>400 && y_pos<600) pos=100; // stop
    else if (x_pos>400 && x_pos<600 && y_pos<400) pos=200; // vooruit
    else if (x_pos>400 && x_pos<600 && y_pos>600) pos=300; // achteruit
    else if (y_pos>400 && y_pos<600 && x_pos<400) pos=400; // links
    else if (y_pos>400 && y_pos<600 && x_pos>600) pos=500; // rechts
    radio.write(&pos, sizeof(pos)); delay(100);
  }
  else if (p_pos<400 || p_pos>600) { // Joystick 2 (servo)
    if (p_pos<400) pos=600; // servo 90°
    else pos=700; // servo 180°
    radio.write(&pos, sizeof(pos)); delay(100);
  }
}

Code: nRF24L01 Ontvanger (Arduino UNO op Rover)

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>

RF24 radio(7, 8);
const byte address[6] = "00001";
Servo servo;
int servo_pin = 9;

void setup() {
  Serial.begin(9600);
  radio.begin();
  servo.attach(servo_pin);
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.setChannel(87);
  radio.setDataRate(RF24_250KBPS);
  radio.startListening();
  pinMode(3, OUTPUT); pinMode(4, OUTPUT);
  pinMode(5, OUTPUT); pinMode(6, OUTPUT); // Motor pinnen
}

void loop() {
  if (radio.available()) {
    int pos; radio.read(&pos, sizeof(pos));
    switch(pos) {
      case 100: stopMotors(); break;
      case 200: forward(); break;
      case 300: backward(); break;
      case 400: left(); break;
      case 500: right(); break;
      case 600: servo.write(90); break;
      case 700: servo.write(180); break;
    }
  } else { Serial.println("connection lost"); }
}

void stopMotors() { digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); }
void forward() { digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,HIGH); digitalWrite(6,LOW); }
void backward() { digitalWrite(3,LOW); digitalWrite(4,HIGH); digitalWrite(5,LOW); digitalWrite(6,HIGH); }
void left() { digitalWrite(3,LOW); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,LOW); }
void right() { digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,HIGH); }

Telegram Alerting (Python op Server)

import requests, json, time
from boltiot import Bolt
import conf  # bevat: bolt_api_key, device_id, telegram_bot_id, telegram_chat_id, threshold

mybolt = Bolt(conf.bolt_api_key, conf.device_id)

def get_sensor_value(pin):
    try:
        resp = mybolt.digitalRead(pin)
        data = json.loads(resp)
        if data["success"] != 1: return -999
        return int(data["value"])
    except: return -999

def send_telegram(msg):
    url = f"https://api.telegram.org/{conf.telegram_bot_id}/sendMessage"
    payload = {"chat_id": conf.telegram_chat_id, "text": msg}
    try:
        r = requests.get(url, params=payload)
        return json.loads(r.text)["ok"]
    except: return False

while True:
    val = get_sensor_value("4") # bodemvocht sensor op pin 4
    if val == -999: time.sleep(10); continue
    if val >= conf.threshold:
        send_telegram(f"Vochtigheidwaarde {val} overschrijdt drempel!")
    time.sleep(100)

Google Assistant + IFTTT + Integromat (Make) voor SMS/E-mail

  1. Integromat scenario: IFTTT Webhook → HTTP GET naar Bolt Cloud (sensorwaarde) → Router → Mailgun (e-mail met temp = sensorwaarde/10.24) & Twilio (SMS).
  2. IFTTT Applet: Google Assistant commando "Send sensor value" → Webhook naar Integromat URL.
  3. Zeg "Ok Google, send sensor value" → ontvang e-mail/SMS met temperatuur.

Schema's

Zie bijgevoegde afbeeldingen voor: motor driver aansluiting, Bolt pinout, nRF24L01 verbindingen, joystick wiring, en de complete rover-schematic.

Productieproces

  1. Bluetooth-gecontroleerde Arduino Spybot bouwen
  2. FlickMote: Gebarengecontroleerde IR-afstandsbediening voor Slimme Huizen
  3. DIY Arduino TV-B-Gone: Universele TV-uit-schakelaar
  4. Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
  5. Find Me: Slimme Item Locator met Arduino en Bluetooth
  6. Geoptimaliseerde Voedingsoplossingen voor Arduino Projecten
  7. Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
  8. Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
  9. Naadloze LED-dimmer met Bolt IoT en Arduino UNO
  10. Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
  11. Bouw een Volledig Functionele CNC-machine met Arduino Nano R3