Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Intel Edison — piszemy kod pod Arduino

W Intel Edison tak samo jak w Intel Galileo możemy programować Edisona za pomocą Arduino IDE. W tym celu użyję wersji Standard, która ma już wyprowadzone złącza GPIO podobnie jak w Arduino UNO. W tym wpisie pokażę jak radzi sobie Edison ze sterowaniem wyświetlaczem LCD, sterowaniem silników za pomocą PWM, sterowaniem serwami oraz świeceniem diodami.

Przygotowanie środowiska programistycznego

Arduino IDE w wersji dla Edisona możemy pobrać z działu Download projektu. Dostępne są wersje dla systemów Windows, Linux i Mac OS. Użytkownicy Windowsa powinni jeszcze zainstalować sterowniki.

Po instalacji sterowników i podłączeniu intel Edisona do komputera możemy uruchomić pobrane wcześniej Arduino IDE dedykowane dla płyt Intela.

Wybieramy z Narzędzia>Płytka>Intel Edison oraz numer portu Narzędzia>Port szeregowy. Od tej chwili możemy już programować naszego Edisona.

Sterowanie diodami

Zaczniemy od prostego sterowania pinami cyfrowymi za pomocą których będziemy sterować diodami. Wykonam prosty przykład efektu świetlnego z filmu Knight Rider (Nieustraszony) w którym samochód bohatera miał ten efekt na przedniej masce.

int i=0; void setup() { for( i = 2; i <= 6; i++) { pinMode(i, OUTPUT); } } void loop() { for(i = 2; i < 6; i++) { digitalWrite(i, HIGH); delay(50); digitalWrite(i + 1, HIGH); delay(50); digitalWrite(i, LOW); delay(50); } for(i = 6; i > 1 ; i--) { digitalWrite(i, HIGH); delay(50); digitalWrite(i - 1, HIGH); delay(50); digitalWrite(i, LOW); delay(50); } }

Efekt końcowy powyższego kodu.

Sterowanie silnikami

W tym przykładzie użyłem PWM do sterowania obrotami silnika. Silnik podłączony jest do sterownika silników. Za ustawienie prędkości odpowiada potencjometr, którym będę kręcił, aby ustawić prędkość obrotów silnika.

int silnik = 9; int potencjometr = A0; int i = 0; void setup() { pinMode(silnik, OUTPUT); pinMode(potencjometr, INPUT); } void loop() { i = analogRead(potencjometr); analogWrite(silnik, i / 4); }

Poniżej prezentuję efekt działania programu.

Sterowanie serwem

Teraz pora na sterowanie serwem. Będę obracać serwem o 180 stopni w obydwu kierunkach.

#include <Servo.h> Servo servoMain; int i = 0; void setup() { servoMain.attach(9); } void loop() { for(i = 0; i <= 180; i++) { servoMain.write(i); delay(2); } delay(1000); for(i = 180; i >= 0; i--) { servoMain.write(i); delay(2); } delay(1000); }

Po wgraniu powyższego kodu mamy taki oto efekt

Zabawa z wyświetlaczem LCD

Pora na test wyświetlacza LCD, którym będę sterować za pomocą biblioteki LiquidCrystal_I2C. Użyłem modułu I2C dla ekranu aby zmniejszyć ilość potrzebnych kabli połączeniowych. //Library version:1.1 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); lcd.backlight(); } void loop() { delay(2000); lcd.print("Pozdrowienia"); lcd.setCursor(0, 1); lcd.print("dla czytelnikow"); delay(4000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("dobreprogramy.pl"); delay(1000); lcd.setCursor(0, 1); lcd.print("od Cyryllo"); delay(1000); lcd.print(" ;)"); delay(6000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Intel Edison"); delay(2000); lcd.setCursor(0, 1); lcd.print("i Arduino"); delay(6000); lcd.clear(); }

Poniżej wynik działania powyższego kodu

Podsumowanie

Jak widać Intel Edison daje sobie radę przy korzystaniu z Arduino IDE. Jednak nie na tym polu Edison powinien walczyć z innymi mikrokontrolerami czy picoboardami. Porównując cenę Edisona do innych Arduino to nie ma sensu kupować Edisona jeśli chcemy używać go tylko jako Arduino. Moc tego urządzenia jest zapewne w Linuksie i jego modułach wifi i bluetooth więc w kolejnym wpisie sprawdzę co Linux potrafi zdziałać na Intel Edison. 

