Arduino w M26

Małe podsumowanie moich wspomnień z warsztatów z Arduino. Prowadzone były przez Jakuba Buszyńskiego. Prowadził ostatnio wykład na politechnice. Choć moim zdaniem była to bardziej dyskusja niż typowa nudna prezentacja. Za to wielki plus dla prelegenta :)
Kurs trwał kilka miesięcy. Odbywał się w niedawno zamkniętym M26Lab. Teraz czekamy na przeniesienie do nowej lokalizacji. Przez te kilka miesięcy programowaliśmy i tworzyliśmy kilka ciekawych projektów.

1. Program otwierający do drzwi.

No w końcu to problem. Tacy ludzie przychodzą do M26 i trzeba im otwierać… Co to ma być!!! Zróbmy do tego automat!!!
– Te słowa najlepiej opisują ideę projektu. Nasz ukłąd automatycznie otwierał domofon i zamek w drzwiach. Drzwi otwierały się po serii puknięć. Choć całość nie zawsze działała tak jakbyśmy tego chcieli. Do tego dobór plastikowej rączki nie był dobrym pomysłem. No chyba, że mieli byśmy zarabiać na jej wymianie to tak 😉

2. Licznik wejść i wyjść ludzi.

Prosty ciekawy układ. Składał się z fotorezystaora, lasera i arduino. Jak działa? Cyklicznie na bardzo krótko włączamy laser. Mniejsza moc pozwala nam znacząco zwiększyć żywotność lasera. Robienie pomiarów raz / kilka razy na sekundę, daje nam praktycznie pełny obraz o stanie układu. Znając stany bramek jest już banalnie: Sprawdzamy w jakim stanie jest jedna z dwóch bramek świetlnych. Po kolejności ich przecięć stwierdzamy czy osoba wchodziła, czy wychodziła z budynku. Kod w dwóch wariantach dostępny poniżej:

[cc lang=”Java”]

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
int analogPin = 0;
int analogPinValue = 0;
int people = 0;
int state = 0;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
Serial.begin(9600);
pinMode(led, OUTPUT);
}

int ciemno(){

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(10); // wait for a second
analogPinValue = analogRead(analogPin);
Serial.println(analogPinValue);
//Serial.println(analogPinValue);
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(10); // wait for a second
return analogPinValue<300;
}

// the loop routine runs over and over again forever:
void loop() {
while(!ciemno());
while(ciemno());
people++;
//Serial.println(people);
/*
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(10); // wait for a second
analogPinValue = analogRead(analogPin);
Serial.println(analogPinValue);
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(10); // wait for a second*/
}

/*Autors:
Sebastian Pożoga
Jakub Juszkiewicz
Arek Dymalski
Łukasz Fiedkiewicz
Mateusz Smektalski
Wojtek Stachowiak
Cyryl Kwasniewski
*/

[/cc]

I druga wersja:

[cc lang=”java”]

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:

//led1
int ledWe = 13;
int analogWe = 0;

//led2
int ledWy = 14;
int analogWy = 1;

//config
int waitTime = 3;
int waitRepeat = 100;

//count
int we = 0;
int wy = 0;

 

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
Serial.begin(9600);
pinMode(ledWe, OUTPUT);
pinMode(ledWy, OUTPUT);
}
int laserCiemno(int led, int analog){
digitalWrite(led, HIGH);
delay(waitTime);
int value = analogRead(analog);
Serial.println(analog);
digitalWrite(led, LOW);
delay(waitTime);
return value<300;
}

int waitForLaserBreak(int led, int analog){
for(int i=waitRepeat;i>0;i–){
if(laserCiemno(led,analog)) return 1;
}
return 0;
}

int weWyPrint(){
Serial.print(„\nWe:”);
Serial.print(we);
Serial.print(„\nWy:”);
Serial.print(wy);
}
// the loop routine runs over and over again forever:
void loop() {

if(laserCiemno(ledWe,analogWe)){
we += waitForLaserBreak(ledWy,analogWy);
}

if(laserCiemno(ledWy,analogWy)){
wy += waitForLaserBreak(ledWe,analogWe);
}
}

//Autors:
/*
Sebastian Pożoga
Jakub Juszkiewicz
Arek Dymalski
Łukasz Fiedkiewicz
Mateusz Smektalski
Wojtek Stachowiak
Cyryl Kwasniewski
Adam Zajkowski

*/

[/cc]

