Introduction: Smartmail

Arno van Doesburg - 0902237

Hogeschool Rotterdam - Keuzevak - Smart Objects

Het concept

Met Smartmail zul je nooit meer lang inzitten over een belangrijke brief die ergens deze week misschien binnen komt. Smartmail is namelijk een systeem dat door heeft wanneer er post via de brievenbus naar binnen komt, en wanneer dit gebeurt zul jij een berichtje ontvangen op bijvoorbeeld je mobiel (via emails). Zo zit je nooit meer onwetend op werk of tijdens je vakantie te wachten op belangrijke post.

Step 1: De Voorbereiding Van Het Idee

Bij de voorbereiding van dit project heb ik gebruik gemaakt van de MoSCoW-methode om te kijken wat er eventueel allemaal mogelijk zou zijn.

Must have
- Brievenbus
- Arduino
- Ultrasonic sensor
- Arduino case
- Wifi
- Een manier om berichten te sturen naar een email adres


Should have
- Arduino ethernet shield
- Overflow detection (niet 500 berichten ontvangen bij 1 brief)

Could have
- Een manier om berichten te sturen naar een mobiel nummer


Materialen

Zoals je ziet op de lijst hierboven heb je onder andere dus ook een Arduino ethernet / wifi shield nodig om verbinding te maken met internet. Zodra dit onderdeel werkt kan het versturen van berichten beginnen (zodra er post is natuurlijk).

Eventuele problemen

In de eerste periode van de opleiding MT hebben we ook met arduino's gewerkt, en gingen we vooral bezig met twitter berichten versturen. Helaas heeft Twitter een hoop veranderd qua het versturen van automatische berichten dusdanig dat dit geen optie meer was. Ik zal nu een nieuwe manier moeten vinden om een bericht te versturen.

Step 2: De Voorbereiding Van De Uitwerking

Tijdens de les heb ik gezocht naar makkelijke manieren om mails te versturen met een arduino, maar deze moet ik eerst zien aan te sluiten op het internet via mijn ethernet shield. Ik heb een aantal handleidingen gelezen om dit voor elkaar te krijgen maar tot nu toe zonder resultaat.

!- Update -!
Verbinding maken met internet is inmiddels gelukt, qua het verzenden van emails zat ik te kijken naar Tembo, maar ik denk dat ik het via deze handleiding ga proberen. Puur omdat je dan geen accounts of speciale keys nodig hebt om mails te versturen via de server van Tembo.

Benodigdheden
- Arduino
- Ethernet shield
- Wifi

Step 3: Opzetten Van De Arduino

Bij deze stap komen de volgende materialen kijken

  • De arduino
  • Breadbord
  • Internet kabel
  • Arduino kabels
  • USB kabel voor de arduino
  • Ethernet shield
  • Arduino ultrasonic sensor

Het aansluiten

Stap 1: Zet het ethernet shield op de arduino. Zorg dat deze goed op de pinnen van de arduino zit, dit kan maar op 1 manier.

Stap 2: Plaats de ultrasonic sensor op het breadboard en sluit deze aan op de arduino zoals hierboven staat weergegeven.

Stap 3: Stop de USB kabel van de arduino in de USB poort van een PC of laptop en verbind de andere kant met de arduino zelf.

Step 4: De Internet Verbinding (coding)

Nadat de ethernet shield is bevestigd op de arduino is het de bedoeling dat je deze moet instellen om verbinding te maken met het internet. Hiervoor roep je een functie aan die een aantal parameters verwacht, namelijk een media access control adres en een IP adres

#include <SPI.h><br>#include <Ethernet.h>
// Het media access control adres voor het ethernet shield:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };  
//Het IP adres voor het ethernet shield
byte ip[] = { 10, 0, 0, 177 };    
void setup()
{
  Ethernet.begin(mac, ip);
}
void loop () {}

Vul de juiste waardes in voor jouw project zodat het ethernet shield verbinding kan leggen.

Step 5: De Ultrasonic Sensor (coding)

Goed, vervolgens is het de bedoeling dat de ultrasonic sensor weet wanneer er post binnenkomt, en wat hij dan zal moeten gaan doen. Om een idee te krijgen van wat de sensor opmeet moeten we dus eerst kijken wat voor gegevens hij ons kan laten zien om daar vervolgens mee aan de slag te gaan.

In het volgende stukje code laat ik zien hoe je in de console kan laten zien welke afstand er gemeten word en door middel van een if statement kijkt de arduino of de afstand onder de 10 centimeter komt, en wat hij moet doen als dit het geval is.

// Zorg dat de ultrasonic sensor in poort 7 zit!
const int pingPin = 7;<br>
void setup() {
  Serial.begin(9600);
}
void loop()
{
  long duration, inches, cm;
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);
  
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);
  
  cm = microsecondsToCentimeters(duration);
  
  // Is de afstand kleiner als 10 centimeter? Verstuur een bericht!
  if (cm < 10) {
      Serial.print("Pakketje ontvangen, bericht versturen!");
      Serial.println();              
  } else {
      Serial.print(cm);
      Serial.print("cm");  
      Serial.println();
  }
  
   // Het aantal miliseconden tussen afmetingen
   delay(1000);
}
long microsecondsToCentimeters(long microseconds)
{
  return microseconds / 29 / 2;
}

Als je deze code uitvoert zal de sensor om de seconde een meting weergeven in de console van de afstand die de ultrasonic sensor kan scannen. Komt deze onder de 10 centimeter, dan is het if statement true en kan er een andere actie uitgevoerd worden, namelijk het versturen van de email.

Step 6: De Email (coding)

Voor het versturen van de mail heb ik verschillende methodes geprobeerd zoals POP3, SMTP en SMTP2GO. Voor al deze methodes moet je een hoop IP, gateways en subnet adressen invoeren. Deze methodes zijn misschien toch net te uitgebreid voor een klein project als deze. Het is me nu dus wel gelukt om ervoor te zorgen dat de arduino weet wanneer er iets binnen komt, maar niet hoe hij via het ethernet shield een mail kan versturen.

Tegenvaller~

Step 7: Het Bevestigen Van De Case

Alright, nu alle code klaar is en je een goede case hebt voor de arduino is het tijd om alles te bevestigen onder de brievenbus. Let wel op dat je case een opening nodig heeft waar de ultrasonic sensor doorheen kan meten, het is slim om dit te testen als de case nog niet is opgehangen.

Voor het ophangen gebruik ik dubbelzijdig tape, dit omdat de case nogal licht is maar de arduino en sensor toch wel wat gewicht hebben. Zorg dat er genoeg ruimte is in de case maar let op dat de sensor vast zit, of het breadbord is vastgemaakt aan de binnenkant van de case.

Dat was het tot dusverre, ik hoop dat je er wat van geleerd hebt en nu zelf aan de slag kunt!