Helsinki Hacklab - Arduino-workshop
Hyviä kytekntäkalvoja löytyy täältä: http://www.oomlout.com/a/products/ardx/
e
Newbie-lecture

Useful for introducing new people to Arduino, and e.g. for conventions and such.

Connecting LED to 5V and GND on arduino with a resistor

Connecting the LED to pin 13 and making it blink

Edit the program, change blinking time and pattern

Introduce RGB LED, wire it up with resistors to pins 9, 10, 11

For some sculpting fun, introduce polymorh plastic and make diffusers to the RGB leds (if they are clear plastic) - good for a bit of a break : http://letsmakerobots.com/node/11563?page=1

Introduce PWM, make the RGB led fade

If there is still interest and time, introduce inputs, e.g. potentiometer, and use it to control led fade speed or color or other variables.

TODO:

Arduino environment can cause problems, check board type and serial port combination with blinking LED example as soon as possible (hint: unplug/plug USB cable)

Have 2 extra computers ready in case people forget to bring own ones or they run into environment problems

Common cathode LEDs would be a bit easier to grasp.

Better examples

Remember to specify pinmode in the start, it's missing for some arduino examples and causes loss of time on debugging

Some examples of function use for things like setColor(), and different color fades - making it easier to create more interesting programs faster

Maybe even write the animation library that takes care of fading and tweening pins between values.

Mount some of the arduinos (in a removable way) on wood panels together with a breadboard

Group workshop session

After people have learned the basics

Idea is to have the people build some interesting device with many parts together

Split into 2-3 person groups, each group works on some specific part of the final device

The general subdivision of the device can be done in advance by the organizers, as well as the interfaces between the parts.

Each part could have an own arduino board for easiest division of work.

But could also be a function or set of functions in arduino environment, and a breadboard with interfaces to the arduino -> more useful for actual devices, and easier for participants to replicate

Requires merge of the code (opportunity to learn github, but for sake of simplicity could be done using etherpad). Merge could be done by one of the organizers if necessary.

Initial base code could also be copied from etherpad..

In subsequent workshop, people could create a circuit board and build a copy off the device for themselves

Device ideas:

Wake up light alarm clock with moodlight, brighlight, and birdsound, etc.

Has modes that can be switched between manually, or set to activate at certain times of the day

Session 1

Clock display on LED segments or LCD panel

Possibly clock crystal to keep accurate time

Driving 12 volt halogen light, also power input for the clock (arduino can run off 12V)

Maybe use 12V Led light instead of halogen, halogen grows pretty hot and needs correctly designed case

Might use power LEDs, or LED light strips (available..) + some bright warm white leds

RGB Moodlight, and modes for it

UI for doing clock settings and mood selection and editing

Set wakeup time

Select mood

Edit mood?

Button panel

Display UI on LCD panel or alphanumeric LED segments

Sound part

Read sounds from SD card, or generate them on arduino

Trigger them randomly depending on mood settings and events

Session 2

Finishing whatever was unfinished from session 1

Designing and building the enclosure

Designing and etching the PCBs

Maybe use frizing?

Drilling and soldering the PCBs

Program AVR chips with the sketch on a programmer

Reactor panel?

Secondbie-lecture

For people that already have been on the newbie lecture, or know the basics

Main goal is to learn more about sensors and input, as well as various interesting things that can be controlled or done with arduinos

Photoresistor

Buttons

Potentiometer

Servo

Sound

Using LCD displays

Example projects

Spelit -type of reaction speed game

Advanced lectures

For people that already have some electronics and programming knowledge

How to drive stepper motors in microstepping mode (software PWM)

How to emulate keyboard/joystick with Arduino UNO (USB-HID)

Playing sound and samples from an SD card or similar (Project: Talking robot!)

Ostoslistaa:

~5 Photoresistors

~10 Common cathode RGB LEDs (or alternatively compensate for common anode in example code)

~5 potentiometers

~5 servos

~10 push buttons for breadboard

Sound output circuits?

Small speakers x 5

Sound and servo shields for arduino could be suitable PCB projects
Tutorial & project idea linkgs:

Simple tutorials with printable breadboard overlays:

http://www.oomlout.com/a/products/ardx/

Tutorials for various projects (including animatronics):

http://www.pyroelectro.com/category/tutorials/

TODO: Move to hackweekend planning page:
PCB making and soldering lecture

We'll design a PCB with eagle, and make it with UV mask and copper etching technique, then drill holes and solder in components.

A few example schemes given

Could be held on a hackweekend

3D printing workshop

Learn to create and print a 3D model

could turn out to be very popular, be prepared (two printers needed?)

Also something for the hackweekend.

