In search of a deeper meaning, today, the LHC announcement: something is there, at 125.5GeV, and maybe it is it!
Ladies and Gentlemen, The Higgs Boson!
They say that particle is the one that allows mass itself to exist.
It is fundamental, and its existance is an incredible confirmation of the current physics so called Standard Model.
I do not know how a Higgs boson looks like. Neither at CERN they can see it. It lives just a few trillions of a second, before vanishing out in a quantum sparks cloud. And detectors do not see it directly, but just the sparks cloud, and decoding that smoke they can infer the gun.
Anyway, I imagine it like a quite big brownish marble.
And it is smiling,
now.
Prof. Peter Higgs, smiling, today, at the CERN press release event
Context & Problem: Since 2008 we have a business phone and internet access contract with Optima Telekom croatia ( http://www.optima.hr/ ).
The internet link was served by an ADSL Huawei Smartax MT-880 device, that was supplied by Optima.
Some days ago, there was a storm, and the Huawei router broke.
Had a call with Optima tech support, but found that the supplied router is out of warranty, and that the suggested option they propose is a contract upgrade, with a higher monthly cost and a new router.
Solution: reuse an old T-COM Siemens ADSL C-010-i router, to connect to Optima ADSL line, with proper reconfiguration.
I had an old T-COM router, sitting there, a Siemens ADSL C-010-i, with Conexant chipset. This device has just a LAN RJ-45 port and a RJ-11 ADSL WAN port whose cable goes in the ADSL splitter. According to some documents I found on the internet, this device also have an internal USB port which is only accessible opening the case (which I did not do).
T-Com branded Siemens c010i
from a previous installation, and I decided to try to use that. Had a look on the internet, and another call with Optima tech support. Optima could not support me in reconfiguring the device, because is not among the one they support.
After many hours of fiddling, i managed to have it working, and now I am sharing here the settings with which I had it working.
The Siemens C-010-i default factory configuration is at ip 192.168.1.1/24, with http username and password being admin/epicrouter. There is a small button that allows to set it back to factory configuration.
My Siemens unit has probably been manufactured before 2008.
The main setting that allowed me to connect the Siemens router to the optima ADSL were:
With these settings, the line got up again (after some moments post modem reboot, ADSL line light stops flashing and becomes steady green).
After these settings, and after a router restart, this is what I got on the system log.
router system log 01/01/1970 00:00:00> DNS: Add IP address 8.8.4.4 (User defined) 01/01/1970 00:00:00> DNS: Add IP address 8.8.8.8 (User defined) 01/01/1970 00:00:00> PPP1 Session is up. 01/01/1970 00:00:00> DNS: Add IP address 85.114.32.8 (Auto discovered) 01/01/1970 00:00:00> DNS: Add IP address 85.114.32.7 (Auto discovered) 01/01/1970 00:00:00> No Static Session Information is defined. 01/01/1970 00:00:00> NAT/NAPT Session Start: interface ppp1, WAN IP is 95.178.172.206 01/01/1970 00:00:00> PPP1: DNS Secondary IP address is 85.114.32.8 01/01/1970 00:00:00> PPP1: DNS Primary IP address is 85.114.32.7 01/01/1970 00:00:00> PPP1: PPP Gateway IP address is 95.178.160.1 01/01/1970 00:00:00> PPP1: PPP IP address is 95.178.172.206 01/01/1970 00:00:00> PPP1 PAP Authentication success 01/01/1970 00:00:00> PPP1 PPPoE Session is established. 01/01/1970 00:00:00> PPP1 PPPoE PADS Received Service-Name:adsl AC-Name:br01os01 01/01/1970 00:00:00> PPP1 PPPoE PADR Sent, Service-Name:adsl AC-Name:br01os01 01/01/1970 00:00:00> PPP1 PPPoE PADI Sent 01/01/1970 00:00:00> ATM Tx Error Count: 0, Rx Error Count: 0 01/01/1970 00:00:00> u/s total bit capacity: 136bits, used: 136bits 01/01/1970 00:00:00> d/s total bit capacity: 1845bits, used: 1392bits 01/01/1970 00:00:00> d/s Latency: INTERLEAVED, u/s Latency: INTERLEAVED 01/01/1970 00:00:00> d/s Data Rate: 5024kbps, u/s Data Rate: 480kbps 01/01/1970 00:00:00> d/s Attenuation: 29.3dB, u/s Attenuation: 9.5dB 01/01/1970 00:00:00> d/s SNR: 12.4dB, u/s SNR: 15.0dB 01/01/1970 00:00:00> CO Vendor: GLOBESPAN 01/01/1970 00:00:00> Max Tx Power: -38dBm/Hz 01/01/1970 00:00:00> Annex Mode: ANNEX_A 01/01/1970 00:00:00> Modulation: G.dmt 01/01/1970 00:00:00> ADSL connected 01/01/1970 00:00:00> ATM layer is up, cell delineation achieved 01/01/1970 00:00:00> ATM Connected 01/01/1970 00:00:00> CfgMgr: 'Prism.dlz' module loaded. 01/01/1970 00:00:00> CfgMgr: 'Apimage.dlz' module loaded. 01/01/1970 00:00:00> CfgMgr: 'Washer.dlz' module loaded. 01/01/1970 00:00:00> CfgMgr: 'ShtmMib.dlz' module loading failed. 01/01/1970 00:00:00> CfgMgr: 'Shtm.dlz' module loaded. 01/01/1970 00:00:00> Initialized Dynamic NAPT. 01/01/1970 00:00:00> ATM: Setting up vcc0, VPI=0, VCI=35 01/01/1970 00:00:00> ATM: Detected 01/01/1970 00:00:00> Ethernet Device 0 Detected
update: (29 jun 2012)
Performance TUNING on MTU
With standard settings, modems sets up link with the following PPP options:
MRU=MTU=1492
MSS=1432
With these settings, I found that some downloads are aborting, and speed tests reports give inconsistent results (albeit browsing speed does not seem that bad).
In particular, speedtest.net gave consistently very poor results in speed measurement, reporting about 0.07Mbit/sec download speed and 0.15Mbit/sec upload speed.
Did some other fiddling, I set the following:
MRU=MTU=1400
MSS=1300
After these settings have been put in place, and after a router reset, I did not experience anymore failed downloads, and got much better speed measurements, and browsing speed is better too.
Here is the table of the current settings in Configuration/PPP menu of the ADSL Modem
Arduino LilyPad is a special version of Arduino, designed by Leah Buechley at MIT Media Lab. It is specifically designed for integration in clothes and garments. With a special conductive thread, you can sew it on your jacket, and it is easy to program it with the same Arduino IDE we use for the standard Arduino boards.
Check Leah's great LilyPad tutorial which is a great introduction to this wonderful device.
I bought an Arduino LilyPad Simple board kit (LilyPad Beginner's kit), online from british shop SkPang: http://www.skpang.co.uk/catalog/lilypad-beginners-kit-p-967.html I bought again (using paypal account) from this shop and I got good service and fast delivery.
This kit includes a simple version of the Lilypad(*), a lithium LiPO 1 cell 3.7V battery, 5 leds, a multicolored led, a loudspeaker, a vibration button, a light sensor, a temperature sensor, and two spools of conductive thread, along with needles. There is also the small "FTDI basic" board that allows to connect to pc USB via a cable (not included): I use a Nokia DKE-2 phone cable, the same to talk with other arduinos equipped with "USB2Serial light".
(*) This simple Lilypad version differs from the standard one, because has less "petals" (9 available I/Os). But it has a plug for the included 1 cell 3.7V LiPO battery, and the recharging circuit to recharge it from the USB connector. I think these features are not available in the standard LilyPad, which requires an external power supply and is powered via conductive threads.
Arduino LilyPad should not be powered with more than 5Vdc.
-
In the winter, I am using a cap that I bought in Riga, Latvia. It is made of wool felt. It is a perfect fit for a first project for electronic integration with cloth.
Here are some pictures of the hat:
Here is how it looks on the inside. The battery is kept in place with a little bit of Patafix.
And this is a particular image of a led. It is quite small. Connecting threads are invisible from the outside.
And here is a detail view of the inside. I had to use some thermal glue to have the components stick well on the cloth material. The small circle on top is the speaker, while the one on the bottom right is the multicolored led.
The board, being inside just sits on top of my head when I am wearing the cap. It is completely invisible from the outside, and also the leds are very small and fit nicely in the felt. You would not say this hat has anything unusual until I turn it on. :-)
Code is very simple. I just prepared a set of routines for some light effects on the 5 blue leds, a small tune (shamelessly copied from arduino sample code library), and some random flickering of the multicolored led.
Enjoy!!!!!
------------
/*
ledcap lilypad
Marco Guardigli
I dressed a winter cap with an arduino lilipad
mgua@tomware.it
this code is GPL. see www.gnu.org
*/
#include
#define LEDFC 10 // front center
#define LEDFR 11 // front right
#define LEDFL 9 // front left
#define LEDBR 19 // back right
#define LEDBL 6 // back left
#define MCLR 16 // multicolor led: Blue (when low)
#define MCLB 17 // multicolor led: red (when low)
#define MCLG 18 // multicolor led: green (when low)
#define SPK 5 // speaker
int melody[] = { NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 };
int noteDurations[] = { 4,8,8,4,4,4,4,4 }; // note durations: 4 = quarter note, 8 = eighth note, etc.:
void sing() {
Serial.println("sing");
for (int thisNote = 0; thisNote < 8; thisNote++) {
// to calculate the note duration, take one second divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000/noteDurations[thisNote];
tone(SPK, melody[thisNote],noteDuration);
// to distinguish the notes, set a minimum time between them.
// the note's duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(SPK);
}
}
void setup() {
Serial.begin(9600);
Serial.println("Init");
pinMode(LEDFC, OUTPUT);
pinMode(LEDFR, OUTPUT);
pinMode(LEDFL, OUTPUT);
pinMode(LEDBR, OUTPUT);
pinMode(LEDBL, OUTPUT);
pinMode(MCLR, OUTPUT);
pinMode(MCLG, OUTPUT);
pinMode(MCLB, OUTPUT);
pinMode(SPK, OUTPUT);
digitalWrite(LEDFC,LOW);
digitalWrite(LEDFR,LOW);
digitalWrite(LEDFL,LOW);
digitalWrite(LEDBR,LOW);
digitalWrite(LEDBL,LOW);
digitalWrite(MCLR,HIGH); // multicolor led is off when the inputs are all high
digitalWrite(MCLG,HIGH);
digitalWrite(MCLB,HIGH);
digitalWrite(SPK,LOW);
delay(1000);
sing();
}
// RGB
// LLL purple
// HLL orange
// LHL deeppurple
// LLH light blue
// LHH blue
// HHL red
// HLH green
// HHH off
void rainbow() {
Serial.println("rainbow");
for (int i=1; i < random(100); i++) {
if (random(100)>50) { digitalWrite(MCLR,LOW); } else { digitalWrite(MCLR,HIGH); }
if (random(100)>50) { digitalWrite(MCLG,LOW); } else { digitalWrite(MCLG,HIGH); }
if (random(100)>50) { digitalWrite(MCLB,LOW); } else { digitalWrite(MCLB,HIGH); }
delay(50);
digitalWrite(MCLR,HIGH);
digitalWrite(MCLG,HIGH);
digitalWrite(MCLB,HIGH);
delay(50);
}
}
void allblink() {
Serial.println("allblink");
for (int i=1; i < random(100); i++) {
digitalWrite(LEDFC,HIGH);
digitalWrite(LEDFR,HIGH);
digitalWrite(LEDFL,HIGH);
digitalWrite(LEDBR,HIGH);
digitalWrite(LEDBL,HIGH);
delay(random(100));
digitalWrite(LEDFC,LOW);
digitalWrite(LEDFR,LOW);
digitalWrite(LEDFL,LOW);
digitalWrite(LEDBR,LOW);
digitalWrite(LEDBL,LOW);
delay(random(100));
}
}
void randomblink() {
Serial.println("randomblink");
int lev = random(100);
for (int i=1; i < random(100); i++) {
if (random(100) > lev) { digitalWrite(LEDFC,HIGH); }
if (random(100) > lev) { digitalWrite(LEDFR,HIGH); }
if (random(100) > lev) { digitalWrite(LEDFL,HIGH); }
if (random(100) > lev) { digitalWrite(LEDBR,HIGH); }
if (random(100) > lev) { digitalWrite(LEDBL,HIGH); }
delay(random(100));
digitalWrite(LEDFC,LOW);
digitalWrite(LEDFR,LOW);
digitalWrite(LEDFL,LOW);
digitalWrite(LEDBR,LOW);
digitalWrite(LEDBL,LOW);
}
}
void spinleft() {
Serial.println("spinleft");
int d = random(500);
int d1 = random(100);
digitalWrite(LEDFC,HIGH);
delay(d);
digitalWrite(LEDFL,HIGH);
delay(d1);
digitalWrite(LEDFC,LOW);
delay(d);
digitalWrite(LEDBL,HIGH);
delay(d1);
digitalWrite(LEDFL,LOW);
delay(d);
digitalWrite(LEDBR,HIGH);
delay(d1);
digitalWrite(LEDBL,LOW);
delay(d);
digitalWrite(LEDFR,HIGH);
delay(d1);
digitalWrite(LEDBR,LOW);
delay(d);
digitalWrite(LEDFC,HIGH);
delay(d1);
digitalWrite(LEDFR,LOW);
delay(d);
digitalWrite(LEDFC,LOW);
}
void spinright() {
Serial.println("spinright");
int d = random(100);
int d1 = random(50);
digitalWrite(LEDFC,HIGH);
delay(d);
digitalWrite(LEDFR,HIGH);
delay(d1);
digitalWrite(LEDFC,LOW);
delay(d);
digitalWrite(LEDBR,HIGH);
delay(d1);
digitalWrite(LEDFR,LOW);
delay(d);
digitalWrite(LEDBL,HIGH);
delay(d1);
digitalWrite(LEDBR,LOW);
delay(d);
digitalWrite(LEDFL,HIGH);
delay(d1);
digitalWrite(LEDBL,LOW);
delay(d);
digitalWrite(LEDFC,HIGH);
delay(d1);
digitalWrite(LEDFL,LOW);
delay(d);
digitalWrite(LEDFC,LOW);
}
void front3() {
Serial.println("front3");
int ton=random(50);
int toff=random(500);
for (int i = 1; i < 10; i++) {
digitalWrite(LEDFC,HIGH);
digitalWrite(LEDFR,HIGH);
digitalWrite(LEDFL,HIGH);
delay(ton);
digitalWrite(LEDFC,LOW);
digitalWrite(LEDFR,LOW);
digitalWrite(LEDFL,LOW);
delay(toff);
}
}
void loop() {
// cycles random effects
switch (random(10)) {
case 0:
rainbow();
break;
case 1:
if (random(100) > 90) { sing(); }
break;
case 2:
allblink();
break;
case 3:
spinleft();
break;
case 4:
spinright();
break;
case 5:
front3();
break;
case 6:
randomblink();
break;
default:
delay(1000);
}
delay(1000);
}
Arduino-Ethernet Datalogger
last updated on nov 18 2011
For a customer project I needed to build a datalogger that had to be periodically and asynchronously polled via ethernet. Main task of the datalogger was counting raising pulses from an external sensor outputting a TTL 0-5v signal.
Customer requirements were to have it simple, reliable, and tolerant of possible ethernet network disconnections.
I decided to work using the new Arduino Ethernet, which integrates the wiznet ethernet shield, and also has the sdcard slot.
I made this with Arduino022 software version.
I needed to perform accurate timestamping in the logs, so I decided to use NTP protocol to periodically sync a local clock built via the DS1307RTC time library.
Given the nature of the pulses I had to count, I decided to simply connect the counter line using the interrupt feature, and so decoupling the pulse detection from all the other code.
After initializing network, sdcard, synchronizing time with NTP server, and setting up the interrupt pulsereading line, the main loop just cycles waiting for browser to connect, then checking if it is time to log on the sdcard, and checking if it is time to resync clock with NTP to avoid excessive drift.
To test it, I built a simple random pulse generator and run it on another arduino 2009, feeding its digital output to the Arduino ethernet pulsecounter in.
Here is the code. Some portions are freely taken from arduino libraries samples.
Also I got some inspiration from this page by Ms. Limor Fried (aka LadyAda) describing her SDcard Datalogger and Ethernet server. My SD code is different (and a bit simpler) because I use the standard SD card library.
/*
Web Server, Pulse Logger, NTP time client, for Carcano spa
31.10.2011
This code is GPL. see www.gnu.org for details
be careful in increasing string space. this software uses almost all the arduino ATMEGA328 memory (2Kb)
SDcard Datalogger v0.8
mgua@tomware.it
fgentili@tomware.it
Arduino-Ethernet:
TCPIP Webserver with
NTP client
Asynchronous Interrupt (IRQ0) pulse counter on Digital pin2
DataLogger on Micro SDcard file
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
* Digital input with raising front pulse counter on digital PIN2
NTP protocol is used to sync from a time server
in arduino 022 download time.zip
http://www.arduino.cc/playground/Code/Time
http://www.arduino.cc/playground/uploads/Code/Time.zip
and put its contents in
libraries/DS1307RTC
libraries/Time
libraries/TimeAlarms
SDcard is accessed via SPI protocol standard, which is also used to program ethernet Wiznet controller.
In order to interact with SD, we need to set pin10 as output otherwise SD library will not work
*/
#include
#include
#include
#include
#include
byte mac[] = { 0xDA, 0xAD, 0xBE, 0xEE, 0xFE, 0xED };
byte ip[] = { 10, 2, 3, 51 };
byte mask[] = { 255, 255, 0, 0 };
byte gateway[] = { 10, 2, 0, 1 };
byte timeServer[] = { 10, 2, 3, 60 };
// seconds to add to UTCtime to consider correct timezone
// const unsigned long UTCcorrection = 7200; // CET = UTC + 1 (+2 in summer): (HOW to properly calculate DST?)
const unsigned long UTCcorrection = 0; // keep UTC
const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message
byte packetBuffer[NTP_PACKET_SIZE]; // buffer to hold incoming and outgoing packets
unsigned int localPort = 8989; // local port to listen for UDP packets
Server server(80); // local listener port for http services
// variable for pulsecounter, to be altered from inside interrupt routine (requires volatile)
volatile unsigned long pulses = 0;
int pulsePin = 2; // use pin2 for async pulse counter IRQ0 is connected to PIN2, (IRQ1 is connected to pin 3)
const unsigned long seventyYears = 2208988800UL;
unsigned long epoch = seventyYears;
const int EthChipSelect = 10;
const int SDChipSelect = 4;
time_t logInterval = 10UL; // append to file every loginterval seconds
time_t lastLogTime = 0UL;
time_t syncInterval = 60UL; // ntp sync every syncinterval seconds
time_t lastSyncTime = 0UL;
unsigned long logLinesWritten = 0;
const int maxLogLines = 7;
boolean fileFull = false;
char* logFileName = "log.txt";
unsigned long logFileSize = 0; //logfilesize added from last powerup
unsigned long sendNTPpacket(byte *address) {
memset(packetBuffer, 0, NTP_PACKET_SIZE); // set all bytes in the buffer to 0
// Initialize values needed to form NTP request
packetBuffer[0] = 0b11100011; // LI, Version, Mode
packetBuffer[1] = 0; // Stratum, or type of clock
packetBuffer[2] = 6; // Polling Interval
packetBuffer[3] = 0xEC; // Peer Clock Precision
// 8 bytes of zero for Root Delay & Root Dispersion
packetBuffer[12] = 49;
packetBuffer[13] = 0x4E;
packetBuffer[14] = 49;
packetBuffer[15] = 52;
// Now send packet requesting a timestamp to server udp port NTP 123
Udp.sendPacket( packetBuffer,NTP_PACKET_SIZE, address, 123);
}
void ntpTimeSync() {
sendNTPpacket(timeServer); // send an NTP packet to a time server & wait if a reply is available
delay(1000);
if ( Udp.available() ) {
Udp.readPacket(packetBuffer,NTP_PACKET_SIZE); // read the packet into the buffer
// the timestamp starts at byte 40 of the received packet and is four bytes,
// or two words, long. First, esxtract the two words:
unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);
// combine the four bytes (two words) into a longint: NTP time (seconds since Jan 1 1900)
unsigned long secsSince1900 = highWord << 16 | lowWord;
// NTP gives secs from 1 1 1900. Unix time starts on Jan 1 1970. In seconds, that's 2208988800:
// subtract seventy years:
epoch = secsSince1900 - seventyYears;
Serial.print("T=");
} else {
Serial.print("Te!");
}
Serial.println(epoch);
time_t t = epoch + UTCcorrection;
setTime(t); // sets arduino internal clock
}
String getTimeString() {
// gives back hh:mm:ss
time_t t = now();
String s = "";
if (hour(t) <10) s = s + "0";
s = s + hour(t) + ":";
if (minute(t) <10) s = s + "0";
s = s + minute(t) + ":";
if (second(t) <10) s = s + "0";
s = s + second(t);
return(s);
}
String getDateString() {
// gives back dd/mm/yyyy
time_t t = now();
String s = "";
if (day(t) <10) s = s + "0";
s = s + day(t) + "/";
if (month(t) <10) s = s + "0";
s = s + month(t) + "/";
s = s + year(t);
return(s);
}
void tic() { // IRR Interrupt response routine, bump counter when signal raising front seen
pulses++;
}
void setup()
{
Serial.begin(9600);
Serial.print("R:");
Serial.println(FreeRam());
// setup interrupt logic
pinMode(pulsePin, INPUT); // non strettamente necessaria, in quanto IRQ0 e' sempre agganciata a pin2
attachInterrupt(0, tic, RISING); // LOW-CHANGE-RISING-FALLING tic is the function pointer to the RRI
Serial.println("I");
Ethernet.begin(mac,ip,gateway,mask);
Udp.begin(localPort);
Serial.println("E");
ntpTimeSync();
Serial.print("SD");
pinMode(EthChipSelect, OUTPUT);
if (!SD.begin(SDChipSelect)) {
Serial.println("e!");
while(1); // fatal: wait forever
}
Serial.println();
Serial.println("H");
server.begin();
Serial.println("-");
}
void webServer() {
// sends log content if something is specified
String creq;
Client client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c != '\n' && c != '\r') {
creq += c;
continue;
}
}
Serial.print("[");
Serial.print(creq);
Serial.println("]");
if (creq[5] != 'x' && creq[5] != 'X') { // http://172.30.4.47/x or http://172.30.4.47/X requests log, else std page
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.print("TomWare PulseLogger 0.8");
client.println("
Here are some notes about my experience with the new (summer 2011) Arduino-Ethernet.
Created: October 1, 2011
Last Updated: December 12, 2011
Arduino Ethernet is a single board which integrates a basic Arduino UNO with Wiznet Ethernet shield.
The board is obviously more integrated, and the components are much smaller.
The board has a MicroSD slot, like the newest Ethernet Shields, but does not have anymore a direct USB interface, like the Arduino Classic boards.
Arduino Ethernet supports a POE addon that allows Power Over Ethernet. I did not buy that too.
To program it, it is needed a small component (also manufactured by the arduino factories, but sold separatedly) called Arduino USB2SERIAL light, that plugs on a 6 pin connector on the board.
This component also can power via USB the whole Arduino. Once programmed, and once ethernet communications are setup, this component is not necessary anymore and can be disconnected, but then Arduino must be powered via the power plug, or via POE.
Here is a picture of the two connected, and with a micro-SD card inside the socket:
You can also program Arduino using a standard serial RS232 interface, connected to GND, RX (digital pin 0), TX (digital pin 1).
Manufacturer
My Arduino Ethernet is manufactured by Smart Projects srl.
I was pleased to find a nice booklet inside the package, with 6 small cool adhesives. Here is the introductory note:
Connection Problems
I was surprised not to be able to connect to my new Arduino thru the standard software already available in my PC (from which I was working on my other Arduino 2009 boards).
The latest (as of oct 1, 2011) distribution package arduino-22 does not support this board, and the USB2SERIAL drivers are simply not there.
My environment is Windows 7 64bit.
With this driver and with the boards.txt update, Arduino Ethernet was correctly identified and i was able to download and run sketches on it.
Available I/O: Caveats
Since Arduino Ethernet is actually and Arduino embedding Wiznet 5100 Shield, some pins are not available, because used by the ethernet interface. Here is a good description of the Arduino Ethernet architecture, which is based on ATMEL ATMega328.
Digital I/O 10,11,12,13 are not available, since used for ethernet interfacing (exactly like in the Ethernet shield).
Digital I/O 4 is used for interfacing with SDcard.
Digital I/O 0,1 are used for serial interface (native or via USB2SERIAL connector)
So, the available Pins are:
7 Digital I/O: 2,3,5,6,7,8,9
of these, PIN 2,3 can support interrupt triggering, to detect an asynchronous change in a signal, like detecting an edge (see AttachInterrupt()) and for example could be used for pulse counting.
PIN 7 is a normal digital I/O
PINs 3,5,6,9 can support PWM (pulse width modulation, needed for example in servo controlling).
6 Analog I/O 0,1,2,3,4,5 can be used to read/write analog values with 10 bit resolution (4.9mV) in the range 0-5V.
I decided to send this picture, where mom holds me, as a very little child. Along with the picture I left my email address.
In april 2010, that picture was published. And I was very happy because I felt that my mom picture was available on the web, and maybe other people could see her. I did non even write she was dead. It was a sort of private joy for me knowing that "our" picture was online.
I did not even tell the story to anyone.
Months later, I received an email from a lawyer, Ashley Kravitz, working for CBS copyright cleaning.
CBS wanted to use my mom picture in a movie!
The movie is an action packed gangster story: Faster, starring Dwayne Johnson and Billy Bob Thornton
And at 53 minute in the movie, there is my mom, and there is me.
So, this is how I became an hollywood actor in an action movie.
Network interface bonding and trunking VLANs with different MTUs on RedHat Linux
(Last updated on aug 30 2011)
Configuration of Red Hat Enterprise Linux Server 6.1 (Hardware: HP DL380G7, 2 CPU Intel core) connected with two 10Gbit/sec ethernet interfaces (HP NC522SFP Dual Port 10GbE Server Adapter Board), with interface bonding, high availability, bandwidth aggregation and multiple VLAN transport.
Two 10Gbit/s physical network interfaces have to be connected to two FEX (Nexus Fabric EXtension "switches") upstreaming to two different Nexus 7000 cores, in a high availability configuration, allowing also to use both links simultaneously, and to transport different VLANs.
The different VLANs have then to be mapped on different linux logical subinterfaces.
The two physical interface are joined to form a bond, called bond0.
A specific channel configuration exists on the cisco nexus switches, so to allow these ports to form a single trunk channel, and to transport on it tagged frames from the selected VLANs, complying to the 802.1q transport.
Here are the settings on the Cisco Nexus Side (only one "side" is shown, the other is symmetric):
Core to FEX2232
interface port-channel131
switchport
switchport mode fex-fabric
fex associate 131
mtu 9216
FEX to server
interface Ethernet131/1/5
description srv
switchport
switchport mode trunk
switchport trunk allowed vlan 10-13
flowcontrol send off
channel-group 88 mode active
no shutdown
On the RedHat linux side, my two physical interfaces are eth0 and eth2. I check with ethtool that on both I can see the link, and that the speed and duplex settings are ok (autonegotiation has been disabled both on the switch side and on the server).
The two physical interfaces are joined in bond0
Here are the configuration files of the physical and logical interfaces, in /etc/sysconfig/network-scripts
bond0.10 and bond0.11 are the two logical interfaces sitting on VLANs 10 and 11
bond0.10 has MTU 1500
bond0.11 has MTU 9000 so to allow more efficient traffic of large blocks of data on the storage VLAN
Youth is not a time of life; it is a state of mind; it is not a matter of rosy cheeks, red lips and supple knees; it is a matter of the will, a quality of the imagination, a vigor of the emotions; it is the freshness of the deep springs of life.
Youth means a temperamental predominance of courage over timidity of the appetite, for adventure over the love of ease. This often exists in a man of sixty more than a body of twenty. Nobody grows old merely by a number of years. We grow old by deserting our ideals.
Years may wrinkle the skin, but to give up enthusiasm wrinkles the soul. Worry, fear, self-distrust bows the heart and turns the spirit back to dust.
Whether sixty or sixteen, there is in every human being's heart the lure of wonder, the unfailing child-like appetite of what's next, and the joy of the game of living. In the center of your heart and my heart there is a wireless station; so long as it receives messages of beauty, hope, cheer, courage and power from men and from the Infinite, so long are you young.
When the aerials are down, and your spirit is covered with snows of cynicism and the ice of pessimism, then you are grown old, even at twenty, but as long as your aerials are up, to catch the waves of optimism, there is hope you may die young at eighty.
It seems quite a common situation that Apple devices notes are being lost.
The loss of information is always a very frustrating experience, and it is even more frustrating to know that a backup of the lost information is present, but is apparently unaccessible.
The following article is related to my experience on my Ipad, but it is probably applying also to iphone and ipod.
The problem:
Notes on the device appear completely empty.
Possible causes:
1. The user was changing the email account synchronization settings on the device. Maybe an account was removed, or its settings were changed.
2. An itunes sync operation was interrupted abruptly, disconnecting the cable
3. Your ipad was hit by a spell of disgrace (:-).
Possible solutions (basic):
1. If you had Gmail synchronization in place, open your gmail account from your PC, and look for a "Notes" label among your email labels. It can be that your notes are there. If so, save them, and thank big G. Then go back to your ipad and reactivate gmail notes synchronization tapping Settings/Mail,Contacts,Calendar/your Gmail account/">"
2. If you had a non-gmail notes synchronization with your email system, check the settings. Some email systems allow notes synchronization, other do not (as an example, IBM Lotus Traveler do not sync notes).
Possible solution (advanced):
Do not sync your device, and prepare for opening the guts of your iTunes. The reason for not syncing is that apparently iTunes sync operation keeps only a single copy of the last state of the device. It can be you have another backup system that backs up the iTunes folders, so maybe you also have hopes if you already performed an iTunes sync.
The following instructions require some not so common skills, so if you are not confident, please ask for professional help. It can be you will need to enable access and proper visibility to files in these folder, as well as detailed view mode.
The following instructions are based on my iTunes installation on a Windows 7 64 bit english edition. Paths could be different under other operating systems.
in this folder, there are maybe some other folders with ugly names like: aa076cff33fddfd88fc380964bbcf3792343ff30
Each of which contains the backup data of each apple devices that ever synced with your iTunes setup.
Inside these data folder there are a bunch of files with similarly ugly names and no extensions. There are no subfolders.
In my installation I have 2108 backup data files. File dates and size are very different. Dates and times reflect the moments in which iTunes synchronization updated the file.
Now sort the folder content by last modification date (clicking on the top of column date modified, in view-details mode) and look for the file named info.plist
You have to check this file contents (IMPORTANT: open it without saving any changes) to be sure you are checking the right directory (you could have more than one apple device and you can identify which backup directory you are in by checking the contents of this file).
In order to open this file, you will need a text editor which is somewhat smarter than Microsoft notepad. A good choice could be notepad++ (see http://notepad-plus-plus.org/ ).
Here is an excerpt of my info.plist contents (some data has been edited and replaced with [omissis] placeholder)
Build Version 8J3 Device Name mgipad Display Name mgipad GUID [omissis] ICCID [omissis] IMEI [omissis] Last Backup Date 2011-05-19T15:24:25Z Product Type iPad1,1 Product Version 4.3.3 Serial Number [omissis] Target Identifier [omissis] Target Type Device Unique Identifier [omissis]
The backup data files contain your data. The problem is that the majority of those files are not text files and are not easily readable, and specific tools are needed.
A simple quite unspecific tool is grep, but unfortunately it is not available in basic windows installations. A very good implementation of grep for windows is included in cygwin set of tools, but this requires a big and complex installation.
Windows comes with a simpler tool, called find, that can be useful in our situation.
First we need to open a command box, and go in the aforementioned folder that contains our backup. We use the command "cd" to go to the specific folder (the path was copied and pasted from the explorer window).
We need also an unusual word that was included in one of our lost notes. A surname or any unusual and uncommon word would be great. This will be our bait. We will use the bait to go fishing for our lost notes contents.
In my case I used the word "prodexpo" that was in one of my lost notes, and found it inside a specific file, with the following command line command:
find /I "prodexpo" *
Then I opened (with notepad++) the now identified file and was able to read the contents of one of my lost notes and recover manually the important data (names, emails and phone numbers). (be careful not to save!!).
Further analysis and reverse engineering can be performed using sql-lite tools from cygwin, but this is definitely out of scope here.
---
As a reference, there is a tool named decode_iphone_backup available at the following url which decodes the itunes backup directory in a more suitable filesystem format.
After the decoding, sql-lite tools can be used to access the semi-relational data structures.
The tool is intended to be run on a mac computer, but it is written in pyton, so it is easily understandable.
The tool requires another program called plutil (property list tool) which is part of Apple Mac OSX operating system.
Windows/Linux ports of plutil are probably available here (Erica Sedun great site) here and here, but I dont know if they are current:
The author of the iphone-backup-decoder tool is named Pádraig. The original tool available is dated 2007.
An extended version with a GUI interface appears to be available on the site
I have been an avid reader: for many years.
Actually I grew up with books: reading, and dreaming.
Carl Spitzweg, the bookworm, 1850
Books were my friends: loyal, discrete, sincere, silent. They were with me on the train, at school, during many long summer afternoons, and in the deep night. (I remember reading frightening ghost stories while my parents were asleep).
Dear old books are gradually disappearing and passing by. They are shifted away by other forms of entertainment, gradually put aside by screens, and much more quickly consumed.
Books lives are now much shorter than in the past. Far too many books are available, and the content quality of the average book is quickly declining. Many people write books, but the same amount of worth books are written. Signal to noise ratio is going down.
Shop life of a book is now measured in weeks.
Inevitably, cheaper electrons will gradually substitute books.
Books will become a form of classic knowledge, with their inefficient cross-referencing, inability for full text searching, and their unacceptable lack of multimedia content.
Books will get old and dusty. They will be preserving their words for centuries, buried in libraries shelves.
Their pages will become yellow.
Their smell will change.
Some lucky old books will be scanned, and in some way shared to a broader potential amount of readers. Their paper will be digested into magnetic hard disk oxide, in huge datacenters under some mountain.
Books will evaporate, their bits dispersed in computing clouds.
Immaterial, electronic, aseptic, up-to-date, searchable, multimedia ebooks are growing.
Internet connected readers are reding internet connected books.
Book pages will share the screen with email, blogs, social networks, videogames.
E-tears will fall.
Books are dying, yes.
And old Readers are dying too.
The London Holland-House library after blitz german bombings. Picture taken on oct 1, 1940.
(My friend Fravia told me about this devastated library picture. Check this page of him about quality books, as described in a great lesson by prof. Fritjhof Sielaff)
Problem: Arduino 2009 with wiznet w5100 ethernet shield does not start network operations after power-up.
It works well if the reset button is pressed.
Solution: I implemented davekw7x's suggestions (THANK YOU!), as cited in this arduino forum page (ref. reply #11)
this solution requires a 10kOhm resistor, and a 10nf capacitor.
Here are the detailed steps and some pictures:
1. bend outwards the ethernet shield reset pin "leg", so that it will not go in the arduino reset socket.
2. solder the 10kOhm resistor between reset pin and the nearby 3.3 Vcc
3. solder the 10nf capacitor between reset pin and ground
Here is a picture of one of my ethernet shields, with the reset "leg" bent outwards.
And this is the details of how I soldered the components on the back of the circuit.
In this position the components are nicely arranged on the back of the board.
With this mod, my arduino + ethernet shield is starting up correctly after powering up, and immediately works with no need of reset button push.
The order from DealExtreme is including shipping. Unfortunately, a substantial delay (totally unrelated with DealExtreme) was caused by the customs import procedures. Italian posts are terrible.
Overall, it took almost two months to receive the device. But finally I got it, and in one piece. Package was in good state, and the box was well sealed.
Here is a picture of the product along with box contents, from www.goodluckbuy.com
I have to say that the product quality is very good, and that usability is good too. (apart from the initial shock of having the default menus in chinese, quickly fixed).
The scope is well built, with good quality sturdy plastic chassis, a good color lcd monitor, and good quality knobs.
Furthermore there is a publicly available hack (check here and to actually double the scope frequency bandwidth to 100MHz, actually turning the Rigol DS1052E into the Rigol DS1102E, which has just a difference in firmware.
Here is the spec comparison of the two models, from the instructables.com site page describing the hack.