Modulo SCF-TOP03

SCF Electronics ha adottato questo hardware molto compatto (il Cactus Rev.2 ) con lo scopo di sviluppare il modulo stand-alone TOP sullo scenario IoT. Una singola scheda incorpora una scheda Arduino compatibile al 100% insieme ad un modulo WiFi. Si tratta di un punto di riferimento per i produttori che vogliono sviluppare progetti IoT a bassa potenza rapidamente e facilmente. L’unità micro-controllore è un Atmel ATMEGA32U4 mentre il modulo WiFi si basa sul moduo ESP8266. Per evidenziare che il firmware del modulo WiFi è stato completamente cambiato rispetto alle altre schede sul mercato, abbiamo scelto di chiamarlo SCF-TOP03.

Tutte le funzioni del modulo WiFi sono gestite dal potente sistema (SoC) ESP8266, che combina un micro-controllore 32 bit (e molte periferiche come GPIO, I2C, ADC, SPI, PWM) con una radio WiFi.

Nella scheda SCF-TOP 03, i pin del modulo WiFi sono collegati internamente ai pin Arduino come segue:

ESP8266 Arduino
GPIO0 12
ENABLE (CH_PD) 13
RX TX (Serial1)
TX RX (Serial1)
GND GND
GPIO13 2
GPIO12 3
GPIO14 A4

* Not managed from miuPanel firmware.

Power Pins

There are a variety of power and power-related nets broken out:

RAW è l’ingresso di tensione non regolamentata. Se la scheda è alimentata via USB, la tensione a questo pin sarà di circa 4.8V (5V meno la caduta del diodo Schottky del USB). D’altra parte, se la scheda è alimentata esternamente, attraverso questo passaggio, la tensione applicata può essere fino a 9V.

VCC è la tensione fornita al ATMEGA32U4. Sarà 3.3V. Questa tensione è regolata dalla tensione applicata al pin RAW. Se la scheda viene alimentata attraverso il pin ‘RAW’ (o USB), questo pin può essere utilizzato come uscita per alimentare altri dispositivi.

RST può essere utilizzato per riavviare il ATMEGA32U4. Questo pin è pulled high da una resistenza da 10 kOhm, ed è active-low, quindi deve essere collegato a terra per avviare il reset. L’ATMEGA32U4 resterà “off” fino a quando la linea di reset non viene riportata  su high.

GND, è comune, tensione di massa (riferimento 0V) per il sistema.

I/O Pins

I pin I/O della board – 18 in tutto – sono multi funzionali. Ogni pin può essere utilizzato come ingresso o uscita digitale, per LED lampeggianti o per leggere la pressione di un pulsante. Questi pin si riferiscono nell’Arduino tramite un valore intero compreso tra 0 e 21. (I pin A0-A3 possono essere utilizzati sia come ingressi analogici che come I/O digitali..

Nove pin presentano convertitori analogico-digitale (ADC) e possono essere utilizzati come ingressi analogici. Questi sono utili per potenziometri di lettura o altri dispositivi analogici che utilizzano la funzione analogRead ([pin]).

Ci sono cinque pin con larghezza di impulso funzionalità di modulazione (PWM), che possono essere utilizzati come uscita analogica utilizzando la funzione ([pin], [value]) analogWrite. Questi pin sono indicati sulla scheda con un cerchio bianco.

C’è anche un dispositivo UART (di serie), I2C, ed anche pin SPI. Questi possono essere usati per interfacciarsi con dispositivi digitali come LCD seriali, XBees, IMUs e altri sensori seriali.

La scheda dispone di cinque interrupts esterni, che permettono di attivare immediatamente una funzione quando un pin è attivo o disattivo (o in entrambi i casi).Se tu vuoi attivare un interrupt su un determinato pin, devi conoscere come sono mappati gli interrupt sui pin. Per questa  scheda la mappa è la seguente: pin 3 mappato a interrupt 0, pin 2 è interrupt 1, pin 0 è interrupt 2, pin 1 è interrupt 3, and pin 7 è interrupt 4.

per ulteriori informazioni sugli interrupt, visita questa pagina.

Come alimentare la scheda

 

Dal momento che la caratteristica principale è la connettività USB, il modo più pratico per alimentare la scheda è via USB. In questa configurazione la tensione a 5V proveniente dalla USB verra regolata a 3.3V. Il cavo USB può essere collegato sia al computer, ad un hub USB o un adattatore a muro USB, che, nella maggior parte dei casi, fornire più potenza.

In alternativa, se la vostra scheda si trova all’esterno, può essere alimentata sia attraverso il ‘RAW’ o il pin VCC. l’alimentazione fornita al pin ‘RAW’ sarà regolata fino alla corretta tensione di funzionamento (3.3V). Per sicurezza, non dovrebbe essere più in alta di 9V, e dovrebbe essere almeno 1V in più rispetto alla tensione target).

