martedì 20 aprile 2021

martedì 30 marzo 2021

Certificato Codemotion Online Tech Conference 2021 - Italian Edition

 



Lettore file UBX in Python

uno script scritto di fretta per risolvere un problema di debug sulla trasmissione via radio di un file ubx 

magari puo' servire a qualcun altro

=================================================

def crc_check(valore):

global ck_a

global ck_b

ck_a = (ck_a+valore) % 256

ck_b = (ck_b+ck_a) % 256

#print "CK_A : " + str(hex(ck_a)) + "  CK_B : " + str(hex(ck_b))


#file = open('acm0_remoto.ubx', 'r')

#file = open('usb0.ubx', 'r')

file = open('arcetri_ucenter.ubx', 'r')

#file = open('orto.ubx', 'r')

off=0

fine=0

ck_a = 0

ck_b = 0


good = 0

bad = 0


pacchetto = -1

while 1:

char = file.read(1)

off=off+1

pacchetto = ""

if ord(char) == 181: #B5

pacchetto = pacchetto + char

if (off == (fine+1)):

print "OK"

inizio = off -1

ck_a = 0

ck_b = 0

char = file.read(1)

off=off+1

#pacchetto = pacchetto + char

if ord(char) == 98: #62

#

if (inizio == fine + 1):

print "////////////////////// OK ////////////////"

print "/////////////////// " + hex(lungh) +" ////////////////"

#good = good + 1

else:

print "******************** ERRORE **************"

print "*****************DIFF " + hex(inizio-fine) + "*********"

#somma_diff = somma_diff + (inizio-fine)

#bad = bad+1

print "================================================="

print "======GOOD :" + str(good) + "==========BAD :"+ str(bad) + "==========================="

print "================================================="

pacchetto = pacchetto + char

print "Offset inizio: " + hex(inizio)

char = file.read(1)

pacchetto = pacchetto + char

off=off+1

print "Message Class: " + hex(ord(char)),

if (ord(char) == 1):

print " NAV ",

if (ord(char) == 2):

print " RXM ",

if (ord(char) == 4):

print " INF ",

if (ord(char) == 5):

print " ACK ",

if (ord(char) == 6):

print " CFG ",

if (ord(char) == 10):

print " MON ",

if (ord(char) == 11):

print " AID ",

if (ord(char) == 13):

print " TIM ",

classe = ord(char)

crc_check(ord(char))

char = file.read(1)

pacchetto = pacchetto + char

off=off+1

print " Message ID: " + hex(ord(char)),

crc_check(ord(char))

if (classe == 2):

if (ord(char)) == 0x10:

print " RAW "

if (ord(char)) == 0x11:

print " SFRB "

if (ord(char)) == 0x12:

print " SFRBX "

if (ord(char)) == 0x13:

print " RAWX "

print 

char = file.read(1)

pacchetto = pacchetto + char

off=off+1

print "Payload Length High: " + hex(ord(char))# + " " + str(ord(char))

lungh = ord(char)

crc_check(ord(char))

char = file.read(1)

pacchetto = pacchetto + char

off=off+1

print "Payload Length Low: "  + hex(ord(char))# + " " + str(ord(char))

lungh = (256*ord(char)) + lungh

print "Lunghezza :" + str(hex(lungh))#+ " " + str(lungh)

crc_check(ord(char))

for t in range(lungh):

char = file.read(1)

print hex(ord(char)),

pacchetto = pacchetto + char

off=off+1

crc_check(ord(char))

print 

char = file.read(1)

pacchetto = pacchetto + char

off=off+1

print 

crc_1 = ord(char)


char = file.read(1)

pacchetto = pacchetto + char

off=off+1

print "CRC 1: " + hex(crc_1) +"  CRC 2: " + hex(ord(char))

crc_2 = ord(char)

print "CK_A  :" + hex(ck_a) + "  CK_B : " + hex(ck_b)

if ((ck_a == crc_1) and (ck_b == crc_2)):

print "CRC OK"

good = good + 1

corretto = open('corretto.ubx', 'a')

corretto.write(pacchetto)

corretto.close()

else:

print "Errore CRC"

bad = bad + 1 


fine = off-1

print "Fine :" + hex(fine)

try:

input()

except SyntaxError:

pass

giovedì 18 febbraio 2021

Motorizzare telescopio Auriga Skywatcher

 Per motorizzare un asse di una montatura EQ1 di un rifrattore 70/900 della Skywatcher ho provato a comprare su Aliexpress un motore delle Celestron (non ho idea se sia un Celestron originale e non avevo idea se poteva essere montato da una equatoriale Skywatcher)

Per prima cosa si smonta la vite sull'asse della latitudine


In seguito ho montato la staffa piu' lunga di quelle in dotazione 



Si toglie la ruota con flessibile che agisce sull'asse e sul perno si inserisce il canotto flessibile del motore 


Alla fine si richiude la scatola con il coperchio (ci sono diventato matto... per togliere il coperchio si devono svitare le due viti con la testa rotonda nera sotto al led ed ai selettori...sembranbo pulsanti o trimmer ma sono delle semplici viti)




Get your a** to Mars

 


martedì 16 febbraio 2021

Populele 2

 Ho avuto in prestito un Populele 2, ukulele "smart" della Xiaomi



Non ho mai suonato ukulele e quindi non ho esperienza precedente. Di sicuro e' fatto di plastica e non di carbonio come viene indicato nella pubblicita'. In merito al suono non saprei dire ma sicuramente la tastiera di un ukulele e' microscopica 

Per quanto riguarda la parte smart e' stata una mezza delusione. Di fatto l'ukulele ha solo dei led affogati nel manico (72 per essere precisi) che si illuminano per indicare dove mettere le dita collegati ad un ricevitore bluetooth. Tutta la parte di riconoscimento delle note e degli accordi e' tutta demandata alla app che risiede sul telefono (e che ovviamente non si attiva se non trova il pairing in modo da non poter usata con altri ukulele non smart)


a questo link https://github.com/Furikuda/Hackulele c'e' un interessante hack che permette di accendere a piacere i led ed una analisi degli integrati presenti (risultano esserci un microcontrollore  Dialog 14580 ed un controllore per la matrice di led

Per finire la cosa curiosa e' che la ditta consiglia, a seguito di numerose critiche, di non scaricare la propria app dal Google Store ma di installare l'apk dal proprio website...comportamento discutibile




giovedì 11 febbraio 2021

Emulatore Android su Apple M1

Attualmente Android Studio non e'compatibile con Apple M1 in particolare per quanto riguarda l'emulatore che richiede le estensioni VTX (le app si possono sempre compilare ed eseguire su dispositivi fisici) E' comunque possibile installare in modo separato l'emulatore in beta da https://github.com/google/android-emulator-m1-preview
Prima di utilizzarlo si deve in ogni caso indicare la posizione di adb che normalmente si trova in /Users/lucainnocenti/Library/Android/sdk/platform-tools

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...