Interviewing the teams! Part 2.

This is our second and last interview with the teams! Enjoy!

How did these two weeks go?

Programming phone: First week was nice but on the second week we didn’t have anything to do.

Design: Quite quickly and it was also fun.

Electronics: Just fine. First week went by learning and on the second week went by doing and solving problems.

Programming phone: Atmosphere was very laid-back.

 

What has been the best and the worst thing?

Programming phone: The best was to see that the work works and the worst and the most boring thing was when we didn’t have anything to do.

Design: The best thing was to learn to use different applications. The most depressing thing was when you thought you know how to do something but actually you didn’t.

Electronics: The best thing was getting the final and right circuit board working after many problemsThe last three days were the worst because we did the same thing again and again and still didn’t work.

Programming phone: Designing and making the app was the best. The last two days were the most boring ones because we didn’t have anything to do.

 

20170615_145425

 

What have you learned?

Programming board: We have learned many different tactics to program an Arduino.

Design: To use many different apps.

Electronics: Everything was new so we learned everything we did.

Programming phone: We learned to use different applications

 

Did these weeks come up to your expectations?

Programming phone: Yes but we thought that we would work like last year (teams).

Design: Yes.

Electronics: Yes but more exciting than we expected.

Programming phone: It was more free than we thought.

 

In these two weeks everyone has learned to work in teams and that teamwork is powerful! Everybody also learned how to use different apps.

 

Here is the link to the previous interview:

Interviewing the teams!

 

Design

In this post we are going to tell you in detail what Siri and Antti are doing in the designing team. We are going to tell you the process of making a fidget spinner next week, this is one of the stages. In every blog post that we’re telling you about the process of making the spinner we are going to put some photos and/or links to the web pages they have used to learn etc.

Designing team’s  main task is to design and make the fidget spinner’s front cover. They have to consider the weight of the spinner so it stays balanced. They also need to take into account the shape so that the circuit board can fit into it. That’s why they need to collaborate with electronics team. In the last couple of days they have worked together a lot.

At the beginning of the process they needed to learn how to use Inkscape. Neither of them had had any experience with the application. At first it felt difficult but they didn’t use the net to learn, they learned it by themselves. Now they are making a 3D version of the 2D version they did couple days ago.

 

ss design4

2D version of the fidget spinner

ss design

Practicing 3D designing

Interviewing the teams!

In the morning we interviewed other teams about their projects.

Here are some answers to our questions:

Electronics team said that neither of them had had any experience with designing circuits before. The funniest parts of making circuit boards are when you learn new and interesting things and when you get to mill circuit boards. Also when you get to see the circuit board in your own hands, it shows the work you’ve done. The biggest challenges occurred when some components needed to be searched from the net.

2

Designing team told us that it was a totally new experience for both designers. They said that the best parts were designing and learning in practice. The hardest parts were to get good ideas, think about the best materials and and calculate the distribution of weight so that the spinner stays balanced. They have already designed many different versions of the fidget spinner.

Programming board team had had similar experience before. They think programming is quite fun but at the same time it’s also quite hard. In a nutshell they try to light the LEDs so that they’ll show letters and different patterns. There are difficulties on the way because the letters are supposed to look the same even when the speed of the spinner changes. There are also difficulties with the coding because it is very specific: if one character is missing it can make the whole code stumble. They said that “every team depends on them”.

 

kuvacircuitssivusta

 

Programming phone team said that the hardest decision to make is when and where to eat lunch. The team has programmed an application by which you can instruct the LEDs to show different letters etc. They think that it has been nice and quick to learn even though they didn’t have previous experience with Android Studio. They have done games earlier but it’s nothing like what they are doing now.

Later during these two weeks we will give you more information on the teams and their works.

 

Learning new things

The third day started with practicing 3D designing using Autodesk Fusion 360. At first the program felt complicated but in the end it was quite simple. We did lots of rehearsing with the program.

The other teams also worked hard:

Electronics team planned a circuit board which had the shape of a fidget spinner.

Programming phone team downloaded Android Studio and made a different version of the app they had done yesterday.

