Asterisk: Hardware

Asterisk e’ il software Open Source utilizzato come Server Sip e in generale Voip.
Inizialmente puo’ sembrare criptico nella sua gestione ed organizzazione, ma una volta capito il suo criterio di struttura files di configurazione si ha la possibilita’ di gestire architetture di fonia anche piuttosto complesse.
Iniziamo a parlare dell’hardware . Essendo Asterisk un software necessita ovviamente di una macchina dove far girare l’applicazione, io ho provato svariate soluzioni da macchine Via a HyperV o VmWare, con file system su hard disk sata oppure su Sd o pendrive. Il risultato,comunque e’ sempre stato soddisfacente.
Per quanto riguarda invece la connessione alle linee esterne ho riscontrato i massimi risultati ,anche in termini di affidabilita’ e ridondanza al fail dei sistemi utilizzando un media gateway esterno, ho provato molti apparati ma i migliori in assoluto rimangono a mio avviso i Patton, hardware solido e altamente performante.
Nei prossimi Post cerchero’ di cominciare a descrivere una tipica architettura VoIP basata su asterisk a partire dalle connessioni Client Server.

Pinout RaspBerry

Pin uscita raspberry

Pin uscita raspberry

Nelle prossime settimane saro’ alla prese di un nuovo progetto che ho pensato di sviluppare con RaspBerry , obiettivo è lo sviluppo di una interfaccia che possa gestire l’Upload automatico dei dati provenienti da una PenDrive USB . Quindi l’utente dopo aver inserito la chiavetta nella “Blak Box” premendo un tasto invierà i dati a terra via Internet utilizzando un semplice protocollo FTP.

Visto che il tutto verrà montato su alcuni camion, ho deciso anche di interfacciare RaspBerry alla centralina del mezzo per mandare a terra anche dati statistici dell’unità.

Per Raspberry scrivero’ quindi una piccola applicazione probabilmente in “C” che sia in grado di gestire il flusso dati.

Arduino Vs Raspberry….

Dopo anni di sviluppo di applicazioni con Arduino di svariate applicazioni, dagli irrigatori, ai tracker pre aerei etc etc…mi sono interessato di RaspBerry.

Chiariamo subito le cose, Arduino è basato direttamente su un Processore e non ha bisogno di Sistemi Operativi che si infrappongono tra Software e Hardware. Il codice interagisce direttamente con il processore o l’Hardware in genere.

Raspberry invece è un Computer a tutti gli effetti, con un Sistema Operativo (Linux) e una memoria di Massa (SD), e con le capacità di calcolo paragonabili ad un Pentium 2.

Ecco svelato il problema, le due schede sono imparagonabili. Io le sto utilizzando in sistemi complessi , Arduino per l’interfacciamento ai sensori e attuatori, mentre Raspberry per la capacità di calcolo e per la trasmissione Ethernet dei dati.

ZEROSHELL & ZEROTRUTH

 

Ogni tanto aggiorno il mio Blog,

in questi giorni sto testando una piattaforma HotSpot OpenSource basata su ZeroShell con personalizzazione su ZeroTruth 
basati su Sistema Operativo Linux L’idea è quella di creare una rete di HotSpot che condividono lo stesso criterio di autentcazione Radius e Ldap come Data Base delle utenze.

Cercando in rete ho trovato questi due prodotti molto ben strutturati, sono disponibili i download delle ISO su Linux anche per chiavette USB.

Mi ha molto stupito l’ottima personalizzazione di Zerotruth, un prodotto open source completo per l’installazione di un Hot Spot.

 

Irrigazione Wireless

Il sistema automatico creato permette di comunicare con gli altri apparati tramite un sistema Wireless ed un modem USB per PC. Questo sistema permette di avere elettrovalvole a distanza anche di 1 KM comandabili da computer, dal telefonino o in autonomia dalla centralina di comando automatica.

I moduli utilizzati sono i professionali AUREL in grado di gestire la comunicazione dei sensori. Oltre alla comunicazione Wireless ho integrato anche un modem UMTS che è in grado di gestire la comunicazione vs. Internet e l’invio dei dati raccolti dalla centralina

Immagine 
Il sistema invia ad ogni azione email relative alle letture dei sensori di ambiente.

Giardino Automatico: Il software per il PC

Immagine

Inserisco una prima versione del Software che gestisce i dati in arrivo dai sensori e li analizza in due grafici . Il software permette in questa versione (v.0.0.1) di aprire e chiudere l’irrigatore del giardino su una elettrovalvola bistabile, di visualizzare i dati di luce, umidità e temperatura dell’aria.

Giardino Automatico, Domotica per serre e giardini

Ho da tempo un piccolo giardino , sperando di gestire meglio il verde tipico di casa mia (quasi nullo ahah) ho installato un sistema di irrigazione gestito da un programmatore secondo me stupido.
Molto stupido dire, prima di tutto perchè ogni anno si rompe irrimediabilmente, ho anche tentato di smontarlo per ricavarne qualche pezzo …ma non è in grado neanche di essere riutilizzato. Quindi mi sono deciso di costruire io un programmatore ma questa volta INTELLIGENTE!
Mettendo insieme qualche pezzo ed analizzando bene come lavora la mia elettrovalvola bistabile ho creato una prima versione del mio sistema intelligente per la gestione del giardino e di serre.
Ecco cosa fa la mia centralina:
1) ANALIZZA LO STATO DI UMIDITA’ DEL TERRENO
2) ANALIZZA LE VARIAZIONI DI TEMPERATURA DELL’ARIA
3) DECIDE IN AUTOMATICO E IN TOTALE AUTONOMIA QUANTO E QUANDO IRRIGARE
4) COLLEGANDOSI ALLA RETE E’ IN GRADO DI ELABORARE GRAFICI, MANDARE EMAIL ETC ETC
5) POSSO COMANDARE DAL TELEFONINO O DA UN QUALSIASI COMPUTER L’ACCENSIONE DELL’IRRIGATORE E LO SPEGNIMENTO

Il sistema è ottimo anche per l’ottimizzazione dell’uso dell’acqua in funzione dei dati reali dell’ambiente.
Praticamente il sistema è in grado di autoapprendere tramite alcuni protocolli complessi di intelligenza artificiale , gestendo consumi in funzione della natura del giardino.

a presto con video e altro

La voce di Arduino : RTTY

Bene, fin da bambino ho sempre sognato di sentir parlare un processore per mia mano; diciamo che RTTY è sicuramente il miglior modo per farlo “PARLARE”.

La maggior parte di progetti che si trovano on-line preveduno l’uso di radio Radiometrix UHF, le quali accettano su due pin di ingresso due tensioni diverse che prevedono la creazione interna dell’oscillatore per la modulazione del segnale sulle due frequenze di mark e space (shift).

Invece la mia libreria prevede di utilizzare 2 uscite digitali per ricreare le frequenze di mark e shift, collegando il tutto ad un piccolo altoparlante per PC riusciremo a sentire l’audio della comunicazione; Infatti le due frequenze di MARK e SPACE (1 e 0 seriale) sono per forza di cose nello spettro delle frequenze udibili: 2295 Hz e 2125 Hz. Questo tipo di protocollo veniva e viene utilizzato nelle comunicazioni digitali anche su frequenze radioamatoriali, e per la trasmissione a terra di dati telemetrici dei satelliti.

….sto per andare a lavorare….questa sera pubblichero’ il video e il codice del tnc RTTY per Arduino

ARDUINO e RTTY

Il cuore della radiosonda è costituito da un sistema di radiocomunicazione ridondante;
ogni livello di comunicazioneè in grado di inviare dati a diverse velocità e distanze.

Livello 1 : Comunicazione UHF FSK (bidirezionale)
Livello 2: Comunicazione VHF RTTY (monodirezionale)
Livello 3: GSM (monodirezionale)

In questi giorni ho sviluppato una parte importante del livevllo 2, che permette ad Arduino
di utilizzare la modulazione RTTY, tecnica molto datata ma estremamente efficace, per trasmettere
dati a distanza. La banda di frequenza che ho scelto sarà quella delle VHF, che, per carattersitica
fondamentale, permette di non subire riflessione o rifrazioni d’onda elettromagnetica a livello ionosferico.

Tale tecnica viene oggi ancora utilizzata da molte radiosonode per semplicità e efficacia di comunicazione.
Ovviamente l’efficacia di ricezione cede il passo alla velocità di trasmissione, infatti parliamo
per la mia radiosonda, di velocità testate di 50 Baud (sufficienti per la trasmissione dei valori GPS e dei
rilevamenti telemetrici).

