Kart

From FSI
(Difference between revisions)
Jump to: navigation, search
(Board designs)
m
 
(42 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{TOC right}}
+
All of the information is now available on a dedicated website.
 +
<br>
 +
Please visit https://ss1.hevs.io/.
  
The Kart module (214_Pr1) is a Summer School module for students
+
[[Category:Kart]]
between the 2nd and the 3rd semester.
+
It is a [[kart/gallery|home-made model car]] remotely controlled by a smartphone.
+
 
+
[[File:Kart I2C.jpg|150px|center|Demo Kart]]
+
 
+
The work of the students can be summarized in four main tasks:
+
* design and assembly of the chassis and the body
+
* analysis of the DC motor
+
* [[Kart#FPGA_Design|configuration of the controlling FPGAs]]
+
* [[Kart#Android_App|completion and extension of the control GUI on the smartphone]]
+
 
+
Take a look at the [[kart/gallery|karts gallery]] !
+
 
+
== System Architecture ==
+
 
+
The kart is controlled by a smartphone via Bluetooth.
+
 
+
=== Hardware ===
+
The electronic is composed of an FPGA daughterboard which embedds an [https://www.mouser.ch/datasheet/2/268/Microsemi_DS0110_IGLOO_nano_Low_Power_Flash_FPGAs_-1592764.pdf Igloo AGLN250] chip.
+
It is designed as an SODIMM-200 RAM stick to be plugged into the motherboard, where all sensors and control boards are wired through the [https://digilent.com/reference/pmod/start PMOD] standard as well as the battery and an I2C chip to read both the battery voltage and consumed current.
+
 
+
An Honor10 Lite running Android acts as the interface for the user.
+
 
+
=== Distributed controls ===
+
 
+
A [[Kart/Bluetooth|Bluetooth - USB dongle]] on the kart communicates via an [[kart/serial link|UART serial link]] with the FPGA.
+
The control values are stored in a set of [[kart/serial link#Registers|registers]] accessed through a simple [[kart/serial link#Serial link protocol|protocol]].
+
 
+
The design is separated over four different modules:
+
* A [[Kart/DC motor controller|DC motor controller]] receives a '''prescaler''' and a '''speed''' value to build the corresponding '''PWM''' and '''direction''' signals.
+
* A [[Kart/stepper motor controller|stepper motor controller]] receives a '''prescaler''' and the '''desired angle''' and builds the coil controls signals.
+
* A [[Kart/sensor board|sensor controller]] manages I/O comprising '''hall sensors''' (to retrieve the driving speed), LEDs, buttons, and a '''range finder''' (to get the distance from an obstacle).
+
* A [[Kart/serial_link#Hardware_control_register|control registers manager]] retrieve various information of the Kart and can play test sequences.
+
 
+
== Tasks ==
+
 
+
The [[Media:Programming_Introduction.pdf|programming introduction]] gives an overview about the structure of the software/hardware and the students' tasks.
+
They comprise:
+
* [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
+
 
+
The students receive the FPGA board preprogrammed with a functional solution and Android phones with a demo application.
+
This allows to start the development either with the FPGA design or the Android application.
+
 
+
=== FPGA Design ===
+
 
+
==== Design environment ====
+
 
+
A [https://classroom.github.com/g/Gvzsxsu_ 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
+
 
+
{{TaskBox|content=
+
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.
+
}}
+
 
+
The design is made using [https://www.mentor.com/products/fpga/hdl_design/hdl_designer_series/ HDL Designer]
+
as it was the case during the case during the [[Main_Page#Semester_1|previous semester's]] labs and project.
+
The FPGAs are [[Libero IDE presentation|configured]] using the [https://www.microsemi.com/product-directory/design-resources/1751-libero-ide Libero IDE].
+
 
+
==== Modules designs ====
+
 
+
Three of the different modules must be completed:
+
* The [[Kart/DC motor controller|DC motor controller]] receives a '''prescaler''' and a '''speed''' value to build the corresponding '''PWM''' and '''direction''' signals.
+
* The [[Kart/stepper motor controller|stepper motor controller]] receives a '''prescaler''' and the '''desired angle''' and builds the coil controls signals.
+
* The [[Kart/sensor board|sensor controller]] manages I/O comprising '''hall sensors''' (to retrieve the driving speed) and a '''range finder''' (to get the distance from an obstacle).
+
 
+
=== 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 [[Media:Kart USB-RS232 board.pdf|board]].
+
 
+
* 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 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 20:25, 17 September 2024

All of the information is now available on a dedicated website.
Please visit https://ss1.hevs.io/.

Personal tools
Namespaces
Variants
Actions
Navigation
Modules / Projects
Browse
Toolbox