Taula de continguts:

Rellotge independent Arduino 3,3 V amb relleu extern de 8 MHz programat des d’Arduino Uno mitjançant ICSP / ISP (amb monitorització en sèrie!): 4 passos
Rellotge independent Arduino 3,3 V amb relleu extern de 8 MHz programat des d’Arduino Uno mitjançant ICSP / ISP (amb monitorització en sèrie!): 4 passos

Vídeo: Rellotge independent Arduino 3,3 V amb relleu extern de 8 MHz programat des d’Arduino Uno mitjançant ICSP / ISP (amb monitorització en sèrie!): 4 passos

Vídeo: Rellotge independent Arduino 3,3 V amb relleu extern de 8 MHz programat des d’Arduino Uno mitjançant ICSP / ISP (amb monitorització en sèrie!): 4 passos
Vídeo: china vs india || mathematics challenge || 😂😂🤣😅 2024, Desembre
Anonim
Rellotge independent Arduino 3.3V W / extern de 8 MHz programat des d’Arduino Uno a través d’ICSP / ISP (amb monitorització en sèrie!)
Rellotge independent Arduino 3.3V W / extern de 8 MHz programat des d’Arduino Uno a través d’ICSP / ISP (amb monitorització en sèrie!)
Rellotge independent Arduino 3.3V W / extern de 8 MHz programat des d’Arduino Uno a través d’ICSP / ISP (amb monitorització en sèrie!)
Rellotge independent Arduino 3.3V W / extern de 8 MHz programat des d’Arduino Uno a través d’ICSP / ISP (amb monitorització en sèrie!)

Objectius:

  • Per construir un Arduino autònom que funcioni a 3,3V d’un rellotge extern de 8 MHz.
  • Per programar-lo mitjançant ISP (també conegut com ICSP, programació serial en circuit) des d’un Arduino Uno (que funciona a 5V)

    Per editar el fitxer del carregador d'arrencada i gravar-lo (mitjançant ISP)

  • Per poder llegir informació de sèrie des de l’Arduino independent mitjançant un cable FTDI

    Per poder llegir informació de sèrie des de l’Arduino independent sense el cable FTDI

Preàmbul:

Intentava construir el meu projecte autònom, però no vaig veure cap guia completa d’execució, programació i supervisió d’un Arduino autònom, en particular un funcionant amb un rellotge extern de 8Mhz i 3,3V i programat per un Arduino UNO. He reunit una sèrie de guies separades i he intentat fer referència d’on he obtingut la informació per donar crèdit on s’ha de pagar el crèdit. Aquesta guia és el resultat de molts dies buscant solucions i trobant-ne parts alhora que construïa el meu propi projecte. empreses, però perquè és rellevant incloure els elements específics als quals em refereixo.

Preguntes habituals abans de començar:

Per què cal programar-lo amb ISP i supervisar-lo mitjançant FTDI? Per què no es pot programar mitjançant FTDI?

Haurem de canviar la configuració dels fusibles mitjançant la gravació d’un carregador d’arrencada nou i no ho podeu fer mitjançant la comunicació en sèrie. Heu de gravar el carregador d’arrencada via ISP. Això també és útil per a aquells que no tenen un xip ATMEGA328 pre-carregat.

Per què no faig servir només un cable d’ISP amb control de sèrie, com aquest?

Potser, com jo, no en teniu cap i, en lloc d’esperar-ne un, us agradarà utilitzar el que teniu. Tinc un cable FTDI (tot i que al final trobareu que ni tan sols el necessiteu: us facilita la vida).

No necessito un canvi de nivell lògic de l’Uno a l’Arduino independent?

Sí, sí, però us mostraré com fer-ne un vosaltres mateixos. Igual que el cable ISP, no en tinc.

Vull desconnectar-lo de la potència externa. Com ho faig?

Hi ha un munt de guies que mostren com fer funcionar un Arduino independent amb la bateria. Escriuré com ho he fet i enllaçaré aquí [inseriré més endavant].