Designing team designed lots of different looks for the spinner and they even laser cut them. They also learned 3D designing using Autodesk Fusion 360.

Programming board team got their Hall effect sensor working. They also got the Arduino to receive messages via Bluetooth using a Bluetooth module. The Arduino is supposed to show letters from the messages it has received.

Today we learned lots of new things. It was nice to learn something interesting and new, like 3D designing, that none of us had done before.

 

A circuit board in the shape of a fidget spinner

Multitasking in Arduino

As commented in the previous post, the majority of the groups have already succeed in programming the different functionalities so they just needed to integrate all of them together in the same sketch so it looks like a real time application.

The concept of multitask is not easy to explain to novices (specially when they have barely assimilated the concept of sequential programming. However, the trial-and-error exercise of today help majority of the teams to more or less understand this concept.

I offered them two possible approaches in order to apply multitask to their robots. The first option was to follow the complete tutorial found from Adafruit: Multi-Tasking Arduino. They make heavy use of the function millis() in order to schedule execution of the different tasks.The state of the different sensors and actuators connected to Arduino, as well as, the timestamp when each method was called last time are stored in instances of a class. The problem of this approach is that it utilizes the concept of class to control the different components connected to Arduino. Although classes and object oriented programming are a fundamental programming concepts I think it is a little bit advanced for beginners.

The second option is to use any of the Timer and Scheduler libraries available for Arduino in order to avoid the heavy use of the millis() function. In this case, to avoid the use of classes, I recommended trainees to use global variables to store state of the different componets between tasks calls. Among all the possibilities, I chose two different scheduling libraries. TaskScheduler is a complete cooperative multitasking library for Arduino microcontrollers, with plenty of possibilities such as task prioritization. However, I found it too difficult to understand for beginners. I found an old library for Arduino that was simpler and easier to understand: Scheduler library. This library, which just expose two functions, was the chosen one to explain how multitask can be implemented in Arduino microcontroller.

The first team decided not to use any of the two options, and opted using sequential programming using the delay() function. They manage to implement a pseudo-real time operations dividing tasks in subtasks and executing them sequentially. On the other hand, team 2 and 3 utilized the Scheduler library. Finally, team 4 followed the class approach proposed in Adafruit tutorial.

Introduction to programming

Today I just stayed for a while in FabLab, I have some other duties outside university campus. In the early morning I gave a 40 minutes introduction to programming and Arduino platform. I had to start from the very basics since many of the trainees has not written any code before. While I was talking I realized how difficult was to compress that amount  of important programming basic principles in just 40 minutes. That’s why we thought it was better not to go deep in the concepts and just provide them with some example codes and some tips on how to find help and code snippets from Internet. I found some interesting resources at SparkFun webpage such as the Arduino CheatSheet which summarize main functions and operators  as well as some tutorials regarding Data types, binary operations, and boolean logic.

You can find embedded the presentation I used during the tutorial. I left the last part regarding to serial monitor and multitask for the following days.

Today’s goal was that trainees started to program some of the functionalities separately. In the meanwhile, they continued polishing their 3D models as well as solving some unreliable soldering  problems. For instance, Team 1 got his owl head out of the acid and Team 3 printed the toes for their foot-like-robot.

 

Presenting Freecad and 123Design

We were initially planning to present the principles of 2D and 3D design tomorrow. However, the teams are proceeding much quicker than we initially planned, so we needed to modify our schedule. Yesterday, I introduced the guys Inkscape, and how it could be used to print 2D parts using the laser cutter. This morning, Toni has given a comprehensive introduction to Autodesk 123 Design software. He put a lot of emphasis in manipulation of primitives (rotate, scale …) and in  creating solid geometry (boolean operations, loft, revolve, sweep …). Finally, I gave a short introduction to Freecad, focusing on how to use sketches and restrictions.

We suggest them to use Autodesk123 design when building the external mechanics, while Freecad would fit better when they need to build some support or cage for the electronic components.

It was nice that they they had time to play with the tools beforehand by themselves. I think it was easier for them to learn the main ideas.