Categories
Arduino Raspberry Technological

Arduino (IoT): Simple Tutorial Laser

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Laser

En este tutorial usamos un laser, que en esencia es igual a una LED en términos de como controlarlo.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Unidad Laser 5mW
  4. Breadboard
  5. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Simple Tutorial Laser Arduino IoT Santiapps Marcio Valenzuela
Simple Tutorial Laser Arduino

El código:

[code]
void setup() {
Serial.begin(9600);
pinMode(9,OUTPUT);
}

void loop() {
delay(2000);
digitalWrite(9,HIGH);
delay(2000);
digitalWrite(9,LOW);
delay(3000);
Serial.println(“Cool”);
}
[/code]

 

Los punteros laser se pueden usar en nuestros proyectos para señalar la dirección de avance de un vehículo o robot, para detectar un camino no-interrumpido y muchas otras aplicaciones mas.

Categories
Arduino Raspberry Technological

Arduino (IoT): Simple Tutorial Sensor de Sonido

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Sensor de Sonido

Los robots no solo ven con los ojos.  Muchos “ven” con los oídos.  En este tutorial veremos como un robot puede detectar sonido con uno de estos módulos.  (sound.ino)

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO o equivalente.
  3. Sensor de Sonido
  4. Breadboard
  5. Arduino IDE (https://www.arduino.cc/en/Main/Software)

El código:

[code]
int currentValue;
int maxValue;
int minValue;
unsigned long timer;
int sampleSpan = 200; // Amount in milliseconds to sample data
int volume; // this roughly goes from 0 to 700
void setup(){
Serial.begin(9600);
resetValues();
}
void loop(){
currentValue = analogRead(A0);
if (currentValue < minValue) {
minValue = currentValue;
}
if (currentValue > maxValue) {
maxValue = currentValue;
}
if (millis() – timer >= sampleSpan) {
volume = maxValue – minValue;
Serial.println(volume);
resetValues();
}
//delay(100);
}
void resetValues(){
maxValue = 0;
minValue = 1024;
timer = millis();
}
[/code]

 

 

Automatización de detección sonora es ideal para proyectos industriales o sistemas de seguridad.  En el caso de un proyecto tipo robot, ahora nuestro robot podrá reaccionar ante sonidos.  También hay sensores para vibraciones!

Categories
Arduino Raspberry Technological

Arduino (IoT): Simple Tutorial Camara JPEG IR TTL

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Camara JPEG IR TTL

Si vamos a tener un robot explorador, a veces vamos a querer ver lo que el ve.  Podemos perfectamente agregar un modulo para tomar fotos.  En este tutorial veremos como controlar un modulo para toma de fotos, una Camara JPEG.  TutorialJPEGIRTTLCamerav2.

Requisitos:

  1. Computadora (mac)
  2. Arduino MEGA (u otra variante Arduino) o incluso Arduino clone, Edison, Raspberry…  Este tutorial en particular usa una Arduino MEGA.
  3. Modulo Camara JPEG
  4. Modulo SD para almacenar la imágen
  5. Breadboard
  6. Arduino IDE (https://www.arduino.cc/en/Main/Software)

 

Arduino Tutorial Camara JPEG Santiapps Marcio Valenzuela
Arduino Tutorial Camara JPEG

Veamos el código:

[code]
//*******************************************************
// www.linksprite.com
// Note:
// 1. SD must be formated to FAT16
// 2. As the buffer of softserial has 64 bytes,
// so the code read 32 bytes each time
// 3. Please add the libaray to the lib path
//
// * SD card attached to SPI bus as follows:
// * MOSI – pin 11
// * MISO – pin 12
// * CLK – pin 13
// * CS – pin 4
//*******************************************************
#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>
SoftwareSerial mySerial(5,6); // Set Arduino pin 4 and 5 as softserial
byte ZERO = 0x00;
byte incomingbyte;
long int j=0,k=0,count=0,i=0x0000;
uint8_t MH,ML;
boolean EndFlag=0;
File myFile;
void SendResetCmd(){
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x26);
mySerial.write(ZERO);
}
/*************************************/
/* Set ImageSize :
/* &lt;1&gt; 0x22 : 160*120
/* &lt;2&gt; 0x11 : 320*240
/* &lt;3&gt; 0x00 : 640*480
/* &lt;4&gt; 0x1D : 800*600
/* &lt;5&gt; 0x1C : 1024*768
/* &lt;6&gt; 0x1B : 1280*960
/* &lt;7&gt; 0x21 : 1600*1200
/************************************/
void SetImageSizeCmd(byte Size){
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x54);
mySerial.write(0x01);
mySerial.write(Size);
}
/*************************************/
/* Set BaudRate :
/* &lt;1&gt; 0xAE : 9600
/* &lt;2&gt; 0x2A : 38400
/* &lt;3&gt; 0x1C : 57600
/* &lt;4&gt; 0x0D : 115200
/* &lt;5&gt; 0xAE : 128000
/* &lt;6&gt; 0x56 : 256000
/*************************************/
void SetBaudRateCmd(byte baudrate){
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x24);
mySerial.write(0x03);
mySerial.write(0x01);
mySerial.write(baudrate);
}
void SendTakePhotoCmd(){
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x36);
mySerial.write(0x01);
mySerial.write(ZERO);
}
void SendReadDataCmd(){
MH=i/0x100;
ML=i%0x100;
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x32);
mySerial.write(0x0c);
mySerial.write(ZERO);
mySerial.write(0x0a);
mySerial.write(ZERO);
mySerial.write(ZERO);
mySerial.write(MH);
mySerial.write(ML);
mySerial.write(ZERO);
mySerial.write(ZERO);
mySerial.write(ZERO);
mySerial.write(0x20);
mySerial.write(ZERO);
mySerial.write(0x0a);
i+=0x20;
}
void StopTakePhotoCmd(){
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x36);
mySerial.write(0x01);
mySerial.write(0x03);
}
void setup(){
Serial.begin(38400);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print(“Initializing SD card…”);
pinMode(10, OUTPUT);
if (!SD.begin(4)) {
Serial.println(“initialization failed!”);
return;
}
Serial.println(“initialization done.”);
Serial.println(“please waiting ….”);
}
void loop(){
byte a[32];
int ii;
mySerial.begin(115200);
delay(200);
SendResetCmd();//Wait 2-3 second to send take picture command
delay(2000);
SetBaudRateCmd(0x2A);
delay(500);
mySerial.begin(38400);
delay(100);
SetImageSizeCmd(0x21);
delay(100);
SendTakePhotoCmd();
delay(3000);
while(mySerial.available()&gt;0)
{
incomingbyte=mySerial.read();
}
myFile = SD.open(“picture.jpg”, FILE_WRITE);
while(!EndFlag)
{
j=0;
k=0;
count=0;
SendReadDataCmd();
delay(5);
while(mySerial.available()&gt;0)
{
incomingbyte=mySerial.read();
k++;
delayMicroseconds(100);
if((k&gt;5)&amp;&amp;(j&lt;32)&amp;&amp;(!EndFlag))
{
a[j]=incomingbyte;
if((a[j-1]==0xFF)&amp;&amp;(a[j]==0xD9)) //tell if the picture is finished
EndFlag=1;
j++;
count++;
}
}
for(j=0;j&lt;count;j++){
if(a[j]&lt;0x10) Serial.print(“0″);
Serial.print(a[j],HEX); // observe the image through serial port
Serial.print(” “);
}
for(ii=0; ii&lt;count; ii++)
myFile.write(a[ii]);
Serial.println();
}
myFile.close();
Serial.print(“Finished writing data to file”);
while(1);
}
[/code]

Ahora repasemos las conexiones:

Arduino Tutorial Conexiones Camara JPEG Santiapps Marcio Valenzuela
Arduino Tutorial Conexiones Camara JPEG

En este caso consultamos el manual del modulo y notamos que el cable rojo no es Vcc.  Así que hay que tener cuidado.

Ese proyecto se puede ver aquí:

FinalWorkingJPEGIRCameraSDSetup

 

Excelente!  Podemos hacer varias cosas con estas imágenes, desde almacenarlas en una SD hasta postearlas a internet!