Ontwerpproject

Lieven Standaert - lieven.standaert@vub.ac.be

Tim De Troyer - Tim.De.Troyer@vub.be

Jan Helsen - jan.helsen@vub.be

Jonas Verbeke - jonas.verbeke@vub.be

Antoine Vergaerde - antoine.vergaerde@vub.be

Sensor- en componentenbibliotheek

Hier vinden jullie praktische informatie over sensors en componenten. Mail vragen of opmerkingen!

Overzicht

Het Ontwerpproject is een vakoverschrijdende ontwerpopdracht die start in de 1e week van het academiejaar en eindigt voor de Paasvakantie. Het bouwt voort op de basisvaardigheden die je hebt verworven in het Wekkerproject, in Basiselektronica en in Informatica. De inhoud van deze vakken wordt verondersteld gekend te zijn bij de start van het Ontwerpproject. Je kan het Ontwerpproject niet starten als je nog één van deze 3 vakken moet afleggen. Als je het gevoel hebt delen van deze vakken vergeten te zijn, dan is het sterk aanbevolen om de betreffende cursussen van onder het stof te halen.

In het Ontwerpproject krijg je een open probleem voorgeschoteld dat je in groepen van 3 studenten dient op te lossen. Hiervoor krijg je een reeks doelstellingen waaraan incrementeel complexere deliverables zijn gekoppeld, die je moet afleveren om punten te verzamelen. Er worden restricties opgelegd qua grootte van de robot, en de onderdelen waar je gebruik van mag maken zijn beperkt. Hiervoor krijg je in het begin van het project per groep een verzameling onderdelen waarmee je kan starten. In het Ontwerpproject wordt de focus gelegd op rapid prototyping en dus wordt er verwacht dat je zelf ontbrekende ontderdelen ontwerpt en fabriceert met 3D-printers, lasercutters, CNC freesmachines e.d.

Het Ontwerpproject bouwt verder op de fablabfilosofie Prototypes, not PowerPoints. De meeste deliverables worden digitaal beoordeeld omdat de doelstellingen digitaal zijn opgesteld. Ofwel haalt je ontwerp die doelstellingen en krijg je alle punten voor de bijhorende deelopdracht, ofwel voldoet je ontwerp niet en krijg je dus geen punten voor die deelopdracht. Gelukkig omvat het Ontwerpproject een groot aantal deelopdrachten met verschillende doelstellingen en deliverables, en er zijn in totaal 100 punten te verdienen. De puntenverdeling is zodanig opgesteld dat je kan slagen voor het Ontwerpproject met een werkend ontwerp en slecht verslag, maar niet omgekeerd. Ook dit weerspiegelt de fablabfilosofie.

Opgave

Tijdens het academiejaar 2017-2018 ligt de nadruk van de opdracht op Duurzame energie, met als thema Windturbines. De opdracht luidt als volgt:

Bouw een windturbine die

  • minstens 21 W kan leveren bij een windsnelheid van 5 m/s;
  • data zoals RPM, windsnelheid, opgewekt vermogen e.d. logt;
  • een loodbatterij correct kan opladen;
  • in staat is zichzelf te stoppen wanneer de windsnelheid te hoog wordt;

De finale proef voor het Ontwerpproject bestaat erin dat je windturbine minstens 21 W kan genereren bij een windsnelheid van 5 m/s en hiermee een loodbatterij kan opladen. De windturbine zal opgesteld worden op het dak van gebouw M op campus Etterbeek. De gedetailleerde opdrachtbeschrijving is gepubliceerd in het dossier.

Finale opstelling

De finale opstelling bestaat bestaat uit een aantal masten die opgesteld staan op het dak van gebouw M op campus Etterbeek. Op deze masten zal je je windturbine kunnen monteren. Gedurende het eindevent zullen deze windmolens gemonitord worden om te kijken hoeveel vermogen ze opwekken;

Materiaal