Arduino con RTTY non fa altro che trasformare i livelli logici di più qualche preambolo in 2 frequenze prestabilite,
tale frequenza è udibile attraverso un cicalino a membrana, oppure trasmisso ,attraverso un semplice circuito
di adattamento, attraverso la linea MIC di un radiotrasmettirore portatile VHF.

Nei prossimi giorni raccontero’ dei test di link Stazione Base — Radiosonda.

Arduido e GPS

Il pallone sonda gestito da Arduino avrà la caratteristica principale di rilevare la propria posizione utilizzando un ricevitore GPS.
Tra i vari sistemi che ci sono sul mercato si possono individuare diverse soluzioni; ormai ricevitori GPS si possono trovare in mille soluzioni e in qualsiasi apparato. Per il mio progetto ho scelto un ricevitore HOLUX M1000, un ricevitore che ,tramite Bluetooth, è in grado di inviare dati in formato NMEA (protocollo che analizzero’ più avanti)
L’Holux M-1000 integra un chipset MEDIATEK al posto dei classici SIRF di 3° generazione, e con la batteria in dotazione dura circa 11 ore in funzionamento pieno.

Scopro che questo apparato utilizza sui suoi pin USB una comunicazione Seriale su livelli TTL noto come RS485 secondo questa piedinatura:

Pinout Holux1000

Pinout Holux1000

L’ArduinoMega ha 3 seriali TTL RX e TX, dunque inserendo il TX del GPS nel RX di Arduino è possibile leggere i dati dal GPS. Dunque scrivendo un piccolo software che mi legga i dati in ingresso TTL di Arduino e li invii al Serial0 di Arduino (seriale del PC) e il gioco è fatto….leggo i dati GPS NMEA sul terminal del PC.

Arduino e Holux1000 GPS

Arduino e Holux1000 GPS

Arduino e Aurel UHF

Come dicevo il progetto è iniziato nel settembre 2011, e tra alti e bassi sono arrivato ad avere la scheda ArduinoMega collegato al GPS, ensore di temperatura, e una fotoresistenza che inviano i dati in FSK UHF al PC che colleziona i dati e li fa vedere in tempo reale.

Dai prossimi posts comincero’ a descrivere tutto nei minimi passi , considerero’ questo blog comee un diario aggiornato dell’avventura.

Progetto tra le nuvole


Sono ormai alcuni mesi che sto lavorando ad un progetto che definisco un po’ KAMIKAZE.
Ho sempre cercato di capire dove i palloni gonfiati ad elio dei bambini potessero finire la loro corsa, e mi sono imbattuto in un sito di un ragazzo americano che ha attaccato un iphone ad un palloncino e l’ha lasciato andare…..dopo alcuni giorni ha recuperato il tutto con immagini, track del volo etc etc…

Beh, ho deciso anche io di farlo, ma con strumenti meno costosi e riutilizzabili senza dover comprare un Iphone (io ho ancora il la versione 3g…e non ho intenzione comprarne ancora ahahah).

Allora, della serie diamo un nome alle cose: Il progetto in fase di sviluppo si chiamerà ATMOLab, mentre in fase di lancio sarà HAL 01-40k.

Obiettivo dell’impresa sarà quello di lanciare un pallone caricato ad elio ed equipaggiato con il suo Payload (elettronica e sensori di rilevazione e posizionamento ed una mcchina fotografica), tracciare il percorso della sonda, e poi recuperare il contenuto a KM di distanza….

SETTEMPRE 2011: Il progetto ha inizio….incorciamo le dita.

Codice per SUNROVER su Arduino

inserisco il codice che ho utilizzaro per dare vita al Rover.
___________________________________________________

// Applicazione per Rover SunFollower
// Il robot segue le fonti di luce predominanti
// evita gli ostacoli se entra in collisione con un ostacolo
// rilevato dai sensori.
//Ver. 1.0 7/3/2010

#include
#define SX 0 //pin 0 per sensore di SX
#define DX 1 //pin 1 per sensore di DX
#define LSX 9 //pin 9 per sensore di luce di Sinistra
#define LDX 8 //pin 8 per sensore di luce di Destra

