Salve, sto lavorando a un progetto con arduino che consiste in un sistema di differenziamento rifiuti tramite un lettore di codice QR che quando legge il QR(un GM805 Series UART USB DC5V). Per comodità abbiamo deciso di usare codici qr che contengono numeri( 1 che corrisponde alla plastica, 2 alla carta e 3 al vetro), quello che dovrebbe fare il programma è leggere il qr assegnare il valore letto alla variabile (s) e con uno switch decidere quale dei 3 servomotori azionare.
con le mie conoscenze di programmazione abbastanza scarse e grazie ad alcuni video su internet, sono riuscito a fare il codice per questo progetto ma quando sono passato alla parte pratica ho riscontrato un problema con la lettura dei codici QR non ho idea se il problema stia nel codice o nel montaggio del lettore QR.
Questo lettore QR ha un adattatore uart con dei cavi ( il GND, il 5V, RX, TX, D+, D-)
non so cosa siano il D+ e il D- quindi ho collegato soltanto gli altri pin( anche perche in quei due video che ho trovato su youtube con lettori QR simili non erano presenti quei pin)
il gnd e la 5v sulla breadboard collegati alla gnd e alla 5V di arduino il TX e il RX ai pin 2 e 3 di arduino. con questo collegamento il lettore QR si accende e se si inquadra un qr lo legge(non penso questo indichi che il montaggio o il codice siano corretti ma fa quelle azioni di default) ma non invia i dati ad arduino
allego lo sketch che ho utilizzato e delle immagini del lettore QR.
Spero qualcuno riesca ad aiutarmi a trovare il problema per il quale il lettore non comunica i dati letti ad arduino.
Controlla che i collegamenti siano corretti, il pin TX del modulo deve andare al pin 2 di Arduino (RX), l'RX del modulo al 3 di Arduino. Stando a quanto dice il manuale la comunicazione seriale dovrebbe già essere attiva con quei parametri, quindi dovrebbe funzionare, prova ad inquadrare questo QR e vedi se cambia qualcosa:
Sono i pin che si usano per un collegamento via USB
Intanto occorre verificare alcune cose ... per cominciare lo standard ...
... la comunicazione seriale TTL standard prevede che ha riposo il pin TX stia a livello HIGH ... il manuale di quell'oggetto definisce la comunicazione come TTL-232 (ricordo che la RS-323, oltre alle divverenze nei livelli di tensione, a riposo ha il pin TX LOW) quindi, come prima cosa, verificherei a che livello è il pin TX di quell'oggetto quando NON c'è trasmissione; se è a livello HIGH può tranquillamente comunicare con Arduino, se a livello LOW (come una RS-232) va invertito.
Fatto questo non capisco bene se quell'oggetto, sulla seriale, trasmetta semplicemente dei codici che legge o ... se abbia un suo protocollo molto più complesso (guardando il manuale sembra usi un protocollo che prevede anche il calcolo di un CRC per la comunicazione).
Insomma, tocca fare alcune verifiche e dedicare un po' di tempo a studiarsi bene il manuale per capire come richiedere e ricevere i dati
Scusami l’ignoranza per leggere il pin TX del lettore bisogna farlo tramite monitor seriale leggendo il pin RX di arduino oppure basta leggere se c’è tensione sul pin TX del lettore attraverso un multimetro?
Dato che devi capire il "livello" a riposo, puoi farlo semplicemente solo alimentando il modulo e misurando a che valore è il pin TX (rispetto al GND) con un multimetro.
Certo ... avendo a disposizione un oscilloscopio, si potrebbe anche capire se, da solo, inizia comunque a trasmettere qualche cosa in attesa di comandi ...
... quello è il "livello" di tensione, ovvero 0..5V, ma non ti dice nulla sulle specifiche di come usa la UART.
Normalmente se specifichi solo seriale TTL allora hai la fase di "idle" messa ad HIGH, ma se mi specifici TTL-232 mi fai venire il dubbio che tu usi si i livelli 0..5V, ma magari in "idle" sei LOW, come la classica 232. Ecco perché fare una semplice verifica che non costa nulla, ma può risparmiare ore di insuccessi ...
Salve ho seguito il consiglio e il lettore è riuscito a comunicare con arduino
Grazie mille mi hai veramente salvato visto che devo presentare il progetto giovedì.