Monthly Archives: November 2012

Flora has Arrived in the Maker Shed!

via MAKE » Category: Open source hardware

MKAD51-2The long awaited Adafruit Flora has arrived in the Maker Shed! This versatile e-textiles platforms make "smart" clothing other stitch-able projects that can interact with their environment.

Read the full article on MAKE

Arduino RobotVision Facetime

via Arduino Blog


 

[IgorAraujo] has pubblihed another interesting project about robot and Arduino. This time it involves a camera and a bluetooth module.

Appointed to be able to develop a robot communication activity and locomotion guided control with several purposes: conference distance, safety inspection and access to local human presence will unaviable. The intention is to promote environmental inspection, receiving and sending information (image and voice) as well as allow for the visualization of environment and the sensor signals to control the movement of the robot using the Arduino.

As usually, you can find more on his [website] , full post with videos and pictures, thanks for submit again!

Open-Source Wearable PIC Board

via MAKE » Category: Open source hardware

Screen shot 2012-11-30 at 9.14.36 AMSquareWare by Ray’s Hobby offers the same general format as a Lilypad or Flora but uses a PIC microcontroller: An open-source microcontroller board designed specially for wearable electronics projects. It’s small (1.6″x1.6″) and square! Has 8 general i/o pins and 4 power sink pins suitable for driving high-current load. Comes [...]

Read the full article on MAKE

First Model A samples off the line!

via Raspberry Pi

We’re having a very busy, very mobile couple of days. We’ve been talking to Welsh teachers, spending time at the factory in Pencoed, doing EMC testing on the camera boards, picking up engineering samples of the Model A, visiting suppliers, and generally running up and down the south of England and Wales with our hair on fire. Sorry I wasn’t able to fit in a post here yesterday; I’ll make it up with an extra post over the weekend.

First up, here’s the very first (blurry, cameraphone) picture of a Model A board. I’ll take some more at the weekend with better detail when I’m near a proper camera.

Raspberry Pi Model A

Raspberry Pi Model A. Click to enlarge.

I posted this picture on Twitter when I opened the box, and had some questions from our followers which I suspect some of you guys might be thinking about too, so I’ll deal with them now:

How much RAM does it have?

The Model A has 256MB RAM.

Updated to add: What’s the power consumption like?

Significantly lower than the Model B’s requirement. For all the gory details and exhaustive figures from our tests, visit this thread in the forums.

Isn’t the Model A kind of obsolete now the Model B has twice the RAM? What could I use it for?

We’re anticipating that those of you who buy the Model A will be using it for different applications from Model B owners. Model A has no ethernet and only one USB slot – and importantly, it consumes much less power than a Model B because the ethernet chip’s missing. We’re seeing demand for the Model A from people making industrial control modules, from roboticists, from people doing automation, for a bunch of headless operations – and, significantly, for people who want to use the Pi as a very cheap media centre. The Model A will only cost $25 (plus tax and shipping).

Wouldn’t it be cheaper for you to use a custom PCB without the existing routing for the ethernet? 

Because of the volumes we’re producing, it’s actually less expensive for us to use the existing PCB we use for the Model B, and just not populate the ethernet part of the board, than to lay-out and separately manufacture a new PCB just for the Model A.

Where are you building the Model A?

We’re making the Model A at the Sony factory in Pencoed, Wales. For the foreseeable future, all Model As will be built there – whichever distributor they’re sold by.

__

We’re pretty excited. The Model A is something we wanted to produce months ago,  but the crazy demand for the Model B has meant that we’ve not been able to build them, because to do so would mean that we have to cannibalise Model B parts – and that would mean that people who are experiencing the backlog would have to wait even longer. We’re hoping to get them off the line and into the hands of our distributors early in the new year, which will put us in a position where that strap line at the top of the page is actually accurate: you’ll be able to buy a $25 computer, which is what we’ve wanted to give you all along.

New Product Friday: Bright New Products

via SparkFun Electronics - Recent News Posts

We’re back from Thanksgiving break, so now we need to talk about all the products from the past 2 weeks. We’ve had some new stuff show up, so let’s get right to it and see the video.

We had a lot of fun writing ‘secret’ messages on the glow in the dark panels. When I was playing around with one of the panels, I turned to Nick to ask “what do we have that’s brighter and more concentrated than an LED” and of course it hit me, a 75W laser! It’s good to have toys.

alt text

