Fino ad oggi calcolavo la durata teorica di funzionamento di un utilizzatore (tipicamente una Arduino) connesso ad una batteria LiPo dividendo i mAh della batteria per il consumo in ampere dell'utilizzatore
Per esempio: con una batteria da 2500 mAh ed una Arduino Uno in configurazione base con consumo da 45 mA stimavo il tempo di funzionamento in 2500 mAh/45 mA cioe' circa 55 ora
In realta' il calcolo e' sbagliato perche' si deve tenere conto della potenza in Watt (o meglio si deve tenere in conto della potenza nel caso in cui il voltaggio della batteria e dell'utilizzatore sono identici ....ma questo e' un caso particolare)
Prendendo l'esempio precedente una batteria LiPo da 2500 mAh con un 3.7 ha un potenza di 9.25 Wh, La Arduino Uno ha un consumo di circa 45mA a 5 V pèari a 0.225 W. Dividendo 9.25 Wh per 0.225 h si ottiene che il tempo di funzionamento di circa 41 ore (valore sensibilmente differente dal calcolo, errato, precedente)
venerdì 1 marzo 2019
giovedì 28 febbraio 2019
AC6 System Workbench per Debian 9
ed alla fine sono riuscito ad avere una IDE per STM32 funzionante su Debian 9
Per l'installazione l'utente deve poter essere nei sudoers
Il problema era piuttosto semplice alla fine e viene dopo l'installazione. Una volta installato System Workbench con l'installer la compilazione del programma funziona in modo corretto ma viene generato un errore da GDB
la soluzione e' installare libncurses e creare un link simbolico tra la versione 6 32bit e la versione 5 (non disponibile nel repository...basta il symlink)
root@debian:/usr/lib/i386-linux-gnu# ln -s libncurses.so.6 libncurses.so.5
Per l'installazione l'utente deve poter essere nei sudoers
Il problema era piuttosto semplice alla fine e viene dopo l'installazione. Una volta installato System Workbench con l'installer la compilazione del programma funziona in modo corretto ma viene generato un errore da GDB
la soluzione e' installare libncurses e creare un link simbolico tra la versione 6 32bit e la versione 5 (non disponibile nel repository...basta il symlink)
root@debian:/usr/lib/i386-linux-gnu# ln -s libncurses.so.6 libncurses.so.5
User Button su STM32 Nucleo 64 con AC6 System Workbench
Ripartendo da questo post qui si studia l'interazione con lo User Button della STM32F446RE
Se l'utente preme lo User Button viene cambiato lo stato del led LD2
-------------------------------------------------------------
while (1)
{
if (!HAL_GPIO_ReadPin(B1_GPIO_Port,B1_Pin)) {
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
}
HAL_Delay(100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
-------------------------------------------------------------
Se l'utente preme lo User Button viene cambiato lo stato del led LD2
-------------------------------------------------------------
while (1)
{
if (!HAL_GPIO_ReadPin(B1_GPIO_Port,B1_Pin)) {
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
}
HAL_Delay(100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
-------------------------------------------------------------
mercoledì 27 febbraio 2019
Raspberry e Windows 10
E' di qualche giorno fa la notizia di poter installare Windows 10 (versione ARM) su Raspberry...in realta' gia' qualche anno fa Microsoft aveva rilasciato una versione di Windows per Raspeberry ma si trattava di una versione priva di desktop ed indirizzata all'IoT
Il progetto si trova a questo indirizzo http://jhanc.altervista.org/jargon/Intro.html ma diciamo che le cose sono partite subito un po' male ...l'installer non voleva saperne di funzionare
Dopo un po' di lettura del forum degli sviluppatori in cui venivano descritti errori e rimedi l'installazione e' andata a buon fine
ma il problema principale e' che la Raspberry con il solo desktop di Windows 10 e' sempre in picco con il processore sopra al 90% se non al 100%. Il sistema quindi non risponde ai comandi (se non molto lentamente). Non oso pensare quando l'utente inizia a fare girare un applicativo
In conclusione un progetto interessante ma piu' una curiosita' che non uno strumento da utilizzare
Il progetto si trova a questo indirizzo http://jhanc.altervista.org/jargon/Intro.html ma diciamo che le cose sono partite subito un po' male ...l'installer non voleva saperne di funzionare
Dopo un po' di lettura del forum degli sviluppatori in cui venivano descritti errori e rimedi l'installazione e' andata a buon fine
ma il problema principale e' che la Raspberry con il solo desktop di Windows 10 e' sempre in picco con il processore sopra al 90% se non al 100%. Il sistema quindi non risponde ai comandi (se non molto lentamente). Non oso pensare quando l'utente inizia a fare girare un applicativo
In conclusione un progetto interessante ma piu' una curiosita' che non uno strumento da utilizzare
Blink Led su STM32 Nucleo 64 con AC6 System Workbench
Non riuscendo ad installare una IDE funzionante su Linux sono passato a Windows e le cose sono migliorate (anche se non e' una passeggiata)
In questo esempio viene mostrato come lanciare un programma per far lampeggiare il led su una scheda STM32F446RE Nucleo 64 utilizzando STM32CubeMX per impostare il progetto di base, AC6 SystemWorkbench per compilare e debuggare il codice
Si installa la IDE AC6 System Workbench con la toolchain GCC da http://www.openstm32.org/HomePage. Si tratta di una versione di Eclipse con i plugin gia' installati e con GCC, GDB per Arm ed i driver STLink inclusi
In seguito si crea un nuovo progetto in STM32CubeMX
Si seleziona Start my project from STBoard, nella finestra di ricerca si digita Nucleo e si seleziona NUCLEO-F446RE. Nel caso in cui il firmware della scheda non sia mai utilizzato si dovra' scaricare (e' un pacchetto corposo)
Si fa doppio clic sulla foto della scheda e si risponde yes ad Initialize all peripherals.
Si va in Project Manager, si sceglie un nome per il progetto e nella ToolChain/IDE si indica SW4STM32.
Si apre in progetto e nel ciclo while (1) riga 99 si inserisce il codice. I progetti creati con STNM32CubeMX sono generati con le librerie HAL (un layer di astrazione sull'hardware...ci sono commenti discordanti sull'utilizzo di questo sistema)
---------------------------------------------------------
while (1)
{
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
---------------------------------------------------------
da STM32CubeMX si vede che la porta GPIO a cui e' collegato al porta denominata LD2_GPIO con il nome del pin denominato LD2_Pin
Il comando TooglePin cambia semplicemente lo stato del Pin (se e' attivo lo disattiva e l'ovvio contrario)
Si fa collega la scheda alla porta USB ed abbbiamo il programma in funzione, L'aspetto piu' interessante e' il fatto di poter eseguire un debug step by step del codice
Per concludere segnalo che il codice di base di STM32CubeMX abilita la porta seriale UART2. Per inviare messaggi sulla porta seriale via USB e' sufficiente
---------------------------------------------------------
char *msg = "Test\n\r";
In questo esempio viene mostrato come lanciare un programma per far lampeggiare il led su una scheda STM32F446RE Nucleo 64 utilizzando STM32CubeMX per impostare il progetto di base, AC6 SystemWorkbench per compilare e debuggare il codice
Si installa la IDE AC6 System Workbench con la toolchain GCC da http://www.openstm32.org/HomePage. Si tratta di una versione di Eclipse con i plugin gia' installati e con GCC, GDB per Arm ed i driver STLink inclusi
In seguito si crea un nuovo progetto in STM32CubeMX
Si seleziona Start my project from STBoard, nella finestra di ricerca si digita Nucleo e si seleziona NUCLEO-F446RE. Nel caso in cui il firmware della scheda non sia mai utilizzato si dovra' scaricare (e' un pacchetto corposo)
Si fa doppio clic sulla foto della scheda e si risponde yes ad Initialize all peripherals.
Si va in Project Manager, si sceglie un nome per il progetto e nella ToolChain/IDE si indica SW4STM32.
Si apre in progetto e nel ciclo while (1) riga 99 si inserisce il codice. I progetti creati con STNM32CubeMX sono generati con le librerie HAL (un layer di astrazione sull'hardware...ci sono commenti discordanti sull'utilizzo di questo sistema)
---------------------------------------------------------
while (1)
{
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
---------------------------------------------------------
da STM32CubeMX si vede che la porta GPIO a cui e' collegato al porta denominata LD2_GPIO con il nome del pin denominato LD2_Pin
Il comando TooglePin cambia semplicemente lo stato del Pin (se e' attivo lo disattiva e l'ovvio contrario)
Si fa collega la scheda alla porta USB ed abbbiamo il programma in funzione, L'aspetto piu' interessante e' il fatto di poter eseguire un debug step by step del codice
Per concludere segnalo che il codice di base di STM32CubeMX abilita la porta seriale UART2. Per inviare messaggi sulla porta seriale via USB e' sufficiente
---------------------------------------------------------
char *msg = "Test\n\r";
HAL_UART_Transmit(&huart2, (uint8_t*)msg, strlen(msg), 0xFFFF);
---------------------------------------------------------
I parametri sono di default 115200 8N1 ma si possono modificare nella funzione MX_USART2_UART_Init contenuta in main.c
martedì 26 febbraio 2019
MBed IDE per STM32 Nucleo STM32F446RET6
Lo ammetto, per ora non sono riuscito ad installare una IDE locale per sviluppare su STM32 su Linux. Sono arrivato a compilare il codice con AC6 System Workbench ma non riesco a fare il debug per problemi con libopencm3 ed il server stlink
Usando l'IDE online per MbedOS le cose sono decisamente piu' lineari anche perche' il codice e' astratto dall'hardware
Per iniziare il progetto si deve prima selezionare l'hardware in uso
Successivamente si puo' usare un codice di esempio oppure scrivere da zero
Al momento della compilazione viene scaricato un file .bin
Per caricare il file .bin sulla scheda si usa il software StLink traminte il comando
st-flash write programma.bin 0x8000000
La scheda che ho usato (la STM32F446RET6) ha un ST-LINKV2 debugger integrato per cui e' sufficiente collegare la porta USB
Usando l'IDE online per MbedOS le cose sono decisamente piu' lineari anche perche' il codice e' astratto dall'hardware
Per iniziare il progetto si deve prima selezionare l'hardware in uso
Successivamente si puo' usare un codice di esempio oppure scrivere da zero
Al momento della compilazione viene scaricato un file .bin
Per caricare il file .bin sulla scheda si usa il software StLink traminte il comando
st-flash write programma.bin 0x8000000
La scheda che ho usato (la STM32F446RET6) ha un ST-LINKV2 debugger integrato per cui e' sufficiente collegare la porta USB
venerdì 22 febbraio 2019
Olivetti M24 incontra monitor LCD VGA
Quando usavo quotidianamente l'Olivetti M24 (primi anni 90) il problema piu' sensibile era quello di avere una scheda grafica con risoluzione CGA ed una risoluzione di 640 pixels ma solo a due colori....in un mondo di VGA era un dettaglio non d poco
Solo in questi giorni ho scoperto che e' possibile montare una scheda VGA sugli slot VGA (disattivando la scheda grafica nativa) agendo sui microswitch e addirittuta e' possibile usare un comune monitor VGA usando la scheda grafica interna. Lo schema delle connessioni e' il seguente
Con mia grande sorpresa ha funzionato alla prima nonostante il monitor continuasse a lamentare un fuori frequenza
Solo in questi giorni ho scoperto che e' possibile montare una scheda VGA sugli slot VGA (disattivando la scheda grafica nativa) agendo sui microswitch e addirittuta e' possibile usare un comune monitor VGA usando la scheda grafica interna. Lo schema delle connessioni e' il seguente
Questo ' il connettore con un DB 25 femmina ed un connettore VGA (rispetto allo schema Olivetti dove e' presente un D15 con due file di pin ho usato un DSUB DB15 a 3 file di pin perche' e' lo standard dei monitor VGA ormai da molti anni...la numerazione risulta identica)
Iscriviti a:
Post (Atom)
Change Detection with structural similarity
L'idea di base e' quella di cercare le differenze tra le due immagini sottostanti Non e' immediatamente visibile ma ci sono dei ...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...