Het materiaal dat nodig is voor de bouw van je turbine is reeds in het fablab aanwezig. Je zal hoofdzakelijk gebruik maken van MDF/berk (via lasercutter) of PLA (via 3D-printers) om de nodige onderdelen voor je robot te bouwen. Daarnaast wordt je ook een doos materiaal toevertrouwd waarin o.a. motors en elektronica zit. Je mag indien nodig meer onderdelen van hetzelfde type bijvragen, tot de limieten die in het dossier opgelegd zijn. Het is niet toegelaten om onderdelen uit andere toestellen te gebruiken (bv. krachtigere motors) of andere onderdelen die je een tactisch of praktisch voordeel opleveren ten opzichte van andere groepen.

Er wordt van je verwacht dat je je eigen gereedschap voorziet. Breng dus systematisch multimeter, schroevendraaierset, striptang, kniptang, schuifmaat en -- uiteraard -- laptop mee. Als je voor Arduino kiest als microcontrollerplatform, dan neem je ook je eigen Arduino Uno en USB-kabel mee. Voorzie zoveel breadboards en breadboardkabels als nodig om verschillende prototypes in parallel op te bouwen. Een volledig overzicht van het materiaal waarvan wordt verwacht dat je het zelf meerbrengt staat in de materiaallijst.

Remote Monitoring

Aangezien de windmolens op het dak van gebouw M komen te staan, zul je een soort van remote monitoring systeem moeten voorzien om je turbine in het oog te houden. Hiervoor moet je verschillende parameters kunnen opvolgen gedurende de tijd dat de windmolen werkt. Ook moet je een commando naar de turbine kunnen sturen om deze in een noodgeval stil te leggen. Om dit (parameters opvolgen en noodstop) te doen, zijn er verschillende mogelijkheden. Je kan je data over een kabel naar een controller sturen. Dit is gemakkelijk, maar aangezien de turbines op het dak staan, wordt de kabel snel lang en ongemakkelijk om te hanteren.

De andere optie is om draadloos te gaan. Hierbij ga je zowel bij je turbine als aan je controller een zender en ontvanger hebben. Je kan hier kiezen tussen een Hope RF of een Xbee module, beide zijn op voorraad in het labo elektronica. Voor de Hope RF radiomodules is er reeds een code geschreven door Laurent Segers en deze kan je hier terugvinden. Deze code bevat een aantal functie en bestanden die zeer belangrijk zijn voor het correct werken van de code, de belanrijkste elementen worden hieronder verder uitgelegd.

In het eerste stuk code hieronder wordt alles gedefinieerd om de connectie tussen de verschillende Hope RF tranceivers aan te maken. #include "IPControl.h" zorgt ervoor dat de bibliotheek die voor de verbinding en datatransfers instaat, correct wordt ingeladen. Indien deze lijn niet wordt toegevoegd, zal de verdere code niet werken. Socket_t connection definieert de verbinding tussen een bepaalde afzender en ontvanger. Char stream[64] en uint64_t previoustime zijn variabelen die in verdere functies gebruikt worden voor het goede verloop van het zenden/ontvangen. De functies UART_receive() en UART_Send(char* data, uint8_t len) moeten hier reeds gedeclareerd worden, anders zullen de functies later niet werken!

// include the library here (IP)
#include "IPControl.h"

#define LEDpin 13
//-- define the connection between sender and receiver
Socket_t connection; 
// declare a stream variable array here
char stream[64];
//-- keep track of time
uint64_t previoustime;

void UART_receive();
void UART_Send(char* data, uint8_t len);
//-----------------------------------------------

Na het definiëren van de verschillende variabelen en functies moet alles opgezet worden in de setup() van de arduino. Het eerste dat je hier moet doen is de seriële poort openen op 9600 Baud. Vervolgens stel je met IPControl_Setup(8,UART_Send) je verbinding in. Hierbij is 8 het adres vanwaar je data zal sturen en is UART_Send de functie die dit afhandelt. Belangrijk hier is dat je het verzendadres zodanig instelt dat je niet hetzelfde adres van andere groepen gebruikt, anders ontstaan er problemen. Bij het ontvangen van je shield zal je een aantal nummers toegewezen krijgen dewelke je mag gebruiken voor je project.

