Commit 1f54ceaf authored by Arash Sattari's avatar Arash Sattari

multiple modified

parent 3f58478b
Pipeline #104907 passed with stage
This diff is collapsed.
......@@ -203,6 +203,12 @@
<p>
• RGB display LEDs for tracking timer’s on/off state and the remaining time.
</p>
<p>
I did all the design and implementation of the smart block heater on my own,
and I did not use any code or design from previous students of Fab Academy.
However, I used a few Arduino libraries for my sensors and outputs,
which I referenced in the explanation of the development process.
</p>
</div>
<div class="section-content">
......@@ -210,7 +216,7 @@
<h3 class="mt-4">Materials & Components</h3>
<p>
The material and components that I plan to use mostly come from Fablab Oulu's inventory.
In the following table, a list of the material and their prices is given. Therefore, the prototype is CHEAP!
In the following table, a list of the material and their prices is given. Therefore, the prototype is fairly cheap!
More detail about the components' and materials' features in the <a href="http://.../"><b>Project Development page</b></a>.
</p>
<div class="img-container"><img style="width: 700px;" src="../img/assignments/w12/2.JPG" alt=""><br><b>Figure 2. </b>Materials and Components
......@@ -227,25 +233,38 @@
implementation of the embedded software, and assembling the final design.
</p>
<p>
The processes that I will use for implementing the project are shortly:
</p>
<p>
2D design and laser cutting for fabricating the box.
</p>
<p>
3D deign and printing for the cord reel.
The processes that I will use for implementing the project are shortly:<br>
• 2D design and laser cutting for fabricating the box.<br>
• 3D deign and printing for the cord reel.<br>
Circuit design, PCB design, milling and soldering for the electronic parts (microcontroller, sensors, motor driver, etc.).<br>
• Input device integration of temperature sensor.<br>
• Output device implementation of relay, LEDs and motor.<br>
Embedded programming of the microcontroller.<br>
</p>
<p>
• Circuit design, PCB design, milling and soldering for the electronic parts (microcontroller, sensors, motor driver, etc.).
Fig. 4 shows the different systems and the parts that were designed and assembled for building the project,
and the processes that were required by each:
</p>
<div class="img-container"><img style="width: 600px;" src="../img/finalProject/processTable.jpg" alt=""><br><b>Figure 4. </b>List of project's parts and involved processes.</div>
<p>
• Input device integration of temperature and current sensor.
</p>
<p>
• Output device implementation of relay and motor.
</p>
<p>
• Embedded programming of the microcontroller.
All the parts and systems are explained in detail in the <a href="http://fabacademy.org/2019/labs/oulu/students/arash-sattari/assignments/week19.html"><b>'Project Development'</b></a> week.
I give a short summary of the designed and implemented parts here (Fig. 5): <br>
- The box was made of 6mm-thick pine plywood with curved sides.
stacked the side/top/bottom parts that I had laser cut and glued them together.
The front of the box has a transparent LED display and engraving.<br>
- The pole is 3D printed (two part pressfit and thread/bolt connection to box) and the stand is laser cut wood.<br>
- The cord reel is 3D printed and attached to a DC motor.<br>
- The electronics is a microcontroller (ATTiny44) board, with all parts integrated on the same PCB.<br>
- An LM35 temperature sensor, and three outputs (relay, LED strip and a DC motor)
are implemented and all controlled by the embedded code implemented on ATTiny44.
The temperature sensor is used by the embedded code to optimize the timer.
The relay connects/disconnects the system from power. The LEDs show the state of the system and the remaining time.
The DC motor is used for automatic roll up/down of the cable.<br>
- The Arduino code orchestrates all the functions.<br>
- The serial data connection provides communication between the system and UI.<br>
- The desktop user interface lets the user interact with the system, change its settings,
activate/deactivate it ...
</p>
</div>
......@@ -255,7 +274,22 @@
<div class="section-content">
<p>
The project will be evaluated separately for each part of the design by designing tests,
which demand the functionalities of the part under test.
which demand the functionalities of the part under test. <br>
For testing the final assembled project,
a routine of block heater use will be completely tested
(user rolls down the cord and sets the ready time using the UI, the block heater
calculates on/off times based on temperature, connects the relay when needed,
updates LEDs to show remaining time, disconnects the really when timer runs out and updates LEDs to show
that heating is completed, rolls up the cord at user's request).
</p>
<p>
While developing the project, these questions should be answered:<br>
- Can the microcontroller chip (which is a very basic one) handle the needed functionalities?<br>
- After the prototype is tested with wired communication, will it be easy to implement it
through the already designed WiFi communication?<br>
- Can I implement the functionalities with the hardware that I have chosen or will
I need to change sensors or outputs?<br>
- Will there be a way to make the prototype cheaper?
</p>
</div>
</div>
......
......@@ -97,13 +97,13 @@
<a href="#section-2" class="nav-link">Group Work</a>
</li>
<li class="nav-item">
<a href="#section-3" class="nav-link">aaa</a>
<a href="#section-3" class="nav-link">Qt vs. MATLAB GUI</a>
</li>
<li class="nav-item">
<a href="#section-4" class="nav-link">bbb</a>
<a href="#section-4" class="nav-link">C++ vs. MATLAB vs. Python</a>
</li>
<li class="nav-item">
<a href="#section-5" class="nav-link">ccc</a>
<a href="#section-5" class="nav-link">My Application</a>
</li>
<li class="nav-item">
<a href="#section-6" class="nav-link">Reflection</a>
......@@ -119,42 +119,116 @@
<!-- Page Content -->
<div id="page-content-wrapper">
<div class="container-fluid">
<h1 id="contentTitle" class="mt-4">Week Title</h1>
<h1 id="contentTitle" class="mt-4">Interface and Application Programming</h1>
<div class="section-content">
<h4 class="mt-4">Week's Assignments</h4>
<p>
<b>Individual Assignments:</b><br>
- Write an application that interfaces a user with an input &/or output device that you made. <br>
<b>Group Assignment:</b><br>
- Compare as many tool options as possible. <br>
</p>
</div>
<div class="section-content">
<a class="anchor" id="section-2"></a>
<h3 class="mt-4">Group Work </h3>
<p>
I did all of this week’s group work on my own.
I have some experience in creating interfaces in Qt and MATLAB GUI, using C++,
Python and MATLAB languages. So, I’m going to compare these platforms and languages
for this week’s group assignment.
</p>
</div>
<div class="section-content">
<a class="anchor" id="section-3"></a>
<h3 class="mt-4">aaa</h3>
<h3 class="mt-4">Qt vs. MATLAB GUI</h3>
<p>
<b>Qt:</b><br>
<a href="https://www.qt.io/"><b>Qt</b></a> is a free and open-source widget toolkit for creating GUIs and apps.
It is cross-platform and covers a wide range of operating systems
(including Linux, Windows, macOS, Android or embedded systems). The development
and improvements of this platform has been going very fast during the recent years. <br>
It has a very capable IDE (Qt Creator), which is very user-friendly,
and has a great documentation and tutorials. It supports many languages including C++
(with powerful inter-object communication and flexibility features),
QML (declarative, JavaScript-based language) and Python
(Qt for Python, allowing users to develop Qt and QML application easily from Python). <br>
There are some mature plotting libraries (e.g. QCustomPlot and QWT)
and test libraries (e.g. QTestLib) developed for Qt. On top of all,
it provides internationalization support
(Qt translation system), which enables you to have a multilingual apps.
</p>
<p>
<b>MATLAB GUI:</b><br>
MATLAB supports developing applications with graphical user interface (GUI) features.
MATLAB includes <a href="https://www.mathworks.com/discovery/matlab-gui.html"><b>GUIDE</b></a> (GUI development environment) for graphically designing GUIs.
It also has tightly integrated graph-plotting features. It is neither open source nor free,
but almost all research institutions provide their employees with rights for MATLAB use,
since it is a very versatile and extremely well stablished toolkit. After the GUI design,
with the help of MATLAB Compiler,
you can create programs only as standalone desktop or web apps.
</p>
</div>
<div class="section-content">
<a class="anchor" id="section-4"></a>
<h3 class="mt-4">bbb</h3>
<h3 class="mt-4">C++ vs. MATLAB vs. Python</h3>
<p>
<b>C++:</b><br>
<a href="http://www.cplusplus.com/"><b>C++</b></a> is an object-oriented language based on the C language.
It is developed to optimize performance is key while keeping the code organized.
Potentially very high performance can be reached, but your code needs to be good,
and writing a good C++ code can be harder than other languages.
So, using C++ gives you the benefit of running your app at high speed. With C++,
you have access to lots of libraries (many Python libraries are just wrappers around C++ libraries).
It has extensive documentation and tutorials, and a vast user community. <br>
It is a lower-level programming language compare to others.
So, it takes more time to learn and even longer to learn to code properly.
Programming with C++ usually requires lots of debugging and takes a long time.
</p>
<p>
<b>MATLAB:</b><br>
<a href="https://www.mathworks.com/products/matlab.html"><b>MATLAB</b></a>
(matrix laboratory) is a multi-paradigm numerical computing environment
and programming language developed by <a href="https://www.mathworks.com/"><b>MathWorks</b></a>.
Interfacing with programs written
in other languages, including C, C++, Java and Python is straightforward.
Coding with MATLAB is easy, since it is a higher-level language
(basic functionality are already embedded), and writing code, visualizing results,
and debugging happens in one integrated environment.
It has extensive documentation and tutorials, and a vast user community. <br>
Working with multi-dimensional matrixes is efficient in MATLAB (as its name suggests!)
and it has a large set of toolboxes. That said, generally,
a typical MATLAB program runs around 1.5-2x slower than a C++ program.
Often times people end up coding computationally intensive parts in C
and integrating it with MATLAB code. Plus, you need to code MATLAB style,
which is different from general-purpose programming languages
like C++ or Python. Otherwise, you will end up with a very slow code.
</p>
<p>
<b>Python:</b><br>
<a href="https://www.python.org/"><b>Python</b></a> was developed with the aim of creating a code that is easy to learn
and read and simple rather than complicated. It supports multiple programming paradigms,
including procedural, object-oriented, and functional programming.
Python has comprehensive and powerful standard libraries.
Writing code in Python is quick, and the written code is easily reusable
(for many functions just copy paste free code from internet).
Like MATLAB and C++, Python community is also strong. <br>
Code written in Python can easily become messy for big projects,
and since it is an interpreted language, sometimes finding the errors in the code can be difficult.
Compared to C++, your programs in Python will typically run slower.
</p>
</div>
<div class="section-content">
<a class="anchor" id="section-5"></a>
<h3 class="mt-4">ccc</h3>
<h3 class="mt-4">My Application</h3>
<p>
In conclusion of last section, as a rule of thumb, use MATLAB/Python
for prototyping new algorithms and C++ in production.
Since my app was only a prototype and I needed it to be capable of running on Android devices,
I uses a combination Python and Qt, namely <a href="https://pypi.org/project/PyQt5/"><b>PyQt5</b></a>!
</p>
</div>
......
......@@ -158,17 +158,17 @@
1. Dragging and dropping the image into the Inkscape. <br>
2. Opening <span class="inText">Trace Bitmap</span> from <span class="inText">Path</span> menu. <br>
3. Checking the <span class="inText">Live Preview</span> to see the image. <br>
4. Playing around with <span class="inText">Brightness cutoff</span> to see which setting is better for the image. It is actually a threshold that determine whether the pixel should be consider black or white. <br>
4. Playing around with <span class="inText">Brightness cutoff</span> to see which setting is better for the image. It is actually a threshold that determine whether the pixel should be considered black or white. <br>
5. Setting the <span class="inText">Edge detection</span>. This setting adjust the darkness or thickness of the edge in the output. <br>
6. Setting the <span class="inText">Brightness cutoff</span>. It tries to find edges where colors change. The setting here determine how many colors output will have. <br>
6. Setting the <span class="inText">Brightness cutoff</span>. It tries to find edges where colors change. The setting here determine the color quantization level. <br>
7. Setting the <span class="inText">Brightness steps</span>, this let you to set the number of scan you want to have in output. <br>
8. The output vectorize image will show exactly on top of graphical image. I dragged it to somewhere else. <br>
9. Different layers are stacked in the output image. In order separate the layers, I did right click on the vectorized image and selected <span class="inText">Ungroup</span>. <br>
</p>
<div class="img-container"><img style="width: 600px;" src="../img/assignments/w17/3.jpg" alt=""><br><b>Figure 3. </b>The vectorized image.</div>
<p>
In the next step, the vectorized image should be converted to stiches for the embroidery
machine. For converting pictures into stiches, I used ‘Convert artwork to embroidery’
In the next step, the vectorized image should be converted to stitches for the embroidery
machine. For converting pictures into stitches, I used ‘Convert artwork to embroidery’
in ‘Master BERNINA Embroidery Software 8’. The icon can be found from the artwork canvas.
Click on the artwork canvas icon to switch to the corel side of the embroidery software.
To add the image, click on the ‘Select artwork’ icon,
......@@ -188,7 +188,7 @@
<h3 class="mt-4">Preparing the Fabric</h3>
<p style="padding-left:30px;">
1. Place the stabilizer on the backside of the fabric. <br>
2. Use a temporary adhesive spray KK 100 to make sure that the stabilizer is stays in its proper placement (Fig. 5). <br>
2. Use a temporary adhesive spray KK 100 to make sure that the stabilizer stays in its proper placement (Fig. 5). <br>
3. Place the outer hoop on fabric’s backside (the side with the stabilizer), and the inner hoop on the front side. <br>
4. Tighten the hoops together by tightening the screws. <br>
5. Check if the fabric is completely stretched, if not back to step three! <br>
......@@ -270,7 +270,7 @@
</p>
<div class="img-container"><img style="width: 600px;" src="../img/assignments/w17/18.jpg" alt=""><br><b>Figure 18. </b>Thread being tangled during the embroidery process.</div>
<p>
With Marta's help, this was the fixed by changing the fabric, reducing the embroidery speed (Fig. 19)
With Marta's help, this was fixed by changing the fabric, reducing the embroidery speed (Fig. 19)
and changing the thread tension from 4.0 to 3.0 (Fig. 13).
Fig. 20 shows images of the final successful process and result.
</p>
......
......@@ -103,7 +103,7 @@
<a href="#section-4" class="nav-link">Draft of My Video Clip</a>
</li>
<li class="nav-item">
<a href="#section-5" class="nav-link">Use Case</a>
<a href="#section-5" class="nav-link">Production Possibility</a>
</li>
<li class="nav-item">
<a href="#section-6" class="nav-link">Reflection</a>
......@@ -150,7 +150,7 @@
<a class="anchor" id="section-3"></a>
<h3 class="mt-4">Draft of My Summary Slide</h3>
<p>
I started working on <a href="../files/w18/FinalProject_ASattari.pptx"><b>my slide</b></a>, so it is updated to the point that I have currently progressed. It already includes my name, project name, Fab Lab name,
I started working on <a href="../presentation.png"><b>my slide</b></a>, so it is updated to the point that I have currently progressed. It already includes my name, project name, Fab Lab name,
a sketch of the project, a brief description of it. However, I will add a photo of my completed project later on.
Maybe I need to come up with a better name for the project, too!
</p>
......@@ -170,18 +170,21 @@
I should mention that Camtasia is not a free tool, but it offers a 30-day free trial to new users.
</p>
<p>
My project presentation video can be found <a href="../files/w18/FabLab.mp4"><b>here</b></a>.
My project presentation video can be found <a href="../presentation.mp4"><b>here</b></a>.
</p>
</div>
<div class="section-content">
<a class="anchor" id="section-5"></a>
<h3 class="mt-4">Use Case</h3>
<h3 class="mt-4">Production Possibility</h3>
<p>
I am aware that this design is far from being a reliable solution, since the outdoor conditions of cold winters, e.g. subzero temperatures, wind, rain, snow, etc., has to be considered.
Implementing such durable and reliable design demands structure material and electronic design, which are not available in a FabLab.
However, it was great to be able to put together an initial prototype, so that basic functionalities could be verified.
I am very much tempted to continue to enhance this design further, if possible.
I am very much tempted to continue to enhance this design further, if possible. I have added a list of future work possibilities
to my 'Final Project' page, but from the point of view of production possibilities,
I need to do a thorough research of the available commercial products
and try finding support for a possible future prototype.
</p>
</div>
......
This diff is collapsed.
......@@ -303,12 +303,15 @@
<h3 class="mt-4">Group Work</h3>
<div class="section-content">
<p>
I had This week’s group assignment was to use the test equipment in the lab to observe the operation of a microcontroller circuit board. I did the task on my own this week.
I had This week’s group assignment was to use the test equipment in the lab to observe the operation of a microcontroller circuit board. I did the task on my own this week.<br>
I used Neil’s code for the individual assignment,
but I wrote my own sample code for the group work.
My sample code has a baud rate of 9600 (not the same as Neil’s code). A snapshot of the code that I wrote for the Group Work is shown in Fig. 22.
The test equipment that I used was a <b><a href="http://www.testequipmentdepot.com/tektronix/pdf/mso2000b-dpo2000b_datasheet.pdf">Tektronix MSO 2002B Mixed Signal Oscilloscope</a></b>, which is capable of 200MHz bandwidth and 1 GS/s sample rate.
The device is shown in Figure 22.
The device is shown in Fig 22.
The ‘Single’ button shows the result of a single measurement (without averaging many).
</p>
<div class="img-container"><img style="width: 700px;" src="../img/assignments/w6/22.JPG" alt=""><br><b>Figure 22. </b>Tektronix MSO 2002B Mixed Signal Oscilloscope.</div>
<div class="img-container"><img style="width: 900px;" src="../img/assignments/w6/22.JPG" alt=""><br><b>Figure 22. </b>Tektronix MSO 2002B Mixed Signal Oscilloscope and group work code.</div>
<p>
I used a passive probe in the measurements. First, I checked the baud rate with the scope.
Figure 23 shows the signal for transmitting "U" and the baud rate measurement result. Baud rate measured using oscilloscope was 9.615kHz,
......
This diff is collapsed.
img/assignments/w12/2.JPG

112 KB | W: | H:

img/assignments/w12/2.JPG

106 KB | W: | H:

img/assignments/w12/2.JPG
img/assignments/w12/2.JPG
img/assignments/w12/2.JPG
img/assignments/w12/2.JPG
  • 2-up
  • Swipe
  • Onion skin
img/assignments/w19/1.JPG

43.9 KB | W: | H:

img/assignments/w19/1.JPG

76.3 KB | W: | H:

img/assignments/w19/1.JPG
img/assignments/w19/1.JPG
img/assignments/w19/1.JPG
img/assignments/w19/1.JPG
  • 2-up
  • Swipe
  • Onion skin
img/assignments/w6/22.JPG

99.8 KB | W: | H:

img/assignments/w6/22.JPG

102 KB | W: | H:

img/assignments/w6/22.JPG
img/assignments/w6/22.JPG
img/assignments/w6/22.JPG
img/assignments/w6/22.JPG
  • 2-up
  • Swipe
  • Onion skin
......@@ -309,13 +309,13 @@
</div>
</div>
<div class="col-md-4 col-sm-6 portfolio-item">
<a class="portfolio-link" data-toggle="modal" href="#">
<a class="portfolio-link" data-toggle="modal" href="assignments/week11.html">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fas fa-plus fa-3x"></i>
</div>
</div>
<img class="img-fluid" src="img/portfolio/coming-soon.jpg" alt="">
<img class="img-fluid" src="img/portfolio/11-thumbnail.jpg" alt="">
</a>
<div class="portfolio-caption">
<h4>Week 11</h4>
......@@ -365,13 +365,13 @@
</div>
</div>
<div class="col-md-4 col-sm-6 portfolio-item">
<a class="portfolio-link" data-toggle="modal" href="#">
<a class="portfolio-link" data-toggle="modal" href="assignments/week15.html">
<div class="portfolio-hover">
<div class="portfolio-hover-content">
<i class="fas fa-plus fa-3x"></i>
</div>
</div>
<img class="img-fluid" src="img/portfolio/coming-soon.jpg" alt="">
<img class="img-fluid" src="img/portfolio/15-thumbnail.jpg" alt="">
</a>
<div class="portfolio-caption">
<h4>Week 15</h4>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment