Kart 2020

From FSI
(Difference between revisions)
Jump to: navigation, search
(Update Youtube link, remove unused items and section for the 2020 edition)
(Blanked the page)
 
(3 intermediate revisions by one user not shown)
Line 1: Line 1:
{{TOC right}}
 
  
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://youtu.be/hSTDnhofl60 Youtube teaser movie]
 
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 three main tasks:
 
* design and assembly of the chassis
 
* 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 [[kart/serial link|RS232 serial link]] with the FPGA control board.
 
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.
 
The master also reads data values from the slave boards, stores them into the 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 control is distributed over several FPGA boards connected together via [[kart/I2C link|I2C]].
 
These baseboards each hold a slave function board:
 
* A [[Kart/Bluetooth|Bluetooth RS232 modem]] sits on the [[Kart/FPGA board|I2C master FPGA]]
 
* A [[Kart/DC motor controller|DC motor controller]] receives a speed value and builds a PWM and direction control.
 
* A [[Kart/stepper motor controller|stepper motor controller]] receives the desired angle and builds the coil controls signals.
 
* A [[Kart/sensor board|sensor board]] manages I/O comprising proximity sensors, hall sensors (for the driving speed), and LEDs.
 
== Tasks ==
 
 
The [[Media:Programming_Introduction_2020.pdf|programming introduction]] gives an overview of the structure of the software and the students' tasks.
 
They comprise:
 
* [https://www.android.com 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.
 
 
=== 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 on how to open the project in Android Studio in the [[Media:Programming_Introduction_2020.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 that 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 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]]
 

Latest revision as of 07:01, 17 August 2021

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox