Firmware-ul Arduino. Intermiterea oricărui fișier Hex în Arduino

Imaginează-ți această situație. „Ai o placă de la o imprimantă (să zicem chineză), care conține un fel de firmware. Și apoi a venit ziua și ora în care ai decis că trebuie să schimbi acest firmware, dintr-un motiv sau altul. Dar tot acolo este un „dar”: ți-e frică să nu distrugi totul și vrei să poți să te retragi. informatii normale Pe Internet nu puteți căuta pe google întrebarea cum să faceți backup pentru firmware. Unul dintre membrii comunității noastre m-a abordat cu aproximativ aceeași problemă zilele trecute. Și am decis că, din moment ce este așa, de ce să nu spun tuturor despre cum se poate face acest lucru.

Dar înainte de a scrie gânduri inteligente- Totul trebuie verificat, ceea ce am făcut. Am efectuat experimente cu Arduino Mega 2560. Voi scrie mai departe despre asta.
La început am încercat să plec în mod obișnuit„pierdut”, a scos programatorul chinez (în fotografia din titlu), s-a conectat prin ISP și a descărcat firmware-ul. Am încercat să-l torn înapoi... Curge, dar nu trece verificarea. Am petrecut câteva ore căutând internetul pentru a înțelege cum să descărcați corect firmware-ul de la Mega prin ISP. Nu am găsit nimic inteligibil, dar mi-am dat seama că firmware-ul poate fi descărcat și încărcat înapoi fără un programator. Despre această experiență voi scrie mai jos. Dar voi scrie despre cum să descărcați firmware-ul nu de pe placa Arduino, astfel încât să fie apoi încărcat înapoi, data viitoare când voi avea o placă care poate fi folosită în siguranță atât în ​​foc, cât și în apă.
Bine, să trecem la subiect. Mai întâi avem nevoie de utilitarul Avrdude, acesta este inclus în pachet Arduino IDE iar în versiunea mea era în folderul „%appdata%\Arduino15\packages\arduino\tools\avrdude\6.0.1-arduino2\bin”. Deschideți folderul, faceți clic pe spațiu gol SHIFT + butonul corect mouse-ul și selectați „Deschideți fereastra de comandă” din meniu. Acum iti dau comandă simplă, care verifică dacă controlerul este citit.

avrdude.exe -p atmega2560 -c cablare -P COM5

Dacă totul este în ordine, atunci ar trebui să vedeți text ceva de genul acesta (vezi captura de ecran).

Atributele comenzii:
-p atmega2560- setarea tipului de controler.
-c cablare- instalarea programatorului. Acesta este programatorul intern din placa Arduino Mega 2560 Poate că nu l-am exprimat corect, dar același atribut este folosit de IDE atunci când încarcă o schiță compilată.
-P COM5- configurarea portului în care este conectat cablul USB de la Arduin. Puteți arunca o privire din IDE.

avrdude.exe -p atmega2560 -c cablare -PCOM5 -b115200 -Uflash:r:"printer_firmware".hex:i

Dacă totul este în regulă, ne concentrăm pe captură de ecran, firmware-ul va fi salvat în fișierul „printer_firmware.hex” de lângă avrdude.exe.

Noi atribute ale echipei:
-b115200- viteza portului pentru programator.

Uflash:r:"printer_firmware".hex:i- instrucțiuni pentru a citi firmware-ul în fișierul „printer_firmware.hex”.

Aici puteți descărca firmware-ul pentru CNC pe Arduino. Tot firmware-ul este scris în Arduino IDE.

Descărcați firmware-ul

Firmware pentru controlerul MKS DLC, scut CNC pentru mașina CNC

Aici puteți descărca firmware-ul pentru CNC la MKS DLC, Scut CNC. CNC Shield - plăci de expansiune pentru Arduino UNO, Nano. Firmware-ul este încărcat prin Arduino IDE, similar cu firmware-ul Arduino.

Descărcați firmware-ul

Descrierea și instalarea firmware-ului Arduino pentru CNC

Firmware pentru Placi Arduino scris în limbajul de procesare în mediul de dezvoltare Arduino 1.0.2 sistem de operare Windows.

