Ho decisi di provare a sviluppare una piccola App completamente su Android Studio.
Una prima difficolta': come gia' visto qui al primo avvio viene scaricato dalla rete Gradle. Se si e' dietro ad un proxy si deve andare nei Settings (si trovano spulciando la prima finestra di installalazione) e cercare Proxy Server ma attenzione l'indirizzo non deve essere del tipo http://mioproxy.it ma semplicemente mioproxy.it senza http://)
L'altra differenza che salta immediatamente agli occhi rispetto ad Eclipse e' la mancanza della finestra di Logcat (dove vengono mostrati i messaggi di debug)..si puo' attivare mediante la combinazione Alt+6
Per avere il completamente automatico si puo' usare Ctrl+Maius+Barra spaziatrice
Per l'help Maiusc+F1
lunedì 9 settembre 2013
giovedì 5 settembre 2013
Creazione di post automatici su Facebook con RFID (6)
Riprendendo il filone degli esperimenti precedenti in questo caso il lettore Rfid e' legato ad una Arduino che si occupa del carico di lavoro per l'interfaccia Web
Le connessioni per il lettore RFID sono
MOSI: Pin 11 / ICSP-4
MISO: Pin 12 / ICSP-1
SCK: Pin 13 / ISCP-3
SS: Pin 6
RST: Pin 7
La scheda Arduino ha ovviamente montato lo Shield Ethernet
----------------------------------------
#include <SPI.h>
#include <Ethernet.h>#include <RFID.h>
#define SS_PIN 6
#define RST_PIN 7
RFID rfid(SS_PIN, RST_PIN);
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "m.xxxxxnifi.it";
IPAddress ip(192,168,0,177);
EthernetClient client;
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.init();
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac, ip);
}
else
{
Serial.println("IP Acquisito");
}
delay(1000);
}
void loop()
{
if (rfid.isCard()) {
if (rfid.readCardSerial()) {
serNum0 = rfid.serNum[0];
serNum1 = rfid.serNum[1];
serNum2 = rfid.serNum[2];
serNum3 = rfid.serNum[3];
serNum4 = rfid.serNum[4];
String Id = String(rfid.serNum[0],HEX)+String(rfid.serNum[1],HEX)+String(rfid.serNum[2],HEX)+String(rfid.serNum[3],HEX)+ String(rfid.serNum[4],HEX);
Serial.println(Id);
if (client.connect(server, 80)) {
Serial.println("connected");
client.println("GET /luca/xxxxxxx/rfid_server2.php?rfid="+Id+" HTTP/1.1");
client.println("Host: www.google.com");
client.println("Connection: close");
client.println();
}
else {
Serial.println("connection failed");
}
}
}
rfid.halt();
}
----------------------------------------
----------------------------------------
<?
require_once '../src/facebook.php';
//Luca
if ($_GET["rfid"] == "f479abb492")
{
$accessToken = "CAAJkNq2LttoBAJywtmNSbVHqFPubOjYmQ2yyUG4kpibD75BHid9J7xsvif8osSOc4ewgK4aYerrLZBsZCQM5wykRTYVLDkCJXlXYl3gi8WFRQ8U4p4y4ZAXYsdamz6RVdRJZAe4vZA80mWBayuG0qc4IAj2TMDmQXKiv1OrKp8CwKjD6Rz2ZCAqp8yxxxxxxxx";
print "Luca<br>";
}
$appid = '673135956xxxxxx';
$appsecret = 'dde6cfb07dbb769c7efe949xxxxxx';
$msg = $_GET["msg"];
$title = 'Dove sono ??';
$uri = 'http://debiaonoldcomputers.blogspot.com/';
$desc = 'Sono ad Arcetri';
$pic = 'http://wwxxxxxxxxxxxxxxxxxmes/Boozook/images/testa.gif';
$action_name = 'Link';
$action_link = 'http://www.geo.unifi.it/';
$facebook = new Facebook(array(
'appId' => $appid,
'secret' => $appsecret,
'cookie' => false,
));
$user = $facebook->getUser();
$attachment = array(
'access_token' => $accessToken,
'message' => $msg,
'name' => $title,
'link' => $uri,
'description' => $desc,
'picture'=>$pic,
'actions' => json_encode(array('name' => $action_name,'link' => $action_link))
);
$status = $facebook->api("/me/feed", "post", $attachment);
print "Ok";
?>
Ethernet Shield e SPI
Cercando di accoppiare il lettore di Rfid presentato qui con una Arduino Uno dotata di Shield Ethernet, lo sketch gia' visto in precedenza ha smesso di funzionare
Il fatto e' dovuto (come spiegato qui) che lo shield utilizza il protoccolo SPI ed il PIN D10 risulta essere non disponibile per altri usi differenti da quelli della scheda di rete.
Per questo motivo lo sketch e' stato modificato come segue modificando la posizione dei Pin 9-10 in 6-7
------------------------------------------
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 6
#define RST_PIN 7
RFID rfid(SS_PIN, RST_PIN);
// Setup variables:
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop()
{
if (rfid.isCard()) {
if (rfid.readCardSerial()) {
serNum0 = rfid.serNum[0];
serNum1 = rfid.serNum[1];
serNum2 = rfid.serNum[2];
serNum3 = rfid.serNum[3];
serNum4 = rfid.serNum[4];
String Id = String(rfid.serNum[0],HEX)+String(rfid.serNum[1],HEX)+String(rfid.serNum[2],HEX)+String(rfid.serNum[3],HEX)+ String(rfid.serNum[4],HEX);
Serial.println(Id);
}
}
rfid.halt();
}
Il fatto e' dovuto (come spiegato qui) che lo shield utilizza il protoccolo SPI ed il PIN D10 risulta essere non disponibile per altri usi differenti da quelli della scheda di rete.
Per questo motivo lo sketch e' stato modificato come segue modificando la posizione dei Pin 9-10 in 6-7
------------------------------------------
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 6
#define RST_PIN 7
RFID rfid(SS_PIN, RST_PIN);
// Setup variables:
int serNum0;
int serNum1;
int serNum2;
int serNum3;
int serNum4;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop()
{
if (rfid.isCard()) {
if (rfid.readCardSerial()) {
serNum0 = rfid.serNum[0];
serNum1 = rfid.serNum[1];
serNum2 = rfid.serNum[2];
serNum3 = rfid.serNum[3];
serNum4 = rfid.serNum[4];
String Id = String(rfid.serNum[0],HEX)+String(rfid.serNum[1],HEX)+String(rfid.serNum[2],HEX)+String(rfid.serNum[3],HEX)+ String(rfid.serNum[4],HEX);
Serial.println(Id);
}
}
rfid.halt();
}
Ricerca dell'ID I2C su Arduino
Molti dispositivi da accoppiare ad Arduino si basano sul canale I2C e vengono identificati mediante un Id unico
Nel caso in cui non sia disponibile la documentazione si puo' trovare l'Id effettuando una scansione del bus mediante questo sketch derivante direttamente dal sito Arduino
// --------------------------------------
// i2c_scanner
//
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0...127 to 1...119,
// according to the i2c scanner by Nick Gammon
// http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
mercoledì 4 settembre 2013
Vonets VAP11G ed Arduino
Mi e' stato possibile provare il Vonets VAP11G, un bridge Ethernet-WiFi, ovvero un sistema per instradare il traffico da e per Wifi su una porta Ethernet. E' molto utile in casi nei quali un dispositivo non ammetta una scheda Wi-Fi (per esempio un MacMini senza Airport) e Arduino con il solo shield Ethernet.
Si tratta di un prodotto a basso costo e parente povero del Netgear WNCE2001 e come tale e' privo di alcune funzionalita'. La configurazione avviene soltanto mediante programma dedicato che funziona solo sotto Windows. Ricercando su internet ho trovato questo script in Python che dovrebbe servire per configurare il VAP11G ma per la mia esperienza non ha funzionato
L'alimentazione avviene tramite cavo USB oppure tramite alimentatore esterno
Funziona molto bene con Arduino+shield Ethernet, basta avere l'accortezza di accendere un po' prima il Vortes in modo da fargli aggianciare il WiFi e poi accendere l'Arduino
Si tratta di un prodotto a basso costo e parente povero del Netgear WNCE2001 e come tale e' privo di alcune funzionalita'. La configurazione avviene soltanto mediante programma dedicato che funziona solo sotto Windows. Ricercando su internet ho trovato questo script in Python che dovrebbe servire per configurare il VAP11G ma per la mia esperienza non ha funzionato
L'alimentazione avviene tramite cavo USB oppure tramite alimentatore esterno
Funziona molto bene con Arduino+shield Ethernet, basta avere l'accortezza di accendere un po' prima il Vortes in modo da fargli aggianciare il WiFi e poi accendere l'Arduino
martedì 3 settembre 2013
Ottenere il numero di Like su una pagina Facebook (2)
Per ottenere il numero di Like su una pagina direttamente da browser si puo' lanciare il seguente comando
http://api-read.facebook.com/restserver.php?format=xml&method=fql.multiquery&pretty=0&queries={%22page_info%22%3A%22select%20name%2Cfan_count%2Cpage_url%2Ctype%20from%20page%20where%20page_id%20IN%20(266068113416863)%22}&sdk
dove si deve modificare il solo Id pagina (in questo caso 266068113416863)
http://api-read.facebook.com/restserver.php?format=xml&method=fql.multiquery&pretty=0&queries={%22page_info%22%3A%22select%20name%2Cfan_count%2Cpage_url%2Ctype%20from%20page%20where%20page_id%20IN%20(266068113416863)%22}&sdk
dove si deve modificare il solo Id pagina (in questo caso 266068113416863)
Ottenere il numero di Like su una pagina Facebook
Diciamo che vogliamo visualizzare da programma il numero di Like su una pagina Facebook per esempio questa
https://www.facebook.com/SAAM.Firenze
Per prima cosa si deve conoscere l'id della pagina che si ottiene usando OpenGraph
http://graph.facebook.com/?ids=https://www.facebook.com/SAAM.Firenze
che produce il seguente risultato. Circa alla fine si trova
"id": "266068113416863",
che e' il numero desiderato
-----------------------------------
a questo punto si puo' scrivere una semplice applicazione Facebook che tramite le Api ci riporti il valore di Like (che come si vede dall'interfaccia Web e' di 259) Come si vede, a parte le chiavi dell'applicazione non e' necessario passare nessun access token od avere permessi particolari
--------------------------------------
<?
require_once '../src/facebook.php';
$appid = '673135956xxxxxx';
$appsecret = 'dde6cfb07dbb769c7efxxxxxx';
$facebook = new Facebook(array(
'appId' => $appid,
'secret' => $appsecret,
'cookie' => false,
));
$like = array(
'method' => 'fql.query',
'query' => 'select fan_count from page where page_id=266068113416863;'
);
$result = $facebook->api($like);
print $result[0]['fan_count'];
?>
--------------------------------------
https://www.facebook.com/SAAM.Firenze
Per prima cosa si deve conoscere l'id della pagina che si ottiene usando OpenGraph
http://graph.facebook.com/?ids=https://www.facebook.com/SAAM.Firenze
che produce il seguente risultato. Circa alla fine si trova
che e' il numero desiderato
-----------------------------------
{
"https://www.facebook.com/SAAM.Firenze": {
"about": "Istruttore e Responsabile di sala: Alessandro Battistini Iacopo Venni Lorenzo Leoni",
"category": "Sports venue",
"description": "La sede di Firenze della Sala d'Arme Achille Marozzo svolge ampio lavoro di ricerca sulla scherma del medioevo e del rinascimento. Finalmente, dopo lungo tempo passato sullo studio sui trattatisti toscani, si sono aperti, per la prima volta, corsi sulle tecniche di combattimento della antica scuola di scherma fiorentina.",
"hours": {
"tue_1_open": "20:30",
"tue_1_close": "23:00",
"thu_1_open": "20:30",
"thu_1_close": "23:00"
},
"is_published": true,
"location": {
"street": "Via Pistoiese angolo Viuzzo della Cavalla",
"city": "Florence",
"state": "",
"country": "Italy",
"zip": ""
},
"parking": {
"street": 1,
"lot": 0,
"valet": 0
},
"phone": "+39 339 66.83.646",
"price_range": "$$$ (30-50)",
"talking_about_count": 67,
"username": "SAAM.Firenze",
"website": "http://www.achillemarozzo.it/sale/firenze.php",
"were_here_count": 0,
"id": "266068113416863",
"name": "Sala d'arme Achille Marozzo - Firenze",
"link": "http://www.facebook.com/SAAM.Firenze",
"likes": 259,
"cover": {
"cover_id": 366553573368316,
"source": "http://sphotos-b.ak.fbcdn.net/hphotos-ak-prn1/s720x720/64899_366553573368316_453567495_n.jpg",
"offset_y": 55,
"offset_x": 0
}
}
}
-----------------------------------a questo punto si puo' scrivere una semplice applicazione Facebook che tramite le Api ci riporti il valore di Like (che come si vede dall'interfaccia Web e' di 259) Come si vede, a parte le chiavi dell'applicazione non e' necessario passare nessun access token od avere permessi particolari
--------------------------------------
<?
require_once '../src/facebook.php';
$appid = '673135956xxxxxx';
$appsecret = 'dde6cfb07dbb769c7efxxxxxx';
$facebook = new Facebook(array(
'appId' => $appid,
'secret' => $appsecret,
'cookie' => false,
));
$like = array(
'method' => 'fql.query',
'query' => 'select fan_count from page where page_id=266068113416863;'
);
$result = $facebook->api($like);
print $result[0]['fan_count'];
?>
Iscriviti a:
Post (Atom)
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...
-
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...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...
-
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...