sprzęt programowanie hobby

Komentarze

0 nowych
DjLeo MODERATOR BLOGA  18 #1 06.01.2015 23:43

Też mam taki moduł zasilania do płytki prototypowej, ten wpinany. Jest bodajże na 5 i 3,3 Volta. Przydatne w kombinowaniu. Wpis niezły ;)

DeliVeriuS   8 #2 06.01.2015 23:53

Jakby takie coś było w technikach informatycznych to każdy by chciał programować.

En_der   9 #3 07.01.2015 02:30

To są piękne czasy dla ludzi z otwartym umysłem i chęcią do pracy z takimi platformami. Robisz pan, panie Cyrylu dobrą robotę w internetach ( nie tylko tutaj)

  #4 07.01.2015 05:26

@DeliVeriuS: Takie coś jest w technikach. Zwykle leży w gablotkach za szybą i zamkniętych salach od sponsorów.
Otwiera się je tylko podczas wizyt prasy i przedstawicieli władzy. A tak to programuje na kartkach w BASCOM i Asm 8051, bo jakiś mentalny emeryt nie umie innego.

Z resztą mój znajomy nauczyciel próbował uczyć fajnych projektów na Arduino i robotyki, to mu klasa powiedziała, że oni wolą jak im podyktuje do zeszytu materiał i się od nich odwali.

cyryllo   17 #5 07.01.2015 08:07

@DjLeo: No bez tego modułu to ani rusz :)
@En_der To nie robota to po prostu pasja :P

cyryllo   17 #6 07.01.2015 08:22

@Anonim (niezalogowany): Po prostu ma ten twój znajomy leni i tyle, albo nie umiał ich zachęcić do tego. A druga sprawa to to, że to on powinien takim materiał zgłosić i go robić. Uczniowie nie mają mieć wpływu na to :P

  #7 07.01.2015 11:55

@cyryllo: Jakby był leniem to by realizował mechanicznie program i nikt by potem nie lubił tej wiedzy. Facet się stara wychodzić po za materiał i napotyka na opór.
Ludzie już tacy są za młodu. Adam Savage wspominał, że miał okazję uczyć się animacji u jednego z najlepszych animatorów Disneya. Olał sprawę, bo gdy ma się 18 lat, są ciekawsze rzeczy po pracy niż jakieś malowanki.
Teraz tego żałuje, ale i tak sam do czegoś doszedł.

cyryllo   17 #8 07.01.2015 12:57

@Anonim (niezalogowany): Leniami są uczniowie a nie Pan nauczyciel (choć i leniwi nauczyciele się zdarzają) :P Taką mamy młodzież że idą na łatwiznę (choć są wyjątki) i najlepiej aby były testy jednokrotnego wyboru i nie wymagało się od nich za dużo. Obecnie wszyscy chcieli by gotowy kod do jakiegoś projektu i najlepiej na godzinę temu napisany :P

PAMPKIN   11 #9 07.01.2015 13:43

Nie jest tak źle chyba. http://hightechnika.malyinzynier.pl/

cyryllo   17 #10 07.01.2015 13:46

@PAMPKIN: Dobre znalezisko :)

jas_fasola   6 #11 07.01.2015 15:08

Następnym razem przyklej kawałek izolacji na oś silnika będzie wtedy ładnie widać jak się kręci. :-)

cyryllo   17 #12 07.01.2015 16:42

@jas_fasola: Silnik jest dość spory i wydaje mi się że widać dobrze jak się kręci ;) a na pewno słychać ;) Myślałem o tym ale jakoś nie mogłem taśmy znaleźć ;)

revcorey   7 #13 07.01.2015 22:21

Ogólnie hmm tego typu płytki to lekki przerost formy nad treścią. Nie chodzi o to co pokazałeś bo to wiadomo zabawa ale potrzebę stosowania tak silnych procków dla hobbystów. Żeby uruchomić bluetooth czy wifi to nie potrzeba edisona. Z podstawową obsługą poradzi sobie nawet atmega i wyjdzie taniej.