Who doesn’t love glow in the dark? We saw these large photoluminescent panels and just had to have them. We really don’t know what people will end up using them for, but they’re still pretty cool. We have them in 3x5", 4x6", and 8.5x11" panels. They have a self-adhesive backing so they can be used like stickers and they cut quite easily. The thing that surprised us more than anything was how bright they are. ‘Charge’ them up under a bright light and be amazed at how bright they are when the lights go out. They rival an EL panel in brightness with the lights off.

alt text

The Cerberus has proven to be a very popular cable. We have a new addition to the ‘you shouldn’t make a cable like that, it’s not the right way to do it’ lineup of SparkFun original abominations, the Hydra. The Hydra has a standard USB-A on one side, and breaks out to a barrel jack, JST PH, and pair of alligator clips. How many times have you wanted a simple way to get 5V and didn’t feel like slicing up a USB cable?

alt text

Need a tiny GPS module? You might want to check out the new GP-635T. It’s just 35x8x7mm and actually works. Isn’t technology wonderful?! Now you can embed GPS in just about anything!

alt text

If measuring acceleration is what gets you going, check out the new ADXL362. It’s a full 3 axis accelerometer that has low power consumption and even a ‘wake-on-shake’ feature. And did we mention that it’s TINY? No? Well, it’s tiny.

alt text

For all of our lady hackers, we now have t-shirts that fit your more sinusoidal waveforms. We have them in two colors, gray and red. They also make great presents, hint hint.

alt text

This week we’ve also got a new version of the Fio V3 with the ATmega32U4. It now has fancy new firmware, so be sure to check the firmware notes if you want to see what has changed in this revision.

alt text

For anyone looking to mess around with their phone, or other devices that use a TRSS connection, we have a basic TRSS audio cable. It’s 18" long and comes unterminated on one end.

alt text

We have both our 10k and 330ohm resistor packs back in stock. We switched to thicker leads, so they’re easier to push into breadboards. They still come in packs of 20 (they’re really packs of 25, but sometimes they miss one or two, so we’re just calling them 20, and you might get some extras).

alt text

We’ve also got a new revision to our XBee Shield. The new version does away with the simple diode level shifter in favor of a more robust MOSFET level shifter. Now you can reliably use it with various logic levels.

alt text

And lastly, we’re now shipping the SparkFun mini-B USB cable in retail packaging instead of the old black ones.

Well, that concludes yet another Friday New Product Post. We’ll be back next week with more new products, a video, and whatever else we come up with from now until then. Thanks for watching and reading. We’ll see you again next week.

Free Elektor magazine December 2012

via Pololu - New Products

Get a FREE copy of Elektor magazine’s December issue with your order while supplies last. This offer is only available for orders shipped to USA or Canada. To get your free issue, enter the coupon code ELEKTOR1212 into your shopping cart. The magazine will add 5.1 ounces to the package weight when calculating your shipping options.

Arduino Aircraft Stabilization Code

via Arduino Blog

We remember [nickatredbox] for the [Yellow Plane],  an Arduino project. Today we have an update to the code. Click on [more] for the full code update.

Revised Yellow FPV Plane with gyro stability system added, Worked best with analogue inputs from Murata piezo gyro sensors of a dead KK board filtered taking a 10 point average. Yaw compensation is currently not used as there is no rudder presently.

Here is a video of the functionality

Here is the Arduino code that calculates the trim values

//Use the pot as the gain for all channels for now
float GainPot = (float)(TxVal[2]) * 0.001f;

//Get the target values from the TX
int PitchTarg = (TxVal[3] / 10);
int RollTarg = (TxVal[4] / 10);
int YawTarg = (TxVal[6] / 10);

//Prime the Target WOZ values
if(PitchTargWOZ == 9999)
PitchTargWOZ = PitchTarg;

if(RollTargWOZ == 9999)
RollTargWOZ = RollTarg;

if(YawTargWOZ == 9999)
YawTargWOZ = YawTarg;

//Get the Centered target values
float PitchTargCentred = (float)(PitchTarg – PitchTargWOZ);
float RollTargCentred = (float)(RollTarg – RollTargWOZ);
float YawTargCentred = (float)(YawTarg – YawTargWOZ);

//Calculate gains
float PitchGain = GainPot * 1.0f;
float RollGain = GainPot * 1.0f;
float YawGain = GainPot * 1.0f;

