Kart

(Difference between revisions)
Jump to: navigation, search
(System Architecture)
(Virtual Kart)
(114 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
{{TOC right}}
 
{{TOC right}}
The Kart module is a Summer School module for students at the end of the first year.
 
  
[[File:Kart.jpg|600px|Demo Kart]]
+
The Kart module (214_Pr1) is a Summer School module for students between the 2nd and the 3rd semester.
 +
It is a home-made model car remotely controlled by a smartphone.
 +
 
 +
<!--[[File:Kart I2C.jpg|400px|center|Demo Kart]]-->
 +
 
 +
<gallery>
 +
File:Kart I2C.jpg|HES-SO Valais/Wallis Demo Kart
 +
File:SummerSchool_17.jpg|Summer School '17
 +
File:SummerSchool_15.jpg|Summer School '15<br>[https://www.youtube.com/tv#/watch?v=i8vwEgQDNDM -> Video by Baptiste Cavin]<!--[[Media:Kart_Teaser.wmv|-> Video by Baptiste Cavin]]]]-->
 +
File:SummerSchool_13.jpg|Summer School '13
 +
File:SummerSchool_12.jpg|Summer School '12
 +
File:SummerSchool_09.jpg|Summer School '09
 +
File:SummerSchool_05.jpg|Summer School '05
 +
File:SummerSchool_04.jpg|Summer School '04
 +
</gallery>
 +
 
 +
The work of the students can be summarized in four main tasks:
 +
* design and assembly of the chassis
 +
* analysis of the motor driver circuits (DC and stepper)
 +
* configuration of the controlling FPGAs
 +
* completion and extension of the control GUI on the smartphone
  
 
== System Architecture ==
 
== System Architecture ==
  
The kart is controlled with a smartphone via BlueTooth.
+
The kart is controlled by a smartphone via Bluetooth.
  
A BlueTooth receiver on the kart control board communicates via an [[kart/serial link|RS232 serial link]] with the control  board FPGA.
+
=== Distributed boards ===
  
=== BlueTooth communication ===
+
A Bluetooth receiver on the kart communicates via an [[kart/serial link|RS232 serial link]] with the FPGA control board.
A BlueTooth communication transfers serial port data.
+
This board stores the control values in a set of [[kart/serial link#Registers|registers]] and dispatches them at a regular interval on an I2C link.
A receiver chip creates the RS232 signals for the FPGA.
+
The master also reads data values from the slave boards, stores them into a second set of registers and sends the corresponding information at a regular pace over the RS232 with a very simple [[kart/serial link#Serial link protocol|protocol]].
The [[kart/serial link#Serial link protocol|protocol]] defines how the [[kart/serial link#Registers|registers]] are accessed.
+
  
The FPGA receives following controls:
+
The control is distributed over several FPGA boards connected together via [[kart/I2C link|I2C]].
* the propulsion DC motor speed and direction
+
These base boards each hold a slave function board:
* the steering stepper motor target angle and step period
+
* A [[Kart/Bluetooth|Bluetooth RS232 modem]] sits on the [[Kart/FPGA board|I2C master FPGA]]
* two LEDs
+
* A [[Kart/DC motor controller|DC motor controller]] receives a speed value and builds a PWM and a direction control.
The FPGA sends following information back:
+
* A [[Kart/stepper motor controller|stepper motor controller]] receives the desired angle and builds the coil controls signals.
* the [[kart/battery level|battery level]]
+
* A [[Kart/sensor board|sensor board]] manages I/O comprising proximity sensors, hall sensors (for the driving speed) and LEDs.
* the actual steering angle
+
== Tasks ==
* the [[Kart/sensors/VCNL4000|distance sensor]] data
+
* the [[Kart/sensors/SS311PT|hall sensor]] status
+
  
=== Sensors ===
+
The [[Media:Programming_Introduction.pdf|programming introduction]] gives an overview about the structure of the software/hardware and the students' tasks.
* [[kart/sensors/VCNL4000|VCNL4000 i2c Distance/Ambience Light Sensor]]
+
They comprise:
* [[kart/sensors/SS311PT|SS311PT Hall Sensor]]
+
* [http://en.wikipedia.org/wiki/Field-programmable_gate_array FPGA] design for driving the hardware and reading the sensors
 +
* [https://www.android.com Android] application development for the remote control
  
=== Board connectors ===
+
The students receive FPGA boards preprogrammed with a functional solution and androïd phones with a demo application.
The FPGA board has following connections:
+
This allows to start the development either with the FPGA design or the Android application development.
* a [[kart/connectors/Header|26 pin Header]] connector
+
* a 9 pole DSub connector for RS232
+
* the FPGA JTAG programming connector
+
* the PIC RJ11 programming connector
+
  
=== Boards ===
+
=== FPGA Design ===
For special designs, some boards have larger FPGAs:
+
* Board 29 has a AGL125V5
+
* Board 30 has a AGL250V5
+
  
Within the Actel Project manager, the settings of the FPGA have to be changed: in <code>Project Manager</code>, change FPGA type in <code>Project -> Settings -> Device -> Die</code>.
+
A [https://classroom.github.com/g/s3xpuVfh FPGA design environment] is available, based on:
 +
* [http://www.mentor.com/products/fpga/hdl_design/hdl_designer_series/ HDL designer] for graphical design entry
 +
* [http://www.mentor.com/products/fv/modelsim/ ModelSim] for simulation
 +
* [http://www.microsemi.com/products/fpga-soc/design-resources/design-software/libero-ide Libero IDE] for synthesis and programming
  
For the AGL250V5, pin 46 associated to <code>jtagIo[3]</code> is not available.
+
{{TaskBox|content=
Edit the <code>motorControl.pdc</code> constraints file and change the <code>jtagIo[3]</code> constraint to pin 43.
+
clone the Git repository or download the corresponding <code>zip</code> and install it,
 +
preferably to your personal drive (<code>U:\</code>).
 +
}}
 +
{{WarningBox|content=
 +
Make sure that there is no space character in the path to ELN_kart.
 +
}}
  
== Getting started ==
+
With this, the following designs have to be completed:
In order to start the projects you should do the following:
+
* the [[Kart/DC motor controller#FPGA design|DC motor controller FPGA]] has to generate the PWM and direction signals for the propulsion motor
* Read carefully the specifications above
+
* the [[Kart/stepper motor controller#FPGA design|stepper motor controller FPGA]] has to generate the 4&nbsp;phases to turn the steering wheels to the desired angle
* Consulte the [[kart/students|guide for the first steps]]
+
* the [[Kart/sensor_board#FPGA_design|I/O control FPGA]] has to count the propulsion wheels' rotations and can count the ultrasound ranger distance.
 +
 
 +
=== Android App ===
 +
One goal is to implement an Android application that controls and monitors the kart.
 +
 
 +
==== Introduction ====
 +
 
 +
The installable package of the (or rather a) solution can be found here: [[Media:Kart.apk|Kart.apk]]
 +
 
 +
==== Starting point ====
 +
 
 +
* You can download the Kart project with the minimal interface here: [[Media:Kart.zip|Kart.zip]]
 +
* You can find the instructions how to open the project in Android Studio in the [[Media:Programming_Introduction.pdf|programming introduction]] presentation...
 +
* The online documentation of all Java classes that are at your disposition is [[http://kart-javadoc.hevs.ch here]]
 +
* If you need timers, please do not use Java standard Timer and TimerTask, we provide a dedicated Timer class in the package <b>ch.hevs.utils.Timer</b>.
 +
* To be informed when a register is modified by the kart (i.e. the hall sensor counter value has changed), your application has to implement the KartStatusRegisterListener interface. This will force your application to have a method (statusRegisterHasChanged) that will be called when a register value has changed. Don't forget to register your listener to the Kart (kart.addStatusRegisterListener(...)).
 +
 
 +
==== Common Problems ====
 +
* Don't block the main thread with an infinite loop
 +
* Don't change the orientation of the display during the execution, it can crash the BT communication. Do it in the Manifest.
 +
 
 +
==== Virtual Kart ====
 +
If you need to test your Android application against a Kart and your Kart is either not build yet or not available at the moment, you can install the '''Virtual Kart''' application and use the Kart Bluetooth to USB adapter.
 +
 
 +
* Windows version [http://kart-javadoc.hevs.ch/Virtual%20Kart-2019.8-win64.exe here]
 +
* macOS version [http://kart-javadoc.hevs.ch/Virtual%20Kart-2019.8-macOS.dmg here]
 +
 
 +
== Components ==
 +
 
 +
=== Power supply ===
 +
 
 +
The [[Kart/power supply|power supply board]] provides the 5&nbsp;V and the 3.3&nbsp;V to the other boards.
 +
This is generated from two 6&nbsp;V battery packs.
 +
 
 +
The power supply board also comprises an ADC which provides the [[kart/battery level|battery level]].
 +
 
 +
=== FPGA boards ===
 +
 
 +
The [[Kart/FPGA board|FPGA motherboards]] are equipped with an AGL125 [http://www.microsemi.com/products/fpga-soc/fpga/igloo-overview IGLOO] in a VQ100 package. The clock passed to the FPGA comes from a 10 MHz quartz.
 +
 
 +
They hold daughterboards which drive different parts of the Kart.
 +
The motherboards are interconnected via an [[kart/I2C link|I2C link]].
 +
 
 +
The FPGA motherboards can be tested with the help of a dedicated [[Kart/FPGA_board#Test|test board]] which runs a signal from one I/O pin to the next.
 +
 
 +
=== FPGA daughterboards ===
 +
 
 +
Existing daughterboards are:
 +
* a [[Kart/Bluetooth|Bluetooth interface board]]
 +
* a [[Kart/DC motor controller|DC motor controller]]
 +
* a [[Kart/stepper motor controller|stepper motor controller]]
 +
* an [[Kart/sensor board|I/O board]] for the sensors
 +
* an [[Kart/FPGA_board#Test|FPGA test]] board
 +
 
 +
=== Sensors ===
 +
 
 +
The sensors connected to the I/O board are:
 +
* 1 to 4 [[kart/sensors/VCNL4000|VCNL4000 I2C Distance/Ambience Light Sensor]]
 +
* 1 to 2 [[kart/sensors/SS311PT|SS311PT Hall Sensor]]
 +
* 1 [[Kart/sensors/HCSR04|ultrasound ranger]]
 +
* 1 [[Kart/sensor board|end of turn]] contact switch
  
 
== Additional Information ==
 
== Additional Information ==
Additional informations for [[kart/professor|collaborators]]
 
  
[[Category:Kart]]
+
* Additional informations [[kart/professor|for collaborators]]
 +
* [[kart/toDo|To do list]]
 +
* When preparing the labs, follow the [[kart/setup|setup guide]]
 +
 
 +
 
 +
[[Category:Bachelor]] [[Category:SummerSchool]] [[Category:Pr1]] [[Category:Kart]]

Revision as of 14:42, 22 August 2019

Contents

The Kart module (214_Pr1) is a Summer School module for students between the 2nd and the 3rd semester. It is a home-made model car remotely controlled by a smartphone.


The work of the students can be summarized in four main tasks:

  • design and assembly of the chassis
  • analysis of the motor driver circuits (DC and stepper)
  • configuration of the controlling FPGAs
  • completion and extension of the control GUI on the smartphone

System Architecture

The kart is controlled by a smartphone via Bluetooth.

Distributed boards

A Bluetooth receiver on the kart communicates via an RS232 serial link with the FPGA control board. This board stores the control values in a set of registers and dispatches them at a regular interval on an I2C link. The master also reads data values from the slave boards, stores them into a second set of registers and sends the corresponding information at a regular pace over the RS232 with a very simple protocol.

The control is distributed over several FPGA boards connected together via I2C. These base boards each hold a slave function board:

Tasks

The programming introduction gives an overview about the structure of the software/hardware and the students' tasks. They comprise:

  • FPGA design for driving the hardware and reading the sensors
  • Android application development for the remote control

The students receive FPGA boards preprogrammed with a functional solution and androïd phones with a demo application. This allows to start the development either with the FPGA design or the Android application development.

FPGA Design

A FPGA design environment is available, based on:


View-pim-tasks.png

clone the Git repository or download the corresponding zip and install it, preferably to your personal drive (U:\).

Dialog-warning.png

Make sure that there is no space character in the path to ELN_kart.

With this, the following designs have to be completed:

Android App

One goal is to implement an Android application that controls and monitors the kart.

Introduction

The installable package of the (or rather a) solution can be found here: Kart.apk

Starting point

  • You can download the Kart project with the minimal interface here: Kart.zip
  • You can find the instructions how to open the project in Android Studio in the programming introduction presentation...
  • The online documentation of all Java classes that are at your disposition is [here]
  • If you need timers, please do not use Java standard Timer and TimerTask, we provide a dedicated Timer class in the package ch.hevs.utils.Timer.
  • To be informed when a register is modified by the kart (i.e. the hall sensor counter value has changed), your application has to implement the KartStatusRegisterListener interface. This will force your application to have a method (statusRegisterHasChanged) that will be called when a register value has changed. Don't forget to register your listener to the Kart (kart.addStatusRegisterListener(...)).

Common Problems

  • Don't block the main thread with an infinite loop
  • Don't change the orientation of the display during the execution, it can crash the BT communication. Do it in the Manifest.

Virtual Kart

If you need to test your Android application against a Kart and your Kart is either not build yet or not available at the moment, you can install the Virtual Kart application and use the Kart Bluetooth to USB adapter.

  • Windows version here
  • macOS version here

Components

Power supply

The power supply board provides the 5 V and the 3.3 V to the other boards. This is generated from two 6 V battery packs.

The power supply board also comprises an ADC which provides the battery level.

FPGA boards

The FPGA motherboards are equipped with an AGL125 IGLOO in a VQ100 package. The clock passed to the FPGA comes from a 10 MHz quartz.

They hold daughterboards which drive different parts of the Kart. The motherboards are interconnected via an I2C link.

The FPGA motherboards can be tested with the help of a dedicated test board which runs a signal from one I/O pin to the next.

FPGA daughterboards

Existing daughterboards are:

Sensors

The sensors connected to the I/O board are:

Additional Information

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox