Articoli con tag how-to

Assembler – Input e output carattere

0

Piccolo tutorial per Assembly (Masm32) su come fare l’input e l’output di un carattere da tastiera, usando i parametri 1h e 2h dell’interrupt 21h. Lo ricordiamo l’Assembler è un linguaggio di programmazione a basso livello.

; legge un carattere da tastiera e lo stampa a video
.model small ; si parte sempre così...
 
.stack 100h ;è opzionale, e alloca 100 blocchetti di memoria. esadecimali. perchè l'h che segue il numero indica il decimale.
 
.code  ; indica l'inizio del codice.. in generale..
 
start:  ;etichetta start... 
 
mov ah, 1h ;AH è il sottoregistro di AX. parte alta = high. 1h è la funzione dell'interrupt 21h che permette l'input di un carattere con eco.
int 21h ; funzione interrupt che richiama servizi generali del DOS. (21h)
mov dl, al ; copia al in dl perchè l'interrupt 21h salva il carattere ricevuto in al
; in ah si tengono le funzioni (i parametri per gli interrupt), in al i dati.
mov ah, 2h ;mettiamo in ah un altro comando, ovvero 2h che fa l'output a video di un carattere
int 21h ;richiamiamo dunque ancora l'interrupt 21h che segue il comando in ah.
mov ax, 4c00h ;comando per stoppare l'interrupt.
int 21h ;eseguiamo.
 
end start

Fai da te – Tastierino d’accesso elettronico

0

tastierino elettronico - fai da te

Ricordate il PIC 16F1937? spulciando in rete abbiamo trovato un progettino simpatico che vogliamo presentarsi..

Si tratta di un sistema d’accesso basato su tastierino elettronico, comandato e gestito dal PIC sopra mensionato. Sotto trovate qualche foto ed un video esplicativo. Tutti gli schemi elettronici e i codici di programmazione possono essere scaricati gratuitamente da qui in piena filosofia open source.

Rivediamo insieme i passi per realizzare il progetto.
E’ necessario innanzitutto avere a disposizione una serratura a “linguetta”, ed una porta di legno abbastanza spessa da poter essere scavata all’interno.
La modifica vera e propria sta nel riuscire ad agganciare tramite un filo, la linguetta della serratura ad un servo. Il PIC si occupa poi di pilotare il servo, permettendo l’apertura della porta. Il servo utilizzato è un normale servo per macchine RC.. La tastiera ha un secondo PIC 16F1937 che agisce come un sensore capacitivo per i 10-tasti touch del tastierino elettronico. Il PIC di controllo rimane in stand-by tutto il tempo per risparmiare energia. In questa “sleep mode”, il dispositivo trae 16 micro ampere di energia… pochissimo!
Quando l’utente tira piano la porta, un interruttore meccanico sveglia il PIC controller (con un impulso a RB0/INT) che a sua volta alimenta il touchpad.

Per modificare il codice d’accesso si usa una specificia procedura, si tira la maniglia, si inserisce il codice, si tira la maniglia nuovamente, ma la si tiene in quella posizione per circa 3 secondi fino a quando si sente il bip di conferma. Infine si inserisce il nuovo codice per due volte.

Se proprio vogliamo esagerare infine, è possibile inserire una fotocellula vicino al tastierino numerico, in grado di percepire la luce ed in caso quest’ultima sia assente, permetta di attivare la retroilluminazione del touch-pad.

E’ un piccolo fai da te, economico, elegante e dai mille utilizzi.

Qui in calce è possibile vederlo in azione in video:

Prima lezione di Python ed il suo interprete.

0

Python è un linguaggio di programmazione interpretato, conosciuto in tutto il mondo ormai, il suo successo è dovuto alla velocità di esecuzione e la semplicità nella sintassi. Queste caratteristiche lo rendono uno strumento flessibile e potente, ed altrettanto semplice nell’apprendimento. Python è stato realizzato in C. E da esso eredita alcune caratteristiche fondamentali.

Linguaggio di programmazione Python, hack e how to


Con questo post, inauguriamo una serie di nuovi video tutorial in inglese, dedicati a Python. Sperando che siano di vostro gradimento. Viene mostrato come funziona l’interprete di python, e le prime operazioni matematiche base che è possibile realizzare con esso:

Come proteggere le birre nel vostro frigorifero con la tecnologia RFID

1

Questo video mostra come usare la tecnologia RFID (Radio Frequency identification) per restringere l’accesso al vostro frigorifero e tenere al sicuro le vostre birre :P
Tramite un apposito TAG RFID con uno specifico codice sarete in grado di accedere soltanto voi al frigo. Guardate il video, dura 30 minuti. E spiega tutto nel dettaglio… poco comprensibile per chi non mastica l’inglese.

Un lettore RFID è reperibile al prezzo di circa 12 euro sullo shop di Watterott, e con altri 2 euro potete ritirare anche 5 tag (3 formato portachiave e 2 sottoforma di scheda). Molto facile da interfacciare con arduino ed inizializzare una comunicazione seriale.

Per intenderci questa tecnologia è la medesima che trovate nei negozi dei centri commerciali. Ogni prodotto ha attaccato un apposito tag che non appena si avvicina ai lettori posti all’entrata fa scattare un allarme. Questo evita che malintenzionati possano rubare prodotti nascondendoli in borse etc..

Guida: effettuiamo un Hackintosh!

2

Guida: effettuiamo un hackintosh

Prima di iniziare a smanettare vediamo cos’è un hackintosh: Per hackintosh s’intende un progetto di hacking nato per installare un sistema operativo Mac OS X su personal computer basati su architettura x86 e non prodotti da Apple.
Tutto ciò è possibile da quando Apple nel 2005 ha deciso di utilizzare i processori Intel, come quelli che sfrutta un normale pc, Infatti molti utenti Windows sono attratti dai Mac ma frenati dagli eccessivi costi, con questa guida installare Mac OS X su pc non sarà più un sogno!
Premetto che installare un sistema Apple in un qualunque computer non Apple, è illegale, viola il contratto di licenza software (EULA) che accompagna il sistema operativo. Chi vuol seguire questa procedura, lo farà di sua volontà. Questa guida non vuole in alcun modo dare un input ad una violazione, tuttavia vuole documentarvi.

Installazione di Mac OS X Leopard:

• Create una partizione di 15GB minimo (il file system non è importante per adesso).
• Scaricate una versione di OS X: c’è ne sono diverse iPC, iATKOS, Kalyway, iDeneb… ma io consiglio la Kalyway (download link alla fine del post), fatto ciò masterizzatela su un DVD.
• Effettuate il boot dal DVD e digitate –v per entrare in verbose mode e attendete che si carichi la schermata d’installazione.
• Adesso accedete al menu Utilities > Disk Utility, selezionate la partizione creata prima, impostate il file system MAC OSX Journaled Extended e cliccate su Erase per formattare la partizione.
• Se i vostro pc ha un processore Intel selezionate il kernel Vanilla, se invece ha un processore AMD selezionate il kernel Voodoo e cancellate le lingue non necessarie per liberare un po’ di spazio. Se non sapete cosa selezionare tra le altre opzioni cliccate qui per consultare la sezione “Hardware Compatibily List” del progetto OSX86.
• Attendete che la procedura d’installazione termini e adesso vi ritroverete un Pc con Mac Os X Leopard perfettamente funzionante.

Installazione di Mac OS X Snow Leopard (metodo Hazard):

• Scaricate Mac OS X Snow Leopard Hazard (download link alla fine del post) e masterizzatela su un DVD.
• Settate il BIOS in questo modo:
Nella tab Main
ATA/IDE Configuration [Auto]
Enhanced Mode Support On [S-ATA]
Nella tab Power
Suspend Mode [S3]
ACPI 2.0 Support [Enabled]
Altre
PLUG&PLAY OS [YES]
Adesso fate il boot dal DVD e premete –v per entrare in verbose mode e attendete che si carichi la schermata d’installazione.
• Selezionate la lingua poi cliccate su continua e successivamente accettate la licenza.
• Adesso cliccate su personalizza e selezionate le opzioni così come seguono:
Mac_OS_X_10.6.2
Charmaleon_RC3_PCEFI_10.5
GrapicEnabler
NvInject
AppleAzilla Audio
Apple RTC
SMBios Resolver
UUID
Fakesmc-V1.0
Font Aggiuntivi
Rosetta
X11
Quicktime 7
• Cliccate su fine e procedete con l’installzione.
Dopo aver riavviato il pc ed estratto il DVD partirà Snow Leopard. Adesso dovrete installare i Kext
• Iniziamo con l’installazione del Kext della scheda di rete, l’RTL8102E; installatelo assieme a Kext Helper e successivamente riparando i permessi con Kext Utility ed Infine installate il package in italiano per tradurre completamente il sistema.
• Riavviate e vi ritroverete un PC con Mac OS X Snow Leopard perfettemente funzionante.

