Massimo Banzi announced it some minutes ago during his annual “The state of Arduino” presentation at Maker Faire Bay Area: Arduino Yún is the first of a revolutionary family of wifi products combining Arduino with Linux.
Yún means “cloud” in chinese language, as the purpose of this board to make it simple to connect to complex web services directly from Arduino.
Designed in collaboration with Dog Hunter, a company with extensive experience with Linux, the board adopts the Linino distribution which provides signed packages to ensure the authenticity of the software installed on the device.
Historically, interfacing Arduino with complex web services has been quite a challenge due to the limited memory available and they tend to use verbose text based formats like XML that require quite a lot or ram to parse. On the Arduino Yún we have created the Bridge library which delegates all network connections and processing of HTTP transactions to the Linux machine.
Arduino Yún is the combination of a classic Arduino Leonardo (based on the Atmega32U4 processor) with a Wifi system-on-a-chip running Linino (a MIPS GNU/Linux based on OpenWRT). It’s based on the ATMega32u4 microcontroller and on the Atheros AR9331, a system on a chip running Linino, a customized version of OpenWRT, the most used Linux distribution for embedded devices.
Like a Leonardo, it has 14 digital input/output pins (of which 7 can be used as PWM outputs and 12 as analog inputs), a 16 MHz crystal oscillator and a micro USB connector.
Like any modern computer, it’s Wi-Fi enabled, it has a Standard-A type USB connector to which you can connect your USB devices and it has a micro-SD card plug, for additional storage.
The Yún ATMega32u4 can be programmed as a standard Arduino board by plugging it to your computer with the micro USB connector. And you can also program it via Wi-Fi.
When the Yún is turned on for the first time, it becomes an Access Point, creating a Wi-Fi network named “Arduino”. Open your browser and go to the webpanel: configure the board by entering your Wi-Fi network name, type and password. Click the “Configure” button to restart the board and have it join your home network. Opening the IDE, you’ll see it listed in the “Port” sub menu with its IP address instead of the serial port name.
Using the Bridge library in your sketches, you can link the 32u4 to Linux, launching programs and scripts, passing them parameters (sensor readings for example) and reading their output, thus creating a strong integration between the creativity of your sketch and the power of Linux. The Yún supports Shell and Python scripts out-of-the-box but you can install a wide range of open source software and tools.
For the Linux geek in you, Yún can be reached with SSH: that means you’ll be able to customize it in whatever way. And you’ll always be able to reset it to its factory settings.
On top of that to make it even simpler to create complex applications we’ve partnered with the innovative startup Temboo which provides normalized access to 100+ APIs from a single point of contact allowing developers to mix and match data coming from multiple platforms (for example Twitter, Facebook, Foursquare but even FedEx or PayPal).
Arduino Yún will be available at the end of June at the price of 69$ + taxes.
Liz: I’ve been hoping someone would document a project like this for a while now: this is a use of the Raspberry Pi that we think could be of enormous help to people in remote areas all over the world. Benet Hitchcock from Starlifter Digital has been introducing proper connectivity to a festival in a remote part of rural Australia. There’s limited cellular reception in the area, but it can’t cope with the sudden arrival of thousands for the event – and people need to get information via their phones. Enter the Pi. Benet says:
Every year at the Rainbow Serpent Festival in Victoria, Australia, the Info Tent notice board morphs into a multi-coloured chaotic mush. Hundreds of pieces of paper consisting of site maps, timetable updates, camp site locations, random messages between friends and various tid bits are stuck to the walls of the tent. At music festivals closer to the city there is usually plenty of cellular phone reception but not at a festival like this.
Rainbow Serpent is held halfway between Lexton and Beaufort in rural Victoria, a couple hours out of Melbourne. And although there is limited mobile reception, the local network doesn’t seem to like the influx of fifteen thousand attendees. A localised solution was needed to help people connect and keep informed in a way that was searchable and easy to manage.
The solution I devised was a mash-up of a Raspberry Pi and a PirateBox.
I installed the PHP/MySQL based forum “Phorum” on a Raspberry Pi and the OpenWRT based PirateBox software onto a TP Link TL-3220 3G wireless router. I skinned the forum using a mobile phone template which I found via the Phorum community and I made a few functional tweaks. The forums were used by festival goers for locating each others camp sites, ride sharing and lost property.
Updated set times, festival information and site map PDFs were hosted and served from the PirateBox wireless router. The PirateBox project was developed by David Darts in NYC to enable simple, anonymous and local file sharing.
The original idea was to just use the PirateBox router for the whole service but due to the issues with running PHP and MySQL on a wireless router I used the Raspberry Pi. If I get a chance to do this project again I would use the Pi to host and serve the files as well as the forums and also use a more powerful wireless router.
Graphics designed by Rainbow Serpent’s in-house designer were then applied using HTML, CSS and JavaScript and the “Rainbow Connection” was born (thanks Tim and Heidi). It was plug’n’play, simple to use and optimised for mobile.
A few weeks ago, we caught wind of a very tiny, very inexpensive WiFi chip TI is producing. Everything required of an Internet connection – TCP/IP stack, configuration utilities, and your WEP, WPA, and WPA2 security tools is included in a single tiny chip, making this a very cool device for an Internet-connected microcontroller project. There’s only one problem: TI put this chip in a really, really weird package, and there aren’t any breakout boards for it.
That is, until now. [Vince] was convinced to spend some time in Altium to design a breakout board for this tiny WiFi chip. Now, if you can get your hands on a sample of the CC3000 from TI, you can breadboard out a circuit with the help of [Vince]‘s design.
Included in [Vince]‘s git are the board files for this breakout board, schematics, and the necessary parts if anyone has the inclination to make an Eagle library. If anyone wants to spin a few of these boards and put them up on a Tindie Fundraiser, that’d be fine by us, and [Vince] would probably appreciate that as well.
I was shown Pi Point before the holidays, but thought it was best to wait until now to spring it on you, because so many of you have got Pis for Christmas and are looking for projects to use them in.
Guy Eastwood has documentation and an SD card image which will allow you to turn your Pi into a wireless access point. With a bit of imagination applied, you can find a million uses for a tiny, waterproofable (think Tupperware and epoxy), cheap access point; of course, you can just use it to extend your home network, but the possibilities get really interesting if you think outside the box. You can build a guest network, firewalled off from your local network. You can learn about network hardening. With the addition of a home-made cantenna, you could set up a line of Pis as relays to get WiFi down to the shed in your allotment, or point a signal at your treehouse. If you’re an altruist, you can provide your local bus stop with free WiFi.
Let us know what you end up doing with Pi-Point. We’d love to hear what you come up with!
In this tutorial, Luca shows how to add WiFi connectivity to your Arduino boards without using a WiFi shield. Instead, he has combined a standard Ethernet shield with a commercial (and quite cheap) WiFi router:
I found the TL-WR702N nano router by TP-LINK that, with a cost of about 20€ on eBay, can work also as a wireless client: in this mode the router acts like a “bridge” between the device connected to its ethernet port and a Wi-fi network.
After a simple setup, where Luca configured the router as a WiFi client, the Arduino board has become accessible from the wireless network. Enjoy!
When we say “there are no limit for Arduino”, here we have a project, sent by [ladvine] in wich Arduino meets biomedic tech. The WiFi shield is the real application when they speak about Arduino. There is a long paper about it on this [website] that I suggest to visit to understand more this important project.
iPacemaker is an reprogrammable implant pacemaker with wireless connectivity.
A user friendly embedded web interface helps in changing every parameters of the implantable pacemaker. The important feature is the WiFi alliance complaint hardware which supports every wireless device to establish connection with the IMD. GSM connectivity can be used in absence of WiFi in remote areas helping in Telemetry.
Wireless protection in case of WiFi is enabled through WPA2 security with AES Encryption and Java Web interface which has inherent security capabilities. Shielding the GSM and WiFi antennas helps reduce unwanted patient radiations.
While wandering around the aisles of his local electronics store this Westinghouse USB charging station caught [James'] eye. He sized it up and realized it would make the perfect enclosure for a small WiFi router. And so began his project to turn a TP-Link TL-WR703N into a DIY Pwn Plug.
The basic idea is to include hidden capabilities in an otherwise normal-looking device. For instance, take a look at this ridiculously overpriced power strip that also happens to spy on your activities. It doesn’t sound like [James] has any black hat activities planned, but just wanted an interesting application for the router.
He removed the original circuit board from the charging station to make room for his own internals. He inserted a cellphone charger to power the router, then desoldered the USB ports and RJ-45 connector for the circuit board to be positioned in the openings of the case. He even included a headphone jack that breaks out the serial port. There’s a lot of new stuff packed into there, but all of the original features of the charging station remain intact.
The future has been so disappointing. We were promised force fields; teleporters; and androgynous, android manservants. Instead we got cagoules, budget airlines and robovacs. And what do you do with a robovac when it reaches the end of its useful life? You stick a Raspberry Pi on it and make it into a proper robot of course! In the first of our guest blogs Ben J, 14, does just that (thanks Ben!):
—–
Hi! My name’s Ben.
I’ve always had a big interest in robotics and electronics in general, so when I heard about the Raspberry Pi, I knew I had to build a robot around it. This is what I came up with:
The robot, ready to do your bidding. Necessary wifi dongle not shown.
The base of the robot is an old iRobot roomba 4000 with all of the cleaning brushes and their respective motors removed.
The model of roomba that I used has two drive wheels and a coaster wheel in front, and the drive wheels draw almost 300mA of current, so powering them directly off of the Raspberry Pi’s GPIO obviously wouldn’t work. So, I considered using a relay board to control the two drive motors from the GPIO. However, it turns that all the good boards were a little too expensive for a hobby project, so I decided to open the roomba up and see if I could somehow control the motors from the existing circuitry. Guess what? It turns out that there are four small transistors on the main board that power four larger transistors that deliver power to the motors. This means that there are two transistors per motor: one for forwards and one for backwards.
The four small transistors I mentioned are circled in red. Behold my soldering!
They’re labeled Q13, Q14, Q30 and an un-labeled one near R129.
I had a little help in discovering this from a video that a man named Dean Segovis had posted on YouTube, but I ended up taking a multimeter to the board; just to make sure that I wasn’t hooking my precious pi up to anything dangerous. You can watch Dean’s video here: https://www.youtube.com/watch?v=TVp6QWcoilk.
Once I had confirmed the location of the transistors I needed on the board, I connected their bases to GPIO pins 4, 17, 18 and 21 on the Raspberry pi with with a 16 pin socket that I had lying around.
To power the Raspberry Pi, I soldered together a power supply circuit around a 1 amp 5 volt regulator (basically the regulator and two capacitors) on a piece of perf board and had the 5v output from the regulator run to a micro USB connector. I also added some miscellaneous components to the circuit, like a power switch, a 2.5 Amp fuse, a 12 volt in socket and some 12 volt out sockets; one of which the camera is plugged into. The roomba’s main board is also plugged into a 12 volt out socket.
For the camera, I just used an ip network camera from the company Vivotek.
I had tried to use a USB webcam that you might use for skype calls, but streaming video from the pi slowed it way down and the picture quality wasn’t as good as I had wanted. I wasn’t using the best webcam in the world, though.
To hold the Pi in place on the robot, I just glued some plastic pegs where I wanted it to go:
One in between the USB and Ethernet ports, one in between the audio jack and the component video port, one near the HDMI port
and one near the SD card slot. This makes it easy to remove the Pi from the robot when It isn’t in use, yet it holds it in place very well.
The ‘holder’, with Rpi inserted.
The entire robot is powered off of a small 12 volt lead acid battery that fits nicely into the slot where the roomba’s original battery went. I could have used the original battery, but the one that came with my roomba was extremely old and wouldn’t take a charge any more. .
Lastly, I wrote some software in python to take input from a Nintendo wii remote and transmit the input it got to the Pi over wifi, where it’s decoded by another piece of python software and the wheels are moved according to the position of the joysticks on the wii remote. You can get my code at the links below:
And I think that’s about it. If I was unclear about anything or if you want a more detailed description of my project, please email me at benhjake (at) gmail.com , or leave a comment below. Also, if you replicate my project, I’d love to see a picture or two. You could email those to the same address. Thanks, and Happy Hacking!
[Last updated on Feb. 2. 2013 for (2012-12-16-wheezy-raspbian) Kernel Version 3.2.27+]
Three years ago, we bought two small Webcams and since we wanted to used them on Linux and OS X, we went with the UVC and Mac compatible Creative LIVE! CAM Video IM Ultra. This Webcam (Model VF0415) has a high-resolution sensor that lets you take 5.0-megapixel pictures and record videos at up to 1.3-megapixel, supported resolutions include 640×480, 1290×720, and 1280×960. If you like, you can go back and read what I was thinking about the IM Ultra back in 2009. Today, it’s not much used anymore, but may just be the right accessory for an Raspberry Pi.
With the USB Camera attached to the Raspi, lsusb returns something like this:
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 005: ID 041e:4071 Creative Technology, Ltd
Using the current Raspbian “wheezy” distribution (Kernel 3.2.27+), one can find the following related packages, ready for deployment:
luvcview, a camera viewer for UVC based webcams, which includes an mjpeg decoder and is able to save the video stream as an AVI file.
uvccapture, which can capture an image (JPEG) from a USB webcam at a specified interval
While these might be great tools, mpeg-streamer looks like a more complete, one-stop-shop kind-of solution.
Get the mpeg-streamer source code
Either install Subversion (svn) on the Raspberry Pi or use svn installed on your Mac or PC, to get the source-code before using Secure Copy (scp) to copy it over to your Raspi.
Here, I’m using svn, which is already installed on the Mac, before copying the files over to my Raspi, (username pi, hostname is phobos)
cd ~
mkdir tmp
cd tmp
svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
scp -r ./mjpg-streamer pi@phobos:mjpg-streamer
Over on the Raspi, I tried to make the project, but quickly ran into an error messages hinting at a missing library.
ssh pi@phobos
cd mjpg-streamer/mjpg-streamer
make
...
jpeg_utils.c:27:21: fatal error: jpeglib.h: No such file or directory, compilation terminated.
make[1]: *** [jpeg_utils.lo] Error 1
After finding out which libraries were available (apt-cache search libjpeg), I installed libjpeg8-dev like so: sudo apt-get install libjpeg8-dev. And this time got a lot further before hitting the next build error:
After some google-ing, which resulted in installing ImageMagick like so: sudo apt-get install imagemagick, the next build attempt looked much more promissing:
make
..
and ls -lt shows the newly built files on top:
-rwxr-xr-x 1 pi pi 13909 Sep 8 07:51 input_file.so
-rwxr-xr-x 1 pi pi 168454 Sep 8 07:51 input_testpicture.so
-rwxr-xr-x 1 pi pi 31840 Sep 8 07:50 output_http.so
-rwxr-xr-x 1 pi pi 14196 Sep 8 07:50 output_udp.so
-rwxr-xr-x 1 pi pi 19747 Sep 8 07:50 output_file.so
-rwxr-xr-x 1 pi pi 29729 Sep 8 07:50 input_uvc.so
-rwxr-xr-x 1 pi pi 15287 Sep 8 07:50 mjpg_streamer
-rw-r--r-- 1 pi pi 1764 Sep 8 07:50 utils.o
-rw-r--r-- 1 pi pi 9904 Sep 8 07:50 mjpg_streamer.o
MJPG-streamer
MJPG-streamer is a command line tool to stream JPEG files over an IP-based network. MJPG-streamer relies on input- and output-plugins, e.g. an input-plugin to copy JPEG images to a globally accessible memory location, while an output-plugin, like output_http.so, processes the images, e.g. serve a single JPEG file (provided by the input plugin), or streams them according to existing mpeg standards.
Therefore, the important files that were built in the previous step are:
mjpg_streamer – command line tool that copies JPGs from a single input plugin to one or more output plugins.
input_uvc.so – captures such JPG frames from a connected webcam. (Stream up to 960×720 pixel large images from your webcam at a high frame rate (>= 15 fps) with little CPU load.
output_http.so – HTTP 1.0 webserver, serves a single JPEG file of the input plugin, or streams them according to M-JPEG standard.
Starting the Webcam Server
A simple launch command would look like this: ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
Open a Webbrowser on another computer on the LAN and open this url: http://{name or IP-address of the Raspi}:8080
However, experimenting with the resolution and frame rate parameters is well worth it and can improved the outcome.
UVC Webcam Grabber Parameters
The following parameters can be passed to this plugin:
-d
video device to open (your camera)
-r
the resolution of the video device,
can be one of the following strings:
QSIF QCIF CGA QVGA CIF VGA SVGA XGA SXGA
or a custom value like: 640×480
-f
frames per second
-y
enable YUYV format and disable MJPEG mode
-q
JPEG compression quality in percent
(activates YUYV format, disables MJPEG)
-m
drop frames smaller then this limit, useful
if the webcam produces small-sized garbage frames
may happen under low light conditions
-n
do not initalize dynctrls of Linux-UVC driver
-l
switch the LED “on”, “off”, let it “blink” or leave
it up to the driver using the value “auto”
HTTP Output Parameters
The following parameters can be passed to this plugin:
-w
folder that contains webpages in flat hierarchy (no subfolders)
-p
TCP port for this HTTP server
-c
ask for “username:password” on connect
-n
disable execution of commands
I have seen some good results with this ./mjpg_streamer -i "./input_uvc.so -n -f 15 -r 640x480" -o "./output_http.so -n -w ./www"
but even a much higher resolution didn’t impact the actually observed frame-rate all that much: ./mjpg_streamer -i "./input_uvc.so -n -f 15 -r 1280x960" -o "./output_http.so -n -w ./www"
The included Website (http://{name or IP-address of the Raspi}:8080) shows examples for how to connect a client to the Webcam stream. The easiest way is obviously a simple HTML page that works great with Google Chrome and Firefox but not so much with Safari. Anyways, it’s important to specify the width and height that was configured with the output_http.so, in the HTML as well
This is the Raspberry Pi powered by a 5VDC, 700mA battery, with an (Edimax EW-7811Un) USB-WiFi Adapter and the Creative LIVE! CAM Video IM Ultra connected.
Video Lan Client for Viewing and Recording
Using Video Lan Client, you can view and also record the video stream, served by the Raspi.
Recorded Webcam Streamer
Movie, streamed from a Raspberry Pi
Let me know what Webcam software you found that works well on the Raspberry Pi.
[Updated on Feb. 2. 2013 for (2012-12-16-wheezy-raspbian) Kernel Version 3.2.27+]
The extremely small EW-7811Un USB wireless adapter looks like the perfect WiFi adapter for the Raspberry Pi. Not only is it tiny and relatively inexpensive, it also seems capable enough to be a great companion device for the Raspi. While elinux still shows that some users report timeouts trying to initialize the module, I cannot verify this with 2012-12-16-wheezy-raspbian.
WiFi is not really necessary for the Raspberry Pi. It already comes with an ethernet port, provides RS-232 (aka serial-) connectivity, and has two USB ports. However, in case you wanted to add WiFi to the Raspi, this little adapter seems to be as good as any. Here is why:
The Edimax EW-7811Un
complies with wireless IEEE802.11b/g/n standards
adjust transmission output by distance and CPU offload, to reduce power consumption when wireless is idle
is currently the smallest wireless adapter
currently cost between US$ 9 and US$ 15
more than enough reasons to cut the cord and add WiFi connectivity to the Raspberry Pi.
After performing the usual initial configuration in raspi-config, using WiFi Config (a GUI tool sitting at the desktop when starting LXDE with startx) is by far the easiest way to get the Edimax EW-7811Un configured.
But let’s quickly run through the steps of creating that bootable SDCard before dealing with the actual WiFi issues:
On a class 10 SD Card, the whole process shouldn’t take much longer than 70 seconds maybe. Insert the SDCard into the Raspi, power up, boot, and use the on screen menu:
In case you need to do this over a network, the Raspberry Pi’s default hostname is raspberrypi. I.e. ssh pi@raspberrypi .. the pasword is raspberry
sudo raspi-config
to:
Expand root_fs
Change password
Change locale to EN_US.UTF-8 UTF-8 (un-select english UK and select select in long list)
Set Time zone (America / Los_Angeles)
Change memory split to 128:128
Enable ssh
Finally reboot: sudo shutdown -r now
Running the raspi-config again to execute update feature, reboot and login.
Now finding more updates and upgrades like so:
sudo apt-get update
sudo apt-get upgrade
Changing the PI’s hostname
Edit the host name in these two locations:
sudo nano /etc/hostname
sudo nano /etc/hosts
Adding WiFi support / EW-7811Un
With previous wheezy builds, I had to install the realtek firmware, blacklist the already installed 8192cu driver and install a new one. Not this time. ifconfig shows the wlan0 interface and iwlist wlan0 scan can be used to scan for available Wifi access-points, without any firmware installation or driver updates.
/etc/wpa_supplicant/wpa_supplicant.conf
All what’s needed to do to connect the Raspberry Pi to a Wifi Network, is to add a network configuration to /etc/wpa_supplicant/wpa_supplicant.conf.
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
The network configuration depends very much on your network, SSID, Password Security etc. However, here is what I have added, to make the EW-7811Un connect to my WiFi network:
With the correct WiFi network configuration added to the wpa_supplicant.conf file, the ethernet cable can be removed and the Raspberry Pi will automatically switch over to WiFi.
This behavior is pre-configured in /etc/network/interfaces, which looks something like this:
auto lo
Once done with setting up Raspian, I usually create an backup image that later can be copied onto the same or a different SD Card (of equal size).
Backup
Insert the perfect SDCard into the Card Reader and find out how to address it. Again, for me that usually is disk2s1.
sudo diskutil unmount /dev/disk2s1
sudo dd bs=1m if=/dev/rdisk2 of=~/RASP_3_2_27.img
sync
sudo diskutil eject /dev/rdisk2
Depending on the size of the SDCard, this will create a huge file (like 16GB) an may take a while (like 7min).
Restore or Copy
Insert am empty SDCard into the Card Reader and find out how to address it. Once again, for me that usually is disk2s1.
sudo diskutil unmount /dev/disk2s1
sudo dd bs=1m if=~/RASP_3_2_27.img of=/dev/rdisk2
sync
sudo diskutil eject /dev/rdisk2