Cod sursă firmware Arduino pentru controlul a 3 motoare pas cu pas prin portul COM

Pentru a începe cu Arduino, trebuie să instalați necesarul software. Pentru a face acest lucru, accesați site-ul web oficial Arduino și descărcați distribuția de pe această pagină. Pe site-ul web oficial Arduino puteți găsi multe exemple de firmware pentru placă, precum și învățați principiile de bază ale lucrului cu placa. Acum rulați fișierul de instalare, selectați folderul, sunt de acord cu acord de licențiereȘi așa mai departe. După instalare, pictograma Arduino va apărea pe desktop. Acum puteți conecta placa noastră Arduino la computer, pentru asta o folosim cablu USB 2.0 conectarea USB A - USB B. Așteptăm ca Windows să găsească și să instaleze hardware nou. În continuare, să lansăm Programul Arduinoși selectați portul COM dorit selectând Tools->Serial Port în meniul principal.

Selectarea unei schițe pentru Arduino

În funcție de configurația mașinii CNC și de sarcinile pe care trebuie să le îndeplinească, selectați o schiță din lista de mai sus. Mergem la pagina corespunzătoare. ÎN descriere scurta Fiecare schiță indică pentru care drivere SD și alte componente (ax, laser, TTL, circuit de comutare etc.) este destinat acest firmware. In plus, este indicat in ce scopuri poate fi folosit. De exemplu, pentru tăierea cu laser a ornamentelor și gravarea artistică cu laser, se folosesc schițe diferite, deși partea de feronerie poate fi folosită la fel.

Asamblarea și descărcarea firmware-ului pentru Arduino

Copie sursă firmware pentru controlul unei mașini CNC în fereastra de editare IDE Arduino. Acum apăsați butonul Descarca. Așteptăm până când programul Arduino verifică, compilează și instalează firmware-ul pe placa Arduino. Să încercăm să verificăm dacă firmware-ul funcționează. Pentru a face acest lucru, trebuie să conectați motoarele și să porniți Monitor porturiîn programul Arduino. Monitorul portului este situat la Serviciu meniu principal. În formularul Port Monitor, introduceți comanda:
1000,2000,3000;
Și apăsați butonul Trimite. Să vedem cum se rotesc motoarele la viteze diferite. Când motoarele nu se mai rotesc, firmware-ul Arduino va transmite T De USB la computer, aceasta va fi afișată în Port Monitor. A fost un mesaj mai devreme Bine.

Introducere

Salutări, cititori ai resursei noastre. Astăzi vom vorbi despre un controler din seria Arduino și anume Arduino Pro Mini. Acesta este un controler mic, compact, care are toate avantajele Arduino, dar în același timp este foarte compact, s-ar putea spune că cel mai mic dintre toate controlerele Arduino existente pe acest moment. Mulți sunt atrași și de prețul exemplarelor sale chinezești și costă de la unu la doi dolari bucata (în unele locuri chiar mai puțin), ceea ce îi face să se gândească și la cumpărare. Dar există o problemă: nu este atât de ușor să-l flash, mai ales copii chinezești, care sunt echipate cu un procesor Atmel ATmega168P, care cândva nu era echipat cu oficial Controlere Arduino Pro Mini și, ca urmare, Arduino IDE refuză să le flash, raportând o semnătură incorectă a procesorului.

Despre asta vom vorbi astăzi. Cum să flash, ce este necesar pentru aceasta și cum să faci ca Arduino IDE să funcționeze cu copii chinezești.

Ce este nevoie pentru asta?

Arduino Pro Mini este foarte compact, iar compactitatea necesită sacrificiu și sacrificiul este - interfață USB care a fost cosită complet acest controler acestea. Nu veți putea conecta Pro Mini direct la computer și, în consecință, veți avea nevoie fie de un adaptor special USB la TTL, fie de un alt controler Arduino.

  • Prima cale. Cosăm adaptor USBîn TTL - aveți nevoie de adaptorul în sine în cantitate de o bucată.
  • A doua cale. Cosăm Arduino UNO- ai nevoie de un Arduino UNO, dar nu unul simplu, dar intr-o varianta clasica, acesta este Arduino in care procesorul este realizat intr-un pachet DIP si introdus intr-un conector negru.
  • A treia cale. Cosăm Interfață SPI- aveți nevoie de orice Arduino: UNO, Nano, Mega, Leonardo - nu contează, principalul lucru este că există un conector USB pentru conectarea la un computer.