void setup() 
{
  Serial.begin(9600);
  pinMode(LEDpin,OUTPUT);  
  // who am I (number)?
  IPControl_Setup(8,UART_Send);  
  // reset time
  previoustime = 0;
}

Zodra alles verder ingesteld is, kan de code voor het verzenden en ontvangen van data in de void loop() gestoken worden. Allereerst moet er hier een buffer aangemaakt worden waar de te ontvangen data in opgeslagen wordt. Dit is char receiveData[64]. Om de data dan effectief te ontvangen, wordt de functie UART_receive() aangeroepen. Vervolgens wordt er gekeken hoeveel bytes er binnenkomen met IPControl_Read waarbij connection de verbinding is en receiveData de buffer waar alles opgeslagen moet worden. Let op!: vergeet de ampersand bij "connection" niet, anders zal de code niet werken!. Eens alles is ingeladen kan je gaan bekijken wat het is en van daar beslissingen nemen. message_out[64] is de buffer waarin je de te verzenden data gaat steken. Let hierbij wel op dat deze niet groter kan worden dan de huidige 64 bytes daar het geheugen van een arduino ship redelijk beperkt is. connection.receiverID specifieert het adres naar dewelke je je data stuurt. Via IPControl_Write wordt alle data verstuurd over de gespecifieerde connection.

void loop() 
{
  // receive part of the code
  char receiveData[64];
  UART_receive();
  int datalen = IPControl_Read(&connection, receiveData);
  if (datalen>0)
  {
    if (receiveData[5]=='N')digitalWrite(LEDpin,HIGH);
    if (receiveData[5]=='F')digitalWrite(LEDpin,LOW);  
  }
  // send data every 5 seconds
  if (millis()-previoustime>=500)
  {
    // write here a stream of characters (string)
    char message_out[64] = "This is a test";
    // calculate the length of the string to be sent
    int stringlength = strlen(message_out);
    //-- who is going to receive our messages?
    connection.receiverID = 1;
    IPControl_Write(&connection, message_out, stream, stringlength);
    previoustime = millis();
  }
}

Begeleiding

Atelierbegeleiding

Het fablab is dagelijks geopend, maar de uurregeling is variabel. Als het fablab open is dan kan je er terecht om aan je ontwerp verder te werken, en gebruik te maken van de machines. Verwacht echter niet van de aanwezige laboverantwoordelijken dat zij tijd zullen hebben om jouw ontwerp te remedi\"eren of te debuggen. Op donderdagnamiddag is dat echter wel het geval, en wordt er atelierbegeleiding georganiseerd, ook tijdens weken dat er geen deadlines vallen. Je kan dan advies inwinnen over je ontwerp, om extra materiaal vragen, enz. De atelierbegeleiding loopt op donderdag van 13u30 tot 17u30.

Let op: alvorens hulp in te roepen bij het debuggen van schakelingen, zal er van je verwacht worden dat je eerste zelf een grondige poging hebt gedaan om de oorzaak van je fout(en) te achterhalen. Als je niet ten minste een schema van je schakeling en een bekabelingsschema op je werktafel hebt liggen, dan zal men niet geneigd zijn je te helpen.

Syllabus

Om je te begeleiden bij het Ontwerpproject, is er een syllabus ter beschikking met daarin alle info over de elektronicakant van het project: elektronische meettoestellen, sensors, actuators, prototyping- en debuggingtechnieken, enz. Deze syllabus is eveneens verkrijgbaar bij de cursusdienst. Het is aanbevolen een papieren kopie aan te kopen, omdat je daarin gemakkelijker aantekeningen kan maken dan in de digitale versie. Extra informatie en nuttige links vind je in het dossier.

Slack

De collaboration tool bij uitstek is Slack, en voor het Ontwerpproject is er een kanaal (channel) voorzien binnen het "team" voor de elektronicavakken. Hierin kan je terecht voor snelle vragen, opmerkingen, enz. Als je snel reactie wil, dan is Slack een betere keuze dan vragen naar docenten te mailen. Je kan op Slack registreren met je VUB-e-mailadres. Voor Linux is een desktop client voor Slack beschikbaar.