VLC permette di salvare (anche con compressione al volo) lo stream che deriva da una periferica di acquisizione..ovviamente piu' il flusso e' veloce e corposo maggiore e' la richiesta di processore.
Le operazioni da eseguire sono le seguenti
Da VLC selezionare il menu Media/Apri periferica di acquisizione, selezionare il dispositivo di input video e poi in basso accanto a Riproduci cliccare sulla freccia in basso e selezionare Converti (ALT+C)
si apre il menu sottostante in cui si puo' indicare il file da salvare ed il tipo di codifica richiesta
importante per salvare e contemporaneamente visualizzare lo stream e' flaggare Mostra Risultato
con le impostazioni sopra riportate lo stream di una webcam 640x480 del portatile genera un flusso di circa 5Mb per minuto di ripresa quindi decisamente accettabile come occupazione di spazion disco
sabato 30 giugno 2012
giovedì 21 giugno 2012
Creazione di amplificatore reale con LM358
Nel caso reale di costruzione di un amplificatore e' stato utilizzato l'operazionale LM358 per operare una amplificazione di guadagno pari a 2 in modalita' invertente
per questo motivo le due resistenze sull'operazionale sono uguali a pari a 1 KOhm
Il cavo verde indica il segnale da amplificare (sul Pin 3)
Il cavo rosso indica l'uscita del segnale amplificato (sul Pin 1)
Il cavo nero indica la terra (sul Pin 4)
Le resistenza sul circuito di alimentazione dell'integrato sono entrambi da 10 KOhm
per questo motivo le due resistenze sull'operazionale sono uguali a pari a 1 KOhm
Il cavo verde indica il segnale da amplificare (sul Pin 3)
Il cavo rosso indica l'uscita del segnale amplificato (sul Pin 1)
Il cavo nero indica la terra (sul Pin 4)
Le resistenza sul circuito di alimentazione dell'integrato sono entrambi da 10 KOhm
Il Pin 1 e' in alto a sinistra (una resistena da 10 KOhm e' parzialmente coperta dal filo verde) |
L'integrato a sinistra non e' impiegato |
Visione complessiva |
Clone di Arduino Nano 3.0
Un po' perche' mi serve, un po' perche' costa poco ed e' molto piccola, mi sono comprata su Dealer Extreme un clone di Arduino Nano 3.0 (circa 10 Euro)
E' molto difficile da inserire sulla breadboard a causa del numero di piedini..bisogna fare attenzione ed avere mano ferma
E' molto difficile da inserire sulla breadboard a causa del numero di piedini..bisogna fare attenzione ed avere mano ferma
Dall'alto |
Dal basso |
Montata sulla breadboard |
martedì 19 giugno 2012
Diodo
Il diodo e' un componente semiconduttore che permette il passaggio di corrente quando l'anodo e' piu' positivo del catodo (forward biased)
Nel corso di inversione della polarita' del diodo (reverse biased) c'e' un modesto passaggio di corrente (Corrente inversa Ir) che e' dell'ordine di qualche nanoampere. In caso di corrente inversa troppo alta si puo' avere la rottura del componente (PRV o PIV)
Simbologia sul componente - La striscia indica il catodo |
Simbologia sui circuiti |
Nel corso di inversione della polarita' del diodo (reverse biased) c'e' un modesto passaggio di corrente (Corrente inversa Ir) che e' dell'ordine di qualche nanoampere. In caso di corrente inversa troppo alta si puo' avere la rottura del componente (PRV o PIV)
Amplificatore con LM358
Per sviluppare un amplificatore di segnale da accoppiare ad un sensore e' stato impiegato l'integrato LM358 che consiste in due separati operazionali comandati da una sola sorgente (nell'esempio ne verra' usato solo uno)
per creare un amplificatore deve essere realizzata una configurazione da amplificatore non invertente che e' determinato dalla grandezza delle resistenze R1 ed R2
Il fattore di amplificazione e' dato dal parametro Vi=1+(R2/R1)
La massima tensione di alimentazione Vcc e' +- 16V
Nella realta' devono essere collegati sulla breadboard
1) la resistenza R2 deve essere collegata al Pin 1 e Pin 2
2) la resistenza R1 deve essere collegata al Pin 2 e Pin 4
3) l'alimentazione deve essere collegata con il + al Pin 8 ed il - al Pin 4
4) il segnale in ingresso (da amplificare) deve essere inserito ai Pin 2 (-) e Pin 3 (+)
5) il segnale in uscita (amplificato) deve essere preso ai pin 4 (-) e Pin 1 (+)
Nel caso reale sono stati impiegati un valore di R1 = 1KOhm ed un valore di R2= 100KOhm per ottenere un fattore di amplificazione di circa 100, piu' precisamente 1+(R2/R1) (per avere una migliore scalabilita' si puo' mettere una resistenza variabile su R2). L'alimentazione e' fornita da una pila a 9 V
In configurazione invertente si presenta come segue
Il guadagno di tensione e' dato dal rapporto tra R2/R1
Il valore massimo di tensione in uscita dall'amplificatore e' dato dalla tensione di Vcc (9V nel caso reale) meno 1.5 V
PIN dell'Integrato LM358 con indicatore a punto |
Pin dell'integrato LM358 con indicatore non puntuale |
Amplificatore Non Invertente (da Wikipedia) |
Il fattore di amplificazione e' dato dal parametro Vi=1+(R2/R1)
La massima tensione di alimentazione Vcc e' +- 16V
Nella realta' devono essere collegati sulla breadboard
1) la resistenza R2 deve essere collegata al Pin 1 e Pin 2
2) la resistenza R1 deve essere collegata al Pin 2 e Pin 4
3) l'alimentazione deve essere collegata con il + al Pin 8 ed il - al Pin 4
4) il segnale in ingresso (da amplificare) deve essere inserito ai Pin 2 (-) e Pin 3 (+)
5) il segnale in uscita (amplificato) deve essere preso ai pin 4 (-) e Pin 1 (+)
Nel caso reale sono stati impiegati un valore di R1 = 1KOhm ed un valore di R2= 100KOhm per ottenere un fattore di amplificazione di circa 100, piu' precisamente 1+(R2/R1) (per avere una migliore scalabilita' si puo' mettere una resistenza variabile su R2). L'alimentazione e' fornita da una pila a 9 V
In configurazione invertente si presenta come segue
Amplificatore Invertente (da Wikipedia) |
Il valore massimo di tensione in uscita dall'amplificatore e' dato dalla tensione di Vcc (9V nel caso reale) meno 1.5 V
giovedì 14 giugno 2012
Java su Ubuntu 12.04 (Precise Pangoline)
Su Ubuntu 12.04 non e' possibile installare Java nella versione originale di Oracle direttamente da apt
Per questo si deve scaricare il pacchetto JDK direttamente da Oracle per la versione Linux (.tgz)
Successsivamente allo scompattamento dei file in una directory
sudo mkdir -p /usr/lib/jvm/jdk1.7.0
sudo mv jdk1.7.0_03/* /usr/lib/jvm/jdk1.7.0/
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 1
infine, dato che vi possono essere differenti installazione di Jdk (vedi OpenJDK) si deve scegliere quale attivare mediante il comando
sudo update-alternatives --config java
Per questo si deve scaricare il pacchetto JDK direttamente da Oracle per la versione Linux (.tgz)
Successsivamente allo scompattamento dei file in una directory
sudo mkdir -p /usr/lib/jvm/jdk1.7.0
sudo mv jdk1.7.0_03/* /usr/lib/jvm/jdk1.7.0/
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 1
infine, dato che vi possono essere differenti installazione di Jdk (vedi OpenJDK) si deve scegliere quale attivare mediante il comando
sudo update-alternatives --config java
mercoledì 13 giugno 2012
Voltaggio variabile da Arduino
Sulla scheda Arduino non e' disponibile la porta analogica in modalita' output. Per generare quindi delle tensioni intermedie tra 0 e 5 V vengono impiegate le porte digitali in modalita PWM per simulare una tensione intermedia tra il valore off (0 V) e on (5 V) tipici degli stati digitali
In pratica la porta digitale funziona ad impulsi oscillando tra 0 e 5 V in modo da simulare che mediante l'uscita sia un valore intermedio. La velocita' di variazione, che e' circa 480 Hz, rende irriconoscibile allo strumento che si tratta di impulsi
Al contrario della lettura della porta digitale, in caso di scrittura si hanno solo 255 livelli per cui gli incrementi minimi di corrente sono 5V/255 circa 0.02 V
Il programma e' estremamente semplice
---------------------------------------
void setup()
{
pinMode(9,OUTPUT);
}
void loop()
{
analogWrite(9,127);
}
---------------------------------------
variando il secondo parametro di analogWrite (in questo caso il 127) si puo' variare la tensione in uscita
Nel caso si voglia una approssimazione ancora migliore di una corrente in uscita continua e non pulsata si puo' aggiungere un filtro passa basso con una resistenza da almeno 4.7 KOhm ed un capacitore da almeno 2 uF
In pratica la porta digitale funziona ad impulsi oscillando tra 0 e 5 V in modo da simulare che mediante l'uscita sia un valore intermedio. La velocita' di variazione, che e' circa 480 Hz, rende irriconoscibile allo strumento che si tratta di impulsi
Al contrario della lettura della porta digitale, in caso di scrittura si hanno solo 255 livelli per cui gli incrementi minimi di corrente sono 5V/255 circa 0.02 V
Il programma e' estremamente semplice
---------------------------------------
void setup()
{
pinMode(9,OUTPUT);
}
void loop()
{
analogWrite(9,127);
}
---------------------------------------
variando il secondo parametro di analogWrite (in questo caso il 127) si puo' variare la tensione in uscita
Valore Output = 50 |
Valore Output =100 |
Valore Output =150 |
Valore Output =200 |
Valore Output =250 |
lunedì 11 giugno 2012
Sensore di alta pressione
Per il test di sensore di alta pressione 'e stato provato il modello Gefran TP867 2D che ha un range di misura 0-20 bar ed una uscita di 3 mv/V
Il sensore ha 6 connettori (2 alimentazione, 2 segnale, 2 calibrazione) ma nell'esemplare di test erano collegati solo alimentazione e segnale con colori differenti da quelli riportati in scheda tecnica
La pedinatura e'
A : segnale + (colore cavo marrone)
B : segnale - (colore cavo nero)
C : alimentazione + (colore cavo giallo)
D : alimentazione - (colore cavo blu)
Sull'alimentazione e' stata messa una batteria da 9V
alla pressione atmosferica il sensore segnala 2 mV; soffiando con la bocca all'interno dell'imboccatura il segnale sale a 4-5 mV
Non e' presente nessun circuito di amplificazione per cui dovra' essere costruito esternamente
Il sensore ha 6 connettori (2 alimentazione, 2 segnale, 2 calibrazione) ma nell'esemplare di test erano collegati solo alimentazione e segnale con colori differenti da quelli riportati in scheda tecnica
La pedinatura e'
A : segnale + (colore cavo marrone)
B : segnale - (colore cavo nero)
C : alimentazione + (colore cavo giallo)
D : alimentazione - (colore cavo blu)
Sull'alimentazione e' stata messa una batteria da 9V
alla pressione atmosferica il sensore segnala 2 mV; soffiando con la bocca all'interno dell'imboccatura il segnale sale a 4-5 mV
Non e' presente nessun circuito di amplificazione per cui dovra' essere costruito esternamente
Visualizzare immagini in Python/Pygame
Un metodo semplice per visualizzare immagini in Python/Pygame
-----------------------------------------
import pygame
pygame.init()
size = [428,375]
screen = pygame.display.set_mode(size);
img = pygame.image.load("concordia.jpg").convert();
screen.blit(img, [0,0])
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
-----------------------------------------
-----------------------------------------
import pygame
pygame.init()
size = [428,375]
screen = pygame.display.set_mode(size);
img = pygame.image.load("concordia.jpg").convert();
screen.blit(img, [0,0])
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
-----------------------------------------
venerdì 8 giugno 2012
Stream video via Webcam su Ubuntu
per installare mjpg_streamer su Ubuntu/Debian non e' proprio una passeggiata perche' il pacchetto scaricabile dal sito non si installa
digitando
dpkg -i mjpg-streamer_r94-1_i386.deb
si ha un messaggio di errore che corrisponde a "errore nella stringa Version "r94-1"
dpkg-deb -x mjpg-streamer.deb tmpdir
dpkg-deb --control mjpg-streamer.deb tmpdir/DEBIAN
si deve poi editare il file control che si trova in tmpdir/DEBIAN
nano tmpdir/DEBIAN/control
cambiando la stringa r94-1 in 94.1
a questo punto si puo' ricostruire il pacchetto deb con il comando
dpkg -b tmpdir mjpeg-streamer_my.deb
che e si puo' installare con il comando
dpkg -i mjpeg-streamer_my.deb
(istruzioni riprese da questo sito)
per attivare lo streaming da linea di comando si puo' digitare
mjpg_streamer -i "input_uvc.so -d /dev/video0 -y -r 640x480" -o "output_http.so -w ./www -p 8082"
dove
video0 e' il device video da usare
-r 640x480 e' la risoluzione
-p 8082 e' la porta di ascolto
-f 10 e' il numero di frame
con queste impostazioni si hanno 5 frame al secondo
per visualizzare lo stream si deve digitare l'indirizzo
http://localhost:8082/?action=stream
sia dentro una finestra di un browser (meglio Firefox) si usando VCL (File/Apri Flusso di rete/Rete)...e' molto piu' stabile la visualizzazione su VLC
Sul calcolatore su cui sono state effettuate le prove c'e' un ritardo di circa 1.5 secondi da quando avviene un evento a quando viene visualizzato
Un esempio di streaming contempoeraneamente su Firefox (al centro) e VLC (a destra) lanciato dalla finestra di shell (a sinistra)
Il ritardo e' piuttosto evidente ed anche il fuori sincrono tra Firefox e VLC ma si deve considerare che server e client girano sulla stessa macchina (peraltro di prestazioni non eccezionali)
digitando
dpkg -i mjpg-streamer_r94-1_i386.deb
si ha un messaggio di errore che corrisponde a "errore nella stringa Version "r94-1"
dpkg-deb -x mjpg-streamer.deb tmpdir
dpkg-deb --control mjpg-streamer.deb tmpdir/DEBIAN
si deve poi editare il file control che si trova in tmpdir/DEBIAN
nano tmpdir/DEBIAN/control
cambiando la stringa r94-1 in 94.1
a questo punto si puo' ricostruire il pacchetto deb con il comando
dpkg -b tmpdir mjpeg-streamer_my.deb
che e si puo' installare con il comando
dpkg -i mjpeg-streamer_my.deb
(istruzioni riprese da questo sito)
per attivare lo streaming da linea di comando si puo' digitare
mjpg_streamer -i "input_uvc.so -d /dev/video0 -y -r 640x480" -o "output_http.so -w ./www -p 8082"
dove
video0 e' il device video da usare
-r 640x480 e' la risoluzione
-p 8082 e' la porta di ascolto
-f 10 e' il numero di frame
con queste impostazioni si hanno 5 frame al secondo
per visualizzare lo stream si deve digitare l'indirizzo
http://localhost:8082/?action=stream
sia dentro una finestra di un browser (meglio Firefox) si usando VCL (File/Apri Flusso di rete/Rete)...e' molto piu' stabile la visualizzazione su VLC
Sul calcolatore su cui sono state effettuate le prove c'e' un ritardo di circa 1.5 secondi da quando avviene un evento a quando viene visualizzato
Il ritardo e' piuttosto evidente ed anche il fuori sincrono tra Firefox e VLC ma si deve considerare che server e client girano sulla stessa macchina (peraltro di prestazioni non eccezionali)
lunedì 4 giugno 2012
Transistor come interruttore su Arduino
L'uso di un transistor come interruttore permette di dividere il circuiti in due settori non in connessione elettrica tra di loro
La base e' il punto dove si applica la tensione; nel caso in cui si sia tensione tra base (+) ed emettitore (terra) la resistenza tra emettitore e collettore scende quasi a zero aprendo il circuito.
Sulla base e' sempre necessario inserire una resistenza da almeno 1 KOhm
Nei grafici l'emettitore e' indicato con una freccia; nei transistor reali la posizione dei pin puo' essere variabile e si deve consultare la scheda tecnica
Vce - è la massima tensione che può essere applicata fra il collettore e l'emettitore
Vbe - è la massima tensione che può essere applicata fra la base e l'emettitore
Ic - è la massima corrente che può attraversare il circuito di collettore
Ib - è la massima corrente che può attraversare il circuito di base
hfe - e' il guadagno di corrente in uscita
Esistono diverse configurazioni:
1) A base comune (terminale di base a terra)
2) Ad emettitore comune (ovvero Base ed Emittore con in continuita' elettrica. Uso Amplificatore)
3) A Collettore comune (Inseguitore di Emettitore)
------------------------------------------------------------------------------------------------
Il mio transitor di test e' BC547B
Si tratta di un sensore NPNda 625 mW con
Vce = 45 V
Vcb = 50 V
Vbe = 6 V
Ic = 100 mA
hfe = 290 (2mA), 180 (100mA) a 5Volts
Per il calcolo della resistenza R1 da mettere sulla base si deve prevedere quale e' la corrente che si vuole che scorra tra collettore ed emettitore
Per esempio se si vuole una corrente di 0.3mA sull'uscita del transistor si deve calcolare
Ib (corrente sulla base) = Ic/290 Ic dove Ic e' imposto a 0.3mA
n pratica si divide la corrente che vogliamo avere per il fattore di amplificazione in modo da calcolare quale deve essere la corrente sulla base
Risulta che Ib = 0.1 mA
Usando poi la legge di Ohm (R=5/0.0001) si ha che la resistenza da inserire sulla base e' 50KOhm
La base e' il punto dove si applica la tensione; nel caso in cui si sia tensione tra base (+) ed emettitore (terra) la resistenza tra emettitore e collettore scende quasi a zero aprendo il circuito.
Sulla base e' sempre necessario inserire una resistenza da almeno 1 KOhm
Fonte Wikipedia |
Nei grafici l'emettitore e' indicato con una freccia; nei transistor reali la posizione dei pin puo' essere variabile e si deve consultare la scheda tecnica
Vce - è la massima tensione che può essere applicata fra il collettore e l'emettitore
Vbe - è la massima tensione che può essere applicata fra la base e l'emettitore
Ic - è la massima corrente che può attraversare il circuito di collettore
Ib - è la massima corrente che può attraversare il circuito di base
hfe - e' il guadagno di corrente in uscita
Esistono diverse configurazioni:
1) A base comune (terminale di base a terra)
2) Ad emettitore comune (ovvero Base ed Emittore con in continuita' elettrica. Uso Amplificatore)
3) A Collettore comune (Inseguitore di Emettitore)
------------------------------------------------------------------------------------------------
Il mio transitor di test e' BC547B
Si tratta di un sensore NPNda 625 mW con
Vce = 45 V
Vcb = 50 V
Vbe = 6 V
Ic = 100 mA
hfe = 290 (2mA), 180 (100mA) a 5Volts
Disposizione della pedinatura del componente
|
Per esempio se si vuole una corrente di 0.3mA sull'uscita del transistor si deve calcolare
Ib (corrente sulla base) = Ic/290 Ic dove Ic e' imposto a 0.3mA
n pratica si divide la corrente che vogliamo avere per il fattore di amplificazione in modo da calcolare quale deve essere la corrente sulla base
Risulta che Ib = 0.1 mA
Usando poi la legge di Ohm (R=5/0.0001) si ha che la resistenza da inserire sulla base e' 50KOhm
venerdì 1 giugno 2012
Input da pulsante su Arduino
Per poter gestire l'input di un utente mediante la pressione di un pulsante si puo' collegare un circuito come nella figura seguente
La resistenza (da almeno 1KOhm) serve a non mandare in corto il circuito quando viene premuto il tasto.
La pressione del tasto viene gestita dalla lettura dello stato dell'input digitale (in questo caso il 12)
Lo sketch per Arduino e' il seguente
Il programma accende e spenge il led integrato sulla scheda che corrisponde al PIN13 digitale a seconda dello stato del PIN 12 comandato dal pulsante
--------------------------------------------------------------------------------------
const int buttonPin = 12; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}
sdfsf
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...