LA GUIA

Pas 1: Construir l'Arduino independent

Construint l'Arduino autònom
Construint l'Arduino autònom
Construint l'Arduino autònom
Construint l'Arduino autònom

1) Creeu l'Arduino independent des d'aquest enllaç. L'única part de la guia que necessiteu és la "Informació bàsica ATMEGA8 / 168/328".

  • Podeu alimentar l'Arduino independent des dels 3,3V de l'Arduino Uno. (Podeu ometre la primera secció del tutorial titulada "Afegir circuit per a una font d'alimentació".
  • Substituïu el rellotge de 16 MHz per un de 8 MHz.
  • Afegiu majúscules de 0,1 uF entre: VCC i Gnd (ambdós costats) VRef i Gnd.

    • No els tinc inclosos a la imatge, però sí en els meus projectes.
    • Sé que és un oscil·lador de 16 MHz a la foto. Vaig fer la foto abans d’entendre tot el que feia a la guia!

Font d'imatge de pinout ATMEGA328p aquí.

Consells comuns per a la resolució de problemes

  • Assegureu-vos que heu restablert el valor alt mitjançant una resistència de 10 k de VCC al pin 1 de l’ATMEGA. Si el passador està connectat a terra o flotant, no funcionarà.
  • Comproveu que heu inserit correctament els cables i l'oscil·lador.
  • Assegureu-vos que utilitzeu condensadors de 22pF per a l’oscil·lador de 8 MHz. No funcionarà d’una altra manera.
  • Assegureu-vos que el dispositiu estigui alimentat.

Pas 2: el cablejat de l'ISP

El cablejat de l’ISP
El cablejat de l’ISP
El cablejat de l’ISP
El cablejat de l’ISP

2) Creeu la part ISP

Seguiràs aquesta guia aquí amb un petit però important pas.

El motiu pel qual no podeu seguir la guia és que us falta una part crucial: no podeu programar un dispositiu de 3,3 V directament des de les connexions de 5 V. (Almenys, no podria: no funcionaria fins que no ho fes). Heu d’inserir un canvi de nivell lògic que desplaci els senyals de 5V de l’ONU a l’arduino independent de 3,3V.

Si no teniu una placa de canvi de nivell lògic, podeu fer-ne un mitjançant resistències. Tot el que és realment un canvi de nivell lògic (sempre que baixeu) és un divisor de voltatge. Necessitareu 6 de les mateixes resistències, res ni alt ni massa baix. He utilitzat resistències de 220 ohms, però estic segur que fins i tot funcionarien resistències de 10 k.

Per a SCK (pin digital 13) i MOSI (pin digital 11), utilitzeu un divisor de tensió per reduir la tensió en un terç. En essència, tindreu un Uno SCK i MOSI, després una resistència (220 ohm), després SCK i MOSI connectats a l’Arduino autònom i 2 resistències (440 ohm en total) a terra.

Per tant, llegiu la guia enllaçada al principi d’aquesta secció, però incloeu divisors de voltatge entre SCK i MOSI. Recordeu, SCK, MISO, MOSI i RESET són els pins 13, 12, 11 i 10 de l’Uno, però són els pins 19, 18, 17 i 1 a l'Arduino independent.

Consells comuns per a la resolució de problemes

  • COMPROVEU EL CABLEAT

    • Si obteniu una signatura de dispositiu de tots els 0 quan intenteu escriure un programa, és probable que el cablejat estigui apagat o que l'Arduino independent no estigui alimentat.
    • A més, assegureu-vos que teniu el cable de restabliment de 10 a l’Uno a 1 a l’Arduino independent
  • COMPROVEU ELS DIVISORS DE TENSIÓ

    Assegureu-vos que teniu divisors de tensió amb una proporció d’1: 2 (costat alt: costat baix) per a les resistències tant de SCK com de MOSI. Per exemple. una resistència de 220 al costat de + 5v i, a continuació, 2 resistències de 220 ohm (440 ohm en total) cap a terra amb el senyal cap al Arduino independent al centre

