Arduino: Difference between revisions
(→Books) |
|||
Line 210: | Line 210: | ||
= Electronics = | = Electronics = | ||
== Clock cycles == | |||
The following code was used to measure the time spent on running 2 statements: one is delay(1000) and the other is Serial.println(). I got an output of 8 (most of time) or 4 (few times) microseconds. The code was obtained from [http://arduino.cc/en/Reference/Micros Arduino Reference] and [http://forum.arduino.cc/index.php/topic,6632.0.html Discussion]. | |||
Recall that nano second=10^(-9) second and micro second = 10^(-6) second. On 16 MHz Arduino boards (e.g. Duemilanove and Nano), this function has a resolution of four microseconds (i.e. the value returned is always a multiple of four). | |||
<pre> | |||
unsigned long time; | |||
void setup(){ | |||
Serial.begin(9600); | |||
} | |||
void loop(){ | |||
Serial.print("Time: "); | |||
time = micros(); | |||
delay(1000); // wait a second so as not to send massive amounts of data | |||
// We can also move this line to the end of loop() function to see the difference | |||
Serial.println(micros() - time); | |||
} | |||
</pre> | |||
== Battery== | |||
http://gammon.com.au/power | |||
== Ah (Amp Hour) == | |||
http://overlandresource.com/what-is-an-amp-hour-and-how-to-calculate-battery-capacity | |||
= Seller, Community = | = Seller, Community = |
Revision as of 16:09, 14 October 2013
Hardware
- Uno The Arduino Uno is a microcontroller board based on the ATmega328 (datasheet). It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, a 16 MHz ceramic resonator, a USB connection, a power jack, an ICSP header, and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC-to-DC adapter or battery to get started.
- Due The Arduino Due is a microcontroller board based on the Atmel SAM3X8E ARM Cortex-M3 CPU (datasheet). It is the first Arduino board based on a 32-bit ARM core microcontroller. It has 54 digital input/output pins (of which 12 can be used as PWM outputs), 12 analog inputs, 4 UARTs (hardware serial ports), a 84 MHz clock, an USB OTG capable connection, 2 DAC (digital to analog), 2 TWI, a power jack, an SPI header, a JTAG header, a reset button and an erase button.
Arduino IDE
Source code in Github
https://github.com/arduino/Arduino/tree/master/hardware/arduino/cores/arduino
Install Arduino IDE under Ubuntu
- http://askubuntu.com/questions/107619/how-do-i-install-the-arduino-ide
- http://blog.markloiseau.com/2012/05/install-arduino-ubuntu/
sudo apt-get install arduino-core sudo apt-get install openjdk-7-jre # Go to http://arduino.cc/en/main/software to download the latest software tar xzvf arduino-1.0.5-linux32.tgz cd arduino-1.0.5 sudo ./arduino
Arduino Reset Button
To "reset" the Uno power it down, hold down the reset button, and, while still holding the reset button down, power it up again. This will prevent the existing sketch from running. You can then upload a new sketch.
C users
- http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC
- http://code.google.com/p/libarduino/
- http://www.joakimlinde.se/microcontrollers/arduino/avr/
Programming using Scratch
Since this will involve uploading a firmware to Arduino, we now can only do programming using S4A. We can go back to use Arduino IDE for programming if we want to discard using S4A.
s4a is available as deb package.
Simple example (button & LED)
- Connect wires according to http://s4a.cat/. I use 330 Ohm resistor. The digital pin I use is 3, not 2.
- sudo s4a to launch S4A
- Follow the instruction in instructables.com to try 1. LED blinking and 2. LED and button in S4A.
One problem with this idea is the arduino board needs to be connected to computer all the time.
Tutorials
- Arduino Tip, Tricks and Techniques
- Serial monitor
- http://tronixstuff.wordpress.com/tutorials/
- http://startingelectronics.com/beginners/
- https://www.sparkfun.com/tutorials/57
- http://www.ladyada.net/learn/arduino/
- Stepper motor See the example 1 where the motor turns in two directions and example 2 code where the motor turns continuously in one direction. The connection of motor to the arduino is very simple: Just 1. connecting IN1, IN2, IN3, IN4 to pin 8,9,10,11 and 2. connecting GND to GND in arduino and VCC to 5v in arduino. The connection of 28BYJ148 motor to uln2003 is obvious. See my video on Youtube.
- Micro servo. See http://magnusglad.wordpress.com/2013/03/13/tested-my-sg90-servo-today/ for an instruction and my video on Youtube.
- Check google to see the difference between dc motor and servo.
Arduino IDE, Books, Forums
IDE
- Currently I am using version 1.0.4
- On ubuntu, we need to run arduino using sudo; otherwise, the serial port is greyed out.
- Save/Save As will create a folder and a file with the extension .ino.
- Cheat sheet https://dlnmh9ip6v2uc.cloudfront.net/learn/materials/8/Arduino_Cheat_Sheet.pdf
Books
- Getting Started with Arduino by Massimo Banzi.
- Practical Arduino by Jon Oxer and Hugh Blemings.
- Exploring Arduino: Tools and Techniques for Engineering Wizardry and Book's website.
- Arduino Workshop: A Hands-On Introduction with 65 Projects
Forums
- (Blog) Make and Instructables.
- Freeduino
Processing/Graph
It is possible to send a byte of data from the Arduino to a personal computer and graph the result. This is called serial communication because the connection appears to both the Arduino and the computer as a serial port, even though it may actually use a USB cable.
- First, download and install Processing software (currently 2.0.3)
- Check out http://arduino.cc/en/Tutorial/Graph for wiring. Very simple. Just one potentiometer and 3 wires (one goes to gnd, 2nd one goes to 5v and the 3rd one connects to A0).
- Check out http://www.dustynrobots.com/news/seeing-sensors-how-to-visualize-and-save-arduino-sensed-data/ for the idea of how to plot the analog data using Processing. It contains 2 steps: 1. Open Arduino IDE (sudo is necessary if OS is not Windows) and compile/run a code to print byte to serial using Serial.write(). 2. Open Processing (sudo is necessary if OS is not Windows) and run a code. We shall be able to see a beautiful streaming graph appearing on screen. Both codes are attached below.
Arduino
int sensorPin = A0; // analog input pin to hook the sensor to int sensorValue = 0; // variable to store the value coming from the sensor void setup() { Serial.begin(9600); // initialize serial communications } void loop() { sensorValue = analogRead(sensorPin)/4; // read the value from the sensor Serial.write(sensorValue); // print bytes to serial delay(10); }
Processing
import processing.serial.*; Serial myPort; // The serial port float xPos = 0; // horizontal position of the graph void setup () { size(800, 600); // window size // List all the available serial ports println(Serial.list()); String portName = Serial.list()[0]; myPort = new Serial(this, portName, 9600); background(#EDA430); } void draw () { // nothing happens in draw. It all happens in SerialEvent() } void serialEvent (Serial myPort) { // get the byte: int inByte = myPort.read(); // print it: println(inByte); float yPos = height - inByte; // draw the line in a pretty color: stroke(#A8D9A7); line(xPos, height, xPos, height - inByte); // at the edge of the screen, go back to the beginning: if (xPos >= width) { xPos = 0; // clear the screen by resetting the background: background(#081640); } else { // increment the horizontal position for the next reading: xPos++; } }
More:
Robot based on BOE shield for Arduino
My robot is based on 'Shield for Arduino' which means I can use Arduino IDE + C code style to write my code instead of using PBASIC programming which is used in another similar robot.
- Chapter 3. Activity 2: Re-test the servos. We can use Pins 11 and 12 instead of 12 and 13. Be sure to adjust your code accordingly.
- Chapter 4. Activity 2: First time we disconnect robot from the computer and let it go (forward, left turn, right turn and back ward).
- Chapter 5 (Whiskers). Activity 3 or 4: See my robot is in action on http://www.youtube.com/watch?v=sjzQI6GHe3w.
- Chapter 7 (Infrared headlight). Activity 4: Similar to Chapter 5 but IR detectors are used. See the robot in action on http://www.youtube.com/watch?v=K5pIZ5XcP7Y. Activity 7: Drop-off detection (Very Cool).
This site contains some more information to use infrared LED to avoid object by testing on arduino board.
Using regular IR remote controll to control the ROBOT is also possible (it works as I have tested). The Arduino code provided for this project makes the BOE Shield-Bot recognize Sony IR remote signals only! For example, the BRIGHTSTAR universal remote sold by Parallax is programmed by holding the SET-UP button down until an LED on the remote lights up, then entering the code 605. Different models of remotes may use different codes and configuration methods. Check your remote's docs! See the instruction and arduino code in IR Remote Controlled Shield-Bot.
Using ping))) with BOEShield. Information and arduino code from Parallax. I find the code by searching within parallax.com. See http://thoughtfix.com/blog/2012/3/25/arduino-boe-shield-ping-and-a-servo.html for arduino code. Some modified code here. My recorded video is available on Youtube.
Other robots
- http://www.robotshop.com/
- http://www.ez-robot.com/ including EZ-B Bluetooth Servo Tamiya Bulldozer Robot
- Arduino controlled Bluetooth-bot
- (Book) Arduino Robotics By John-David Warren , Josh Adams , Harald Molle
Video
The astounding athletic power of quadcopters from TED.
Projects
Simple LED
GND --- wire --- 300 Ohm --- short end of LED --- long end of LED --- wire --- 5v/3.3v.
The 300 Ohm resistor can be replaced by anyone between 100 Ohm and 10K Ohm.
Arduino with bluetooth
- RFduino and Company web site here. App is running on iphone.
- Google: arduino bluetooth android and an example by using JY-MCU Bluetooth module.
- (not bluetooth) Xbee wireless http://www.youtube.com/watch?v=WTnC1bHoaDM. Information from Parallax.
Accelerometers & Gyroscopes
- http://www.robotshop.com/blog/en/arduino-5-minute-tutorials-lesson-7-accelerometers-gyros-imus-3634
- http://www.youtube.com/watch?v=HYUYbN2gRuQ
- http://arduino.cc/en/Tutorial/ADXL3xx
- http://www.instructables.com/id/Use-an-Accelerometer-and-Gyroscope-with-Arduino/
- http://www.instructables.com/id/Guide-to-gyro-and-accelerometer-with-Arduino-inclu/ (good demonstration)
- http://dx.com/p/adxl345-digital-3-axis-gravity-acceleration-sensor-module-blue-149476
- https://www.sparkfun.com/tutorials/240 (from google: ADXL345 Arduino)
- http://learn.adafruit.com/adxl345-digital-accelerometer/programming Calibration (ADXL345)
- Bump detection especially in robot http://letsmakerobots.com/node/33979 (MMA7361)
- http://www.freetronics.com/pages/am3x-quickstart-guide#.Uk4clteVv0o (Understand output and calibration)
- http://www.vetco.net/catalog/product_info.php?products_id=12790 (MMA7361) mentions applications for this device on your Arduino include navigation, motion sensing, speed/movement data logging, etc. Hey, you could make an Arduino-based pedometer.
- http://ardadv.blogspot.com/2012/03/its-just-jump-to-left-part-ii.html
Electronics
Clock cycles
The following code was used to measure the time spent on running 2 statements: one is delay(1000) and the other is Serial.println(). I got an output of 8 (most of time) or 4 (few times) microseconds. The code was obtained from Arduino Reference and Discussion.
Recall that nano second=10^(-9) second and micro second = 10^(-6) second. On 16 MHz Arduino boards (e.g. Duemilanove and Nano), this function has a resolution of four microseconds (i.e. the value returned is always a multiple of four).
unsigned long time; void setup(){ Serial.begin(9600); } void loop(){ Serial.print("Time: "); time = micros(); delay(1000); // wait a second so as not to send massive amounts of data // We can also move this line to the end of loop() function to see the difference Serial.println(micros() - time); }
Battery
http://gammon.com.au/power
Ah (Amp Hour)
http://overlandresource.com/what-is-an-amp-hour-and-how-to-calculate-battery-capacity
Seller, Community
- http://arduino.cc/en/Main/Buy
- Arduino.cc forum
- adafruit and Adafruit forum
- Parallax Resources and Forum
- Element14 Community
- Newark
- Sparkfun
http://lifehacker.com/how-can-i-get-into-a-new-hobby-without-breaking-the-ban-489189582