Il Coronavirus si può curare ?

Sembra proprio di sì…

L’Ospedale di Mantova e quello di Pavia hanno sperimentato con successo questa terapia, salvando pazienti in terapia intensiva.
Perché nessuno ne parla?

Forse perché scombussolerebbe i piani di preparazione del vaccino “tana libera tutti” ?

Da contro.tv di Massimo Mazzucco

Configurare Alphabot per Raspberry

Per la configurazione di Alphabot con Raspberry è preferibile adottare una modalità di accesso remoto, magari con openvnc.

Per utilizzarlo è necessario abilitarlo dal menu con

sudo raspi-config

Si deve scompattare la cartella compressa distribuita con Alphabot che ha la seguente struttura:

Arduino …

Raspberry

+ Alphabot

++mjpg-streamer

++python

++Web-Control

Le cose importanti si trovano dentro Web-Control, in particolare vi si trova il file main.py che contiene un semplice eseguibile che trasforma il raspberry in un server Web a tutti gli effetti.

Per farlo utilizza una libreria python che si chiama bottle. Si installa con:

pip install bottle

Successivamente sarà necessario dare i permessi di esecuzione (777) a mjpeg_streamer che si trova dentro mjpeg_streamer_experimental.

A questo punto è sufficiente eseguire

python main.py

Il server sarà raggiungibile all’indirizzo

http://192.168.xxx.xxx:8000

dal quale si potrà controllare il robot con dei semplici comandi direzionali. Lo streaming vero e proprio sarà disponibile alla porta 8080.

Openvino – download dei modelli di inferenza in formato IR

Per poter utilizzare openvino con i modelli già predisposti da intel è necessario averli in formato ottimizzato.

Per far ciò è sufficiente accedere alla directory

/opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader

qui si deve lanciare l’aggiornamento delle dipendenze:

python3 -mpip install –user -r ./requirements.in

e successivamente si può lanciare il download di tutti i modelli:

./downloader.py –all

Questo comando trasferirà tutti i modelli nella directory intel, pronti per essere utilizzati.

OpenVino – creare i progetti demo con visual studio 2019

Per iniziare ad usare OpenVino è possibile utilizzare i modelli demo, contenuti nel direttorio:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\open_model_zoo\demos

Prima di utilizzarli è necessario generare i progetti visual studio per ciascun demo. E’ sufficiente lanciare il comando:

build_demos_msvc.bat

Questo lancerà tutta una serie di comandi cmake, uno per ogni progetto, generando tutti i progetti all’interno del direttorio:

C:\Users\NomeUtente\Documents\Intel\OpenVINO\omz_demos_build

Questi si potranno lanciare nell’IDE visual studio uno alla volta oppure utilizzando la comoda soluzione demos.sln che li genererà tutti insieme.

Il risultato sarà compilato nel direttorio:

C:\Users\NomeUtente\Documents\Intel\OpenVINO\omz_demos_build\intel64\Debug

Ovviamente si potranno compilare anche in versione Release.

Prima di lanciare uno qualsiasi degli eseguibili generati è necessario impostare alcune variabili d’ambiente. E’ sufficiente eseguire il comando setupvars.bat che si trova in:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\bin

e nello stesso prompt andare nel direttorio dove si trovano gli eseguibili generati e eseguire da lì i programmi.

OpenVino – scaricare i modelli di apprendimento per Inferenza

Dopo aver configurato OpenVino e scaricato tutte le dipendenze, incluso python3, per eseguire inferenze sui diversi modelli disponibili è necessario scaricare i modelli disponibili online.

Questo modelli sono file con estensione .xml e .bin e ve ne sono per ogni tipo di inferenza, come face detection, pose detection, car detection e così via.

Per scaricare questi documenti è necessario aprire una finestra del prompt e eseguire il comando:

python ./downloader.py –all –output_dir c:/intel/models

Questo scaricherà tutto l’albero dei modelli di inferenza nel direttorio indicato.