Byłem głównym autorem kodu więc jak coś można spokojnie pisać i bluzgać 😉

3. Duocopter

W sumie plan budowy można zobaczyć na obrazku:

DSC00866

Model turbiny możemy zobaczyć na filmiku:

Temat jest tak szeroki, że nie sposób go omówić w jednym poście. Czy nawet jednej książce… Ale osoby które chcą więcej podłubać na pewno znajdą coś dla siebie 😉

To jeszcze nie koniec

Tak jak pisałem M26 już nie istnieje ale warsztaty z Arduino będą odbywać się dalej. Tak, więc zapraszam a tymczasem zapraszam do zobaczenia jak to było kiedyś:

 

Co mogę powiedzieć więcej?

Dzięki za świetną zabawę i inspirację :) W końcu dzięki wam kupiłem sobie raspberry pi

 

 

 

Atena „Internet przedmiotów”

Internet przedmiotów brzmi dość dziwnie. Dużo lepsze określenie to smart. Tym razem bardzo ciekawa i motywująca dyskusja o domach przyszłości, nowoczesnych gniazdkach,  lodówkach, skrzynkach pocztowych i nowoczesnych technologiach. Z beaglebone,  raspberry pi i arduino w tle. Wspomniane też było o projekcie rozwijanym w M26, podczas warsztatów z Arduino w czwartki o 19.00
(Choć ich lokalizacja ma się zmienić)

Zapraszam do obejrzenia :)

Prezentacja

Dyskusja

Prototyp z Arduino Time

Atena

Zapomniałem wspomnieć, że ten event zawdzięczamy kole naukowemu atena, które wprowadziło ten powiew świeżości na PP. Zainteresowanych ich imprezami zapraszam na ich stronę.

Freescale – Kurs programowania mikrokontrolerów

Parę dni temu brałem udział w seminariach organizowanych przez Michała Walaszek z Freescale i Mirosława Dybizbanskiego z Future Electronics. Były to moje drugie warsztaty z tej serii. Tym razem chłopaki naprawdę się przyłożyli. Podczas szkolenia zobaczyć można było spis nowych linii mikrokontrolerów/mikrprocesorów i przejść przez krótki kurs środowiska. Poznać jego podstawowe zalety/wady 😉

A teraz może parę słów o CodeWarrior, środowisku w którym pracowaliśmy. Co w nim jest takiego fajnego?? Jak powiedział Przemysław Gąsior (z koła sensor) „środowisko to jest maksymalnie uproszczone”. Znacie Visual C++ i inne podobne środowiska? Jeśli lubicie z nimi pracować z pewnością się wam spodoba. Pomaga generować kod w analogiczny sposób :) Muszę przyznać że pierwszy raz korzystałem z czegoś takiego dla mikrokontrolerów :)

A co my zrobiliśmy?? Pamiętacie jeszcze nasz projekt COLORid 😉 Praktycznie na wstępie mieliśmy wersję zmieniającą kolory w zależności od położenia 😉

Z wprowadzenia zrobionego przez Michała Walaszek utkwił mi w pamięci dość zabawny filmik. Zanim zakończę chciałbym go jeszcze pokazać 😉 Nikt nie mówił, że nie można przedstawić tego w zabawny sposób 😉 


http://www.youtube.com/watch?feature=player_embedded&v=cbEx-vY9GSk

Dlaczego warto było wziąć udział?? Poza wiedzą i poznaniem paru ciekawych osób, każdy uczestnik dostał FRDM-KL25Z za darmo :) Jakie są moje wnioski?? FRDM-KL25Z, da się zaprogramować! Powiem więcej może to być nawet całkiem szybkie i przyjemne. Ja będę musiał się jeszcze pobawić moim w domu :)

A zapomniałem dodać kurs był w języku angielskim 😉  Muszę przyznać że jest to dość ciekawa odmiana. Podczas kursu zdarzyło mi się parę razy zgubić. Na szczęście dzięki materiałom przygotowanym przez organizatorów i pomocy mojego współtowarzysza  szybko się znalazłem 😉 Pozdrawiam :)

Tak więc polecam wam wybrać się następnym razem i też spróbować :) Niestety obawiam się, że w Poznaniu szkolenie odbędzie się dopiero w przyszłym roku. Zawsze możecie zdążyć jeszcze do innego miasta 😉

DSC00377

Zdjęcia

DSC00376

Materiały
CodeWarrior Downloads