Prima cale. Clipește prin adaptorul USB la TTL

Prima și cea mai mare într-un mod simpluÎncărcarea schiței pe Arduino Pro Mini înseamnă achiziționarea unui adaptor special USB la TTL sau, așa cum se numește, un adaptor UART. De regulă, acest adaptor este partea din care a fost tăiată Arduino Nano, transformându-l într-un Arduino Pro Mini. Costul unor astfel de adaptoare este ieftin, iar alegerea este și mai mare. Chinezii au făcut atât de multe dintre ele încât este greu să alegi pe care să o alegi. Mai mult, prețul acestui dispozitiv nu este mai mult de unul veșnic verde. După ce conectați Pro Mini și adaptorul UART cu fire sau un cablu, tot ce rămâne este să îl conectați (adaptorul) la PC, să instalați driverul (nu toate adaptoarele le necesită) și atât. PC-ul dumneavoastră va recunoaște adaptorul ca un alt port COM care apare atunci când conectați orice Arduino la computer. Selectează-l, placa cu care vei lucra (Arduino Pro Mini) și încarcă-ți calm schița.

Singura nuanță a acestor adaptoare este prezența sau absența contactelor RST sau DTR. Recomand să cumpărați adaptoare care au aceste contacte. Ele fac viața mult mai ușoară și fac procesul de firmware fără probleme. Dacă ați cumpărat deja un adaptor care nu are astfel de contacte, atunci de fiecare dată când încărcați schița în Arduino va trebui să faceți clic pe Butonul de resetare, ceea ce nu este întotdeauna posibil de făcut la timp, iar acest lucru aduce propriul inconvenient.

Puteți vedea conexiunea adaptorului în tabelul de mai jos:

A doua cale. Clipește prin Arduino UNO

Pentru această metodă avem nevoie de un Arduino UNO clasic. Cel clasic este cel în care carcasa microcircuitului este realizată într-un pachet DIP și introdusă într-un conector special. Trebuie să scoatem cu atenție acest microcircuit cu o șurubelniță. Este important să nu rupeți procesorul cu grijă fără să vă îndoiți picioarele.

Arduino UNO. Procesorul este găzduit într-un pachet DIP.

Ridicați cu grijă și scoateți procesorul cu o șurubelniță.

După ce am scos procesorul din Arduino UNO, am primit în esență același adaptor USB la TTL, tot ce rămâne este să ne conectăm firele. adaptor nouși Arduino Pro Mini conform următoarei scheme:

Arduino UNO (fără CPU)
Arduino Pro Mini
RX
RX
TX
TX
GND
GND
5V
VCC
RST
RST

După ce ați conectat cele două Arduino-uri împreună, puteți începe să flashați firmware-ul Arduino Pro Mini. Conectăm Arduino UNO prin USB la computer. Selectați în Setări Arduino Portul IDE COM, indicăm că acum lucrăm nu cu Arduino UNO, ci cu Arduino Pro Mini și atât, încărcați schițele noastre. Metoda este destul de interesantă, dacă nu vă este frică să distrugeți Arduino și nu este nimeni în apropiere adaptor USBîn TTL.

A treia cale. Clipește prin interfața SPI

Al treilea și cel mai incomod mod de a vă încărca schița pe Arduino Pro Mini este să o flashați folosind interfața ICSP. Această interfață este prezentă pe majoritatea plăcilor Arduino. Principalele contacte a acestei interfeţe sunt scoase la porturile de la 10 la 13 și sunt, de asemenea, scoase separat sub forma unui bloc cu șase pini cu semnătura ICSP. Blocul este de obicei situat în partea dreaptă centrală a Arduino.