Se si alimenta la scheda attraverso pin ‘VCC’, tenere a mente che questo pin non è fornito di un regolatore, utiizzarlo solo se si dispone di una fonte a 3.3V.

Modalità  Operativa del modulo WiFi

Dopo l’accensione (o reset) il modulo WiFi a bordo può essere avviato in due modi diversi, a seconda dei livelli logici applicati sui suoi pin GPIO0 e GPIO2. Dal momento che questi pin sono instradati internamente all’Arduino (come riportato nella tabella 1), nello schizzo Arduino fate attenzione a impostare correttamente questi pin su Reset (si veda l’esempio schizzo di seguito).

Firmware RUN mode

GPIO0 = ‘1’
GPIO2 = ‘1’ (nell’SCF-TOP03 è forzato internamente al Vcc)
TX = ‘1’ (Importante: assicurarsi che il microcontrollore mantenga la linea TX su high durante l’avvio del modulo.)

Programming Mode

GPIO0 = ‘0’
GPIO2 = ‘1’
IMPORTANTE: Non è questo il modo corretto per aggiornare il firmware μPanel del modulo, non utilizzare questa modalità, altrimenti si compromette definitivamente il firmware μPanel! Il modo corretto è lanciare la richiesta di aggiornamento dall’APP μPanel

Esempio di Schizzo Arduino

IMPORTANTE: prima di caricare il tuo schizzo, selezionare la scheda “Arduino LilyPad USB” nel menu schede dell’IDE Arduino.
Se avete accidentalmente selezionato un’altra scheda, e avete già provato a caricare lo schizzo, leggere qui.
Questa scheda (come Lilypad USB e Leonardo) usara “Serial1” per comunicare con a il modulo WiFi integrato tramite seriale TTL sul pin 0 (RX) e 1 (TX). “Serial” è riservata per la comunicazione CDC USB.

/**************************************************

 --- IMPORTANT ---: before to load your sketch, please select the board "LilyPad Arduino USB" in the boards menu.
 If you have accidentally select another board, and load your sketch, read here:
 www.arduino.cc/en/Guide/ArduinoLilyPadUSB

 Connection table:

 * ESP8266  Arduino
 * GPIO0    12
 * ENABLE   13
 * RX       TX
 * TX       RX
 * GND      GND

 About Serial
 The "Lilypad USB" (and the board derived from it) use "Serial1" to communicate via TTL serial on pins 0 (RX) and 1 (TX). 
 "Serial" is reserved for USB CDC communication.

 ***************************************************/

#define ESP_PROGRAM_PIN  12
#define ESP_ENABLE_PIN  13

void setup() {

  Serial1.begin(57600);        // Initialise serial 1 (WiFi Module)

  pinMode(ESP_ENABLE_PIN, OUTPUT);
  pinMode(ESP_PROGRAM_PIN, OUTPUT);

  // Set ESP module in RUN mode on reset 
  digitalWrite(ESP_PROGRAM_PIN, HIGH);  
  digitalWrite(ESP_ENABLE_PIN, HIGH);

  delay(5000);                 // Let's the module start

  // Discharge old partial messages
  Serial1.println("");

  // Enable real-time response
  Serial1.println("$PING 200");

  // Send Panel (Single Green LED, 150% size on new line with text Blinking)
  Serial1.println("$P:*15/L1G:0:Blinking;");

}

void loop() {

  delay(500);                // Wait 0.5 s
  Serial1.println("#L11");    // Turn ON LED 1
  delay(500);                // Wait 0.5 s
  Serial1.println("#L10");    // Turn OFF LED 1

}