JM3-MARVIN-01 Developed by JM³ Engineering Handleiding Marvin IoT Robot (c) 2015-2017 AREXX Engineering en JM³ Engineering www.arexx.com Actuele updates zijn verkrijgbaar via www.jm3-engineering.com! AREXX Engineering & JM³ Engineering Version: 1.2.
Impressum © 2016-2017 AREXX Engineering Nevistraat 16 8013 RS Zwolle The Netherlands Tel.: +31 (0) 38 454 2028 Fax.: +31 (0) 38 452 4482 Deze handleiding is wettelijk beschermd door copyright. De inhoud mag zonder voorafgaande, schriftelijke toestemming van de eigenaren in het geheel of in gedeeltes NIET worden gekopieerd of overgenomen! Veranderingen aan de specificaties en leveromvang zijn niet uitgesloten. De inhoud van deze handleiding kan te allen tijde zonder aankondiging worden aangepast.
Veiligheidsaanwijzingen • Controleer de polarisatie van de spanning • Houd de Marvin altijd droog. Als de Marvin robot nat wordt, direct de spanning verwijderen en de Marvin droog maken. • Als je de Marvin langere tijd niet gebruikt, de batterijen verwijderen. • Voordat u de Marvin in gebruik neemt controleer eerst de algemene conditie van de robot en zijn toebehoren zoals kabels en batterijen. • Vraag de hulp van een expert als de bediening, aansluiting of veiligheid van de robot een probleem is.
Veiligheidsinstructies voor de lasernabijheidssensor VL6180X 80/87 DocID026171 Rev 7 De VL6180X Nabijheidssensor bevat een laserlichtbron en de daartoe benodigde stuurschakeling. Het laserlichtvermogen van de lichtbron werd zo bemeten, dat de lasermodule onder alle denkbare en voorstelbare voorwaarden voldoet aan de veiligheidseisen voor laserklasse 1. Tot deze veiligheidseisen behoren ook de geïsoleerde fouten die in IEC 60 825-1:2007 worden beschreven.
Inhoudsopgave 1 Inleiding 2 Handleiding 2.1 Marvin Robot hardware . . . . . . . . . . . . . . . . . . . . . . . 2.2 Marvin Robot kenmerken en accessoires . . . . . . . . . . . . . . 2.2.1 Kenmerken . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Reikwijdte van de beide nabijheidssensoren . . . . . . . 2.2.3 Montage van extra nabijheidssensoren (aan de achterkant) 2.3 Inbedrijfstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Documentatie en software . . . . . . . . . . . . . . .
5.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 35 35 35 35 Technische gegevens 6.1 Afmetingen en gewicht . . .
Marvin de IoT Robot Figuur 0.1 Marvin Robot Marvin - iRP Web IDE – voor browsers op een PC, Notebook en Tablet *1) *2) Figuur 0.2 Welkom – venster Figuur 0.3 Programmeer - venster Figuur 0.4 Afstandsbediening en virtueel display *1) Apple IPAD of MacBook kunnen de gegevens alleen op de Robot SD kaart opslaan *2) Firefox, Google Chrome en Safari zijn getest, MS Explorer en Edge worden niet ondersteund. AREXX Engineering & JM³ Engineering Version: 1.2.
1 Inleiding De JM3 IoT-Robot “Marvin” valt op door de omvangrijke serie accessoires en opvallende prestaties. Tot de belangrijkste elementen behoren de TIVA TM C- Microprocessor met de ARM Cortex-M4F en 512KByte Flash, 256KByte SRAM, 6KB EEPROM en de CC3100 WI-FI® Netwerkcontroller, die de Standaards 802.11 b/g/n met maximaal 16Mbit/s Datatransfers, Multi-Connection, TCP en UDP vervult.
Accessoires (niet meegeleverd) • AA batterijen (Ultra Power) of oplaadbare batterijen NiMH bijv. Ansmann HR06 Type 2700 • Lader MW3310HC / 1 A Laadstroom • USB-Kabel (Micro-B / Type A) (vaak gebruikt voor smartphones) Sensor module uitbreiding: Uitbreidingsprint (compatibel met het Arduino systeem, iRP compatibel) • Interface voorbereid met een aansluiting voor de barometer of een GPS Module. • Voor eigen hardware-uitbreidingen. AREXX Engineering & JM³ Engineering Version: 1.2.
2 Handleiding 2.1 Marvin Robot hardware Arduino ext. shield header Nabijheidssensoren Stromvoorziening 5.0V en 3.3V Micro-SD Kaart TivaC 1294 WiFi systeem USB Interface 9D Sensor Odometer Batterijhoulder 6 x AA Nabijheidssensoren (opt.) Motorsturing Drukschakelaar Hoofschakelaar Laadstromstecker (als er accu's worden gebruikt) Figuur 2.1 Marvin robot hardware Tip: De beste manier om de Marvin veilig op te pakken is bij de wielen, rupsbanden of bij de Batterijhouder.
2.2 Marvin Robot kenmerken en accessoires 2.2.1 Kenmerken De IoT Robot beschikt standaard over vele mogelijkheden: • TIVA TM C - Microcontroller ARM Cortex-M4F Core (Floating Point) met 512KByte Flash, 256KByte SRAM, 6KB EEPROM, CC3100 WI-FI® 802.11 b/g/n – tot maximaal 16 Mbps, een optimaal aangepaste printantenne, Infrastructuur- en Ad-Hoc Modus, Flash-ROM 8Mbit • Virtueel venster op de PC of Tablet-PC.
2.2.2 Reikwijdte van de beide nabijheidssensoren De voorste sensoren beschikken over een zichtveld (FoV) met een openingshoek van 25° en een reikwijdte van ca. 30 cm. Afstanden van minder dan 10 cm worden als ’nul’ aangeduid. Daardoor wordt bereikt, dat de robot de hindernissen nog goed kan ontwijken zonder gebruik te moeten maken van een achteruitbeweging. De beide buitenste sensoren staan met +15° resp. -15° scheef uitgericht ten opzichte van de hoofdas van de robot om het zichtveld te verbreden.
2.2.3 Montage van extra nabijheidssensoren (aan de achterkant) De sensoren worden gemonteerd met een rasterafstand van 1,27 mm – d.w.z. vergeleken met de normale montage op pakweg een “gehalveerde rasterafstand”. Daarom is voor het soldeerwerk een soldeerbout met spitse punt en een vermogen van ongeveer 50W nodig. Let erop, dat de sensoren rechtop staan en dat ze niet scheef gemonteerd worden.
Tip: Bij de standaardlevering staat de robot in de WiFi AdHoc mode zodat je direct kunt communiceren met een PC met een WiFi interface (laptop, tablet, etc.). Er zijn diverse SD kaarten die allemaal verschillende eigenschappen hebben. Deze SD kaarten zullen wellicht niet allemaal evengoed werken. We raden af om SD-XC en ScanDisk Ultra kaarten te gebruiken omdat ze wellicht niet werken. De Marvin updates zijn disk images met de iRP software.
2.3.3 De verbinding van de iRP met de PC of tablet In het algemeen zijn er twee verschillende standen (modi), waarin de Marvin robot via WiFi met een PC/Notebook verbonden kan worden: • WiFi – Infrastructuur-modus: de Marvin wordt met een netwerk verbonden (WiFi-Router of Access-Point) • WiFi - Adhoc modus: in deze modus kun je de Marvin direct met een Notebook of Tablet – PC verbinden. – SSID: Marvin – IP: 192.168.1.
2.3.3.2 WiFi - Infrastructuurmodus Deze modus moet van tevoren met behulp van het JM3 Robot Tool in de robot ingesteld worden en op de WiFi router aangemeld worden. De Marvin werkt met DHCP – dat wil zeggen, dat er automatisch een IP-adres gekozen en vastgelegd wordt.
5. Vervolgens open je de browser en type je het IP-adres in, bijvoorbeeld: 192.168.1.120 In de browser kun je het resultaat in Figuur 2.5 aflezen. Je kunt nu de Marvin software gaan ontdekken en een eerste programma laden en starten! Of ga direct naar de Afstandsbediening en Display en zet de lichten aan en uit. 6. Laad nu het voorbeeldprogramma „Looplicht” 7. Dit programma moet de status LED in diverse kleuren laten oplichten, die ongeveer elke seconde van kleur verandert. Figuur 2.
2.3.4 Status LED’s Voor de statusmeldingen van de robot geldt (RGB-LED): • Blauw – de robot functioneert normaal • Lila (knipperlicht) – de batterijspanning is te laag • Geel - geen SD Kaart of er is een storing opgetreden, Meldingen met betrekking tot de USB-interface. • Groen - bezig (SD Kaart recovery) • Blauw/groen (knipperlicht) - geen firmware voorhanden • Geel/rood (knipperlicht) – bezig met het programmeren van firmware • Rood - Storing – s.v.p.
2.4 Afstandsbediening en weergave De „Afstandsbediening en weergave” heeft vijf hoofdfuncties: • De afstandsbediening gebruikersinterface. • Systeemstatusweergave (informatie zoals systeemtijd, accuspanning, sensorstatus) • Gebruiker display (via iRP) • Plotter gebied dat batterijspanning toont, en de snelheid pulsen links rechts kettingsnelheid (vooraf gedefinieerd door firmware). • Command line interface en knoppen voor kalibratie etc..
2.4.1 Systeemdisplay De beschikbare statusweergaven van de robot op het „Systeemdisplay”. Het weergavesysteem geeft de volgende resultaten (Figuur 2.
2.4.3 RTC – Het instellen van de systeemtijd Het instellen van de Real Time klok in de Marvin Robot wordt gestart door het indrukken van de knop „Set RTC”. Daarmee is de instelling van de systeemtijd afgesloten. Tip: De klok loopt vanaf dat moment ook bij een uitgeschakelde Marvin enkele maanden lang gewoon door. Bij het inschakelen van de robot wordt de batterij weer opgeladen. 2.4.4 IJken van het 3D kompas De volgende stappen beschrijven de procedure, die voor de ijking van het 3D-kompas nodig is.
Figuur 2.9 Hemelrichtingen en de vector magnetische inclinatie 2.4.4.3 Stap 3 – Het ijkproces • Laat de robot naar het Noorden wijzen en kiep het toestel 90° naar boven en vervolgens naar beneden. • Laat de robot ongeveer horizontaal naar het Noorden wijzen en kiep het toestel 90° naar links en vervolgens naar rechts. • Herhaal deze analogie voor Oost, Zuid en West en een volledige cirkel - eventueel met tussenwaarden dit de nauwkeurigheid toeneemt.
2.4.5 IJkproces voor de 3D Gyroskoop Het ijkingsproces voor de gyro wordt gestart door op de knop „IJkproces” te klikken voor de Gyro Offset’. De tekst van de knop verander je in „IJkingsproces is bezig – s.v.p. wachten”. Deze melding blijft gedurende de gehele ijkingsprocedure zichtbaar en verdwijnt als het proces klaar is. Tip: Thet ijkproces verloopt automatisch. Daarbij mag je de robot natuurlijk niet bewegen. 2.4.
• Schakel over op de browserpagina „Afstandsbediening en Display”. Zet Marvin aan en verbind de robot met de iRP web-interface via de browser. In de onderste vensterhelft Figuur 2.
getalwaarde van „23” , met een bijbehorende minimale, gemeten afstand „135.0” en een gemeten maximale afstand „300” met een bijbehorende hoogste ruwe getalwaarde van „170”. Tip: Alle afstanden moeten in millimeters „mm” worden ingetypt! Na kalibratie de Marvin een keer herstarten (Uit en Aan)! 2.4.7.3 Stap 3 – Controle van de ijkingsprocedure Als de ijkprocedure helemaal is uitgevoerd kun je de resultaten controleren voor de linker-, rechter- en de centrale sensor. Op een afstand van: • ca.
2.5 Overzichtslijst van de CLI-commando’s (CLI) Tabel 2.1 De volgende tabel levert een overzicht van alle beschikbare commando’s met de syntaxis: Tabel 2.
3 Programmeren met de iRP De grafische programmeertaal Marvin-iRP is gemakkelijk te leren en kan ook worden gebruikt zonder speciale programmeerkennis zoals bijvoorbeeld C/C++. De diverse functiemodules ondersteunen het ontwerp en de uitvoering van programma’s op een logisch niveau. iRP staat voor Intuïtief Robot Programmeren. 3.1 Inleiding in de iRP 3.1.1 Basisprincipes voor de bediening van de iRP Wij gaan ervan uit, dat omgang met de PC en de browser als bekend mag worden beschouwd.
Programma starten Stap voor stap Download een programma Wissen / prullenbak Zoom Figuur 3.2 Marvin WebIDE Programma-toetsen Tip: Andere talen zoals Spaans, Italiaans, Frans en Chinees worden ook ondersteund. De online Help is mogelijk nog niet beschikbaar in alle talen. 3.1.1.2 Het gloeilamp-symbool • Helpfunctie met een korte uitleg van de diverse functies. • Opmerkingen bij de documentatie en software. • Nogmaals het startvenster openen. 3.1.1.
• Daarnaast kunt u de instellingen te maken en te verzenden commando’s. (Sectie 2.5). 3.1.1.5 Programma tabblad • Hier kunt u uw programma’s bewerken, bijv. Laden, opslaan, etc. • Of u kunt bijvoorbeeld programma’s die op de Marvin SD-kaart worden opgeslagen laden. Gewoon follow het drop down menu. • U kunt ook kiezen voor de IRP-modus (beginner, gevorderde, Expert) ingesteld. 3.1.2 iRP Helpfunctie De helpfunctie voor de iRP-functiemodules kan eenvoudig geopend worden.
3.1.3 Mijn eerste programma • Een nieuw programma ontstaat door gewoon een aantal iRP functiemodules samen te voegen. • Als functiemodules “programmeer logisch” niet bij elkaar horen dan kun je deze niet aan het andere blok toevoegen. In ons voorbeeld past het functieblok „reëel getal” programmeer logisch niet bij een „geheel getal” (Figuur 3.4). Figuur 3.4 Niet bij elkaar passend functiemodules in de iRP 3.1.
3.1.5 Het laden en opslaan van programma’s • Hier kun je programma’s laden respectievelijk opslaan. • Interessant is ook de optie om al tevoren aangemaakte onderdelen aan een programma toe te voegen. Op die manier kunt je met de al eerder gemaakte programmamodules een nieuw complexer programma samenstellen dat bestaat uit meerdere modules. Zie het verderop beschreven voorbeeldprogramma, „rijd een vierkant met het kompas”. 3.1.
3.1.7 De analyse van de programmacode (source code) Voor het intensievere debuggen is het handig om de programmacode (source code of Quelltext) te bekijkenn – dit is echter eerder een werkwijze voor ervaren programmeurs en experts. Deze optie wordt gestart via de „Programma” tabulator „Programmacode” („Quelltext”). De sourcecode wordt zichtbaar als een C++ code, met een C++ header en je kunt hiermee ook assembleren, zie (Figuur 3.6). Figuur 3.
4 JM3 Robot-Tool 2.0 4.1 Linux • Kopieer het JM3 Robot Tool in een directory en start het programma „launch_robotTool.sh”! Tip: Voor de details zie de install.txt file • Klik op het icon „Add Robot” - kies een naam (deze kan vrij gekozen worden), de hostnaam en de USB-poort die u gebruikt en ga naar de volgende stap. • Kies het type robot in ons voorbeeld, bijv. „Marvin”. De beschikbare USB-poort naam kan worden opgezocht in de systeemconfiguratie - de USB-poort is meestal „/dev/ttyACM0”.
• Klik OK • Klik op „Add File” om het hex-bestand met het bijbehorende programma te selecteren. Kies het gewenste MARVIN hex-bestand dat je in de MicroController wilt laden „SelectFile”. Selecteer de hex-bestand dat u wilt laden in de micro-controller. Als volgende stap selecteert het type, b.v. „Marvin”. • Klik OK. • Selecteer de robot en het programma in de lijst met de Links.
4.4 Het laden van eigen C/C++ Programma’s Om een geschreven programma (hex-bestand) in de micro-controller te laden moet u tevoren het JM3 RobotTool geïnstalleerd hebben (Figuur 4.1). 4.4.1 Upload (Marvin applicatie) • Start de JM3 Robot-Tool Men neemt niet de robotgereedschap reeds bereid zoals hierboven beschreven. • Klik op „Add File” om het hex-bestand met het nieuwe programma te selecteren. Kies het gewenste MARVIN hex-bestand dat je in de MicroController wilt laden „SelectFile”.
4.4.2 Update van de firmware (bootloader) De firmware van de robot Marvin maakt het dus mogelijk om de bootloader zelf knipperen om een latere versie. Dit vereist de volgende stappen: • Selecteer de nieuwe boot loader (hex-bestand) zoals hierboven beschreven. • Klik op „Upgrade Firmware” Voert de update. Figuur 4.1 De JM3 Robot-Tool AREXX Engineering & JM³ Engineering Version: 1.2.
4.5 Terminal scherm In de JM3 RobotTool zit een terminal scherm en die maakt het mogelijk om data te ontvangen en te versturen naar de Marvin. De terminal kan deze data ook opslaan. Diverse instellingen zijn mogelijk via het tabblad „Settings”: • Verbinden met de robot „Connect” maakt het mogelijk om de data te ontvangen. • Verbreek de verbinding met de robot „Disconnect”. • Stuur data naar de robot „Rechterzijde - onderste venster” - hier kun je commando’s invoeren die je naar de Marvin wil sturen.
4.6 Firmware en iRP Micro-SD-kaart update In het volgende is een beschrijving van het software update proces. Micro SD-kaart image update (Windows OS) De firmware-update wordt uitgevoerd met de Robot gereedschap JM3. Details worden beschreven in Hoofdstuk 4. • Aansluiten op de PC / Notebook via een USB-kabel (Mirco-B / TypeA). • Start het JM3 Robot-Tool gereedschap en selecteer de „Firmware.hex” bestand. • Zet de robot Marvin en maak verbinding met de PC/Notebook. • Begin met een klik op de „Upload icon”.
• Wacht tot het beeld volledig is gekopieerd. • Gelieve „uitwerpen” van de schijf. 4.6.3 Micro SD-kaart update (Mac OSX): Het beeld SD-kaart wordt uitgevoerd met het commando „dd”. • Steek de SD-kaart met de USB-adapter. • Open een terminal-venster. • Controleer de ID „/dev/diskN” van de SD-kaart door het uitvoeren van de opdracht „sudo diskutil list”. • Let op de ID van de SD-kaart (het moet een grootte van ongeveer 2GBytes te hebben en bevatten Precies een Linux-partitie).
5 Option: Programmeren in C/C++ Software De C++ programmeertaal is een moderne versie van de programmeertaal “C” dat komt door een aantal toevoegingen en verbeteringen. Alles bij elkaar is het een moderne taal, die op een beter leesbare code gebaseerd is en duidelijk een betere bescherming biedt tegen neveneffecten (zoals bijvoorbeeld de enums / namespaces in plaats van de onoverzichtelijke #define declaraties). Assembler- en C- programmadelen kunnen probleemloos geïntegreerd worden.
5.1.1 Toolchain Als Compiler moet de GCC voor ARM (arm-none-eabi-gcc) onder Linux toegepast worden. Bovendien worden de volgende pakketten nodig: maak, newlib, arm-none-EABI-gcc en python. Elke editor voor de change van de broncode kan worden gebruikt. De programmering (s/w upload) maakt gebruik van de USB aansluiting en het „JM3 Robot Tool”. Via deze verbinding kan uw programma snel en efficiënt in de TIVA C getransfereerd worden.
6 Technische gegevens 6.1 Afmetingen en gewicht Breedte: 125 mm Lengte: 148 mm Hoogte: 50 mm Gewicht: 195 g (zonder batterijen) 6.2 Spanningsverzorging en stroomverbruik VCC Let op! = 8.4 V ± 5% => 6 AA cellen Het absolute maximum ligt bij 10.0 V !!! ICCAVR Tip: = 160mA +40.0 mA / -20.0 mA => zonder Arduino Extension Batterijbedrijfsduur: ca. 5 u - bij motoraandrijving - motoren op 50% ca. 10 u - bij programmering met de iRP 6.
7 Documentatie bij de schakeling 7.1 Arduino Extension Board Arduino Shields voldoen aan de H/W-eisen. Alle gebruikelijke interfaces zoals I2C, SPI, UART ADC en GPIO Bijv. diverse Timer-outputs zijn in staat de benodigde frequenties op te wekken of een passend impulsbreedtemodulatiesignaal voor bijvoorbeeld de servo-sturing te leveren. Voor de meting van frequenties en impulsbreedtes staat een Input-Capture-functie ter beschikking. Tabel 7.
Figuur 7.1 Marvin Arduino header - schema AREXX Engineering & JM³ Engineering Version: 1.2.
7.2 Pin mapping TM4C129EKCPDT Tabel 7.
Pin Name 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 HIB_N XOSC0 XOSC1 VBAT VDD RST_N PM7 PM6 PM5 PM4 PM3 PM2 PM1 PM0 VDD GND PL0 PL1 PL2 PL3 PL4 PL5 VDDC OSC0 OSC1 VDD PB2 PB3 PL7 PL6 PB0 PB1 Function Signal TSCCP1 TSCCP0 GPIO GPIO T3CCP1 T3CCP0 T2CCP1 T2CCP0 GPIO_T7 GPIO_T6 GPIO_T5 GPIO_T4 GPIO_T3 GPIO_T2 GPIO_T1 GPIO_T0 I2C2SDA I2C2SCL GPIO GPIO GPIO GPIO SDA_X SCL_X LED3_B LED2_G LED1_R WIFI_LED_GREEN GPIO GPIO GPIO GPIO GPIO GPIO HEAD_R HEA
7.3 PCB Print Figuur 7.2 Marvin PCB Print AREXX Engineering & JM³ Engineering Version: 1.2.
Lijst van figuren 0.1 Marvin Robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.2 Welkom – venster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.3 Programmeer - venster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.4 Afstandsbediening en virtueel display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2.1 Marvin robot hardware . . . . . . . . . . . . . . . . . . .
7.2 TM4C129EKCPDT Pin mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 AREXX Engineering & JM³ Engineering Version: 1.2.