//Get Gyro values
float PitchGyro = (float)(AnIn[2] – AnInWOZ[2]);
float RollGyro = (float)(AnIn[1] – AnInWOZ[1]);
float YawGyro = (float)(AnIn[0] – AnInWOZ[0]);

//Calc P error
float PitchError = (float)PitchTargCentred + PitchGyro;
float RollError = (float)RollTargCentred + RollGyro;
float YawError = (float)YawTargCentred + YawGyro;

//Apply gains
int PitchTrim = (int)(PitchError * PitchGain);
int RollTrim = (int)(RollError * RollGain);
int YawTrim = (int)(YawError * YawGain);

//Constaring trim authority
PitchTrim = constrain(PitchTrim, -30, 30);
RollTrim = constrain(RollTrim, -30, 30);
YawTrim = constrain(YawTrim, -30, 30);

//Dump the trim value
if((TxVal[9] & 0×4) == 0)
{
PitchTrim = 0;
RollTrim = 0;
YawTrim = 0;
}

Here is all the RX the code

#define MAX_CHAN 12
#define MAX_IN_STR 200
#define MAX_SETTINGS 20
#define MAX_NAV_VALS 50
#define MAX_SAMPLE 10

#include

char buf[255] = {0, };
String str = “”;
char *p;

Servo servo[7]; // create servo object to control a servo
int val = 0; // variable to read the value from the analog pin
int AnInWOZ[MAX_CHAN] = {0, };
int AnIn[MAX_CHAN] = {0, };
int AnInBuf[MAX_CHAN] = {0, };

//Get the target values from the TX at rest
int PitchTargWOZ = 9999;
int RollTargWOZ = 9999;
int YawTargWOZ = 9999;

String inputString = “”; // a string to hold incoming data

int Sample = 0;
int TxTemp[MAX_CHAN + 1] = {0, };
int TxVal[MAX_CHAN + 1] = {0, };

int NavVal[MAX_NAV_VALS] = {0, };
int SettingVal[MAX_SETTINGS] = {0, };

int rssiDur = 0;
int DigBits = 0;
int ComState = 0;
long PacketCount = 0;
long NoPacketCount = 0;

//Digital inputs TX code helper
//TxVal[8] |= (digitalRead(5) << 0);//joy 2 push
//TxVal[8] |= (digitalRead(6) << 1);//pb
//TxVal[8] |= (digitalRead(7) << 2);//slide
//TxVal[8] |= (digitalRead(8) << 3);//toggle

void setup() {

// initialize serial:
Serial.begin(38400);

// reserve 200 bytes for the inputString:
inputString.reserve(MAX_IN_STR);

pinMode(2,INPUT);//rssi
digitalWrite(2, HIGH);

servo[0].attach(3); // attaches the servo on pin 3 to the servo object
servo[1].attach(5); // attaches the servo on pin 5 to the servo object
servo[2].attach(6); // attaches the servo on pin 6 to the servo object
servo[3].attach(9); // attaches the servo on pin 9 to the servo object
servo[4].attach(10); // attaches the servo on pin 10 to the servo object
servo[5].attach(11); // attaches the servo on pin 11 to the servo object

NullServos();

//Get all the analogue signals
//Do a wind off zero

for(int i = 0;i < 8;i++)
AnInWOZ[i] = 0;

for(int i = 0;i < MAX_SAMPLE;i++){

AnIn[0] += analogRead(A0);
AnIn[1] += analogRead(A1);
AnIn[2] += analogRead(A2);
AnIn[3] += analogRead(A3);
AnIn[4] += analogRead(A4);
AnIn[5] += analogRead(A5);
AnIn[6] += analogRead(A6);
AnIn[7] += analogRead(A7);

delayMicroseconds(10);
}

for(int i = 0;i < 8;i++)
AnInWOZ[i] = (AnIn[i] / MAX_SAMPLE);

//Prime the WOZ values
PitchTargWOZ = 9999;
RollTargWOZ = 9999;
YawTargWOZ = 9999;

}