Controllare una porta seriale con PHP

12

Quando si pensa di quello che un web server è in grado di fare solitamente si pensa alle applicazioni più comuni e principali: pubblicazione di pagine web, database, hosting, autenticazione degli utenti, ecc.. Queste sono tutte grandiose applicazioni pratiche che si possono fare con un web server, ma sono certamente solo la punta dell’iceberg. Bastano pochi minuti per guardarsi intorno al numero di dispositivi che utilizzano i server web per altri scopi: router e modem a banda larga.. pannelli di controllo; sistemi di gestione telefonica, sistemi di posta vocale, domotica.. tutte funzioni dotate di interfacce web; Anche il TiVOs e DVR (Digital Video Recorder) programmato da internet iniziano a prendere piede ed aumentare il divertimento!

Tutto questo solleva una questione importante per i più “avventurosi, fuori dagli schemi”: c’è qualcosa di più che possiamo fare con le nostre competenze web oltre la semplice creazione di siti?

In questo articolo andremo a trattare di fatto la creazione di un semplice script web-based PHP per controllare qualcosa nel mondo reale!

PHP scripting language hacks!



Allora tenetevi forte, perché mentre questo saggio web sarà una passeggiata nel parco, concettualmente stiamo andando a viaggiare in un intero nuovo regno delle possibilità!

La Sfida Fisica!

Anche se ho un pò di background hardware (ho costruito il mio computer, vari concetti di elettronica di base) non ho mai avuto a che fare con tutto ciò che effettivamente coinvolge l’utilizzo del software su un computer per controllare o fare qualcosa in “hardware” di fisico (ad esempio, premere un pulsante sullo schermo del computer e in qualche modo il sistema di irrigazione si accende?). Fortunatamente un po ‘di ricerche su internet aprono davvero gli occhi!

Vediamo il lato fisico delle cose per un attimo (ci arriveremo al software abbastanza presto, non preoccupatevi). Nella mia situazione avevo a che fare con il modo di trasformare un sistema di irrigazione acceso o spento. Si scopre che questa operazione è semplice come la semplice pressione di un interruttore: accendere l’interruttore, un circuito elettrico viene chiuso, e il sistema di irrigazione inizia ad annaffiare; girare l’interruttore nuovamente, il circuito si apre, e il sistema di irrigazione si ferma. Abbastanza semplice, ora tutto quello che serviva era un “interruttore” che può essere attivato o disattivato da un computer. Questo è dove la scheda relè (Relay Board) entra in gioco. Un relè è semplicemente un interruttore che può essere attivato o disattivato elettronicamente! Naturalmente, per attivare o disattivare i relè è necessario disporre di un modo di collegarli al computer. Fortunatamente, è possibile ottenere una scheda relè con una porta seriale su di esso che è stato progettato solo per questo scopo, acquistandola (il costo non è proprio economico). Inoltre se poi vorremmo riadattarla per altri utilizzi la questione diverebbe un pò più complessa. Quindi fondamentalmente andiamo sul sicuro con l’Arduino Uno.


Arduino Uno - Board hacking

Problema Hardware … risolto!

Passiamo alla parte Software.

Beh, devo dire, che la parte hardware per chi si è sempre interessato di web risulta la parte più difficile da comprendere.
Ora tutto ciò che rimane è capire come avviene la comunicazione fra il computer e la nostra Board (Arduino), per iniziare a farla lavorare come si deve..
Dopo aver fatto qualche ulteriore ricerca nel web ho scoperto che il lato software è ancora più facile del previsto.. per chi ovviamente mastica un minimo di PHP.. Come si è visto, le porte seriali (USB: Universal Serial Bus) sono tra le cose più facili e comode su un computer per comunicare verso l’esterno.

Andiamo adesso alla parte di Information Gathering

Fondamentalmente il problema software si divide in due parti: la prima, è necessario capire come effettivamente inviare e ricevere informazioni dalla porta seriale.

La seconda: controllare la documentazione per la scheda relè oppure in questo caso annotarsi il codice con cui è stato programmato l’Arduino per determinare quali informazioni necessita la board per aprire o chiudere il relè. Quindi quali comandi dobbiamo mandare se vogliamo aprire o chiudere il circuito.



Relay Board

Comunicare con la porta seriale.