Oczywiście jak ktoś chce z tego wifi(albo ethernetu) wyciągnąć więcej to wystarczy że sięgnie po ARM(bo jednak stos itp. obciąża). Nowe rdzenie Cortex M7 to już kolosy w świecie małych/średnich rozwiązań.

Sens tego typu rozwiązań (łącznie z raspberrypi i klonami które są tańsze od intela) jest w bardzo wąskiej grupie rozwiązań(np. port linuxcnc na raspberry) moim zdaniem. Nie tyle szkoda na to kasy(bo warto mimo wszystko po to sięgnąć ale dopiero po paru latach walki z elektorniką ogólnie nie tylko prostszymi mcu) co raczej warto się skupić na podstawach 8-bitowców w C a później 32 bitowych cortex-MX + szkolenie z elektroniki(np. realizacja sterowników krokowców bez procka).

Autor edytował komentarz.
  #14 08.01.2015 01:46

@revcorey: Stary już są ARM z GSM za $10 (sam scalak za $3).

cyryllo   17 #15 08.01.2015 07:34

@revcorey: Zgadzam się z Tobą po części ale uwierz mi nie każdy z hobbistów potrafi zaprogramować ARM-a. Platformy typu Arduino czy RPi są dobrymi do nauki dla początkujących. Jeśli ktoś przejdzie ten etap i będzie żądny wiedzy pójdzie dalej. Nie każdy przecież kończy studia robotyki itp. kierunków ;)

  #16 08.01.2015 11:31

@cyryllo:
Bardzo dobry wpis tak merytorycznie, jak i redakcyjnie, brawo!

Gdyby chcieć dodać łyżkę dziegciu, to zabrakło rozwiązań alternatywnych. Pierwszy przykład jest do zrealizowania na rejestrze przesuwnym, drugi to jakiś tranzystor dodany do potencjometru - obydwa w kosztach realizacji (będę hojny) 2 zł. Z trzecim nieco trudniej, ale w 3 złociszach też się zmieści. Wspominam o tym, bo widziałem już takie debilne rozwiązania produkcyjne, w których uP był użyty do realizowania polecenia Start/Stop z wyjściem też 0/1.

Powyższe nie ma na celu dyskredytować Twojego wpisu w nawet najmniejszym stopniu, po prostu takie czasy, że "soft jest trendy" i niebawem chyba nawet papier toaletowy bez zaprogramowania się nie da użyć.

Jeśli chcesz mieć trzycyfrową liczbę komentarzy, koniecznie dodaj "Windows BEE", "Linux FEE", "OSX SHIT" i coś o porcie szeregowym, bo to wykopalisko z epoki kamienia łupanego :-)

Pozdrawiam serdecznie i czekam na dalszy ciąg!

revcorey   7 #17 08.01.2015 17:24

@cyryllo: dobre tu raczej są 8 bitowce z nieskomplikowaną inicjalizacją. Do startu wystarczy inicjalizacja paru rejestrów(gdzie arduino to przed tobą ukrywa), prowadzi to do tego że nieuczysz się podstaw mikroprocków(w 8 bitowcach jest to proste przeca). Walnięcie pinout w arduino na dobrą sprawę nic nie uczy ostataecznie, bo tu jest to bardzo abstrakcyjne. Po micne cpu i biblioteki warto sięgnąć jak się ma podstawy. I powiedzmy szczerze czym jest program bez projektu elektronicznego dziś łatwo zaprogramować sekwencję ale trudno zrobić elektronikę.
Anonim dziś rdzenie arm m0 są tańsze jak niektóre 8 bitowce a już nie wspomnę o 16 bitowcach.

Jim1961   7 #18 09.01.2015 21:25

@PAMPKIN pierwsza linijka tekstu na stronie i mamy "Wszytskie"; IMHO ktoś z uśmiechem na twarzy przytulił dotację.

cyryllo   17 #19 10.01.2015 18:46

@revcorey: Pisanie kodu na arduino jest proste i każdy sobie z tym poradzi (przynajmniej większość), a na sucho w C AVR-a już nie każdy będzie potrafić zaprogramować. Co do elektroniki wystarczą podstawy i zakup modułów (dla bogatych ;) ). Własne moduły i układy wymagają już większej wiedzy i chęci ;)