Il comando downloader.py si trova nel direttorio:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\open_model_zoo\tools\downloader

Antony R. Mawson – studio sui vaccini

https://archive.md/oOMgY#selection-2289.0-17667.14

In questo studio si mettono in evidenza, ricercando attraverso fonti ottimamente documentate, i reali rischi a cui si va incontro con le vaccinazioni di massa.

Fa bene studiare qualcosa di scientifico, ogni tanto.

Qui il link https://sadefenza.blogspot.com/2019/03/vaccinato-vs-non-vaccinato-studio-di.html?m=1

Vaccinazioni di massa – valutiamo scientificamente i rischi

In questo articolo proviamo a raccontare quello che Paolo De Bernardi ha riportato in un suo documento, in maniera quasi enciclopedica, in relazione a quali sono le reali implicazioni della vaccinazione di massa.

L’articolo elenca in maniera davvero scientifica, citando fonte per fonte, gli avvenimenti che hanno condotto alla sciagurata situazione attuale italiana – e non solo – degli obblighi vaccinali, arrivando a smontare le finte argomentazioni scientifiche portate a loro supporto da cosiddetti “medici” e “scienziati”.

Il documento si trova in http://www.dmi.unipg.it/~mamone/sci-dem/nuocontri_1/debernardi.pdf .

Compilare wxWidgets

Il progetto wxwidgets è davvero fenomenale: un immenso framework di librerie cross-platform che consente di creare facilmente applicativi c++, facili e di bell’aspetto.

Prima di utilizzarli è necessario compilarli, per ottenere librerie dll e lib da usare con il compilatore visual c++.

Infatti, pur essendo disponibili delle librerie preconfezionate, sul sito wxwidgets.org, queste non sempre sono adatte al compilatore che si sta usando. Ricordo, infatti, che i file lib necessari per la compilazione con librerie statiche e dinamiche sono dipendenti dal compilatore in uso.

Per usarle con visual c++ è sufficiente aprire il progetto visual studio che si trova nel direttorio build/msw/wx_vc16.sln (o quello corrispondente alla versione del compilatore in uso). Se non esiste la soluzione adatta al proprio compilatore, se ne può aprire una di una versione precedente e chiedere al compilatore di aggiornarla alla versione corrente.

Una volta aperto il progetto è necessario impostare la versione (Debug DLL o Release Dll) che si vuole compilare, a seconda che si voglia anche effettuare il debug con i simboli della libreria e successivamente l’architettura (x86 o x64).

A questo punto è sufficiente dare il comando di compilazione e alla fine del processo di compilazione si ritroveranno le dll e i file lib di tutte le librerie wxwidgets nel direttorio lib/vc_x64_dll. Per comodità io rinomino il direttorio aggiungendo anche il numero di versione del compilatore (vc142_x64_dll) per poter tenere distinte e ben comprensibili le varie versioni compilate.

Questo direttorio va aggiunto al PATH di sistema per le dll, e al progetto dove si trova indicato i path delle librerie.

Per i file include si possono fornire i path include, dove sono presenti sia i file msvc che quelli standard.

A quel punto si possono utilizzare le librerie.

Configurare ESP32 cam

Per caricare lo sketch da arduino è necessario selezionare la scheda ESP32 WROOVER e come modulo nel programma selezionare AI-TINKER.

Il modulo ESP32-CAM non possedendo una porta USB richiede, come interfaccia tra se’ ed una delle porte USB del PC , un adattatore USB-UART (*) , CP2102 o FT232RL USB to TTL Serial Converter, al fine di poterlo programmare tramite i suoi 2 pins GPIO3 (U0R) e GPIO1 (U0T) (serial pins).

Si tenga presente che, a seconda della soluzione adottata ( modulo FTDI o USB-TTL cable), sara’ necessario un cavo microUSB-USB per poter collegare l’adattatore ad un computer nel caso modulo FTDI e non lo sara’ nel caso USB-TTL cable – vedasi nota(*) e foto nr1_0, nr1_1 .

Prima di caricare uno sketch, ( nel nostro caso File > Examples > ESP32 > Camera > CameraWebServer ) con l’ IDE di Arduino, sara’ necessario soddisfare le seguenti condizioni:

1 ° – Verificare ( in ambiente Windows) che la porta COMx associata all’ FTDI converter ( modulo o USB-TTL cable) sia stata riconosciuta da Windows , altrimenti si proceda con l’installazione del driver FTDI – foto nr2

2 ° – se risultano gia’ installate le librerie espressif per la board esp32 si dovra’ procedere con il loro aggiornamento all’ultima versione tramite il Board Manager, in caso contrario si dovranno installare seguendo la procedura richiesta.

3 ° – configurare l’IDE per la scheda ESP32 Wrover Module ( per tutti gli altri parametri vedasi foto allegata nr3)

4 ° – il pin GPIO0 dell’ESP32 dovra’ essere cortocircuitato (tramite jumper) con il pin GND dell’ESP32 per poter abilitare la modalità flash ( foto nr1_1)- Se non viene soddisfatta questa condizione la compilazione dello sketch. verra’ abortita dando un errore di connection time-out.
5 ° – a questo punto il pulsante di reset dell’ESP32 dovra’ essere premuto –

6 ° – leggere lo sketch di esempio e procedere con l’editing selezionando ( uncomment) la camera appropriata ( AI-THINKER), deselezionando ( comment) quella di default ed inserendo, nelle due righe successive, le credenziali del local network : SSID e password al posto degli asterischi – foto nr3. Procedere quindi con la compilazione e l’uploading.

7 ° Dopo il caricamento dello sketch , dovra’ essere rimossa la connessione tra GPIO0 e GND , aperto il Serial Monitor con baud rate 115200 ed infine eseguito un reset premendo il relativo pulsante . A questo punto, se non si sono presentati intoppi, comparira’ la scritta: Camera Ready! ( foto nr3) seguita dalla URL che dovra’ essere inserita nel campo dedicato del browser.

8.1 ° – Qualora, come nel mio caso, si opti per la connessione su smartphone con Android ( foto nr5_0,nr5_1) e’ sufficiente creare ed abilitare un hotspot WiFi avente SSID e password identici a quelli dello sketch -( vedasi foto allegate ) e digitare l’URL composta da http://<l’indirizzo IP della ESP32-CAM> ( che trovate sulla schermata Mobile Hotspot – Connected Devices – vedi foto nr5_0 e nr5_1), nel browser Chrome di Android.
.
A questo punto dovrebbe apparire sulla sinistra della pagina Web ( foto nr6_0 e nr6_1), la GUI usata per controllare vari parametri della fotocamera. E’ sufficiente premere Get Still per scattare una foto, Start Stream per ricevere un flusso video dalla videocamera o Enroll Face per avviare il riconoscimemto facciale.
Sempre da telefonino, per salvare l’immagine sul suo supporto storage di default, e’ sufficiente premere con un dito sull’area dell’immagine per far apparire una finestra con le opzioni per il suo salvataggio.

(* )Può essere utilizzato un cavo seriale USB-TTL, nel qual caso possiamo collegare direttamente i suoi 4 terminali femmina (identici ai terminali femmina di un jumper wire) ai pins dell’ ESP32-CAM come mostrato nella foto allegate.
Le uscite dai due terminali femmina , cavo colore Bianco( RX) e cavo colore Verde(Tx) sono di livello 3.3V, quindi adatte per l’interfacciamento con l’ESP32-CAM.

Connessioni USB-TTL cable to ESP32-CAM:
Dal Nero al pin GND, dal Rosso al pin 5V, dal Bianco(Rx) al pin Tx , dal Verde(Tx) al pin Rx.
E’ questa la soluzione da me adottata.

(**) note
1. Please ensure that the module input power is at least 5V 2A, otherwise the picture will have a chance of water ripple.

2. The ESP32 GPIO32 pin controls the camera power. When the camera is working, please lower the GPIO32.

3. Since IO0 is connected to the camera XCLK, please leave IO0 floating when using it, please do not connect high and low level.

(***)
On-Board vs IPEX Antenna
Default jumper set for on-board antenna.
To improve the signal with an IPEX WiFi antenna you need to change the set of jumper with a bit of very careful soldering .

const char* ssid = “WIFI_SSID”; //WIFI SSID
const char* password = “WIFI_PWD”; //WIFI password
String token = “TOKEN_TELEGRAM_BOT”;
String chat_id = “CHAT_ID”;

include

include

include

include “soc/soc.h”

include “soc/rtc_cntl_reg.h”

include “esp_camera.h”

//CAMERA_MODEL_AI_THINKER

define PWDN_GPIO_NUM 32

define RESET_GPIO_NUM -1

define XCLK_GPIO_NUM 0

define SIOD_GPIO_NUM 26

define SIOC_GPIO_NUM 27

define Y9_GPIO_NUM 35

define Y8_GPIO_NUM 34

define Y7_GPIO_NUM 39

define Y6_GPIO_NUM 36

define Y5_GPIO_NUM 21

define Y4_GPIO_NUM 19

define Y3_GPIO_NUM 18

define Y2_GPIO_NUM 5

define VSYNC_GPIO_NUM 25

define HREF_GPIO_NUM 23

define PCLK_GPIO_NUM 22

int gpioPIR = 13; //PIR Motion Sensor
boolean remoteMode = false;

void setup()
{
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);

Serial.begin(115200);
delay(10);
WiFi.mode(WIFI_STA);
Serial.println(“”);
Serial.print(“Connecting to “);
Serial.println(ssid);
WiFi.begin(ssid, password);
long int StartTime=millis();
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
if ((StartTime+10000) < millis()) break;
}

Serial.println(“”);
Serial.println(“STAIP address: “);
Serial.println(WiFi.localIP());
Serial.println(“”);

if (WiFi.status() != WL_CONNECTED) {
Serial.println(“Reset”);

ledcAttachPin(4, 3);
ledcSetup(3, 5000, 8);
ledcWrite(3,10);
delay(200);
ledcWrite(3,0);
delay(200);    
ledcDetachPin(3);
delay(1000);
ESP.restart();

}
else
{
ledcAttachPin(4, 3);
ledcSetup(3, 5000, 8);
for (int i=0;i<5;i++) {
ledcWrite(3,10);
delay(200);
ledcWrite(3,0);
delay(200);
}
ledcDetachPin(3);
}

camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;

if(psramFound())
{
config.frame_size = FRAMESIZE_VGA;
config.jpeg_quality = 10; //0-63 lower number means higher quality
config.fb_count = 2;
}
else
{
config.frame_size = FRAMESIZE_QQVGA;
config.jpeg_quality = 12; //0-63 lower number means higher quality
config.fb_count = 1;
}

// camera init
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK)
{
Serial.printf(“Camera init failed with error 0x%x”, err);
delay(1000);
ESP.restart();
}

sensor_t * s = esp_camera_sensor_get();
s->set_framesize(s, FRAMESIZE_XGA);

}

ESP32-WROOOM

Il modulo corrisponde essenzialmente a quello che Arduino chiama Esp32 Web Module.

In Arduino è necessario scegliere quella scheda, configurare eventualmente una velocità di connessione inferiore ai 921000 b/s (per esempio 115200) e lasciare la configurazione inalterata.

Per fare il test con un WebServer si può cominciare da AdvancedWebServer, della libreria degli esempi.

Per la compilazione è necessario tenere premuto il bottone BOOT, in alto, per la durata della programmazione.

Successivamente, per azionare il dispositivo offline è necessario spingere il bottone EN e il programma parte.

Per vedere l’indirizzo IP è sufficiente collegare il monitor seriale. Su questo può essere fatto il log dell’indirizzo.