|
|
(35 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 [[Kart/Daughterboard|FPGA daughterboard]] mounted on a dedicated [[Kart/Motherboard|motherboard]].
| + | |
− | | + | |
− | 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]] is controlling the propulsion motor.
| + | |
− | * A [[Kart/stepper motor controller|stepper motor controller]] is responsible for the Kart to turn.
| + | |
− | * A [[Kart/Sensors|sensor controller]] controls various I/Os (LEDs, buttons, range finder, hall sensors ...).
| + | |
− | * A [[Kart/serial_link#Hardware_control_register|control registers manager]] retrieve and control various status information (bluetooth connection, hardware directions ...).
| + | |
− | | + | |
− | == 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/Sensors|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 main power is drawn from two 6 V / 2400 mAh battery packs in series
| + | |
− | The [[Kart/Motherboard|motherboard]] provides two connectors for the batteries, along with an extra one to wire an NiMh charger.
| + | |
− | | + | |
− | {{WarningBox|content=
| + | |
− | Make sure to shut the circuit off while charging to avoid higher voltage on the 12V rail.
| + | |
− | | + | |
− | The charge rate should be of around 0.05C => 120mA here.
| + | |
− | }}
| + | |
− | | + | |
− | The 12V is then reduced to a 5V rail through a buck converter.
| + | |
− | The [[Kart/Daughterboard|daughterboard]] is then fed with the 5V to provide an extra 3.3V rail.
| + | |
− | | + | |
− | Finally, an ADC converter provides the [[kart/Motherboard#Power state|battery level]] as both the battery voltage and consumed current can be read from it.
| + | |
− | | + | |
− | === FPGA board ===
| + | |
− | | + | |
− | The [[Kart/Daughterboard|daughterboard]] is equipped with an [https://www.mouser.ch/datasheet/2/268/Microsemi_DS0110_IGLOO_nano_Low_Power_Flash_FPGAs_-1592764.pdf Igloo AGLN250] FPGA in a VQ100 package.
| + | |
− | The clock is rooted to the FPGA from a 10 MHz quartz.
| + | |
− | | + | |
− | It is designed as an SODIMM-200 RAM stick to be easily interchangeable and plugged into various motherboards.
| + | |
− | | + | |
− | === Sensors ===
| + | |
− | | + | |
− | The sensors connected to the I/Os of the motherboard are:
| + | |
− | * 0 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]]
| + | |