Node-RED - Basis

We gaan nu een begin maken met het programmeren van jouw AI-Bot. Open hiervoor Node-RED in een browser op jouw laptop: http://raspberrypi:1880

Je ziet nu de visuele programmeer omgeving voor Node-RED. 

Links zie je in een lange lijst allemaal verschillende Nodes die je kan gebruiken, gegroepeerd in verschillende categoriën. In het midden zie je een werkblad met de naam "Flow 1". En aan de rechterkant wordt informatie getoond over Nodes waar je mee gaat werken.

Maar wat zijn Nodes nu eigenlijk? Nodes zijn allemaal kleine bouwsteentjes die je kan gebruiken om jouw AI-Bot te programmeren. Die bouwsteentjes kan je allemaal aan elkaar vastknopen op een werkblad, dan heb je een zogenaamde 'stroom' van bouwsteentjes die met elkaar verbonden zijn. Een 'Flow' die bestaat uit 'Nodes'.
Omdat er heel veel verschillende soorten bouwsteentjes (Nodes) voor Node-RED beschikbaar zijn kunnen we ze onmogelijk allemaal vandaag uitproberen. De bedoeling is dat jullie gaan begrijpen hoe Nodes werken en leren hoe jullie zelf Nodes kunnen gaan gebruiken.

De eerste stapjes

Sleep nu een node “Wave” onder het kopje “TJBot” uit de linker lijst naar werkblad “Flow 1”.

Dubbel klik op de node “Wave” die je zojuist naar werkblad "Flow 1" hebt gesleept. Klik nu op het potlood icoontje (waar de rode pijl hieronder naar toe wijst).

Selecteer dan de opties:

  • Gender: Male of Female, dit is voor de spraak. Wil je dat je AI Bot met een mannelijke of vrouwelijke stem gaat praten?
  • Speak: Kies hier English, British of American Dialect.
  • Listen: Kies hier UK of US English.
  • Has: Selecteer hier alle opties: Servo, LED, Camera, Microphone, Speaker
  • Name: Geef jouw AI-Bot een Naam

En vul de API keys en URL's die je tijdens de voorbereiding hebt verzameld in voor de volgende 4 AI services, bij Watson Assistant moet je ook de eerder opgeslagen Workspace ID invullen. De URL's die al reeds zijn ingevoerd kan je verwijderen en vervangen door jouw eigen URL's:

  • Watson Assistant: API Key, URL & Workspace ID
  • Speech to Text: API Key & URL
  • Text to Speech: API Key & URL
  • Visual Recognition: API Key & URL

Klik nu op de knop “Add” en daarna op “Done”.

Sleep nu een “inject” node onder het kopje “common” van de linker lijst naar het werkblad “Flow 1”. Met de "inject" node kan je als het ware iets in een Flow injecteren. Verbind nu de inject node met de wave node. Je hebt nu een eenvoudige Flow gemaakt met twee Nodes.

Dubbel klik nu op de inject node en geef de Node een naam: "Start Wave". Klik daarna op de knop 'Done'.

Klik nu op de knop “Deploy” helemaal rechtsboven in de webpagina . Door op de knop "Deploy" te drukken zorg je ervoor dat de flow, het computerprogrammaatje die je net in elkaar hebt gesleept, door de AI-Bot kan worden gebruikt (of ingezet, dit is de vertaling van het Engelse woord "Deploy"). 

Klik nu op het knopje aan de linkerkant van de “inject” node "Start Wave". Dit zorgt ervoor dat de Flow wordt gestart.

Als het goed is gaat het armpje van jouw AI-Bot hierdoor zwaaien. Als jouw AI-Bot is uitgezwaait, dan kan je het armpje met behulp van een schroefje die bij de servo zat met behulp van een kleine kruiskop schroevedraaier vastschroeven.

Een Stapje Verder

Dubbelklik nu op de Node 'Wave' die je op 'Flow 1' hebt geplaatst. Je ziet bij Motion dat je verschillende opties hebt om het armpje van jouw AI-Bot te laten bewegen. Selecteer nu eens de optie "Arm Back" en klik op de knop "Done". Vergeet niet op de knop "Deploy" te klikken en test de nieuwe beweging nu uit.

Dubbelklik nu opnieuw op de Node 'Wave'. Bij Motion kan je ook de volgende optie kiezen: '-- set msg.motion --'.
Dit betekent dat deze node de beweging kan uitvoeren die in een berichtje wordt gestuurd. 'msg' is de afkorting van het Engelse woord message. Dus je moet dan de opdracht voor de beweging (motion) in een berichtje naar de Node toe sturen. Je ziet rechts bij de informatie over de Node welke opties gebruikt kunnen worden: wave, armback, raisearm en lowerarm. Maar hoe stuur je zo'n berichtje nu eigenlijk?
Zorg er eerst voor dat de Motion op '-- set msg.motion --' staat en klik dan op 'Done'.

Dubbelklik nu op de inject Node "Start Wave" en verander de Payload van de Node van een "timestamp" (de tijd in seconden, geteld vanaf 01-01-1970), naar een "string" (reeks van letters en/of cijfers) en vul daarachter dan de waarde "wave" in. Als je straks op de knop van deze inject Node klikt dan stuurt deze straks een berichtje uit met "wave". Deze waarde wordt dan verstuurd in een variabele "msg.payload". De betekenis van Payload binnen Node-RED is "data die wordt verstuurd met een bepaalde doel". Klik nu op "Done".

We versturen straks dus de opdracht "wave" met behulp van een variabele "msg.payload", maar de Wave node accepteert alleen een variabele "msg.motion". Hoe lossen we dat nu op? Dit kunnen we oplossen met behulp van een "Change" Node.

Klik eerst op het lijntje tussen de inject node "Start Wave" en de wave node "Wave". Klik daarna op jouw toetsenboard op "Delete" of op "Backspace" om het lijntje te verwijderen. Sleep nu een "change" node onder het kopje "function" tussen de node "Start Wave" en "Wave".

Dubbelklik nu op de nieuwe 'Change' Node en noem hem "Change Motion". En vul zoals het voorbeeld hieronder achter "Set" de waarde "msg.motion" in, en achter "to" de waarde "msg.payload". Dit zorgt er straks voor dat alles wat binnenkomt in msg.payload in de variabele msg.motion wordt doorgestuurd. Klik nu op "Done".

Verbind nu de drie Nodes met elkaar, druk op "Deploy" en test jouw nieuwe Flow uit.

Als dit goed werkt, zorg er dan voor dat alle 4 arm bewegingen kunnen worden uitgevoerd zoals in het voorbeeld hieronder.

Opdrachten

Probeer nu zelf de volgende drie opdrachten uit te voeren:

  1. Zorg dat het LED lampje van jouw AI-Bot blauw gaat branden.
    Tip: Gebruik de Node "Shine" onder het kopje "TJBot"

  2. Zorg nu dat het LED lampje in 4 verschillende kleuren kan laten branden met behulp van 4 inject nodes.
    Tip: Selecteer Color ' -- set msg.color --' en lees de info bij de Shine Node. (Kijk ook eens hier voor meer informatie over HTML kleuren: https://nl.wikipedia.org/wiki/Lijst_van_HTML-kleuren)

  3. Bouw een flow die jouw AI-Bot iets laat zeggen.
    Tip: Gebruik de Node "Speak" onder het kopje "TJBot". Lees de documentatie van de Node "Speak" zodat je begrijpt wat voor soort type variabele je met behulp van de Inject Node moet meesturen.