Ultimamente uso spesso Mac come portatile anche se di fatto sono quasi sempre collegato in shell con qualche macchina Linux
Una delle cose piu' seccanti su Mac e' la mancanza del tasto INS ed usando Midnight Commander la cosa diventa pesante.
Frugando su Internet ho trovato che questo tasto su Os X e' sostituito dalla combinazione CTRL+T
(per quanto riguarda i tasti funzione F1..F10 si ottengono premendo la combinazione Fn+F1, per l'impostazione di default devono essere modificati i tasti F9 ed F10 che sono destinati ad Expose')
mercoledì 14 gennaio 2015
ACME Terra
A seguito del precedente post, maggiori dettagli sulle impressioni di uso sulla scheda Terra
Per punti
1) la scheda non e' alimentabile da USB (almeno io non ci sono riuscito)
2) La comunicazione avviene mediante il modulo DPI (tipo FTDI di Arduino) che crea una porta seriale virtuale con cui si puo' aprire un Terminale Seriale ed entrare in shell
3) La scheda viene venduta con una microSD con sopra montata una versione di EMDebian (Emdebbed Debian). Al momento attuale, o meglio dal lulgio 2014, questa distribuzione e' morta e sono spariti anche i repository. EMDebian consigliano di usare una Debian pura e ACME riporta le istruzioni per crearsi l'immagine Debian per la SDCard (al link sono disponibili le immagini Debian aggiornate al Novembre 2014)
4) La password di root della distribuzione giunta con la scheda SD e' "ariag25". Nel sito in alcune pagine risulta la password si "acmesystems" (sono un po' impazzito prima di trovare il link giusto)
4) Curiosamente dopo aver settato via terminale seriale l'ip ad eth0, ho attaccato il cavo cross per entrare in SSH ma le luci della scheda non si accendono. Se
5) il convertitore analogico digitale e' a 10 bit come su Arduino (o meglio come sulle Arduino base)
6) la scheda Terra, al confronto della Fox, necessita' di ulteriore hardware per accedere alle porte analogiche. Con un costo aggiuntivo di una ventina di euro si acquista l'adattatore Daisy Chain; nella Fox invece i contatti sono esposti anche se vanno saldati (non ci sono gli header come in Arduino in nessuna delle due schede)
7) Un kit Terra completo costa circa 200 euro a cui sono da aggiungere le spese per le espansioni. Sicuramente l'elettronica e' di piu' alta qualita' rispetto ad Arduino ma non e' esattamente una soluzione economica per fare prototipizzazione
Per punti
1) la scheda non e' alimentabile da USB (almeno io non ci sono riuscito)
2) La comunicazione avviene mediante il modulo DPI (tipo FTDI di Arduino) che crea una porta seriale virtuale con cui si puo' aprire un Terminale Seriale ed entrare in shell
3) La scheda viene venduta con una microSD con sopra montata una versione di EMDebian (Emdebbed Debian). Al momento attuale, o meglio dal lulgio 2014, questa distribuzione e' morta e sono spariti anche i repository. EMDebian consigliano di usare una Debian pura e ACME riporta le istruzioni per crearsi l'immagine Debian per la SDCard (al link sono disponibili le immagini Debian aggiornate al Novembre 2014)
4) La password di root della distribuzione giunta con la scheda SD e' "ariag25". Nel sito in alcune pagine risulta la password si "acmesystems" (sono un po' impazzito prima di trovare il link giusto)
4) Curiosamente dopo aver settato via terminale seriale l'ip ad eth0, ho attaccato il cavo cross per entrare in SSH ma le luci della scheda non si accendono. Se
5) il convertitore analogico digitale e' a 10 bit come su Arduino (o meglio come sulle Arduino base)
6) la scheda Terra, al confronto della Fox, necessita' di ulteriore hardware per accedere alle porte analogiche. Con un costo aggiuntivo di una ventina di euro si acquista l'adattatore Daisy Chain; nella Fox invece i contatti sono esposti anche se vanno saldati (non ci sono gli header come in Arduino in nessuna delle due schede)
7) Un kit Terra completo costa circa 200 euro a cui sono da aggiungere le spese per le espansioni. Sicuramente l'elettronica e' di piu' alta qualita' rispetto ad Arduino ma non e' esattamente una soluzione economica per fare prototipizzazione
NTP Server con GPS via Android
In questo post viene spiegato come poter utilizzare un telefono Androided un calcolatore con Linux per creare un semplice NTP server
Questa funzione e' utile nel caso che si abbiano diversi sensori che necessariamente devono lavorare ben sincronizzati ed e' stata necessaria dopo la recente vulnerabilita' di NTP quando l'amministratore di una grande rete a cui mi appoggio ha deciso di tagliare tutto il traffico NTP (senza peraltro avvisare gli utenti)
Era richiesto che il PC ed il telefono fossero collegati via cavo USB (e non via Bluetooth) in modo da non avere perdita di connessione ed in modo anche di alimentare in modo semplice il telefono
a questo punto da shell si forwarda tutto il traffico sul protocollo ADB verso la porta 4352 TCP del calcolatore
adb forward tcp:4352 tcp:4352
per verificare la connessione si puo' usare telnet
telnet localhost 4352
se tutto e' andato a buon fine si dovrebbero passare i messaggi NMEA (anche se non si e' ottenuto il fix del GPS si vedono comunque le stringhe)
a questo punto si puo' installare il demone GPSD
si lancia quindi il demone che ascolta la porta 4352 dopo prima era stato dirottato il trafffico GPS del telefono
gpsd tcp://localhost:4352
per verificare se funziona il demone si puo' usare a linea di comando
cgps -d
mentre in X
xgps
per fare in modo da usare il dato del tempo per il server del tempo si deve installare il demone di NTP
apt-get install ntp
e si modifica il file di configurazione in /etc/ntp.conf
server 127.127.28.0 minpoll 4
fudge 127.127.28.0 time1 0.183 refid NMEA
server 127.127.28.1 minpoll 4 prefer
fudge 127.127.28.1 refid PPS
ntpq -p
martedì 13 gennaio 2015
lunedì 12 gennaio 2015
Arduino YUN e Webcam con Fswebcam
Questo post in realta' non e' esclusivo di Yun perche' riguarda solo la parte Linux della Yun ed e' quindi applicabile anche a PC, Raspberry o sistemi simili...in ogni caso mostra come trasformare una webcam in una Ip camera con Arduino YUN
Per l'esempio ho usato una comune (e vecchiottta) webcam Logitech C310 che e' stata collegata alla porta USB della YUN. Il sistema ha riconosciuto il device senza problemi
a questo punto si devono aggiungere i moduli per FSwebcam, un programma che permette di prendere fotografie in automatico dalla webcam
si procede quindi con
opkg update
opkg install kmod-video-uvc
opkg install fswebcam
in Linino le librerie GD sono compilate senza il supporto ai font TrueType quindi non si possono aggiungere banner sopra l'immagine
Il sistema migliore e' di crearsi un file di configurazione che poi' sara lanciato come segue
fswebcam -c fswebcam.conf
questo il mio file di configurazione
In pratica vengono eliminati i primi 5 frame (la webcam non entra in funzione subito). viene effettuato uno scatto ogni 4 secondi con una risoluzione di 1280x720 alla qualita' 95% di jpg
i dati vengono salvati sulla schedina SD (come copia di backup) e viene salvata una immagine, sempre con lo stesso nome, sulla cartella del webserver dove ho messo una semplice pagina html che si aggiorna ogni n secondi
----------------------------------------------------
device /dev/video0
input 0
loop 4
skip 5
#background
resolution 1280x720
jpeg 95
#top-banner
#timestamp "%d-%m-%Y %H:%M:%S"
save "/www/camera/immagine.jpg"
save "/mnt/sda1/%Y%m%d-%H%M%S.jpg"
Potenza di calcolo Arduino Yun vs ACME Terra vs MacBook
Un amico usa normalmente per acquisizione delle schede Terra ACME ed sostanzialmente mi ha lanciato una sfida se fosse piu' performante nel calcolo puro la sua Terra o la mia YUN
Il terreno di battaglia e' stato scelto con l'elaborazione dello script in Python per la creazione di un insieme di Mandelbrot
Lo script nel dettaglio e' il seguente
--------------------------------------------------
from PIL import Image
from PIL import ImageDraw
# drawing area
xa = -2.0
xb = 1.0
ya = -1.5
yb = 1.5
maxIt = 255 # max iterations allowed
# image size
imgx = 512
imgy = 512
image = Image.new("RGB", (imgx, imgy))
for y in range(imgy):
zy = y * (yb - ya) / (imgy - 1) + ya
for x in range(imgx):
zx = x * (xb - xa) / (imgx - 1) + xa
z = zx + zy * 1j
c = z
for i in range(maxIt):
if abs(z) > 2.0: break
z = z * z + c
image.putpixel((x, y), (i % 4 * 64, i % 8 * 32, i % 16 * 16))
image.save("mandel.bmp", "BMP")
--------------------------------------------------
Su Arduino Yun e' stato necessario installare il pacchetto python-imaging-library.
Su Terra si e' presentato un problema inatteso. I repository di EmDebian (Embedded Debian) non sono piu' disponibili per cui il programma e' stato fatto girare eliminando i riferimenti alle librerie grafiche (dando quindi un piccolo vantaggio a Terra)
Alla fine il risultato e' stato meno definitivo di quanto creduto
Terra ha impiegato 11 minuti e 35 secondi contro i 14 minuti e 52 secondi di Yun (per confronto un MacBook i5 impiega 6.1 secondi)....considerando che Arduino Yun costa circa 62 Euro in confronto ai 199 euro di Terra Kit la mia scelta e' piu' orientata verso la Yun (con circa 200 euro si iniziano a comprare dei portatili completi come i ChromeBook)
Il terreno di battaglia e' stato scelto con l'elaborazione dello script in Python per la creazione di un insieme di Mandelbrot
Lo script nel dettaglio e' il seguente
--------------------------------------------------
from PIL import Image
from PIL import ImageDraw
# drawing area
xa = -2.0
xb = 1.0
ya = -1.5
yb = 1.5
maxIt = 255 # max iterations allowed
# image size
imgx = 512
imgy = 512
image = Image.new("RGB", (imgx, imgy))
for y in range(imgy):
zy = y * (yb - ya) / (imgy - 1) + ya
for x in range(imgx):
zx = x * (xb - xa) / (imgx - 1) + xa
z = zx + zy * 1j
c = z
for i in range(maxIt):
if abs(z) > 2.0: break
z = z * z + c
image.putpixel((x, y), (i % 4 * 64, i % 8 * 32, i % 16 * 16))
image.save("mandel.bmp", "BMP")
--------------------------------------------------
Su Arduino Yun e' stato necessario installare il pacchetto python-imaging-library.
Su Terra si e' presentato un problema inatteso. I repository di EmDebian (Embedded Debian) non sono piu' disponibili per cui il programma e' stato fatto girare eliminando i riferimenti alle librerie grafiche (dando quindi un piccolo vantaggio a Terra)
Alla fine il risultato e' stato meno definitivo di quanto creduto
Terra ha impiegato 11 minuti e 35 secondi contro i 14 minuti e 52 secondi di Yun (per confronto un MacBook i5 impiega 6.1 secondi)....considerando che Arduino Yun costa circa 62 Euro in confronto ai 199 euro di Terra Kit la mia scelta e' piu' orientata verso la Yun (con circa 200 euro si iniziano a comprare dei portatili completi come i ChromeBook)
SismoArduino (142Hz)
Riprendendo il progetto di SismoArduino ho voluto anche qui provare a migliorare le prestazioni del passo di campionamenti
Le modifiche hanno riguardato sostanzialmente la riduzione dei tempi di ritardo tra le letture e l'uso di un pc piu' perfomante rispetto a quello usato in precedenza
Con queste modifiche il passo di campionamento e' salito ad 1 campione ogni 7 millisecondi in linea con quanto provato con SismoYUN (a questo punto questo puo' essere il limite della scheda senza entrare in modalita' free running)
----------------------------------------------------
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
//Arduino
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,2);
unsigned int localPort = 8888;
//Server
byte remoteIP[4] = {192,168,1,1};
int remotePort = 5005;
String dati;
char charBuf[1024];
EthernetUDP Udp;
void setup() {
Serial.begin(115200);
Ethernet.begin(mac,ip);
Udp.begin(localPort);
}
void loop() {
int x = analogRead(A5);
delay(2);
int y = analogRead(A4);
delay(2);
int z = analogRead(A3);
dati = String(x)+","+String(y)+","+String(z);
Serial.println(dati);
dati.toCharArray(charBuf, 1024);
Udp.beginPacket(remoteIP, remotePort);
Udp.write(charBuf);
Udp.endPacket();
delay(2);
}
----------------------------------------------------
Le modifiche hanno riguardato sostanzialmente la riduzione dei tempi di ritardo tra le letture e l'uso di un pc piu' perfomante rispetto a quello usato in precedenza
Con queste modifiche il passo di campionamento e' salito ad 1 campione ogni 7 millisecondi in linea con quanto provato con SismoYUN (a questo punto questo puo' essere il limite della scheda senza entrare in modalita' free running)
----------------------------------------------------
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
//Arduino
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,2);
unsigned int localPort = 8888;
//Server
byte remoteIP[4] = {192,168,1,1};
int remotePort = 5005;
String dati;
char charBuf[1024];
EthernetUDP Udp;
void setup() {
Serial.begin(115200);
Ethernet.begin(mac,ip);
Udp.begin(localPort);
}
void loop() {
int x = analogRead(A5);
delay(2);
int y = analogRead(A4);
delay(2);
int z = analogRead(A3);
dati = String(x)+","+String(y)+","+String(z);
Serial.println(dati);
dati.toCharArray(charBuf, 1024);
Udp.beginPacket(remoteIP, remotePort);
Udp.write(charBuf);
Udp.endPacket();
delay(2);
}
----------------------------------------------------
Iscriviti a:
Post (Atom)
Alpine Linux 2024 su IBM A31
Ho provato a far resuscitare un IBM A31 destinato alla discarica. La macchina ha processore P4, 256 Mb di RAM, la batteria CMOS morta ed e...
-
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...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
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...