void loop(){

//*Get all the analogue signals
for(int i = 0;i < 8;i++)
AnInBuf[i] = 0;

for(int i = 0;i < MAX_SAMPLE;i++){

AnInBuf[0] += analogRead(A0);
AnInBuf[1] += analogRead(A1);
AnInBuf[2] += analogRead(A2);
AnInBuf[3] += analogRead(A3);
AnInBuf[4] += analogRead(A4);
AnInBuf[5] += analogRead(A5);
AnInBuf[6] += analogRead(A6);
AnInBuf[7] += analogRead(A7);

delayMicroseconds(10);
}

for(int i = 0;i < 8;i++)
AnIn[i]= (AnInBuf[i] / MAX_SAMPLE);

//Capture the Xbee comms
int CharCount = 0;

while ((Serial.available()) && ((++CharCount) 0)
inputString += inChar;

if(inputString.length() >= MAX_IN_STR)
break;

//Detect end of packet
if ( (inChar == ‘\n’) && (ComState > 0) )
{
//Serial.println(inputString);

//Count packets
PacketCount++;

int NumChan = ExtractPacket();

//Tramsmitter
if( ComState == 1)
{
for(int i = 0 ;i < NumChan;i++)
TxVal[i] = TxTemp[i];

DoTelemetery();

UpdateServos();

}//Navigator
else if( ComState == 2)
{
for(int i = 0 ;i < NumChan;i++)
NavVal[i] = TxTemp[i];

}//Settings
else if( ComState == 3)
{
for(int i = 0 ;i 50)
{
NullServos();
SoftReset();
}

//delayMicroseconds(1000);
}

int ExtractPacket()
{

int Lchk = 0;
int channel = 0; //initialise the channel count

p = &inputString[0];

while ((str = strtok_r(p, “,”, &p)) != NULL) // delimiter is the comma
{

TxTemp[channel] = str.toInt(); //use the channel as an index to add each value to the array

Lchk += TxTemp[channel];

channel++; //increment the channel

if(channel > MAX_CHAN)
break;
}

p = NULL;
inputString = “”;

//Process in comming data
if(channel > 2)
{
//Remove the remote chk from the total
Lchk -= TxTemp[channel-2];

//Checksum
if((Lchk – TxTemp[channel-2]) == 0)
return channel;

}

return -1;
}

void DoTelemetery()
{

//Send back a telemetery packet
if((PacketCount % 5) == 0)
{
rssiDur = pulseIn(5, LOW, 200);

int PacketType = 12;

//sprintf(buf, “T%02X,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\n”, PacketType, rssiDur, PacketCount, NoPacketCount, TxVal[1], TxVal[2], TxVal[3], TxVal[4], TxVal[5], TxVal[6], AnIn[0], AnIn[1], AnIn[2], AnIn[3], AnIn[4], AnIn[5], AnIn[6], AnIn[7], DigBits);
//sprintf(buf, “T %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,\n”, PacketType, rssiDur, PacketCount, NoPacketCount, AnIn[0], AnIn[1], AnIn[2], AnIn[3], AnIn[4], AnIn[5], AnIn[6], AnIn[7], DigBits, TxVal[9]);
sprintf(buf, “T%02X%02X%04X%02X%03X%03X%03X%03X%03X%03X%03X%03X%03X%02X%02X\n”, PacketType, rssiDur, PacketCount, NoPacketCount, AnIn[0], AnIn[1], AnIn[2], AnIn[3], AnIn[4], AnIn[5], AnIn[6], AnIn[7], DigBits, TxVal[9]);

Serial.write(buf);

if(digitalRead(13) == false)
digitalWrite(13, HIGH); // set the LED on
else
digitalWrite(13, LOW); // set the LED off

}
}

void UpdateServos()
{

//Digital inputs TX code helper
//TxVal[8] |= (digitalRead(5) << 0);//joy 2 push
//TxVal[8] |= (digitalRead(6) << 1);//pb
//TxVal[8] |= (digitalRead(7) << 2);//slide
//TxVal[8] |= (digitalRead(8) << 3);//toggle

//Throttle TxVal[1]
//Rotary pot TxVal[2]
//Joy 1 X TxVal[3]
//Joy 1 Y TxVal[4]
//Joy 2 X TxVal[5]
//Joy 2 Y TxVal[6]
//rssi TxVal[7]
//digital TxVal[8]
//micros() TxVal[9]

//Use the pot as the gain for all channels for now
float GainPot = (float)(TxVal[2]) * 0.001f;

//Get the target values from the TX
int PitchTarg = (TxVal[3] / 10);
int RollTarg = (TxVal[4] / 10);
int YawTarg = (TxVal[6] / 10);

//Prime the Target WOZ values
if(PitchTargWOZ == 9999)
PitchTargWOZ = PitchTarg;

if(RollTargWOZ == 9999)
RollTargWOZ = RollTarg;

if(YawTargWOZ == 9999)
YawTargWOZ = YawTarg;

//Get the Centered target values
float PitchTargCentred = (float)(PitchTarg – PitchTargWOZ);
float RollTargCentred = (float)(RollTarg – RollTargWOZ);
float YawTargCentred = (float)(YawTarg – YawTargWOZ);

//Calculate gains
float PitchGain = GainPot * 1.0f;
float RollGain = GainPot * 1.0f;
float YawGain = GainPot * 1.0f;

//Get Gyro values
float PitchGyro = (float)(AnIn[2] – AnInWOZ[2]);
float RollGyro = (float)(AnIn[1] – AnInWOZ[1]);
float YawGyro = (float)(AnIn[0] – AnInWOZ[0]);

//Calc P error
float PitchError = (float)PitchTargCentred + PitchGyro;
float RollError = (float)RollTargCentred + RollGyro;
float YawError = (float)YawTargCentred + YawGyro;

//Apply gains
int PitchTrim = (int)(PitchError * PitchGain);
int RollTrim = (int)(RollError * RollGain);
int YawTrim = (int)(YawError * YawGain);

//Constaring trim authority
PitchTrim = constrain(PitchTrim, -30, 30);
RollTrim = constrain(RollTrim, -30, 30);
YawTrim = constrain(YawTrim, -30, 30);

//Dump the trim value
if((TxVal[9] & 0×4) == 0)
{
PitchTrim = 0;
RollTrim = 0;
YawTrim = 0;
}

//Calc flap anglke
int Flaps = 0;

//Apply flaps
if((TxVal[9] & 0×8) != 0)
Flaps = 25;

//Throttle
val = TxVal[1] / 10;
val = map(val, 1, 179, 30, 179);
val = constrain(val, 1, 165); // scale it to use it with the servo (value between 0 and 180)
servo[0].write(val); // sets the servo position according to the scaled value

//Elevator Joy 1 Y TxVal[4]
val = PitchTarg + PitchTrim;
val = constrain(val, 15, 165);
val = map(val, 0, 179, 135, 45); // scale it to use it with the servo (value between 0 and 180)
servo[1].write(val); // sets the servo position according to the scaled value

//Left Flaperon
val = RollTarg + Flaps + RollTrim;
val = constrain(val, 15, 165);
val = map(val, 0, 179, 165, 15); // scale it to use it with the servo (value between 0 and 180)
servo[2].write(val); // sets the servo position according to the scaled value

//Right Flaperon
val = RollTarg – Flaps + RollTrim;
val = constrain(val, 15, 165);
val = map(val, 0, 179, 165, 15); // scale it to use it with the servo (value between 0 and 180)
servo[3].write(val); // sets the servo position according to the scaled value

//Joy 2 x nose Wheel / rudder
val = (TxVal[6] / 10);
val = map(val, 0, 179, 55, 125);
servo[4].write(val); // sets the servo position according to the scaled value

//Joy 2 Y
val = TxVal[5] / 10;
val = constrain(val, 15, 165); // scale it to use it with the servo (value between 0 and 180)
servo[5].write(val); // sets the servo position according to the scaled value

}

void NullServos()
{

//Throttle TxVal[1]
//Rotary pot TxVal[2]
//Joy 1 X TxVal[3]
//Joy 1 Y TxVal[4]
//Joy 2 X TxVal[5]
//Joy 2 Y TxVal[6]
//rssi TxVal[7]
//digital TxVal[8]
//micros() TxVal[9]

//Throttle
val = 0;
val = map(val, 1, 179, 30, 179);
val = constrain(val, 1, 179); // scale it to use it with the servo (value between 0 and 180)
servo[0].write(val); // sets the servo position according to the scaled value

//Elevator Joy 1 Y TxVal[4]
val = 90;
val = constrain(val, 1, 179); // scale it to use it with the servo (value between 0 and 180)
servo[1].write(val); // sets the servo position according to the scaled value

//Left Flaperon
val = 90;
val = map(val, 0, 179, 1, 179); // scale it to use it with the servo (value between 0 and 180)
servo[2].write(val); // sets the servo position according to the scaled value

//Right Flaperon
val = 90;
val = constrain(val, 1, 179); // scale it to use it with the servo (value between 0 and 180)
servo[3].write(val); // sets the servo position according to the scaled value

//Joy 2 X
val = 90;
val = constrain(val, 1, 179); // scale it to use it with the servo (value between 0 and 180)
servo[4].write(val); // sets the servo position according to the scaled value

//Joy 2 Y
val = 90;
val = constrain(val, 1, 179); // scale it to use it with the servo (value between 0 and 180)
servo[5].write(val); // sets the servo position according to the scaled value

}

void SoftReset() // Restarts program from beginning but does not reset the peripherals and registers
{

//Prime the WOZ values
PitchTargWOZ = 9999;
RollTargWOZ = 9999;
YawTargWOZ = 9999;

NoPacketCount = 0;

asm volatile (” jmp 0″);
}

USB Buying Guide

via SparkFun Electronics - Recent News Posts

If your desk looks anything like mine, it’s covered in various types of cables. I have some old stand-bys, like an ethernet cable, headphone cable, and my laptop power cord. And then there is a whole bunch of USB cables – a mini-B for my FTDI Basic, a micro-B for my cellphone, and a B for my Arduino Uno. So what gives? What’s the difference between all these USB cables?

alt text

That’s where this guide to USB cables comes in handy. In this guide, we go over the different types of USB cables, what makes them different, what devices typically use what, and list all the cables (like the new Cerberus cable!) we currently have. It might not sound too interesting (USB cables? Really?), but you might find you’ll learn something. You can also check out our other buying guides like the RF connector buying guide, the Arduino buying guide, or the Accelerometer, Gyro, and IMU buying guide. Check it out!

“Antenna on Chip” Manipulates Light at Warp Speed

via Elektor.uk: News

Researchers at Rice University (USA) have developed a micron-scale spatial light modulator (SLM) similar to those currently used in sensing and imaging devices, but with the potential to run several orders of magnitude faster. Their ‘antenna on a chip’ operates in 3D ‘free space’ instead of the two-dimensional space of conventional semiconductor devices.   In current optical computing devices, light is confined to two-dimensional circuitry and travels in waveguides from point to...

PID Control + Arduino

via Arduino Blog


Here we have this submission from [IgorAraujo] about how to use an Arduino as PID.

A proportional integral derivative controller (PID controller) is a common method of controlling robots. PID theory will help you design a better control equation for your robot.

On his [website] there are more pictures, videos and a detailed description, but all in Portuguese.

Energy Funnels Boost Solar Cell Performance

via Elektor.uk: News

MIT engineers have proposed a new way to improve solar cell performance by using special ‘funnels’ to capture photons. The funnels would be formed in a thin film of semiconductor material by pressure from microscopic needles, producing elastic strain in the funnel area. The strain causes the band gap of the material to vary over the surface of the funnel, which allows a broader spectrum of light to be converted into electricity. The electron/hole pairs produced by the photons in the incident...

All-Paper Li-Ion Battery

via Elektor.uk: News

Researchers at the Laboratory of Pulp and Paper Science and Graphic Arts (LGP2) in Grenoble, France, in collaboration with the Polytechnic University of Torino, have developed a new paper-based Li-ion battery with paper electrodes instead of the usual polyester electrodes. The toxic solvent has also been eliminated, and the fluorinated binder has been replaced by cellulose fibres and microfibrils.   Using a simple filtration procedure with an aqueous medium, the fibres are destructured...

New Entry Level Oscilloscopes from Tektronix

via Elektor.uk: News

Tektronix introduces the TBS1000 Series of entry-level oscilloscopes, giving electrical engineers, educators, hobbyist and tinkerers an affordable, full-featured tool for a wide variety of general purpose electronics test applications. Backed by a 5-year warranty, the new oscilloscopes feature 1 GS/s or 500 MS/s sample rates and 3 % DC gain accuracy down to 2 mV.   Compared to the previous TDS1000-EDU Series of oscilloscopes, the TBS1000 Series offers more bandwidth...

United Nations Threatens to Regulate the Internet Top Down

via Elektor.uk: News

In the beginning of next month the International Telecommunication Union (ITU), a United Nations body, will gather at the World Conference of International Telecommunications (WCIT) in Dubai where they will renegotiate the International Telecommunication Regulations (ITRs).   Adopted in 1988 in Melbourne the current ITRs treaty only covers telephone, television and radio networks, but now several members are proposing to broaden its scope to include the Internet. If the folks gathering...