A2B

A2Bs

Stanchi di usare un sacco di fili per collegare Arduino alla breadboard? Anche io lo ero! Per questo motivo ho realizzato A2B, guadagnando in tempo di realizzazione dei prototipi, robustezza meccanica e facilità di debug.

Il nome nasce come "Arduino to Breadboard", ma non mi spiace se volete interpretarlo come il modo più semplice per andare da A a B.

Usare un circuito stampato solo per fare collegamenti mi è sembrato però uno spreco; per questo ho inserito anche alcuni componenti che in genere presentano problemi di cablaggio quando usati con la breadboard:

Trovate il circuito in due versioni praticamente identiche:

Lo schema

Di seguito lo schema elettrico del circuito stampato. Per vedere la versione ad alta risoluzione in formato PDF, cliccare sull'immagine.

A2B: schema

Tutti i file del progetto sono scaricabili a fondo pagina.

Possiamo osservare:

Di seguito A2Bs, visto da sopra e da sotto:

A2Bs vito da sopra

A2Bs vito da sotto

Di seguito A2B, funzionalmente molto simile a A2Bs, collegato ad una breadboard. Si noti l'orientamento dei binari rosso e blu delle alimentazioni.

A2B vsito da sopra, agganciato alla breadboard

Note di montaggio

Al solito è bene iniziare la saldatura dai componenti di minor spessore. Quindi, nell'ordine, LM75A, resistori, LED, condensatori, connettori.

A proposito di questi ultimi, è vivamente consigliato saldarli mentre sono inseriti nei connettori complementari o nella breadboard, al fine di garantire il massimo allineamento meccanico.

IInserendo il circuito in Arduino o nella breadboard occorre prestare la massima attenzione per evitare di piegare i pin. L'immagine seguente mostra un dettaglio laterale. A seconda del tipo di connettore, potrebbe essere necessario sollevare di qualche millimetro la breadboard (come nel caso della fotografia) oppure Arduino.

A2B montato su breadboard

Codice

Ovviamente A2B è pienamente utilizzabile con il codice di Arduino e tutte le librerie. Quanto di seguito riportato sono solo brevi codici per effettuare un test veloce della funzionamento.

Ingresso analogico A0

Per usare il trimmer è necessario inserire il jumper A0. Il codice è preso direttamente dagli esempi:

void setup() {
  Serial.begin(9600);
}

void loop() {
   int sensorValue = analogRead(A0);
   Serial.println(sensorValue);
   delay(1000);
}

LM75A

Per utilizzare questo sensore è possibile usare le librerie LM75A Arduino library. Non inserendo alcun jumper in A0, A1 e A2 l'indirizzo del sensore è 0x4F.

#include <M2M_LM75A.h>

M2M_LM75A lm75a(0x4F);

void setup() {
 lm75a.begin();
 Serial.begin(9600);
}

void loop() {
 Serial.print(F("Temperature in Celsius: "));
 Serial.print (lm75a.getTemperature());
 Serial.println(F(" °C"));
 delay(1000);
}

nRF24L01+

Il test del modulo radio nFR24L01+ è più complesso, non tanto perché il codice è più articolato, quanto perché serve un trasmettitore ed un ricevitore. Vengono qui usate le librerie RF24 (nota 3).

Il trasmettitore invia una volta al secondo, alternativamente "0" oppure "1":

#include <RF24.h>
#include <printf.h>
#include <math.h>
RF24 radio(7, 8); // CE, CSN

const byte address[6] = "00002";

void setup() {
  Serial.begin(9600);
  printf_begin();
  radio.begin();
  radio.setAutoAck(true);
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MAX);
  radio.stopListening();
  radio.printDetails();
}

int temperatura;

void loop() {
  byte OnOff = '0';
  Serial.println(OnOff);
  radio.write(&OnOff, sizeof(OnOff));
  delay(1000);

  OnOff = '1';
  Serial.println(OnOff);
  radio.write(&OnOff, sizeof(OnOff));
  delay(1000);
}

Il ricevitore accende o spegne un LED collegato al pin 2 ad ogni ricezione del comando corrispondente:

#include <SPI.h>
#include <RF24.h>
#include <printf.h>

RF24 radio(7, 8); // CE, CSN

const byte address[6] = "00002";

void setup() {
  pinMode(2, OUTPUT);
  Serial.begin(9600);
  printf_begin();

  radio.begin();

  radio.setPALevel(RF24_PA_MIN);
  radio.setAutoAck(true);
  radio.openReadingPipe(0, address);
  radio.printDetails();
  radio.startListening();

  for (int i = 0; i < 10; i++) {
    digitalWrite(2, HIGH);
    delay(50);
    digitalWrite(2, LOW);
    delay(50);
    }

   Serial.println("pronto...");
}

void loop() {
  if (radio.available()) {
  byte stato = '0';
  radio.read(&stato, sizeof(stato));

  Serial.println(stato);
  if (stato == '1')
    digitalWrite(2, HIGH);
  else
    digitalWrite(2, LOW);
    }
  }

Files

Note

  1. J3 è presente solo in A2Bs. A2B usa quattro connettori P9, P10, P11 e P12
  2. Potrebbero esserci problemi di compatibilità elettrica tra nFR24L01+ e Arduino a causa del fatto che il primo è alimentato a 3,3 V, il secondo a 5 V. Non ci sono problemi di guasti (nRF24L01+ ha gli ingressi 5 V tollerant), ma la tensione di uscita di nRF24 per l'uno logico (VOH) può scendere fino a 3.0 V, valore coincidente con il minimo di VIH di ATmega328, senza quindi alcun margine di rumore.
  3. Documentazione: https://howtomechatronics.com...nrf24l01-tutorial e https://github.com/nRF24/RF24


Data di creazione di questa pagina: novembre 2021
Ultima modifica: 6 novembre 2021

Licenza Creative Commons Attribuzione 4.0 Internazionale


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima