LET OP: deze pagina is enigszins verouderd. Moet ik nog fiksen.

Extra intelligentie en geheugen voor de Arduino!

Om de Arduino een vrijwel onbeperkt geheugen en rekenkracht te geven kun je deze draadloos verbinden met een krachtige computer. Het gemakkelijkst gaat dit met een Bluetooth module. Ik gebruik de HC-06. Deze kost 7 tot 10 euro, afhankelijk van de kwaliteit. Je kunt de Arduino gewoon programmeren zoals je gewend bent. Elke hogere programmeertaal die seriële verbindingen ondersteunt kun je gebruiken om berekeningen te doen, gegevens op te slaan, grafieken te tekenen en alles wat je verder kunt bedenken. Ik heb dit getest met een (Delphi) Pascal programma. Daarnaast heb ik het met verschillende freeware wiskunde programma's getest: Octave, FreeMat en SciLab. Alleen Octave bleek stabiel te zijn, maar met FreeMat lukte het ook min of meer. Bij SciLab kreeg ik dit niet werkend.

Instellen van Octave

Op internet vind je dit wiskunde programma het snelst als je GNU Octave invoert. Je moet ook nog instrument-control-0.2.2.tar.gz downloaden. Dat is een gezipt bestand, maar je moet het niet uitpakken! In Octave type je in pkg install c:\Octave\ instrument-control-0.2.2.tar.gz met in plaats van c:\Octave het juiste pad naar dit bestand op jouw computer. Dit alles hoeft maar één keer te gebeuren. Inmiddels is er van instrument-control een versie met een hoger serienummer. Dat kun je ook gebruiken.
Na enige minuten wachten komt er een mededeling of alleen de opdrachtprompt en is het pakket geïnstalleerd. Het pakket moet wel elke keer na opstaren van Octave geladen worden, door intypen van pkg load instrument-control
De Arduino's moeten aan de Bluetooth van je computer gekoppeld zijn. Ga hiervoor naar het configuratiescherm van Windows en kijk bij Bluetooth. Noteer meteen de poortnummers van de uitgaande lijnen.
Hieronder staan de twee regels die je in Octave moet intoetsen (doe dit maar een keer per sessie). Gebruik de namen van de poorten die je zojuist genoteerd hebt (in mijn geval COM8 en COM15)
A1 = serial("\\\\.\\COM8")
A2 = serial("\\\\.\\COM15")
Bij mij bleek het niet nodig de baudrate e.d. aan te passen, maar dat kan wel vrij gemakkelijk in Octave. Hieronder staat een scriptje (m-file) om de led lampjes op de twee Arduino afwisselend te laten knipperen. Dit werkt perfect en met een rode en een blauwe led ziet het er ook nog leuk uit.

Sluit de verbinding zodra deze niet meer nodig is met srl_close(A1) en srl_close(A2)

Instellen van FreeMat

Bij FreeMat werkt het weer heel anders. Nadat FreeMat geïnstalleerd is kun je de dynamic link library serial.dll ophalen. Deze is verpakt als serialdll.zip. Je moet serial.dll uitpakken en in een map zetten zodat FreeMat deze kan vinden. Ik heb hem bij het programma in de bin map gezet. Ik had hier zelf de nodige moeite mee, omdat Windows 10 vindt dat ik niet genoeg rechten heb. Het is nogal lastig om de rechten zo te zetten dat je dat je wel iets mag veranderen. Eventueel zet je de dll in een andere map waar deze gevonden kan worden. De documentatie laat te wensen over. Zo staat er niet in hoe je poortnummers vanaf 10 kunt opgeven (zie in het voorbeeld). Als alles eindelijk klopt, dan werkt het echter heel behoorlijk. Hieronder staat weer het programma om de lampjes van twee verschillende Arduino's afwisselend te laten knipperen.
Zorg ervoor dat serialload en serial.dll zichtbaar zijn in de filebrowser van FreeMat (of zet het pad zodat alles gevonden kan worden). Open nu de poorten op 9600 baud.
Type in: serialload
A1 = serialPortOpen('COM8', '9600,n,8,1');
A2 = serialPortOpen('\\.\COM15', '9600,n,8,1');
En dan run je de volgende m-file met de groene pijltjesknop op de editor.

Je kunt de poorten als volgt weer sluiten:
fclose(A1);
fclose(A2);

Meerdere Arduino's laten communiceren

Om Arduino's met elkaar te laten samenwerken wordt meestal een ander type Bluetooth module gebruikt (bijvoorbeeld de HC-05), die als slave is in te stellen. Het programmeren van twee verschillende devices geeft echter nogal wat complicaties.
Het ziet ernaar uit dat communicatie met uitsluitend de HC-06 gewoon mogelijk is. De centrale computer maakt verbinding met beide apparaten en verzorgt de communicatie. Ik ben dit nu aan het testen. Het lukt al om met een eenvoudig Delphi-programma twee Arduino's via Bluetooth tegelijk te koppelen en naar beide Arduino's data te sturen en te lezen.

TIP: probeer niet via Delphi een Bluetooth verbinding op te zetten, want dat is erg ingewikkeld en geeft bovendien veel overhead omdat de HC-06 alleen seriële communicatie ondersteunt. Zorg er liever via Windows voor dat de HC-06's gekoppeld zijn (de code is 1234).
In Windows 10:
HC-06 Verbonden zegt eigenlijk niets. Dit geeft Windows weer, zelfs als het apparaat uit staat! Het Ledje op de HC-06 knippert.
HC-06 Gekoppeld nu is er door een programma een verbinding tot stand gebracht en kan data verzonden/ontvangen worden. Het ledje op de HC-06 brandt continue.
Delphi%20testprogramma Ik moet dus poorten 15 en 8 gebruiken Respons van Arduino 2.png