Pas 3: Editeu el fitxer Bootloader, graveu el Bootloader i pengeu el vostre esbós

Editeu el fitxer Bootloader, graveu el Bootloader i pengeu el vostre esbós
Editeu el fitxer Bootloader, graveu el Bootloader i pengeu el vostre esbós
Editeu el fitxer Bootloader, graveu el bootloader i pengeu el vostre esbós
Editeu el fitxer Bootloader, graveu el bootloader i pengeu el vostre esbós

3) Editeu el fitxer del carregador d'arrencada (boards.txt) i graveu el carregador d'arrencada a l'Arduino independent. Pengeu el vostre esbós

S'està editant el fitxer del carregador d'arrencada

Per fer funcionar l'Arduino independent, haureu d'editar la configuració del fusible marró del carregador d'arrencada. En cas contrari, podreu gravar-hi un carregador d’arrencada però no podreu executar cap esbós.

Podeu eliminar completament la detecció d’enfosquiment, però no la recomanaria. En lloc d’això, el baixarem de 2,7 V (el que apareixia per defecte al meu xip) i el substituirem per 1,8 V. Tanmateix, en última instància, podeu escollir quins paràmetres de marró voleu mitjançant la calculadora de fusibles aquí.

El meu fitxer de taulers era a la ubicació següent:

C: / Program Files (x86) Arduino / hardware / arduino / avr

Tanmateix, és possible que tingueu més d'un fitxer boards.txt a la carpeta de maquinari que no sigui / arudino /. Editaràs el fitxer boards.txt a la ubicació / arduino / perquè modificaràs la secció ATMEGA328p (3,3 V, 8 MHz).

Podeu perdre el fitxer boards.txt editat si torneu a instal·lar o actualitzeu l'IDE Arduino (segons aquest missatge). Això significa que si actualitzeu Arduino IDE, haureu de canviar de nou aquesta configuració si voleu crear un altre Arduino independent.

Al fitxer boards.txt, desplaceu-vos cap avall o cerqueu "Pro Mini". La secció es titula "pro.name = Arduino Pro o Pro Mini". Desplaceu-vos cap avall fins a la subsecció "pro.menu.cpu.8MHzatmega328 = ATmega328P (3,3 V, 8 MHz)".

Cerqueu la línia que diu "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Canvieu la configuració a xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Guardar i sortir.

Cremant el carregador d'arrencada

Un cop fet això, podeu seguir la secció "Instruccions" de la guia de l'ISP des dels passos 1 fins al 5.

Algunes coses a aclarir:

  • Quan pengeu l'esbós "Arduino com a ISP", heu d'assegurar-vos que teniu seleccionat el port i el processador COM correctes.

    En aquest cas, vol dir que heu seleccionat el port COM del vostre Arduino a Eines-> Port: COM X (Arduino Uno) i la placa és Arduio Uno

  • Seleccioneu el programador correcte: a Eines-> Programador-> Arduino com a ISP.

    NO ArduinoISP ni ArduinoISP.org

  • Abans de gravar el programari d'arrencada, canvieu la placa "Pro o Pro Mini" i el processador per "ATMEGA328p (3,3 V, 8 MHz)".

    No veureu la secció del processador fins que no seleccioneu el tipus de placa correcte

Graveu el carregador d’arrencada a l’Arduino independent ABANS d’intentar escriure-hi esbossos.

Carregant l’esbós

Això és molt important. Ara podeu programar Arduino: l’Uno i l’autònom. Si no pengeu al dispositiu correcte, heu de repetir la secció anterior i reescriure Arduino com a programa ISP a l’Uno.

Quan pengeu l'esbós, assegureu-vos de fer clic a Eines -> Penja amb el programador O feu clic a Ctrl + Maj + U. També podeu mantenir premuda la tecla Maj i fer clic a la icona de fletxa, però no feu clic a la icona de fletxa sense mantenir premuda la tecla Maj.