Robot workshop

Building a simple robot

For hackweekend?

Last years notes:
Git Projekti: https://github.com/HelsinkiHacklab/arduinon-perusteet
Pidetään myös altpartyillä

temmi pitää yhteyttä alt-orgiin

Osaanottajamäärää rajoittaa lähinnä tila ja opetusläppärit - tällä hetkellä 6 kpl.

Optionaalisesti voi olla kaksi henkilöä / läppäri

Kurssin kohderyhmä ja oletettu osaamistaso

mikro-ohjaimista kiinnostunut mutta muuten taidoton

saattaa osata ohjelmoida tai ainakin ymmärtää ohjelmoinnin perusteista ettei DWIM-kieliä ole olemassa

Opetusohjelmasta:

Jaettu jaksoihin jossa jokaisessa kytkentä, ohjelma, ja lyhyt teoria speaking pointti

Jokaisen sähkökytkennän esittely lyhyesti teorioineen

Joka sähkökytkennällä on oma koodinpalansa joka myös esitellään siinä samassa

Jaksot rakentavat edellisen kytkennän päälle, lopputuloksena Aika Makee Säädettävä Äänellinen Värivalovilkutusvehje

Jokaisen jakson jälkeen on hyvä antaa aikaa oppilaiden tehdä hands on kokeilua ja sulattaa tietoa.

Opetusohjelma

Yksinkertainen led kytkentä (the very basics) - Slidet [ ] Schema [x] Koodi [NA] - 00_Basic_Led

Kytkentä: Arduinon +5v ja groundin väliin etuvastuksella (ei väliä kummalla puolella vastus on tai kummin päin, ledillä on väliä kummin päin on (jos väärin päin niin ei syty))

Ledin pitäisi loistaa, hyvä! Ensimmäinen askel tehty

Jos ei, tarkista ledin suunta, poweri, kytkennät, ledin toimivuus

http://www.kpsec.freeuk.com/components/led.htm <- basic stuffaa

Teoria: Pari lausetta siitä mikä on vastus, mikä on LED, ja mikä on etuvastus.

Vilkkuled - Slidet [ ] Schema [x] Koodi [x] - 01_LED

Kytkentä: Kytketään ledi output pinniin (digital 13 tjms) ja groundin väliin etuvastuksella

Ohjelma: Arduino ympäristöstä avataan esimerkeistä blinking led ohjelma

Arduino ohjelma uploadataan arduinolle

Ledin pitäisi vilkkua

Jos ei, tarkista ledin suunta, kytkennät, että ohjelma uploadaantuu

Teoria: Mikä on mikrokontrolleri (pieni ohjelmoitava tietokone jossa suoraan output pinnejä), mikä on arduino (open source piirilevy mikrokontrollerilla ja ympäristö sen ohjelmoimiseen). Mikä on tietokoneohjelma (sarja käskyjä - katso esimerkkiohjelma). Mikä on workflow - kirjoitetaan ohjelma, painetaan nappia, ja ohjelma siirty mikrokontrollerille jos kaapeli on kytkettynä ja asetukset oikein).

Hands on: Säädetään vilkkumisnopeutta muuttamalla ohjelmaa, tehdään eri vilkkupatterneja, kokeillaan RGB ledeillä

RGB Led - Slidet [ ] Schema [x] Koodi [x] - 02_RGB_LED

Teoria: Esitellään RGB Led (common anode) - Kolme eri väristä lediä samassa kuoressa, yhteisellä maapinnillä. Sekoittamalla saadaan useimmat värit. Kuva mikä jalka on mikin.

Kytkentä: kytketään pisin jalka GND ja kolme muuta pinniä mikrokontrollerin output portteihin (esim 9,10,11).

Ohjelma: Ladataan kurssin esimerkkikansiosta RGB led vilkutin ohjelma

Hands on: Kokeillaan värien kombinaatioita

Fade-LED - Slidet [ ] Schema [02] Koodi [x] 03_RGB_Fade_LED

Kytkentä: Kytketään RGB led pinneihin joka on merkitty PWM:llä (9,10,11), etuvastuksen kanssa.

Ohjelma: Kurssin hakemistosta ladataan RGB PWM ohjelma ja uploadataan

Ledin pitäisi sykkiä eri värisenä

Teoria: PWM Tarkoittaa sitä että nopeasti vaihdetaan virta päälle ja pois ja vaihdetaan osuutta kuinka pitkään ledi on joka jaksossa päällä. Käytännöllisin tapa himmentää ledejä jos halutaan tarkkaa kontrollia himmennysasteelle.

Esitys: Havainnollistetaan oskiloskoopilla tuotettua PWM signaalia

