|
|
(66 intermediate revisions by 5 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 between the 2nd and the 3rd semester.
| + | [[Category:Kart]] |
− | 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_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 ==
| + | |
− | | + | |
− | 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 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 control is distributed over several FPGA boards connected together via [[kart/I2C link|I2C]].
| + | |
− | These base boards 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 a 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.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 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 [[Media:ELN_kart.zip|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=
| + | |
− | Download the [[Media:ELN_kart.zip|ELN_kart.zip]] and unpack it to your personal drive (''U:\'').
| + | |
− | }}
| + | |
− | {{WarningBox|content=
| + | |
− | Make sure that there is no space character in the path to ELN_kart.
| + | |
− | }}
| + | |
− | | + | |
− | With this, the following designs have to be completed:
| + | |
− | * the [[Kart/DC motor controller#FPGA design|DC motor controller FPGA]] has to generate the PWM and direction signals for the propulsion motor
| + | |
− | * the [[Kart/stepper motor controller#FPGA design|stepper motor controller FPGA]] has to generate the 4 phases to turn the steering wheels to the desired angle
| + | |
− | * 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 "Programming Introduction" presentation...
| + | |
− | * The online documentation of all Java classes that are at your disposition is [[http://kart.vlegit.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.
| + | |
− | | + | |
− | == Components ==
| + | |
− | | + | |
− | === Power supply ===
| + | |
− | | + | |
− | The [[Kart/power supply|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 [[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]]
| + | |