Consells comuns per a la resolució de problemes

  • Activeu la sortida detallada per resoldre problemes.
  • "El dispositiu signatuere és tot 0!" [És molt probable que es produeixi.]

    • vegeu la secció de cablejat de l’ISP. O bé heu connectat incorrectament l'Arduino independent o no s'està encenent.
    • Assegureu-vos que heu seleccionat el port COM correcte i la placa / processador. Quan esteu gravant el carregador d’arrencada, heu d’assegurar-vos que esteu cremant el carregador d’arrencada Pro Mini 3.3V 8 MHz o els fusibles no es configuraran correctament.
  • "He editat el fitxer boards.txt però no veig les modificacions"

    Assegureu-vos que hàgiu editat el fitxer boards.txt correcte. Proveu d’actualitzar Arduino IDE si les modificacions no funcionen o elimineu temporalment altres carpetes del vostre / hardware / folder

  • "No puc trobar la secció mini pro de boards.txt!"

    No busqueu el fitxer boards.txt adequat. Comproveu la carpeta Arduino // hardware / arduino /

Pas 4: comunicació en sèrie

4) Superviseu el dispositiu autònom mitjançant la comunicació en sèrie

Realment podeu fer-ho mitjançant 2 mètodes, de manera que si ni tan sols teniu un cable / placa de sortida FTDI no és la fi del món. I recordeu, l’esbós que heu penjat a l’Arduino independent ha de contenir sentències Serial.print perquè les pugueu llegir: si no l’heu escrit al programa, no veureu res.

Si no teniu un cable FTDI

Després d’haver cremat el gestor d’arrencada i haver escrit el programa que desitgeu, podeu (amb molt de compte i recordant en quina orientació es remunta) treure el xip ATMEGA328 DIP de l’Arduino Uno. Recomano utilitzar un cap pla per a això.

Podeu connectar el RX independent d’Arduino a l’RX d’Uno i el TX a TX. Sí, normalment és el contrari, però podeu pensar que l’Uno és “reenviar” la informació al monitor serial de l’IDE. És per això que en aquest cas no connecteu RX a TX i TX ro RX. Quan executeu el programa, assegureu-vos que trieu el port COM de l’Arduino Uno i obriu el muntador serial. Podreu veure la sortida sèrie d'Arduino independent.

(Aquesta solució s'acredita a Robin2 aquí.)

Si teniu un cable / placa FTDI

(Estic fent servir la placa FTDI de Sparkfun que he convertit a 3,3 V mitjançant el coixinet de soldadura de la part posterior)

Simplement connecteu el GND de la placa de ruptura a la terra independent d'Arduino i connecteu el RX del tauler de ruptura al TX d'Arduino i TX a RX. (Si NOMÉS superviseu en sèrie i no escriviu res, només podeu connectar el RX del tauler de presentació a Arduino TX).

Recordeu en aquest moment que teniu l’opció d’alimentar l’Arduino independent mitjançant l’UO o el cable FTDI. No connecteu les dues fonts d'alimentació al mateix temps. Tingueu en compte que haureu de canviar el port COM, ja que serà diferent del port COM Arduino Uno.

Consells comuns per a la resolució de problemes

  • "No veig res!"

    • Comproveu si teniu activat el port COM correcte.
    • Comproveu si teniu els controladors FTDI més recents.
    • ASEGURAR QUE EL TERRA ESTI CONNECTADA.
  • "Tot el que veig és la sortida d'escombraries al monitor sèrie!"

    • Obteniu alguna cosa que sigui un bon senyal.
    • No obstant això, comproveu el voltatge de la placa FTDI.
    • L’Arduino independent genera 3.3V al TX i és possible que la placa FTDI no l’agafi si espera 5v.
    • Comproveu la velocitat en bauds.
    • Assegureu-vos que heu connectat a terra i que només hi ha una font d'alimentació connectada. (És a dir, no alimenteu l'Arduino autònom de l'UNO I la vostra placa FTDI.

Recomanat: