La scheda pico ha due porte i2c (Wire e Wire1) e diversi pin esterni su cui può essere montata la funzionalità Wire.
Il default si trova ai pin 6 e 7.
La scheda pico ha due porte i2c (Wire e Wire1) e diversi pin esterni su cui può essere montata la funzionalità Wire.
Il default si trova ai pin 6 e 7.
La programmazione di Raspberry pico può essere fatta dall’IDE arduino.
Per farlo è necessario predisporre il modulo nella modalità bootloader. Infatti, di default il modulo è predisposto per funzionare con python e quindi va resettato.
Per farlo è sufficiente tenere premuto il pulsante bootloader mentre si fornisce alimentazione e così facendo si aprirà una scheda di risorse del computer con il contenuto della memoria del raspberry.
Per fare l’upload del codice è necessario selezionare la porta che incomincia con u2f. Non va scelta la porta com4.
IN realtà è preferibile seguire la seguente procedura, come descritto al link Installing OpenVino for Movidius NCS2 on Raspberry Pi 4 – Intel Community
Cross-Compiling OpenVINO™ Toolkit and NCS2 Plugin Using… (intel.com)
Quando si giunge alla fase in cui è necessario installare docker, seguire la seguente guida:
Install Docker Engine on Raspbian | Docker Documentation
Nella documentazione di cui sopra, c’è un piccolo punto da correggere. Quando fa riferimento alle righe da cambiare in un file sh, in particolare, le seguenti:
77 checkSrcTree $OPENCV_HOME https://github.com/opencv/opencv.git 4.5.5-openvino-2022.1
Va aggiunto uno zero in fondo, in quanto non esistono tags di quella libreria con quel nome. Quindi la stringa corretta è la seguente:
77 checkSrcTree $OPENCV_HOME https://github.com/opencv/opencv.git 4.5.5-openvino-2022.1.0
Per compilare le demos contenute in openvino_dist/extras/open_model_zoo/demos
si deve lanciare il solito openvino_dist/setupvars.sh
e poi andare nel direttorio demos e lanciare il comando:
./build_demos.sh
Per farlo, c’è bisogno di scaricare il progetto thirdparty, che stranamente non compare nel progetto base.
Questo si scarica andando nel direttorio vuoto demos/thirdparty e lanciando:
git clone https://github.com/gflags/gflags.git
che è un progetto che è in dipendenza da demos.
Si può compilare anche un solo progetto demos, indicando il parametro –target=”nomeprogetto”.
Per eseguire le demos realizzate in python è necessario preliminarmente lanciare il seguente comando:
pip install <omz_dir>/demos/common/python
e successivamente installare i seguenti pacchetti:
sudo apt install libatlas-base-dev
sudo pip3 install pybind11
pip3 install scipy
Prima di eseguire i comandi python ricordarsi di eseguire il source seguente:
source (home)/openvino_dist/setupvars.sh
Per installazione su sistemi diversi da raspberry, si può seguire la guida ufficiale, come di seguito.
Per l’installazione è necessario usare pip.
Step 1: Create virtual environment
python -m venv openvino_env
Step 2: Activate virtual environment
source openvino_env\bin\activate
Step 3: Upgrade pip to latest version
python -m pip install --upgrade pip
Step 4: Download and install the package
pip install openvino-dev==2022.3.1
Vedere le istruzioni alternative in:
Install OpenVINO™ toolkit for Raspbian* OS — OpenVINO™ documentation — Version(2021.4)
La pagina con istruzioni alternative (a mo’ di tutorial) si trova qui:
OpenVINO, OpenCV, and Movidius NCS on the Raspberry Pi – PyImageSearch
Mancano i file per eseguire il tutorial, ma si possono eseguire altri tutorial presi in altre pagine.
Per caricare i models di openvino, fare riferimento alla seguente pagina:
Install OpenVINO™ Runtime for Raspbian OS — OpenVINO™ documentation — Version(2022.1)
Per installare il development tools, usare il seguente link:
Quando si esegue il comando
pip install openvino-dev[tensorflow2,mxnet,caffe]
questo non funziona a causa di un issue (PyPI .tar.gz missing editdistance/bycython.pyx · Issue #105 · roy-ht/editdistance (github.com)), con la libreria editdistance, che nella versione 0.6.2 non contiene il file editdistance/bycython.pyx
A questo punto, procedere con l’installazione manuale della libreria editdistance, scaricando il file che si trova nelle Releases (che sono misteriosamente corrette), al seguente link:
Release Release v0.6.2 · roy-ht/editdistance (github.com)
e poi lanciare pip install file.tgz
Quando si crea un repository dentro packagist.org è necessario tenerlo aggiornato con le modifiche apportate su github. In caso contrario le modifiche non verranno apportate ai progetti che utilizzano la libreria packagist.
Per farlo è sufficiente inserire un webhook in github.
Le istruzioni dettagliate si possono trovare alla pagina: Packagist .
La via semplificata è, tuttavia, quella indicata nei passaggi seguenti:
You can configure a GitHub webhook manually by using the following values:
https://packagist.org/api/github?username=pzavoli
application/json
push
event is enough.Il token da inserire nel webhook si trova alla pagina: Packagist, cliccando “Your Api Token”.
Per arrivare al webhook, in github, è sufficiente accedere al proprio repository e cliccare la rotellina “Settings”.
All’interno della pagina si trova il bottone Web Hooks.
Per il corretto funzionamento di progetti php è necessario, normalmente, adoperare librerie esterne.
Per farlo si utilizza sovente composer.
Questo è un gestore di dipendenze di librerie che consente di indicare quali librerie utilizzare e il programma composer le scaricherà in automatico dal proprio repository.
Le librerie vengono indicate in un file chiamato composer.json.
Un esempio di questo file è il seguente, utilizzato in un progetto con yii2:
{
"name": "yiisoft/yii2-app-advanced",
"description": "Yii 2 Advanced Project Template",
"keywords": ["yii2", "framework", "advanced", "project template"],
"homepage": "https://www.yiiframework.com/",
"type": "project",
"license": "BSD-3-Clause",
"support": {
"issues": "https://github.com/yiisoft/yii2/issues?state=open",
"forum": "https://www.yiiframework.com/forum/",
"wiki": "https://www.yiiframework.com/wiki/",
"irc": "irc://irc.freenode.net/yii",
"source": "https://github.com/yiisoft/yii2"
},
"minimum-stability": "stable",
"require": {
"php": ">=7.4.0",
"yiisoft/yii2": "~2.0.45",
"yiisoft/yii2-bootstrap5": "~2.0.2",
"yiisoft/yii2-symfonymailer": "~2.0.3",
"yiisoft/yii2-jui": "~2.0.0",
"pzavoli71/yii2-widget-datetimepicker": "*",
"yiisoft/yii2-bootstrap5": "@dev"
},
"require-dev": {
"yiisoft/yii2-debug": "~2.1.0",
"yiisoft/yii2-gii": "~2.2.0",
"yiisoft/yii2-faker": "~2.0.0",
"phpunit/phpunit": "~9.5.0",
"codeception/codeception": "^5.0.0 || ^4.0",
"codeception/lib-innerbrowser": "^3.0 || ^1.1",
"codeception/module-asserts": "^3.0 || ^1.1",
"codeception/module-yii2": "^1.1",
"codeception/module-filesystem": "^2.0 || ^1.1",
"codeception/verify": "^2.2",
"symfony/browser-kit": "^6.0 || >=2.7 <=4.2.4",
"yiisoft/yii2-jui": "~2.0.0",
"pzavoli71/yii2-widget-datetimepicker": "dev-master",
"kartik-v/yii2-datecontrol": "dev-master",
"kartik-v/yii2-widgets": "@dev",
"kartik-v/yii2-widget-datepicker": "dev-master",
"twbs/bootstrap-icons":"*" ,
"yiisoft/yii2-bootstrap5": "@dev"
},
"autoload-dev": {
"psr-4": {
"common\\tests\\": ["common/tests/", "common/tests/_support"],
"backend\\tests\\": ["backend/tests/", "backend/tests/_support"],
"frontend\\tests\\": ["frontend/tests/", "frontend/tests/_support"]
}
},
"config": {
"allow-plugins": {
"yiisoft/yii2-composer" : true
},
"process-timeout": 1800,
"fxp-asset": {
"enabled": false
}
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
}
]
}
La parte più importante è quella indicata con “require” che contiene l’elenco delle librerie con le relative versioni.
Può capitare di dover utilizzare una libreria non fornita, oppure di doverne utilizzare una modificata da una libreria esistente.
Composer preleva le librerie da progetti github, pertanto se si deve modificare una libreria già esistente è necessario effettuarne un fork.
Nel repository github corrispondente è necessario inserire un file denominato composer.json, così fatto:
{
"name": "pzavoli71/yii2-widget-datetimepicker",
"description": "An updated version of kartik-v datetimepicker to enable dd/mm/yyyy hh:ii format datetime",
"keywords": [
"yii2",
"extension",
"widget",
"select2",
"form",
"datetime",
"picker",
"jquery",
"plugin"
],
"homepage": "https://github.com/pzavoli71/yii2-widget-datetimepicker",
"type": "yii2-extension",
"license": "BSD-3-Clause",
"authors": [
{
"name": "Paride Zavoli",
"email": "paride.zavoli71@gmail.com",
"homepage": "https://fattodate.org"
}
],
"require": {
"kartik-v/yii2-krajee-base": ">=3.0.4"
},
"autoload": {
"psr-4": {
"kartik\\datetime\\": "src"
}
},
"extra": {
"branch-alias": {
"dev-master": "1.5.x-dev"
}
}
}
Successivamente si deve caricare il progetto nuovo nel repository di composer che si trova nel sito Packagist.org.
Qui è necessario registrarsi e successivamente premere su https://packagist.org/packages/submit indicando nel campo di testo il path del progetto github che contiene la libreria e il file composer.json.
A quel punto il progetto è pronto per essere utilizzato come libreria.
Ogni tanto capita di dimenticare la password di root di MySql.
In tal caso viene a mancare la possibilità di accedere al server per fare manutenzione, restore, backup dei database.
Per ripristinare una password di accesso come root è necessario effettuare le seguenti operazioni:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=c:\tmp\mysql-init.txt
Per la creazione di un nuovo progetto yii2 si può utilizzare il comodo comando composer.
Il problema è che composer funziona, attualmente, con la versione di php fino alla 8.1, pertanto se qualcuno avesse installato la versione più recente, questa non funzionerà per la creazione di un nuovo progetto.
Si può ovviare a questo facendo in modo di lanciare composer con una versione di php precedente.
Per farlo, è sufficiente posizionarsi all’interno del direttorio dove si intende generare il progetto e poi dare il seguente comando:
c:\php\php7.4.33\php.exe c:\ProgramData\ComposerSetup\bin\composer.phar create-project yiisoft/yii2-app-advanced advanced
intendendo che php sia nel direttorio c:\php\php7.4.33.
Questo farà sì che composer usi la versione precedente di php e il tutto funzionerà.
p.s. un comando per aggiornare la versione di composer è il seguente:
composer self-update --1
Per ripristinare composer alla nuova versione:
composer self-update --2
Per creare un progetto secondo nuovi std si può usare come template di progetto il seguente:
composer create-project pzavoli71/yii2-app-advanced -s dev provina
il quale creerà il progetto nel direttorio “provina”.
Una volta eseguito il comando ci si dovrà spostare nel direttorio “provina” e lanciare il seguente comando:
php init
il quale si limiterà a generare alcuni file di servizio che non vengono salvati nel repository (params-local.php, ecc.) che andranno configurati per l’accesso al db,per la e-mail, ecc.
Prima di lanciare il comando che creerà le tabelle di base nel DB è necessario assicurarsi che quando si lancino comandi console, questi non utilizzino parametri legati al WEB. In particolare, è necessario rimuovere il richiamo al main.php dentro al file yii, commentando la relativa riga:
$config = yii\helpers\ArrayHelper::merge(
//require DIR . '/common/config/main.php',
require DIR . '/common/config/main-local.php',
require DIR . '/console/config/main.php',
require DIR . '/console/config/main-local.php'
);
Infatti nel file main.php c’è solitamente il parametro che configura la request, che in modalità console non funziona:
'request' => [
'parsers' => [
'multipart/form-data' => 'yii\web\MultipartFormDataParser'
],
],
Ora si possono creare le tabelle di base che serviranno per la gestione degli utenti e dei permessi, lanciando il comando:
php yii migrate
il quale si limiterà a cercare comandi nel direttorio console/migrations e li lancerà uno per volta.
Per un po’ di sano divertimento vi consiglio di visitare la pagina YouTube di Marco, mio figlio.
Nel video seguente, Marco sfida l’Atalanta, squadra di serie A, con la ben più modesta, ma mitica, F.C. San Marino.
Come andrà a finire?
Fifa 23, Marco prova l’impossibile: Atalanta contro San Marino in Coppa Italia – YouTube
A volte la versione di npm non è aggiornata e si desidera aggiornarla all’ultima.
E’ necessario installare n:
sudo npm install -g n
E poi lanciare l’aggiornamento di npm:
sudo n lts
sudo n latest
E poi si lanci la cancellazione della vecchia versione:
sudo n prune
Tutti sanno che Kicad non è dotato di un autorouter, pertanto è necessario utilizzare moduli esterni per poterlo utilizzare.
Esiste un comodo plugin, denominato FreeRouting, che può essere utilizzato allo scopo.
Il plugin va scaricato alla pagina: freerouting/integrations/KiCad at master · freerouting/freerouting (github.com)
Il direttorio kicad-freerouting va salvato nel direttorio dei plugins di kicad. Le istruzioni per installarlo sono contenute alla pagina: freerouting/freerouting: Advanced PCB auto-router (github.com)
Per poter funzionare, il plugin necessita di un jre di java aggiornato alla versione 61 (jre 1.17 almeno). In assenza di apposito jdk sul PC si può scaricare quello desiderato dal sito: Thank You | Adoptium scegliendo il sistema operativo, la versione e il tipo (jdk oppure jre).
Se si decide di installare il nuovo jdk o jre sul PC Kicad lo rileverà in automatico. Se il vostro PC avesse già un’altra installazione del jdk con versione diversa, si può intervenire direttamente nel plugin.
Per fare questo si deve modificare il file plugin.py, presente nel direttorio di freerouting appena scaricato.
La riga da modificare è la 49 e va sostituito il path di java con quello reale, per esempio:
self.java_path = 'C:/WinApp/OpenJDK17U-jre_x64_windows_hotspot_17.0.4.1_1/jdk-17.0.4.1+1-jre/bin/java'
A questo punto è sufficiente lanciare il plugin quando in maschera di pcbnew abbiamo un PCB (ricordarsi di scontornare il pcb con un rettangolo nel layer edge.cuts, altrimenti il sistema rifiuterà di funzionare.