Hands on: Vaihdellaan nopeutta, muutellaan ohjelmaa, kokeillaan eri värejä, tehdään rgb ledi demoja

Säätöpyörä - Slidet [ ] Schema [ ] Koodi [ ]

Kytkentä: Säätövastus (toinen puoli +5v, toinen GND, keskimmäinen analog input pinniin. LEDi PWM pinniin

Teoria: Analog input

Ohjelma: Ohjelma joka säätää ledin valoisuuttaa potentiometrillä

Hands on: Sovellusta aikaisempiin ohjelmiin

Ääni mukaan - Slidet [ ] Schema [ ] Koodi [ ]

Kytkentä: Kytketään kaiutin plussan ja fetin drainin väliin kytkien fetin gate PWM pinniin ja source maahan

Aikaisemman kytkennän voi jättää paikoilleen

Ohjelma: Ladataan kurssin hakemistosta äänellinen led vilkutusohjelma

Teoria: Ääni on ilman värähtelyä, kaiutin liikuttaa ilmaa ja tuottaa ääniaaltoja. Isompien virtojen kontrolloimiseen tarvitaan FET:ejä, arduino tuottaa vain noin 20 ma joka riittää LEDille, muttei minkäänlaiselle kaiuttimelle.

Hands on: Minkälaisia ääniä pystyt tuottamaan?

Painonappi (Vois jättää pois, ei lisää kovin paljoa, ja aika tylsähkö)

Kytkentä: Painonappi groundin ja jonkun pinnin väliin, muu kytkentä ennallaan

Ohjelma: Painonapilla esim käynnistetään äänieffekti tjms. Debounssaus?

Teoria: Painonappi ei suoraan liitä tai katkaise, vaan tuottaa mikrosekunttien pituista värähtelyä on ja off tilojen välillä kun liitos muodostuu tai katkeaa (bouncing). Tämän takia tarvitaan sovelluksesta riippuen debounssaus softassa.

Hands on: Sovelletaan aikaisempaan ohjelmaan

mä haluisin painonappeja ainakin sikäli että esittelisin joka kytkennän ohjauksen ensin painonapilla manuaalisesti ennen kun käydään siihen kytkentään liittyvä koodi läpi ja tässä mielessä vois olla ihan loogista lyhyesti esitellä myös miten 1/0 signaaleja luetaan inputtina - temmi

Materiaali

Hacklab koulutusläppäri - löytyy 6 kpl

Joku live-cd installatio, joss esim:

Ubuntu

Arduino ympäristö

avr-gcc yms

Koekytkentälevy - zzorn tilannut 5 kpl pientä - saapuivat

Arduino

Dist tilannut 5 kpl

Olis kätevää jos sekä arduino että koekytkentälevy olis kiinnitetty pienelle puulevylle tjms niin että projekti pysyy kasassa kannatetaan

Hyppylankoja - on

Mä toin kaks pakettia niitä labille, saa käyttää vapaasti. Löytyy varmaan mun laatikosta -kim

Rambo toi yhden paketin hyppylankoja tilalle viime viikolla yleiseen käyttöön, sen voi yhtä hyvin pyhittää tälle.

Dist tuo labille jonkunmoisen läjän noita halpisjohtoja.

Usb johtoja

Messmer hankki

Komponentteja:

Tavallisia punaisia ledejä noin tusina

Löytyy esim zzornilta

RGB Ledejä noin tusina (common anode - järkevämpiä käyttää)

sureelectronicsista 100 kpl / 33$

zzorn tilasi, saapuivat

Vastuksia jotka sopivat yllä mainittuihin ledeihin

Tulivat RGB LEdien mukana

Potentiometrejä 6 kpl lineaarisia 100 kohm, 1M tjms, jotka saa reikälevyyn kiinni

Kytkimiä noin tusina jotka saa reikälevyyn

Pieniä kaiuttimia, juotetut hyppylangat x 6

FETejä kaiuttimien ohjaamiseen x 6 - TODO: Mikä malli olis sopiva?

Ennen kurssin alkua kaikilta osallistujilta ja/tai huoltajilta kuittaus että on lukenut elektroniikkatilan säännöt (tai mitä tässä nyt sovelletaan) ja ymmärtää ne. Ihan vaan ettei kukaan pistä esim. 9V pattereita oikosulkuun ja räjäytä tjsp....
(Jossain (jatkokurssin) vaihees ois kiva näyttää mitä käy kun käyttää huonoa kaapelia jne niin rupee tulee siirtovirheitä, sit vois selittää että digitaalinen on oikeesti analogista ja ottaa häiriötä ympäriltään jne)