În acest caz, firmware-ul Arduino Pro Mini este împărțit în două etape:

  1. Firmware pentru placa Arduino ca programator ISP.

În primul rând, trebuie să ne pregătim viitorul programator. Să luăm același Arduino UNO ca exemplu. Următorul pas cu pas:

  1. Lansați Arduino IDE.
  2. Fișier - Exemple - 11.ArduinoISP - ArduinoISP.
  3. Instrumente - Placă - Arduino UNO.
  4. Instrumente - Port - Selectați portul COM.
  5. Compilați și încărcați în Arduino UNO.
Arduino UNO (ISP)
Arduino Pro Mini
5V
VCC
GND
GND
10
RST
11 (MOSI)
11 (MOSI)
12 (MISO)
12 (MISO)
13 (SCK)
13 (SCK)

Acum deschideți din nou Arduino IDE. Deschideți schița pe care doriți să o încărcați în Pro Mini și efectuați următorii pași:

2. Instrumente - Placă - Arduino Pro Sau Pro Mini
3. Instrumente - Procesor - ATmega168 (5V, 16 MHz)
4. Instrumente - Port - Selectați un port
5. Instrumente - Programator - Arduino ca ISP
6. Schiță - Încărcați prin programator

După cum puteți vedea, trebuie să încărcați o schiță în acest mod prin meniu special„Descărcați prin programator”, mai degrabă decât prin butonul „Descărcare” activat forma principală Arduino IDE. Aici se află toate inconvenientele. Dacă faceți clic pe butonul „Încărcați” așa cum faceți de obicei, veți încărca schița pe Arduino UNO, nu pe Arduino Pro Mini, care va suprascrie schița programatorului de acolo. De asemenea, în acest mod clasa Serial nu este disponibilă, adică nu veți putea să vă depanați schița prin schimbul de mesaje prin portul COM. Ei bine, o altă muscă în unguent este că după această clipire, în majoritatea cazurilor, nu veți mai putea să flashați Arduino Pro Mini prin intermediul unui adaptor. Acest lucru poate fi corectat prin încărcarea unui nou bootloader prin meniul „Tools” - „Burn Bootloader”.

Adăugarea Chinese Pro Mini la Arduino IDE

După cum am spus deja în acest articol, clonele chinezești sunt uneori echipate cu procesoare cu care cele oficiale nu erau echipate. Versiuni Arduino Pro Mini și, în consecință, la flash-ul firmware-ului lor, este posibil să vedeți următoarea eroare sau o eroare similară.

Avrdude: Semnătura așteptată pentru ATmega168 este 1E 94 06 Cipul de verificare dublă sau utilizați -F pentru a anula această verificare. S-a găsit un microcontroler incorect. Ați specificat placa corectă în meniul Instrumente -> Placă?

Acest lucru se poate rezolva cu ușurință:

  • Mai întâi trebuie să deschideți folderul în care se află Arduino IDE.
  • Apoi accesați următorul folder „Arduino IDE folder\hardware\arduino\avr\”.
  • Căutăm acolo fișierul „boards.txt” și îl deschidem într-un editor de text.
  • Căutând în dosar rândul următor„pro.menu.cpu.16MHzatmega168.build.mcu=atmega168”.
  • Și înlocuiți-l cu „pro.menu.cpu.16MHzatmega168.build.mcu=atmega168p”.
  • Reporniți IDE-ul Arduino și gata.
  • Dacă aveți, de exemplu, un procesor 328, atunci facem totul la fel, doar căutăm o linie cu numerele 328.

Concluzie

În acest articol, am oferit până la trei opțiuni pentru încărcarea schițelor în Arduino Pro Mini. Personal, îl folosesc pe al doilea. Îmi place mai mult de el.

Ceea ce folosești este alegerea ta. Lasă un comentariu ce opțiune preferi.

Bafta si bafta tie.

Vă rugăm să activați javascript pentru ca comentariile să funcționeze.