Servo myservoDX; // Creo oggetto per ruota di Destra
Servo myservoSX; //Creo oggetto per ruota di Sinistra

long val_SX=0;
long val_DX=0;

long OTT_DX=0; //variabile per registrare la luce di Destra
long OTT_SX=0; // Variabile per registrare la luce di Sinistra
long delta=0; //variabile usata per salvare la differenza di luce tra DX e SX
void setup() {
Serial.begin(9600);
myservoDX.attach(9); // servo ruote al pin 9 PWM ruota di Destra
myservoSX.attach(8); // servo ruote al pin 8 PWM ruota di Sinistra

}

void loop () {
val_SX=analogRead(SX); //leggo i valori degli interruttori di sinistra
val_DX=analogRead(DX); //leggo i valori degli interruttori di destra
OTT_DX=analogRead(LDX); //leggo i valori di luce di Destra
OTT_SX=analogRead(LSX)-5; //leggo i valori di luce di Sinistra
delta = OTT_SX-OTT_DX; // eseguo la sottrazione tra i vaolri rilevati
// ottenendo valori positivi o negativi o ugali a 0

if (val_SX <= 20)
{
myservoSX.write(91); //Rover si ferma per blocco a sinistra
myservoDX.write(92);
delay(1000);
myservoDX.write(95); // va in dietro ruotando sulla ruota Sinistra
myservoSX.write(91);
delay (2000);
}
else if (val_DX 0 ) //rover riceve luce da Sinistra quindi gira a Sinistra
{
myservoSX.write(92); //rover ruota a Sinistra
myservoDX.write(88);
delay (500);
}
else if (delta < 0 ) //rover riceve luce da Destra quindi gira a Destra
{
myservoSX.write(95); //rover ruota a Destra
myservoDX.write(91);
delay (500);
}

else
{
myservoDX.write(88); // va avanti
myservoSX.write(95);
delay(500);
}

Serial.println(delta); //Debug e print del valore differenza tra la luce
myservoDX.write(91); //
myservoSX.write(92); // Rover si ferma
delay(10);
}

SUNROVER ver. 1.0

La prima versione del SunRover è operativa !!!

L’obiettivo di Sun Rover è quello di seguire le fonti di luce nell’ambiente, e segue continuamente le variazioni e le quantità maggiori di luce. Tramite due fotoresistenze il SunRover in questo momento è in grado di percepire la luce a destra e sinistra, ma non è in grado di capire se la luce predominante è alle sue spalle.

La  prossima versione inseriro’ una  fotoresistenza nella parte inferiore del SunRover, e tramite un alogoritmo che simula delle decisioni di Intelligenza Artificiale faremo ruotare il Rover in caso di sole alle spalle.

Nel prossimo Post sul sito inserisco il codice ospitato dal Rover in versione 1.0

Ovviamente si tratta di un prototipo per poter testare le capacità di Arduino, sicuramente questo Robot porterà a nuove sue evoluzioni di progetto.

Ora inserisco le foto dell’Hardware, poi anche lo schema circuitale.

RoboRover con Arduino

Questo è il video (di qualità pessima prometto di caricarne uno più interessante a breve) dove si vede la prima versione di RoboRover . Due baffi alle estremità del Robot permettono di capire se c’e’ un contatto con qualche ostracolo e capendo se si tratta di una collisione a destra o sinistra evita l’ostacolo.

ARDUINO: il primo progetto

Questa è la versione di Arduino 2009. www.arduino.cc

Come primo progetto ho deciso di rianimare la carcassa di un vecchio rover (ecco il nome del mio Blog) con scheda madre bruciata, inserendo la mia nuova scheda arduino . Obiettivo del primo progetto è il SUNROVER. Un robot che possa percepire le fonti di luce e raggiungerle in completa autonomia decisionale.

Let’s Start

Da sempre ho subito un certo fascino per il mondo della robotica orientata all’intelligenza artificiale (IR). Ho provato molte applicazioni ho subito un0accelerazione consistente al momento in cui ho trovato un progetto di un connazionale su una mainboard chiamata ARDUINO.

Ho deciso subito di cimentarmi nell’apprendimento delle importanti specifiche di questa scheda.

Quindi iniziamo, questo Blog rappresenterà il diario dei miei apprendimenti e dei miei progetti.

iniziamo! Let’s Start!