Arduino Mega 2560 (Kiinan kopio) Bootloaderin ohjelmointi

Joskus käsiin eksyy pahapäisiä Arduino-klooneja, jotka eivät oikein tykkää toimia millään. Yleensä nämä laitteet ovat made in China, eikä siinä sinänsä mitään väärää ole, mutta länsimaissa ne eivät vain aina toimi. Tämä lyhyt postaus kertoo siitä kuinka minä sain tämmöisen kopion toimimaan.

(Huomautuksena, että kannustan tottakai ostamaan aina alkuperäisia originaalin valmistajan toimittamia laitteita. Ne yleensä toimivat ilman kikkailuita ja ovat luotettavia siinä suhteessa.)

Mutta siis, mikä himskatin bootloader? 

Bootloader on pieni itsenäinen ohjelman pätkä, joka huolehtii siitä että käyttäjän sille tarjoama ohjelma voidaan tallentaa mikroprosessorin muistiin. Bootloader on siis ohjelma siinä missä käyttäjänkin tekemä oma ohjelma, mutta se on kuitenkin ensimmäinen asia mikä käynnistetään, kun virrat kytketään mikroprosessoriin päälle. Kun bootloader huomaa, ettei uutta ohjelmaa ole tarjolla (esimerkiksi sarjaportista) niin CPU siirtyy suorittamaan ohjelmoitua ohjelmaa elikkä sketsiä Arduinon tapauksessa.

Aluksi ladataan tietenkin klooneissa käytetyn sarjaporttimuuntimen CH340-piirin ajurit ja asennetaan ne: http://www.wch.cn/download/CH341SER_EXE.html . Ilman ajureita ei tätä kloonia saa toimimaan, joten tämä on tehtävä ennen mitään muuta.

Sen jälkeen tarvitaan toinen Arduino-levy, Uno esimerkiksi ja ladataan siihen ArduinoISP-ohjelmointi ohjelma, tai sketsi kuten hupaisasti näitä arduino-ohjelmia kutsutaan (pun intended). Valitaan File -> Examples -> ArduinoISP ja koneelle avautuu uusi Arduino-ikkuna. Tämän jälkeen voidaan painaa ohjelmointi-painiketta.

Jos ohjelmointi sujuu onnistuneesti, Arduino IDE-ikkunan alaosassa voidaan nähdä seuraavaa:

Kun sketsi on ladattu, ohjelmoitu yksikkö irroitetaan tietokoneesta ja seuraavaksi tehdään kytkennät bootloaderin ohjelmoimiseksi kohde-Arduinoon (target). Kytkennät on helppo tehdä valmiiden hyppylankojen (hyppyjohtimien) avulla. Näitä saa esimerkiksi seuraavista nettikaupoista: hyppylankaa partcolta tai metritavarana hyppylankaa prentashopista . Tässä tapauksessa tein kytkennät mega2560 levyn ICSP-liittimeen suoraan, koska ne olivat ainakin selkeimmät tavat yhdistää ohjelmointilaite ja kohdelaite toisiinsa.

ArduinoISP-ohjelmoidun levyn pinnit D11, D12, D13 ja Reset sekä sähköt kytketään alla olevan taulukon mukaisesti kohdelaitteen ICSP-liittimeen:

Arduino Uno Mega2560

D10 -> (SS) Reset
D11 -> (MOSI) D51
D12 -> (MISO) D50
D13 -> (SCK) D52

Gnd -> Gnd
+5V -> +5V

Halutessaan voi myös ohjelmointilaitteen pinneihin D9-D7 kytkeä status-LEDit (220 ohmin vastuksen kanssa sarjaan), jotka kertovat ohjelmointilaitteen (ArduinoISP) tilasta. Pinni 9 näyttää että ohjelmointilaite on ns. "elossa". Pinni 8 näyttää virhetilanteen, eli ohjelmointilaite ei tunnista kohdetta tms. Pinnistä 7 voidaan tulkita, että ohjelmointilaite kommunikoi ohjelmoitavan laitteen kanssa.

Seuraavaksi kytketään ohjelmoitu yksikkö takaisin tietokoneeseen ja arduino IDE:stä valitaan kohde-Arduinon tyyppi. Tässä tapauksessa se on Mega 2560 ja valikosta Tools -> Board valitaan se. Seuraavaksi valitaan Tools -> Programmer -kohdasta Arduino as ISP. Viimeiseksi sitten poltetaan bootloader, eli ohjelma joka vastaanottaa tietokoneelta lähetetyn sketsin Arduinon muistiin. Valitaan siis Tools -> Burn Bootloader.

Kohdattuja ongelmia

Minulla itselläni tämän ohjelmoimiseksi kesti noin tunnin verran, koska sarjaporttiyhteys ei meinannut onnistua millään. Aikansa kun odotteli, niin ohjelman sai yhdistymään kohdelaitteeseen ja bootloaderin poltettua. En tiedä miksi tämä toimii niin oudolla tavalla, mutta sain kuitenkin aikani värkättyä bootloaderin toimimaan kiina-kopiossa.

Kytketyt status-ledit auttoivat hieman, kun siitä näki että mitä laite tekee tai onko yhteys kohdelaitteeseen olemassa.

Kun homma on saatu toimimaan, voidaan lopuksi uutta sketsiloaderia testata ihan normaaliin tapaan, tekemällä joku oma sketsi tai avaamalla esim. Blink-esimerkin ja ohjelmoimalla sen Arduino Mega 2560 -levylle kuten mille tahansa muullekin Arduinolle.

Näin toimimattomasta kiina-kopiosta on saatu täysiverinen Arduino-yksilö ja tätä voidaan nyt käyttää normaaliin tapaan.

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

This site uses Akismet to reduce spam. Learn how your comment data is processed.