După achiziționarea plăcii Arduino Pro Mini, unii utilizatori se confruntă cu problema flashării firmware-ului, deoarece pentru a flashiza această placă, trebuie să cumpere și un programator special. În acest sens, s-ar putea să fiți interesat de modul în care puteți flash o placă fără un programator? Din fericire, acest lucru este destul de ușor de făcut. În acest articol, vom arunca o privire mai atentă asupra modului de flash sau reflash al unui Arduino Pro Mini. Să ne dăm seama. Merge!

Pentru intermitent veți avea nevoie Arduino Uno. Primul pas este să conectați GND la masă, UCC la pozitiv, RXI și NX0 la aceleași intrări de pe Uno și GRN pentru resetare. Cel mai bine ar fi să aplicați o tensiune de trei volți. Când este aplicată alimentarea, indicatorul roșu de pe placă se va aprinde. Nu uitați să scoateți mai întâi controlerul ATMEGA din Uno.

Acum trebuie să conectați placa la computer. Apoi lansați Sketch pe computer. În fereastra principală a utilitarului, deschideți meniul „Fișier” și faceți clic pe elementul „Exemple”, apoi mutați cursorul la secțiunea „De bază” și faceți clic pe „Blink” în lista care apare. După aceea, du-te la panoul de susși deschideți meniul „Instrumente”. Selectați elementul „Plătiți” din acesta. În lista de plăci, va trebui să verificați linia „Arduino Pro Mini (5V, 16MHz) cu ATmega328” în loc de cea implicită. De asemenea, nu uitați să specificați portul com necesar în setări.

Apoi faceți clic pe butonul „Descărcare” din program. De îndată ce linia de jos Va apărea cuvântul „descărcare”, apăsați pe „resetare” pe placă. Veți vedea un mesaj pe ecran care indică faptul că descărcarea este finalizată. Gata. Intermiterea s-a încheiat cu succes.

Acum să vedem cum să facem același lucru, doar prin Nano. Deschideți Schița și accesați meniul Fișier, selectați secțiunea Eșantioane. În lista care apare, faceți clic pe „ArduinoISP”. Apoi trebuie să mergeți la „Instrumente”, selectați „Placă” și bifați „Arduino Nano”.

Flash-ul Nano folosind schița ArduinoISP. Verificați viteza portului în funcția de configurare. Exact în acest timp va fi viteza Firmware pro Mini. În Sketch standard, viteza este 19200.

După ce ați pregătit Nano, treceți la asamblarea panoului pentru a reîncărca Pro Mini. Conectați +5V la Vcc, GND la aceeași intrare, D10 la RST și D11, D12 și D13 la aceleași intrări de pe Pro Mini.

Acum trebuie să conectați Nano la computer. Înainte de a începe să clipească, asigurați-vă că utilizați viteze egale ale portului, concentrându-vă pe viteza din Sketch. Găsiți fișierul text „boards” în folderul „arduino”. Deschideți-l și găsiți linia:

pro5v328.name=Arduino Pro Mini (5V, 16 MHz) cu ATmega328

Dacă utilizați o altă versiune, vă rugăm să selectați cea corespunzătoare. Verificați viteza setată. Ar trebui să verificați și setările fisier text"programatori"

De exemplu, dacă Arduino este departe și este incomod să mergeți pentru a-l flash, puteți atașa un modul Ethernet pe cipul WIZnet W5100

1. Luați niște Arduino simplu și flash-o cu schița arduino isp din exemple

2. conectați astfel

Placa care clipește

Tabloul care este flash

SS ->
mosi ->
miso ->
sck ->

resetare
51
50
52

De exemplu, am Nano Mega 2560 intermitent

3. în arduino ide, faceți clic pe fișier - setări, indicați acolo în link-uri suplimentare pentru managerul de bord acest lucru: https://per1234.github.io/Ariadne-Bootloader/package_codebendercc_ariadne-bootloader_index.json

4. în arduino ide, faceți clic pe instrumente - plăci - manager de plăci - faceți clic în partea de jos Ariadne Bootloader - Instalare

5. Faceți clic pe instrumente – board – și în secțiunea Ariadne Bootloader selectați taxa cerută(pe care o să-l flashăm. Am un mega 2560)

6. selectați instrumente – programator – arduino ca isp

