Kryppad – appunti cifrati

Il Santo Natale si passa con la famiglia. Se ciò non è possibile, meglio mettersi comodi, accendere il computer e scrivere un’App.

Questo è esattamente ciò che ho fatto oggi. Sono partito dalla base dell’App GATC_note (che trovate già descritta in un mio articolo precedente) ed ho fatto alcune modifiche. Il risultato è un blocco-note con una funzione di “cifratura”.

L’icona dell’App

L’algoritmo è molto semplice, si basa sulla sostituzione dei caratteri. Non aspettatevi quindi chiavi RSA 128 bit o alti gradi di sofisticazione; si tratta di un algoritmo semplice, ma abbastanza efficace. Per decifrare i testi codificati (se volete fare come gli hacker cattivi) dovrete avere un po’ di pazienza e una certa competenza. Quindi, non salvate nei vostri appunti dei segreti nazionali, ma limitatevi, come me, a camuffare le credenziali di accesso a qualche sito usato di frequente o altri dati che non volete lasciare “visibili” in caso doveste smarrire il telefono.

La caratteristica principale dell’algoritmo è quella di usare una sola chiave. Per intenderci, un testo cifrato con una certa password, viene decifrato con la medesima password. Lo vedrete facilmente scrivendo un testo nella finestra di editing e premendo il tasto Enc/Dec; ad ogni pressione, il testo passerà da “normale” a “cifrato” e la chiave di cifratura sarà la password da voi inserita.

Testo prima della cifratura. La password è visibile grazie agli “occhietti”

Dato che è complicato recuperare un testo cifrato, ho aggiunto un pulsantino di fianco alla password (quello con gli occhietti) che la rende visibile per 3 secondi, onde evitare di cifrare un testo con una password immessa con errori di digitazione.

La password è sparita (gli occhietti durano 3 secondi) ed ecco il testo risultante dalla cifratura con la password

Completano l’App i pulsanti di Load, Save ed Exit, che servono rispettivamente a: caricare un file da disco, salvare un file su disco, terminare l’applicazione. Riguardo la pagina dei file, se premete a lungo su uno dei nomi che compaiono nella lista, vi viene offerta la possibilità di cancellare il file medesimo.

La pagina di file load. All’inizio viene creato automaticamente un file di esempio.

Il programma (in funzione della versione Android su cui si installa) vi chiederà l’autorizzazione ad utilizzare la memoria esterna per salvare i files. Verrà creata la cartella Kryppad in cui saranno salvati tutti i files. Non è possibile editare un file che sia al di fuori di questa cartella, così come non è possibile salvare un file al di fuori di essa. L’uso di caratteri speciali nel nome del file è bloccato e vi verrà mostrato un avviso qualora doveste usare uno di tali caratteri nel nome del file di output.

Per compatibilità con il precedente programma GATC_note, se copiate dei files codificati con tale programma nella cartella Kryppad (con un file manager) e modificate il nome del file affinché inizi con GATC_ , il testo verrà automaticamente convertito in “plain text” e così lo potrete nuovamente cifrare e salvare con un altro nome. Io ho fatto così per alcuni files su cui avevo salvato informazioni importanti.

Quella che troverete sulla mia pagina di Google Play è la Rel.1.0 dell’App ; mi riservo di aggiungere qualche funzione utile (il search all’interno di un testo) e di fare miglioramenti per le funzionalità già implementate. Se scaricate il programma e non vi piace, fate come si fa di solito con i regali di Natale che non ci emozionano particolarmente e sorridete dicendo: “era proprio quello che mi serviva”. Lasciare giudizi negativi su un regalo, non è un bel gesto !!!

Buon Natale a tutti e spero che per me sia l’ultimo da solo ! 🙂

My old smartphone is now a webcam

Some days ago, I moved from Italy to Germany after some personal troubles that convinced me that was time to make a change. I now have an apartment here and also a new job. The weekends and the holidays are always boring days, so in my free time I continue to write some easy Apps.

The apartment’s window looks toward a large square, so I decided to recycle an old smartphone to act as a webcam, placed behind such window. This is a screenshot of the application just started:

The circles with numbers are references for meanings of various boxes and buttons:

1) textbox for the username. This is used as an ID in file transfer
2) textbox for the server URL. This is used in picture transfer
3) textbox with the time. The time between two consecutive pictures (in seconds)
4) label with the time remaining before new picture will be taken (read note below)
5) label for messages to the user
6) button that closes the App

The box at left shows the preview image continuously taken by the camera.

