2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Pratarmė
Neseniai kūriau keletą ESP8266 pagrįstų IoT projektų ir pastebėjau, kad pagrindinis procesorius sunkiai atlieka visas užduotis, kurių man reikėjo valdyti, todėl nusprendžiau kai kurias mažiau svarbias veiklas paskirstyti kitam (-iems) mikrovaldikliui (-iams) tokiu būdu atlaisvinamas ESP8266, kad jis galėtų toliau dirbti kaip daiktų interneto įrenginys.
Kadangi norėjau paskelbti savo projektą kuo platesnei auditorijai, nusprendžiau naudoti „Arduino IDE“kaip pasirinktą kūrimo platformą, nes ji turi tokią plačiai remiamą bendruomenę.
Dizaino apribojimai
Siekdamas pagrįstai išplėsti tikslinius įtaisus, leidžiančius pasirinkti tinkamą mikrovaldiklį atitinkamai programai, aš nusprendžiau šias „Atmel“dalis; ATMega328P, ATTiny84 ir ATTiny85. Norėdami apriboti reikiamo programuotojo sudėtingumą, aš apribojau laikrodžio pasirinkimą vidiniam visiems įrenginiams ir 16 MHz išorinį tik ATMega328P ir ATTiny84.
Toliau pateikiamas užrašų apie programavimą su „Arduino“rinkinys ir aprašymas, kaip aš sukūriau paprastą „Arduino Uno“pagrindu sukurtą šių įrenginių programuotoją (nuotraukos aukščiau).
Kokių dalių man reikia?
Norėdami sukurti programuotoją, jums reikės šių dalių
- 1 nuolaida „Arduino Uno“
- 2 išjungti 28 kontaktų nulinės įterpimo jėgos (ZIF) DIP lizdai (ATMega328P, ATTiny85, ATTiny84)
- 1 nuo „Arduino“prototipo skydo (aš čia gavau;
- 2 išjungti 5 mm šviesos diodai
- 2 išjungti 1K rezistoriai
- 1 išjungtas 10K rezistorius
- 4 išjungti 22pF keraminiai kondensatoriai
- 2 išjungti 16MHz kristalai
- 3 išjungti 0,1uF keraminius kondensatorius
- 1 išjungtas 47uF elektrolitinis kondensatorius
- 1 išjungtas 10uF elektrolitinis kondensatorius
- Įvairaus ilgio vielos apvyniojimo viela.
Kokios programinės įrangos man reikia?
„Arduino IDE“1.6.9
Kokių įgūdžių man reikia?
- „Arduino IDE“žinios
- Kai kurios elektronikos ir litavimo žinios
- Didelis rankų miklumas
- Kantrybė ir geras regėjimas
Aptartos temos
- Bendras įvadas į „Atmel“mikrovaldiklių programavimą
- IPT arba „Bootloader“: viskas šiek tiek painu
- Grandinės apžvalga
- Programuotojo nustatymas
- Naudojant „Arduino“IPT programuotoją
- Kuriamas kodas jūsų tikslinėje sistemoje
- Gotchas
- Išvada
- Naudotos nuorodos
Atsisakymas
Kaip visada, šias instrukcijas naudojate savo rizika ir jos nepalaikomos
1 žingsnis: Bendras įvadas apie „Atmel“mikrovaldiklių programavimą
Yra du „Atmel“mikrovaldiklių programavimo būdai;
- Sistemos programavime (IPT),
- Savarankiškas programavimas (naudojant įkrovos tvarkyklę).
Pirmasis metodas (1) tiesiogiai užprogramuoja mikrovaldiklį per SPI sąsają po to, kai pirmą kartą įjungiamas įrenginys. Jei nenurodyta kitaip, sukompiliuota vykdomojo kodo programa į įrenginį palaipsniui įrašoma į kodo atmintį, iš kurios ji vykdoma paleidžiant. Yra daug IPT įrenginių, galinčių programuoti „Atmel“įrenginius, iš kurių keletas yra (1 pav.); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. 2 paveiksle parodyta, kaip IPT įrenginys jungiasi prie „ATMega328P“(keistai pažymėtas ICSP) „Arduino Uno R3“plokštėje (3 pav. Parodytas IPT kaištis). Taip pat galima programuoti „Atmel“mikrovaldiklį per jo SPI sąsają naudojant „Arduino Uno“kaip interneto tiekėją (4 pav.), Čia „Uno“naudojamas programuoti „ATMega328P“.
Pastarasis metodas (2) naudoja mažą kodo atotrūkį, vadinamą „įkrovos įkrovikliu“, nuolat esantį vykdomojo kodo atmintyje (paprastai užrakintas, kad būtų išvengta atsitiktinio 5 paveikslo perrašymo). Šis kodas pirmiausia vykdomas įjungus arba iš naujo nustatant įrenginį ir leidžia mikrovaldikliui iš naujo užprogramuoti naują kodą, gautą per vieną iš jo sąsajų iš išorinio šaltinio. „Arduino IDE“naudoja įkrovos įkėlimo metodą, kad iš naujo užprogramuotų „Arduinos“, susietas su kompiuterio USB prievadu (arba MAC, „Linux“dėžutė ir pan., 6 pav.), O „Arduino Uno“atveju su „Atmel“įrenginiu bendrauja per jį ATMega328P 2 ir 3 IC kaiščių nuosekli sąsaja. Taip pat „Arduino Uno“(su pašalintu „ATMega328P“mikrovaldikliu) galima naudoti programuojant „ATMega328P“naudojant įkrovos įkėlimo metodą, veiksmingai veikiantį kaip USB į nuoseklųjį adapterį (7 pav.).
Kas yra USB į nuoseklųjį adapterį?
USB į nuoseklųjį adapterį yra aparatūros dalis, kuri prijungiama prie jūsų kompiuterio USB prievado ir atrodo kaip nuoseklusis prievadas (palikimas iš ankstesnių laikų, kai kompiuteriai naudojo nuoseklaus ryšio standartą, žinomą kaip EIA-232, V24 arba RS232), leidžiantį siųsti ir gauti serijinius duomenis tais pačiais mikrovaldiklio elektriniais lygiais. Kai iš „Arduino IDE“pasirenkate Įrankiai -> Prievadas -> COMx, jūs jungiate/jungiate kompiuterį prie „Arduino“.
Toks įrenginys kartais vadinamas FTDI (8 pav., Kuris iš tikrųjų yra prekės ženklas) arba CH340G ir tt USB prie serijinio „Arduino uno“pasiekiamas naudojant ATMega16U2-MU (R) IC ZU4, kaip nurodyta „Arduino“schemoje žemiau.
Aiškumo dėlei 9 paveiksle identifikuojami du „Atmel“įrenginiai ir atitinkami „Arduino Uno R3“ISP jungtys.
1 pastaba: jei nuspręsite eiti FTDI įrenginių keliu, įsitikinkite, kad perkate iš patikimo pardavėjo, nes rinkoje buvo daug pigių padirbtų prietaisų, kurie nepavyko pritaikius „Windows“naujinimą.