Poiché il mio obiettivo finale era quello di avere un’applicazione web-based (e, francamente, perché volevo essere in grado di scrivere il mio codice in un linguaggio che già conosco), ho deciso che avrei realizzato tutti i software di controllo in PHP. Ha senso, dopo tutto, PHP è un linguaggio fantastico, ed ero abbastanza sicuro che con la natura open source di esso ci sarebbe stato probabilmente qualche altra persona folle davanti a me che aveva cercato di fare qualcosa molto simile con esso (che è uno di quei benefici aggiunti dell’open source).
Beh, a quanto pare, qualcuno aveva scritto in realtà solo una classe PHP per comunicare con la porta seriale. Adesso tutto quello che bisogna fare è controllare la documentazione per vedere quali impostazioni si devono usare (a quanto pare le porte seriali possono funzionare a velocità diverse e varie impostazioni) a seconda che si usi una scheda relè o la piattaforma Arduino.

Ancora una volta le cose funzionato a nostro favore, leggendo la documentazione si capische che vengono usati caratteri ASCII (lettere e numeri regolari, alcuni dispositivi usano valori HEX esadecimali, rendendo le cose molto più difficili). Questo dunque è lo script messo a punto per tale operazione…Ovviamente può essere riadattato per ogni vostra necessità, questo si riferisce ad una scheda relè:

<?php 
 
 
/* Semplice serial relay script per accendere e spegnere dal web l'impianto di irrigazione o altri apparecchi elettrici.
 
Utilizza la PHP Serial class by Rémy Sanchez  
per comunicare con la QK108/CK1610 serial relay board! 
 
*/ 
 
 
//Controlla la variabile GET action per vedere se c'è qualche comando da processare 
if (isset($_GET['action'])) { 
    //Action required 
 
    //Carica la classe per la porta seriale
    require("php_serial.class.php"); 
 
    //Inizializza la classe 
    $serial = new phpSerial(); 
 
    //Specifica la porta seriale da usare in questo caso: COM1 
    $serial->deviceSet("COM1"); 
 
    //Setta i parametri della porta seriale. riportando la documentazione: 9600 8-N-1
    $serial->confBaudRate(9600); //Baud rate: 9600 
    $serial->confParity("none");  //Parity (è la "N" in "8-N-1") 
    $serial->confCharacterLength(8); //lunghezza carattere 
    (this is the "8" in "8-N-1") 
    $serial->confStopBits(1);  //Stop bits (è il num "1" in "8-N-1") 
    $serial->confFlowControl("none");
//Se l'apparecchio non lo supporta, settate su none
 
    //Apriamo la porta seriale in modo da scriverci sopra 
    $serial->deviceOpen(); 
 
    //Stando alla documentazione
    if ($_GET['action'] == "on") { 
        //Usiamo il comando N1 per aprire il relè 1 
        $serial->sendMessage("N1\r"); 
 
    } else if ($_GET['action'] == "off") { 
        //Usiamo il comandi F1 per chiudere il relè 1
        $serial->sendMessage("F1\r"); 
    } 
 
    //dopo aver fatto chiudiamo la comunicazione seriale.
    $serial->deviceClose(); 
 
} 
 
//sotto la parte relativa alla grafica della pagina in html
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Sistema di controllo tramite web server</title> 
</head> 
<body> 
 
<h1>Sistema controllo irrigazione</h1> 
<p><a href="<?=$_SERVER['PHP_SELF'] . "?action=on" ?>">
Clikka per aprire.</a></p> 
<p><a href="<?=$_SERVER['PHP_SELF'] . "?action=off" ?>">
Clickka per spegnere.</a></p> 
</body> 
</html>

E’ molto importante seguire la documentazione per la scheda relè, con Nx, dove x è il numero di un relè (1-8) si accende il relè, con Fx, dove x è il numero di un relè (1-8) lo spegnete. La parte migliore è che funziona egregiamente ;)

Conclusioni

Con un po ‘di pensiero creativo e di ricerca vi accorgerete che ci sono molti usi per le capacità nell’ambito dello sviluppo web based.

La cosa più interessante è la flessibilità di cui dispone: la classe PHP seriale stessa può operare sia su sistemi Windows e Linux, quindi se non si dispone di un server Linux in esecuzione non si sentono tagliati fuori gli utenti windows!

Usando il linguaggio di scripting php ed una board Arduino si possono realizzare praticamente infiniti tipi di progetti.. per le più svariate applicazioni nei campi della Domotica e automazione a distanza. L’unico limite imposto è quello della vostra fantasia!

Torna all'inizio