7. Să verificăm totul din nou – ar trebui să fie așa:

8. instrumente – notează bootloader-ul (de câteva ori dacă apar erori)

9. Opriți programatorul, conectați-l card de retea. ip implicit 192.168.1.128. pentru a-l schimba trebuie să flashiți o dată schița neteeprom – scriețiNetworkSettings, după ce ați înregistrat IP-ul necesar acolo

10. După aceasta, trebuie să încercați să-l flash prin rețea - pentru aceasta trebuie să faceți și câteva acțiuni ciudate. includeți-l în Arduino IDE prin fișierul - setări de ieșire detaliată:

11. Deschideți schița dorită, de exemplu Clipește din exemple:

12. Faceți clic pe compilare - și căutați unde Arduino aruncă fișierele temporare în timpul compilării. Il am aici

13. deschis Linie de comandaîn acest folder și executați:

„C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-objcopy.exe” -I ihex Blink.ino.hex -O binar Blink.ino.bin

14. apoi apăsați pe reset și după câteva secunde executați tftp -i 192.168.1.128 PUT Blink.ino.bin

15. Apăsarea reset de fiecare dată este incomod și pentru asta avem nevoie de un fișier schiță - exemple - ethernetreset - resetserver. Acesta este un server web mic special pe portul 8080, care, atunci când primește o solicitare, va reporni Arduino http://192.168.1.128:8080/password/reset:

Pentru a automatiza, am creat un fișier batch - pur și simplu puneți-l în folderul dvs. de schiță și trageți fișierul .ino pe el - îl va descărca. mai întâi doar editați - indicați serverul și parola:

@echo off set ip=192.168.1.128 set passwd=parol mkdir "%~dp0build" del build /F /S /Q set home=%HOMEDRIVE%%HOMEPATH% set targetfn=%~n1%~x1 "C:\Program Fișiere (x86)\Arduino\arduino-builder.exe" -compilare -logger=mașină -hardware "C:\Program Files (x86)\Arduino\hardware" -hardware "%home%\AppData\Local\Arduino15\packages" -instrumente „C:\Program Files (x86)\Arduino\tools-builder” -tools „C:\Program Files (x86)\Arduino\hardware\tools\avr” -tools „%home%\AppData\Local\Arduino15 \packages" -built-in-libraries "C:\Program Files (x86)\Arduino\libraries" -libraries "%home%\Documents\Arduino\libraries" -fqbn=Ariadne-Bootloader:avr:ariadne2560:configuration=blink_shield -ide-version=10610 -build-path "%~dp0build" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "%targetfn%" "C:\Program Files (x86)\Arduino\hardware\tools\ avr\bin\avr-objcopy.exe" -Ihex build/%targetfn%.hex -O binary build/%targetfn%.bin powershell -Comandă "Invoke-WebRequest http://%ip%:8080/%passwd% /reset rem 6 sec delay PING 127.0.0.1 -n 6 >NUL 2>&1 || PING::1 -n 6 >NUL 2>&1 tftp -i %ip% PUT build/%targetfn%.bin pauză

@echo dezactivat

set ip = 192.168.1.128

set passwd = parola

mkdir „%~dp0build”

del build / F / S / Q

set home = % HOMEDRIVE % % HOMEPATH %

setați targetfn = % ~ n1 % ~ x1

„C:\Program Files (x86)\Arduino\arduino-builder.exe”- compilare - logger = mașină - hardware „C:\Program Files (x86)\Arduino\hardware”- hardware - unelte „C:\Program Files (x86)\Arduino\tools-builder”-unelte „C:\Program Files (x86)\Arduino\hardware\tools\avr”-unelte „%home%\AppData\Local\Arduino15\pachete”- biblioteci încorporate „C:\Program Files (x86)\Arduino\libraries”- biblioteci „%home%\Documents\Arduino\libraries”- fqbn = Ariadne - Bootloader: avr: ariadne2560: configuration = blink_shield - ide - version = 10610 - build - path "%~dp0build" - warnings = none - prefs = build . warn_data_percentage = 75 - pronunțat „%targetfn%”