When the App starts for the first time, you must fill all the textboxes with the relevant information. Such data will be stored on a file in the smartphone under a folder called “myWebcam”. The name of the file is settings.txt and is a pure text file. The next time that you open the application, your data will be loaded from file and set in the appropriate textboxes, so you will just start the program. The time for the first picture capture is set by default to 600 seconds; after that, it will be loaded from the programmed time (in box (3). Note: if you touch the label (4), its value will be forced to “1”, so this can be considered as a “quick start” button.

How it works

My first idea was to transfer the picture using a tiny ftp client, but there was a problem. The ftp server is in Italy and the login credentials coming from a Germany IP are rejected (password error) ; I know that the ftp server’s settings can be changed, in order to accept also other countries IPs, but I think it’s better not to do it… So the “B plan” was to use some Php scripts on the site and some specific HTTP POST requests, with the username (1) used as the auth_key and the server’s URL (2) as locator for the scripts. This way, the file transfer worked without any problems. The image has a VERY low resolution, so if you try to zoom it, you will have big pixels and no details. I did it this way to avoid privacy’s problems on the taken pictures.

Publishing on the Market

I will not publish this App on my Google Developer page, due to the need of a specific PHP script on a personal server and because to publish an App that uses the Camera, you must also supply a “Privacy Policy” document. I removed all my previous Apps that used the Camera from Google Play just to avoid to publish such document.

I think it would be enough to write in the App’s description: “This App uses your smartphone’s camera. It’s normal, ‘cause the purpose is to take pictures!”, but this is not enough. You have to publish somewhere a well formed document in full “legal terms”, so may be you have to pay a lawyer to publish your FREE App!

Here is a webcam picture, updated every 15 minutes if the device is ON:

test webcam
News: 2019/02/15 – A friend told me that there is an “official” webcam of this place exactly in the building in front of me… It’s always ON, so I think I can stop mine 🙂

Due resistenze in parallelo

Qualche anno fa mi trovai nella necessità di provare un circuito elettronico con una resistenza di un valore non standard. Iniziai a fare i calcoli per usare due resistenze di valore standard in parallelo per ottenere il valore desiderato, ma mi resi conto che ci sarebbe voluto meno tempo a scrivere un programmino in FreeBasic che a usare la calcolatrice. Così realizzai il programmino che trovate di seguito. Molto recentemente, un amico e collega di lavoro si è trovato nella stessa necessità ed allora mi sono ricordato di aver affrontato il problema in passato. Così, gli ho passato il programma e lui l’ha usato ricavando il valore desiderato in un attimo. A questo punto, ho pensato che questo programmino potrebbe essere utile anche ad altri ed ho deciso di pubblicarlo sul mio sito, dopo aver aggiunto un po’ di commenti sul listato, per renderlo più chiaro. Ecco il listato completo:

Come vedete nel listato, nelle righe da 9 a 11, ci sono 12 valori di resistenze “standard” da 1 a 8.2 Ohm. I valori standard, in effetti, sono di più, ma io ho inserito solo quelli che uso abitualmente e che ho nei cassetti del laboratorio. Ovviamente, il valore (per esempio) 1.5 vale per tutti i moltiplicatori, così è lo stesso per 1.5 Ohm, 15 Ohm, 150 Ohm, 1500 Ohm, eccetera. Se volete inserire altri valori, aggiungeteli alla tabella e poi modificate gli indici dei FOR usati nel programma per fare i calcoli comprendendo tutti gli elementi della tabella. Ecco un esempio del programma in funzione:

Notate che, essendo il programma molto semplificato, troverete alcuni valori ripetuti due volte, come nell’immagine precedente per la linea: Req= 13,62 ; infatti il valore calcolato è lo stesso sia per R1=18 R2=56, sia per R1=56 ed R2=18. Modificando opportunamente il programma, si possono eliminare queste ripetizioni, se si vuole.

L’algoritmo usato è elementare, direi quasi banale. Si eseguono, semplicemente, tutte le combinazioni di due resistenze di valore “standard” e quando il risultato è “vicino” a quello desiderato, questo viene stampato. La precisione del risultato è determinata nella linea 34 del sorgente FreeBasic. Modificandola (attualmente è 1/20), si potranno ottenere valori in un intervallo più vicino a quello desiderato (se possibile), oppure in uno più ampio.

Se non volete scrivere “a mano” tutto il programma e compilarlo con FreeBasic, potete scaricare il file ResCalc.zip che contiene sia il file sorgente che l’eseguibile già compilato. Il checksum MD5 del file è 3793386218F12756721CB98290BBDE40. Assicuratevi che sia esattamente questo! Se non lo è, buttate via il file: è corrotto, incompleto o non è quello originale. Per scompattare il file .zip, usate il programma 7Z e la password: eficara. Anche se il programma è davvero elementare, ho voluto pubblicarlo ugualmente, perché può comunque essere un buon esercizio per chi sta iniziando a programmare in Basic. Buon divertimento 🙂

GATC_note – convert text to DNA

Modified: 2018 Jun 30

Many years ago I saw a movie named “GATTACA”. The film was based on a novel where a man with some “defects” in his DNA was excluded from the crew of a stellar mission (due to such defects). That man, using a trick (exchanging his DNA with another one coming from a friend genetically perfect, but unable to walk after an accident) finally was accepted and started his journey to the stars.

Why “GATTACA” ? The answer is simple: the DNA has only 4 elements (I don’t know their exact names, try Google search for full information) named A, C, G, T. Such four elements, sequentially disposed on a “string”, are able to describe THE LIFE. The DNA is like a program with all the instructions to build the life in its wide range of forms.

When I discovered that just 4 letters are used for the “strings of life”, I immediatly thought about a byte. In one byte (8 bit) I can save four symbols. Many years later (three years ago) I realized a small Internet connected device and decided to use a special coding to transmit the data from the microcontroller to the webserver and so I encoded every byte as a string of 4 characters “A”,”C”,”G”,”T” sending the packet as simple ASCII string. Obviously, the byte array was small and was previously encoded with my own key. It was just an experiment, easy to implement in the microcontroller C program and in the receiving PHP script on the server.

Well, last week I have seen on TV that some scientist are studying the way to save huge amount of information on molecular support, using the DNA structure! So, we will have many terabytes of data on a very small organic  support. I don’t know when it can be ready for the public, but is a very exciting idea for data storing. I just can’t imagine how a “reader” for such data can be realized, but in the meantime I decided to write a small App for Android to “translate” a text in “DNA code” form. This is the App icon:

The App is simply a text editor that can convert from text to “DNA code” and viceversa pressing a button. It’s funny and you can save some “sensitive” data on your smartphone with this special encoding. Note that the coding / decoding algorithm is VERY easy and any “decent” programmer will break and decode the text in few minutes, so don’t use this way to store your precious bank accounts! It’s just a funny way to save the data with a “futuristic” look.

Here is the screenshot of a text written in the edit box:

And now, look what happens when I press the button “GATC it !”:

The operation is reversible: if I tap again the button “GATC it!” the “DNA code” reverts to normal text. There are buttons to save / load the files to / from the smartphone’s memory. The files are saved in the program directory that is named GATC_note/. You can save or retrieve files to / from the directory connecting the smartphone to the computer as an USB memory. Note that the files are in Android format, so the line terminator is simply LF and not CRLF as in Windows Notepad.

Modified in GATC_note V0.2 >> Note the “double colon” at the end of the “DNA code”: this is appended by the program as a marker in order to recognize that the text is “GATC code”. I changed such marker from “Black Star” (Unicode 9733 decimal) of previous release to “double colon” in order to make easier editing GATC text (for experiments). I added also a check for the text length (in GATC mode) ‘cause such text must be multiple of 4 in length (4 GATC symbols = 1 Byte). Finally, I modified the text entry in order to avoid that the keyboard can overlap the text (in case of long strings).

Using just one byte for character has a limit: not all the characters in the edit text can’t be decoded. Only the characters with code from 0 to 255 can be represented with 4 characters ACGT. In case of characters out-of-bounds, the program will set a message dialog asking you if you want to accept the limits (changing the extra characters in blanks) or if you refuse to exchange. This is the screenshot of the dialog:

The “load” and “save” buttons are used to save and load files. You can save files in text or DNA format. The only difference is that ANY file that ends with the “black star” is considered as “DNA”, otherways is a text file. Pressing a file name for long time calls the “delete” procedure and you can decide to erase a file from your smartphone’s memory.

The App has been published on my Google Play developer page at this link: https://play.google.com/store/apps/details?id=robotop.gatcnote. It’s absolutely free and without any advertisement. If you find some error or if you wish for new features to add, send me a message. I will try to improve / debug the program in my free time.

If someone has a true DNA to convert with the program and then discovers that the converted data contains some useful instructions to develop a special anti-gravitational machine, please invite me (for free) to the first interstellar journey on a starship that uses such new technology, thank you.

Play with colors (not for painters)

First of all, happy new year ! Another boring weekend in this B&B and another game realized for Android smartphones. It’s a well known game. The machine creates a combination of four colors (on a six colors palette) and you have to find the right combination in max 12 attempts. Every attempt has an answer that is a white dot if there is the right color in the right position or a black dot if there is a right color in a wrong position. Obviously, if the selected color isn’t part of the combination, no black or white dot appears.

The game icon as it appears on Google Play

The application is free and without any advertisement. It’s a present, so -please- don’t leave evil comments if you don’t like it !

Google Play link: https://play.google.com/store/apps/details?id=robotop.mastertab

Screenshot of the game running

The buttons on the right are used to select the color you want to add to your try. The [ C ] button clears an entered combination in case of errors. The [ Ok ] button accepts a combination, so the machine can answer with the results. The button [ nuovo codice ] generates a new random colors combination. The small orange arrow at left is a pointer to the list of attempts. If you don’t find the solution in 12 attempts, the machine will show you the result with a short animation. The program exits after 10 minutes of continuous play time. This is ‘cause you must rest after such time ! Obviously you can restart immediatly, but I suggest to not spend too much time playing with your smartphone, with your eyes focalized always at the same distance. So, after 10 minutes, take a rest ! Look out of the window !

I did the first version of this game some years ago, for the iOS environment, using a software tool called DragonFire SDK. You can read an article I wrote about this tool at this link: http://ficara.altervista.org/?p=2254. Following the link, you can also find a downloadable executable (runs like an iPhone emulator) to play the game on any Windows PC. The source file written in Visual C++ is included in the packet. Note that the libraries sold with the DragonFire SDK are NOT included ! The source file may be useful to see how the program works. The software tool was able to translate the Visual C++ source in iOS Objective-C source and compile it on remote Mac machine, giving as result the App ready for the market.

In case of errors or suggestions contact me by email and in my free time I will try to update the App. Have fun ! Bye.

Problemi (risolti) su FW AT con GPIO per moduli ESP8266

Nell’articolo precedente ho descritto un utilizzo inusuale per i soliti modulini ESP8266. Per poter utilizzare il comando AT+CWLAPOPT (quello che consente di utilizzare delle opzioni quando si chiede la lista degli Access Points) ho dovuto aggiornare il firmware del modulino ESP-01 che ho utilizzato. Tutto ok. Poi, però, ho tentato di aggiornare il modulino con la versione firmware contenuta nel file ESP8266_NONOS_SDK-2.1.0.zip (il FW AT che consente di utilizzare il GPIO del modulo) ed ho trovato delle difficoltà. Una volta programmato con tale versione, il modulino si resettava di continuo. Dopo un po’ di indagini e prove con vari file di boot presi da versioni precedenti (boot 1.2 ; boot 1.6; boot 1.7 e altri), mi sono un po’ stufato ed ho preso con un editor esadecimale la zona di memoria dedicata al boot (a partire dall’indirizzo 0x00000) da un firmware sicuramente funzionante (una versione vecchia, distribuita con un file .bin unico) e da quella ho ricavato un nuovo file boot.bin “tutto mio” o quasi 🙂 Usando questo “frankenstein” ho finalmente programmato con successo l’ultima release del firmware. Ora i comandi relativi al GPIO vengono accettati ed eseguiti.

Ho deciso di pubblicare qui il piccolo file myboot.zip per coloro i quali si trovassero ad affrontare lo stesso problema.

Tengo a precisare che si tratta di una soluzione “per hobbisti” ! Non mi assumo responsabilità per malfunzionamenti o difetti ! Si tratta di un esperimento e come tale va trattato !

Nota: il file myboot.bin è zippato con password. Usate il programma 7Z con la password eficara per estrarlo.

ESP-01 : usi alternativi di RSSI

Normalmente, usiamo il modulino wifi ESP-01 per fare dispositivi che si connettono a Internet ; trasmettiamo o riceviamo informazioni, fondamentalmente per realizzare dei sensori o degli attuatori. C’è un’infinità di applicazioni in giro, alcune ben documentate e originali, altre copie di copie di copie (ricursivo). Da un lato ci sono dei principianti con una preparazione “vergognosa” che si spacciano per “specialisti”, ben consci del fatto che ci sarà sempre in giro su Internet qualcuno che ne capisce meno di loro 🙂 , altri invece sono decisamente “bravi e preparati” e leggere quello che propongono è davvero interessante, anche per un “addetto ai lavori”.

Negli ultimi anni, prodotti come Arduino, ESP8266 e Raspberry PI hanno “rivitalizzato” un settore hobbystico che era praticamente morto, con conseguenze assolutamente positive per tutto il settore dell’elettronica e dell’informatica. Come già detto, però, c’è anche il fattore negativo di tanta gente senza talento che “imbratta i muri”, ma è una contropartita accettabile, pur di vedere di nuovo l’entusiasmo per l’autocostruzione, com’era ai (bei) tempi delle “riviste cartacee”.

Per fare alcune prove che riguardano un’idea che mi è venuta in mente, ho sviluppato un programmino che utilizza una delle “features” del modulino ESP-01 nella versione di firmware con protocollo AT. Lo scopo di questo programma è di fare dei “beep” quando la misura di RSSI (Received Signal Strength Indicator) di un determinato Access Point scende al di sotto di una soglia impostata. Ho deciso di pubblicare l’intera cartella di progetto, contenente sia l’eseguibile sul path /release/Radar.exe, sia il file sorgente in FreeBASIC (con FireFly Visual Designer) sul path /forms/Form1.frm, così chi vorrà potrà modificare / migliorare il software a proprio piacimento. Vediamo la schermata del programma appena lanciato:

Andiamo per punti : (1) è il pulsante per aprire la porta di comunicazione seriale verso il modulino ESP-01 (ho usato lo stesso circuitino presentato qualche tempo fa sul mio sito a questo link). Per prima cosa, premeremo Open e se tutto andrà a buon fine, la porta seriale verrà aperta e la scritta sul pulsante cambierà in Close. Subito dopo premeremo in fila i pulsanti riferiti con (2), (3), (4) e (5). Questi servono per inviare una serie di comandi AT al modulino wifi ESP-01. Per pima cosa si setta la potenza di trasmissione a circa un terzo del massimo possibile (27 su un range da 0 a 82); poi si sceglie di operare come STA (station); poi si chiede di usare, nel comando CWLAP (List Access Points) solo i parametri relativi ad SSID e RSSI (il valore 6 setta i bits 1 e 2, che sono appunto relativi ai due campi indicati). Infine si richiede la lista completa degli Access Points “visibili” dal modulo. Di sotto segue un esempio di tutto quello che compare nella finestra (10) eseguendo le operazioni elencate nell’ordine:

>Open
TX: AT+RFPOWER=27<0x0D><0x0A>
AT+RFPOWER=27

OK
TX: AT+CWMODE=1<0x0D><0x0A>
AT+CWMODE=1

OK
TX: AT+CWLAPOPT=0,6<0x0D><0x0A>
AT+CWLAPOPT=0,6

OK
TX: AT+CWLAP<0x0D><0x0A>
AT+CWLAP

+CWLAP:("MW40Wind_xxxx",-58)
+CWLAP:("DIRECT-Bh-BRAVIA",-86)
+CWLAP:("NETGEAR26",-93)
+CWLAP:("CEM_host",-36)

OK

Una volta visualizzata la lista di AP, potremo fare un “copia” di quello che vogliamo utilizzare e poi incollarlo nel campo riferito dal numero (6). Prenderemo quindi nota anche del valore di RSSI relativo al medesimo AP e lo scriveremo nel campo riferito dal numero (7). A questo punto potremo finalmente premere il bottone Start (8) e il programma comincerà ad inviare una serie di comandi AT+CWLAP=”APcopiato”, che potremo vedere nel campo (9) e quindi verificherà le risposte formite dal modulino. Se il valore di RSSI ricevuto è inferiore (sono numeri negativi !) a quello che abbiamo programmato nel campo (7), allora si sentirà un “beep”. Vediamo una schermata del programma in funzione:

Naturalmente, il valore di RSSI è influenzato da vari fattori e non è costante, ma si mantiene in un certo range. Notate che più il numero si avvicina allo zero, più il segnale è forte ! Se scende a livello di -100 è assente. Con una certa approssimazione e con una sensibilità un po’ scarsina 🙂 potremo usare il modulino Esp-01 come sensore di presenza. Infatti, se qualcuno si piazza nelle vicinanze del modulino, o meglio, sulla linea ideale che unisce il modulino all’Access Point, il segnale diminuirà (sarà assorbito/riflesso dall’individuo) e il computer farà beep ! Lo stesso succederà se prendiamo il computer (supponendo che sia un portatile !) e ci allontaniamo dall’Access Point. E’ da notare che non facciamo una connessione all’AP, ma ci limitiamo a leggere la potenza del segnale ricevuto. Quindi, abbiamo due usi immediati per questo “giocattolo” : un sensore di presenza e un allarme di allontanamento. Naturalmente, il tutto può essere trasportato su un piccolissimo microcontrollore per rendere il lavoro più interessante. Purtroppo, l’utilizzo dei comandi AT rende la cosa un po’ lentina : tipicamente un “beep” ogni due secondi, ma lavorando direttamente nel chip ESP8266 (con gli strumenti giusti) si può fare ben di più ! Sotto la clausola di non assunzione di responsabilità, troverete la cartella di lavoro FBgui_Radar zippata con password. Se non avete Freebasic e Firefly, potete scaricarli gratuitamente ; cercate nel mio sito “links utili” e troverete i collegamenti per il download.

Clausola di non assunzione di responsabilità.
Il programma o software descritto, liberamente prelevabile dal sito, è da considerarsi una “demo” gratuita e pertanto l’autore Emilio P.G. Ficara non fornirà alcun supporto, né si assumerà alcuna responsabilità per ogni eventuale problema, danno o conseguenza che dovesse presentarsi nel download o nell’esecuzione dell’applicazione.

Cliccando questo link per effettuare il download del file implicitamente dichiarate di aver letto e capito la clausola di non assunzione di responsabilità e di accettarla.

Verificate sempre il checksum MD5 dei files che scaricate ! In questo caso deve essere: F6E1617D0E8E7CABC7FD6D1A7BB0B392 ; se è diverso, il file è corrotto o non è quello originale, quindi non scompattatelo e buttatelo via ! Se invece è tutto ok, potete scompattarlo (usate il programma 7Z con la password: eficara).

Potete usare l’eseguibile anche su una chiavetta di memoria USB, in quanto non ha bisogno di installazione.

Be Happy !

Qualche tempo fa, precisamente il 29 Novembre (non ricordo di quale anno !) alle 19:00, vidi in TV una trasmissione della BBC (un documentario) con un argomento piuttosto interessante. Si trattava di un metodo, sviluppato da un gruppo di studiosi, che avrebbe permesso ai soggetti coinvolti nell’esperimento di aumentare il proprio ottimismo. La cosa mi piacque, perché ho sempre avuto tanta voglia di incrementare il mio ottimismo ! Ora, dato che ho il weekend libero da impegni, ho deciso di programmare un’App per esercitarmi e vedere se finalmente riesco a diventare ottimista (ne dubito…hehe).

L’esperimento mostrato in TV consisteva in uno schermo di computer che veniva mostrato al soggetto impegnato nella prova. Su tale schermo apparivano sedici facce di persone di varie razze, con caratteristiche somatiche differenti. Queste facce erano disposte in una matrice di 4 x 4, quindi un totale di 16 immagini. Tra queste, solo una mostrava una faccia sorridente ; tutte le altre avevano espressioni tristi, arrabbiate, annoiate o depresse. Il soggetto in prova doveva cliccare il più velocemente possibile sull’unica faccia sorridente e così facendo incrementava il proprio punteggio, quindi lo schermo cambiava, mostrando una nuova matrice di volti. La voce narrante diceva che la durata ottimale dell’esperimento era di 8 fasi di 15 minuti ognuna (in giorni diversi). Alla fine di questo periodo, i soggetti si sarebbero sentiti più ottimisti.

Non conosco la validità scientifica di questo esperimento e non sono riuscito a trovare notizie sulla cosa perché purtroppo non ho seguito la trasmissione dall’inizio, ma ho visto tanti di quei metodi per agire sul cervello e sulle emozioni (alcuni sembrano autentiche fesserie), da essere disposto a fare un tentativo… Se volete provare anche voi, troverete l’App per Android in fondo a questo articolo. Questa è l’icona dell’App:

Bene, non avendo a disposizione 16 persone disposte a farsi fotografare con espressioni sorridenti (e nemmeno arrabbiate o depresse o tristi) ho deciso di usare delle “emoticons” che si trovano ovunque. Per simulare le differenze razziali ed estetiche, ho modificato il colore di background delle varie “faccine” e così le varie griglie presentate all’utente sono sempre diverse. Quello che rimane invariato rispetto alla versione originale è che ci sono sedici volti in una griglia di 4 x 4 e solo uno è sorridente. Ecco come si presenta il “gioco” appena installato e avviato:

Qui vediamo le sedici “emoticons” (per una volta, tutte sorridenti) e una finestra di messaggi che ci dice di premere sulla scritta per iniziare. In basso vediamo un messaggio che ci dice il tempo totale di “gioco”, dal momento dell’installazione. Quando questo tempo arriva a 2 ore e mezza (9000 secondi), il programma si ferma, perché dovreste già essere diventati ottimisti ! Spero che allora, pieni di gioia di vivere, partiate per un magnifico viaggio intorno al mondo (senza smartphone)…

Vediamo che succede appena avviamo il “gioco”:

Eccole qui, le nostre 16 faccine, tutte tristi, arrabbiate, depresse tranne una. Dobbiamo trovarla e toccarla nel più breve tempo possibile. In basso a destra vediamo un contatore che segna i secondi passati da quando abbiamo iniziato a giocare. Questo tempo sarà sommato al totale quando chiudiamo l’App. E’ da notare che l’App si chiude con il solito triangolino in basso per l’uscita dai programmi, ma anche con eventi che interrompono l’App in esecuzione, come chiamate, messaggi, eccetera. Questa App non va mai “in sospensione”… quando si chiude, si chiude.

Se tocchiamo la faccina sorridente, la finestra dei messaggi ci mostra OK e il numero di volte in cui abbiamo fatto la scelta giusta :

Se invece premiamo sulla faccina sbagliata (triste, depressa o arrabbiata), la finestra dei messaggi lampeggia brevemente in rosso e compare la scritta NO !

Quando ci stufiamo di giocare, possiamo chiudere l’App e i dati saranno salvati: durata della sessione di gioco, numero di volte che si è fatta la scelta giusta in tale sessione, tempo totale dall’installazione. Quando riavvieremo l’App, potremo leggere le “statistiche di gioco”, premento a lungo sulla scritta Play time = xx sec. Ci verrà mostrata una linea di testo per ogni sessione di gioco, in modo da poter valutare i nostri progressi.

Ecco un esempio :

Se avrete usato l’App per più di due ore e mezza di gioco, nel momento in cui toccherete la finestra dei messaggi per iniziare una nuova sessione, vi troverete davanti questo messaggio :

In questo caso, non disperate: se ancora non vi siete stufati di provare a diventare ottimisti 🙂 potrete riprovarci reinstallando l’App o cancellandone i dati con il gestore di App del sistema. Questo è tutto. Spero che questo giochino gratuito e senza pubblicità vi porti un po’ di ottimismo o almeno vi faccia fare due risate ! Non troverete questa App sulla mia pagina di Google Play, ma solo qui sul mio sito. L’App BeHappy.apk messa a disposizione per il download è compressa in un file zip con password. Dovrete quindi scaricarla, decomprimerla ed infine potrete installarla sul vostro smartphone / tablet Android, selezionando la checkbox “Installa da origini sconosciute” nel menù della sicurezza del dispositivo.

Clausola di non assunzione di responsabilità.
Il programma o software descritto, liberamente prelevabile dal sito, è da considerarsi una “demo” gratuita e pertanto l’autore Emilio P.G. Ficara non fornirà alcun supporto, né si assumerà alcuna responsabilità per ogni eventuale problema, danno o conseguenza che dovesse presentarsi nel download o nell’esecuzione dell’applicazione.

Cliccando questo link per effettuare il download del file implicitamente dichiarate di aver letto e capito la clausola di non assunzione di responsabilità e di accettarla.

Verificate sempre il checksum MD5 dei files che scaricate ! In questo caso deve essere: 0E94043AB497723E796F9520676BF453 ; se è diverso, il file è corrotto o non è quello originale, quindi non scompattatelo e buttatelo via ! Se invece è tutto ok, potete scompattarlo (usate il programma 7Z e la password: eficara).

Versioning:
2017 Set,24 Rel 0.2
 - modificato tempo massimo da 1 ora a 2 ore e mezza
 - aggiunto avviso di 15 minuti di gioco continuativo
   (con chiusura automatica)
2017 Set,23 Rel 0.1
 - versione di partenza 

EF9by9 gioco di logica (aka “sudoku”)

Quali effetti può provocare un weekend trascorso da solo in un B&B, con pioggia, tuoni e lampi ? Qualcuno si mette a fare le parole crociate, qualcuno preferisce i giochi di logica, io mi metto a scrivere App. Naturalmente, ho scritto un’App per fare un gioco di logica… Non ho chiamato questo gioco “sudoku”, bensì “EF9by9”, ma le regole sono le stesse. Questa App serve soprattutto per creare dei propri schemi da 9×9, verificando l’esattezza dei numeri via via inseriti ; in alternativa, è possibile generare automaticamente una griglia di gioco (casuale, ma corretta) da completare. In quest’ultimo caso, al giocatore spetta il compito di inserire i numeri mancanti, rispettando le regole di gioco. Facciamo un giro per vedere come si usa:

Ecco come si presenta lo schermo appena lanciata l’applicazione. Abbiamo la griglia di gioco (9 x 9), i pulsantini numerati da 1 a 9, una checkbox per la selezione Normale / Easy, il bottone “NEW” ed una finestra per i messaggi del programma (e altro). Premiamo “NEW” per generare una griglia di gioco casuale ; se la checkbox “Easy” è settata, verranno mostrati 35 numeri, altrimenti solo 20. Ecco un esempio:

Il compito del giocatore è di inserire in ogni spazio vuoto il numero giusto, fino a completare la griglia. Per inserire i numeri, il giocatore deve prima cliccare la casella su cui vuole operare ; questa diventerà col bordo rosso, quando selezionata. Adesso si può premere il pulsantino del numero da 1 a 9 e questo sarà inserito in quella specifica casella. Un momento ! Prima di accettare il numero impostato dal giocatore, il programma effettua 3 controlli : il primo per vedere se il numero è già presente nella riga selezionata ; il secondo per vedere se il numero è già presente nella colonna selezionata e infine il terzo per vedere se il numero è già compreso nel quadrato di 3 x 3 che contiene la selezione. Queste sono le regole del gioco ! Se il numero scelto dal giocatore soddisfa le regole, allora viene inserito nella casella, altrimenti l’operazione non viene eseguita e la casella dei messaggi lampeggia brevemente in rosso. All’interno verrà scritto il motivo per cui il dato non è stato accettato. Facciamo un esempio di errore: abbiamo cliccato 1 e la casella lampeggia in rosso e quindi possiamo leggere al suo interno: 1 is at: row=7 col=0 che significa che il numero 1 è già presente alla riga 7, colonna 0 (il punto 0,0 è in alto a sinistra).

Se vogliamo cancellare un numero selezionato, basta premere brevemente la finestra dei messaggi. Possiamo anche inserire un altro numero, senza prima cancellare il precedente. Ad ogni nuova immissione verrà comunque eseguito il test di validità. Se riusciamo ad inserire tutti i numeri, il gioco è risolto e la finestra dei messaggi in basso lampeggerà brevemente in verde, mostrando il messaggio: “Solved!”.

Ecco un esempio di gioco risolto:

Ho scritto un algoritmo per la generazione delle griglie che è veramente semplificato e chiunque sia pratico del gioco lo scoprirà subito ! Comunque, si tratta di una App gratuita e senza pubblicità, quindi consideratela come una “forever-beta version” 🙂 Non la troverete sulla mia pagina di Google Play, ma solo qui sul mio sito. L’App EF9by9.apk messa a disposizione per il download è compressa in un file zip con password. Dovrete quindi scaricarla, decomprimerla ed infine potrete installarla sul vostro smartphone / tablet Android, selezionando la checkbox “Installa da origini sconosciute” nel menù della sicurezza del dispositivo.

Clausola di non assunzione di responsabilità.
Il programma o software descritto, liberamente prelevabile dal sito, è da considerarsi una “demo” gratuita e pertanto l’autore Emilio P.G. Ficara non fornirà alcun supporto, né si assumerà alcuna responsabilità per ogni eventuale problema, danno o conseguenza che dovesse presentarsi nel download o nell’esecuzione dell’applicazione.

Cliccando questo link per effettuare il download del file implicitamente dichiarate di aver letto e capito la clausola di non assunzione di responsabilità e di accettarla.

Verificate sempre il checksum MD5 dei files che scaricate ! In questo caso deve essere: 582FB5275D1A004B489434E0F88DC732 ; se è diverso, il file è corrotto o non è quello originale, quindi non scompattatelo e buttatelo via ! Se invece è tutto ok, potete scompattarlo (usate il programma 7Z e la password: eficara).

Versioning:

2017/09/12 21.30:00 Aggiunta funzione “mostra soluzione” premendo una sequenza di 6 tasti (a voi il compito di scoprirla !)
2017/09/10 20:25:56 aggiunta funzione pulizia griglia premendo a lungo il pulsante NEW
2017/09/10 15:44:06 corretto errore su verifica gioco risolto

Usare la VGA-Cam C328 con Freebasic

Ho in mente di fare alcuni esperimenti per la “visione” elettronica e, come prima cosa, ho deciso di utilizzare un piccolo modulo con telecamera per acquisire le immagini. Tempo fa (MOLTO tempo fa) comprai un modulo VGA CAM-100 che poteva essere controllato da seriale, era molto piccolo ed era alimentato a 3.3V. Il mio modello era prodotto da Comedia, ma credo che ora sia andato fuori produzione. Ho però visto che altri modulini chiamati C328 e simili, vengono ancora prodotti da altre case. Tra le altre belle cose, questo dispositivo è in grado di produrre un file immagine in formato JPG, oltre che in “raw data” e non è cosa da poco…

Ho così realizzato un piccolo hardware di interfacciamento con il PC, che potete vedere nella foto sottostante:

L’hardware ‘filato’ per connettere il modulo alla USB del PC

Non è una gran bellezza, diciamocelo… però tenete presente che attualmente vivo in un B&B, lontano da casa e senza risorse (elettroniche). Mi sono quindi arrangiato ! Vediamo nella foto il modulo VGA (a destra), il regolatore 3.3V (in basso al centro) e l’interfaccia USB-Seriale (a sinistra). Nota bene: si DEVE usare una interfaccia USB che abbia lo switch per poter funzionare a 3.3V o 5V. In questo caso dovrà essere usata la modalità a 3.3V. In alto vediamo un altro piccolo circuitino, ma questo serve solo a tenere fermi i pin strip per i vari cavetti di collegamento. Lo schema del regolatore da USB +5V ai 3.3V necessari per il modulo VGA è il seguente:

Anche se sullo schema c’è scritto LM317, voi userete un modello equivalente con  low-drop, in grado di stabilizzare con 5V in ingresso. Io qui avevo solo quello “sbagliato”, ma in questo caso di emergenza ho dovuto adattarmi (per fortuna il consumo del modulo VGA è basso).

Veniamo adesso al software. Questo è lo screenshot del programma in funzione:

Vediamo i comandi : per prima cosa apriremo la porta di comunicazione (Com 6 nello screenshot). Il pulsante da premere sarà [Open] che poi cambierà in [Close], come si vede nell’immagine. Una volta aperta la porta seriale (l’interfaccia USB-Seriale) si cliccherà il pulsante [Sync * 60] che invia per 60 volte il pacchetto SYNC al modulo VGA. Questo comando serve a sincronizzare il modulo VGA con il programma. Di solito dopo 25 tentativi la VGA-Cam risponde e allora si può dare il comando successivo, cliccando il pulsante [Initial] che invia le impostazioni per il formato dell’immagine. Si riceverà un ACK dal modulo. Dopo clicchiamo [Pack Size] che provvede a settare il modulo perché usi pacchetti dati da 32+6 bytes (ho tenuto bassa la quantità in previsione di un utilizzo di microcontrollore con poche risorse). Anche qui riceveremo un Ack, come si vede nello screenshot. Ora possiamo dare il comando [Snapshot] con cui il modulino “scatterà una foto” in formato 640×480. Dopo aver ricevuto l’Ack, clicchiamo finalmente il pulsante [Get Pic] e così inizierà la trasmissione dei dati relativi allo Snapshot memorizzato. A fine trasferimento, se tutto è andato bene, sulla directory di lavoro del programma troveremo il file jpegout.jpg, con la foto scattata. Qui sotto potete vedere un esempio di tale file. Sono io che sto provando il software !

Ho deciso di pubblicare l’intera cartella di progetto, contenente sia l’eseguibile sul path /release/Vga_Camera.exe, sia il file sorgente in FreeBASIC (con FireFly Visual Designer) sul path /forms/Form1.frm, così chi vorrà potrà modificare / migliorare il software a suo piacimento. Consiglio caldamente di leggere il manuale del modulo, disponibile in PDF sul sito SparkFun al link: C328_UM.pdf .

Si noti che, dopo qualche secondo senza inviare comandi, il modulo VGA si scollega ed è quindi necessario ripetere la procedura di Sync e successive. Se invece si continuano a dare comandi [Snapshot] e [Get Pic] il modulo rimane collegato e continua a fare il suo lavoro. Il tempo di trasmissione di una immagine JPG 640*480 a 115200 BPS è di circa 10 secondi.

Per quanto riguarda l’hardware, i collegamenti sono estremamente semplici. Di sotto nell’immagine potete vedere i 4 fili in uscita dal modulo:

Il filo rosso [3.3V] andrà collegato all’uscita del regolatore 3.3V ; il filo giallo TXD verrà collegato al pin RXD del modulo USB-Serial ; il filo verde RXD andrà al pin TXD del modulo USB-Serial e infine il filo nero GND andrà collegato sia al pin GND del modulo USB-Serial che al GND del regolatore a 3.3V. Tutto qui. Notate che ho usato un connettore USB “nudo” per prelevare direttamente i 5V per il regolatore. Lo vedete di fianco all’interfaccia USB-Serial.

Clausola di non assunzione di responsabilità.
Il programma o software descritto, liberamente prelevabile dal sito, è da considerarsi una “demo” gratuita e pertanto l’autore Emilio P.G. Ficara non fornirà alcun supporto, né si assumerà alcuna responsabilità per ogni eventuale problema, danno o conseguenza che dovesse presentarsi nel download o nell’esecuzione dell’applicazione.
Cliccando questo link per effettuare il download del file implicitamente dichiarate di aver letto e capito la clausola di non assunzione di responsabilità e di accettarla.

Verificate sempre il checksum MD5 dei files che scaricate ! In questo caso deve essere: 6933806A278014FC2E2E379F86922D88 ; se è diverso, il file è corrotto o non è quello originale, quindi non scompattatelo e buttatelo via ! Se invece è tutto ok, potete scompattarlo (usate il programma 7Z e la password: eficara).

Potete usare l’eseguibile anche su una chiavetta di memoria USB, in quanto non ha bisogno di installazione.