Wednesday, December 5, 2012

Dùng công nghệ in 3D và Arduino để phát triển loa âm thanh

Charles Sprinkle là một kỹ sư hệ thống của Harman - hãng sản xuất thiết bị âm thanh và video cho nhiều nhãn hiệu, có cả JBL - đã dùng công nghệ in 3D và Arduino để chế tạo thử nghiệm các ý tưởng loa mới. Đây là một minh hoạ cho việc dùng công nghệ nguồn mở cũng có thể phát triển các sản phẩm cao cấp:




Via 3ders


Thursday, September 27, 2012

TinyDuino





Thêm một biến thể mới của Arduino nữa. Biến thể này nhắm mục tiêu giảm kích thước bo Arduino.

Xem thêm ở đây!

Tuesday, September 18, 2012

Chế tạo thiết bị cho phòng thí nghiệm dùng Arduino và công nghệ in 3D

Trang thiết bị dùng trong phòng thí nghiệm ngày càng trở nên đắt đỏ, và điều này đang cản trở sự phát triển của khoa học và tiến bộ xã hội đặc biệt là ở những nước đang phát triển. Tuy nhiên điều này đang dần được thay đổi nhờ vào sự phổ biến của các công cụ nguồn mở. Trong số đó phải kể đến 3 lĩnh vực đang giành được sự quan tâm rất lớn của cộng đồng khoa học: phần mềm, in 3D và vi điều khiển.

Giáo sư Joshua Pearce ở trường Michigan Technological University gần đây đã có một bài báo khá hay về đề tài này trên tạp chí nổi tiếng Science. Ông đã mô tả những công cụ nguồn mở như Arduino và in 3D đã và đang làm thay đổi cách chúng ta trang bị cho phòng thí nghiệm. Các trang thiết bị đắt tiền đang ngày càng xa dần tầm với của các nhà khoa học. Và hơn nữa các thí nghiệm lại luôn đòi hỏi trang bị những thiết bị chuyên dùng được thiết kế đặc biệt. Đứng trước những đòi hỏi đó, họ luôn phải tìm kiếm những cách thức mới để đáp ứng nhu cầu của phòng thí nghiệm.


Và giải pháp nguồn mở, đặc biệt là Arduino và in 3D, là giải pháp hoàn hảo nhất. Ông nói về Arduino: "Điều tuyệt diệu về công cụ này là chúng rất dễ học, và do đó cho phép tự động hoá các thí nghiệm một cách rất dễ dàng."

Chẳng hạn như ông muốn trang bị một thiết bị nâng cho các dụng cụ quang học, nhưng giá thành lại quá đắt. Điều này khuyến khích ông tự thiết kế và chế tạo nó thay vì đi mua. Bên cạnh đó Arduino còn có thể điều khiển các thiết bị như: Arduino Geiger (phát hiện bức xạ), pHduino (đo độ pH), OpenPCR (phân tích DNA).

Via 3ders, newswise, kurzweilai 




Monday, August 20, 2012

Điều khiển đèn LED 7 đoạn


1. Mục đích 

Giúp người đọc biết cách hiển thị số trên đèn LED bảy đoạn. (Hiển thị số lần nhấn nút nhấn). 

2. Linh kiện cần thiết

- Arduino UNO                 (x1)
- LED 7 đoạn                   (x1)
- Nút nhấn                        (x1)
- Dây nối
- Breadboard                    (x1)
- Điện trở 330 Ohm          (x1)

3. Tóm tắt

- Tìm hiểu cấu trúc và cách hiển thị LED 7 đoạn
- Kết nối mạch
- Viết code hiển thị số lần nhất nút ra trên LED 7 đoạn 

4. Nội dung

a. Tìm hiểu led 7 đoạn

Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng qua mỗi led đơn trong khoảng 10mA-20mA để bảo vệ led. Nếu kết nối với nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển.
  
Các điện trở 330Ω là các điện trở bên ngoài được kết nối để giới hạn dòng điện qua led nếu led 7 đoạn được nối với nguồn 5V.
     
Chân nhận tín hiệu a điều khiển led a sáng tắt, ngõ vào b để điều khiển led b. Tương tự với các chân và các led còn lại.

Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Anode chung (các led đơn sáng ở mức 0):

Số hiển thị trên led 7 đoạn
Mã hiển thị led 7 đoạn dạng nhị phân
Mã hiển thị led 7 đoạn dạng thập lục phân

h g f e d c b a

0
1 1 0 0 0 0 0 0
C0
1
1 1 1 1 1 0 0 1
F9
2
1 0 1 0 0 1 0 0
A4
3
1 0 1 1 0 0 0 0
B0
4
1 0 0 1 1 0 0 1
99
5
1 0 0 1 0 0 1 0
92
6
1 1 0 0 0 0 1 0
82
7
1 1 1 1 1 0 0 0
F8
8
1 0 0 0 0 0 0 0
80
9
1 0 0 1 0 0 0 0
90
A
1 0 0 0 1 0 0 0
88
B
1 0 0 0 0 0 1 1
83
C
1 1 0 0 0 1 1 0
C6
D
1 0 1 0 0 0 0 1
A1
E
1 0 0 0 0 1 1 0
86
F
 1 0 0 0 1 1 1 0
8E
-
1 0 1 1 1 1 1 1
BF


b. Kết nối



Hình trên chỉ mang tính tham khảo với một LED 7 đoạn.



c. Nhập đoạn code

int ledPins[] = {3,4,5,6,7,8,9,10};  //hien thi 7 doan cua 1 led (3-9=a-g), 10=dp
int buttonPin = 2;  //nhan tin hieu tu nut nhan
int i=0;
const byte numberal[10] = {
        B11111100,  // 0
        B01100000,  // 1
        B11011010,  // 2
        B11110010,  // 3
        B01100110,  // 4
        B10110110,  // 5
        B10111110,  // 6
        B11100000,  // 7
        B11111110,  // 8
        B11100110,  // 9
    };
   
    const int segmentPins[8] = {10,9,8,7,6,5,4,3};

void setup()
{
  //thiet lap chuc nang cac chan
  for (int thisLed = 0; thisLed < 8; thisLed++)
  {
    pinMode(ledPins[thisLed], OUTPUT);
    digitalWrite(ledPins[thisLed], HIGH);
  }
    pinMode(buttonPin, INPUT);
    attachInterrupt(0, tang, RISING);
}

void loop() {}

void tang(){
 
  if (i<9)
    i++;
  else
    i=0;
  Sodawrite(i);
}

void Sodawrite(int number) {
    boolean isBitSet;
   
    for(int segment=0; segment < 8; segment++) {
        if(number < 0 || number > 9) {
            isBitSet = 0;
        }
        else{
            isBitSet = bitRead(numberal[number], segment);
        }
        isBitSet = ! isBitSet;
        digitalWrite(segmentPins[segment], isBitSet);
    }


5. Bài học rút ra

Đèn LED 7 đoạn là một linh kiện tương đối phổ biến dùng để hiển thị thông tin cho người dùng. Sau bài học này chúng ta đã biết cách điều khiển LED 7 đoạn để hiển thị số lần nhấn nút nhấn.

Nội dung cơ bản:
     - Đọc tín hiệu nút nhấn dùng interrupt
     - Điều khiển hiển thị LED bảy đoạn


Thursday, August 16, 2012

Điều khiển độ sáng đèn LED bằng biến trở



1. Mục đích 

Giúp người học biết cách đọc tín hiệu ngõ vào dạng analog và điều khiển độ sáng đèn LED tương ứng với giá trị điện thế của tín hiệu analog của biến trở. 

2. Linh kiện cần thiết 

- Bo mạch Arduino UNO (x1)
- Breadboard                     (x1)
- Biến trở                          (x1)
- LED                                (x1)
- Dây nối 

3. Tóm tắt 

- Tìm hiểu , xác định các chân của biến trở
- Kết nối biến trở vào breadboard, mạch Arduino
- Viết code , chạy chương trình 

4. Nội dung 

a.  Xác đinh chân biến trở


Biến trở là linh kiện có thể thay đổi điện trở được nhờ nút xoay. Mỗi biến trở có 3 chân. Điện trở giữa hai chân ngoài cùng có giá trị không đổi. Điện trở giữa chân ngoài và chân giữa có thể thay đổi nhờ vặn nút xoay. 

b.    Kết nối



 Schematic:

c.      Code

int sensorPin = A0;    // select the input pin for the potentiometer
int sensorValue = 0;  // variable to store the value coming from the sensor
int ledPin1 = 11;

void setup() {
    // declare the ledPin as an OUTPUT:
    pinMode(ledPin1, OUTPUT);  
}
void loop()
{
     // read the value from the sensor:
     sensorValue = analogRead(sensorPin);    // turn the ledPin on
     analogWrite (ledPin1, sensorValue);
     delay (30); 
}

Hình ảnh thực tế

 

5.      Rút ra bài học 

Qua bài thực hành này chúng ta đã học được các nội dung sau:

     - Biết cách đọc tín hiệu analog
     - Xuất tín hiệu PWM để điều khiển độ sáng của LED

Với những nội dung này bạn đã có thể đọc các cảm biến dạng analog như nhiệt độ, độ ẩm...và điều khiển động cơ servo dùng PWM.

   


Điều khiển đóng ngắt đèn LED bằng nút nhấn


1.      Mục đích 
Giúp người học biết cách đọc tín hiệu ngõ vào dạng digital từ nút nhấn và điều khiển đóng ngắt đèn LED tương ứng. 

2.      Linh kiện cần thiết 
·         Board mạch Arduino Uno  (x1)
·         Breadboard                         (x1)
·         Nút nhấn                            (x1)      
·         Điện trở 220 Ohm              (x1)
·         Dây nối  

3.      Tóm tắt 
- Kết nối phần cứng
- Viết chương trình nhấn nút button để tắt mở đèn led 

4.      Nội dung 
a.      Kết nối

 SCHEMATIC
 
a.      Code

const int buttonPin = 2;     // the number of the pushbutton pin 
const int ledPin =  13;      // điều khiển led 13 

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status 

void setup() {
    pinMode(ledPin, OUTPUT);      
    pinMode(buttonPin, INPUT);     
}
void loop(){

    buttonState = digitalRead(buttonPin);// đọc trạng thái ngõ vào 
    if (buttonState == HIGH)
    {     

      digitalWrite(ledPin, HIGH); //đèn led 13 on nếu ngõ vào là mức áp cao 
    }
    else }
      digitalWrite(ledPin, LOW); // đèn led 13 off nếu ngõ vào là mức áp thấp 

    }  
}

MẠCH THỰC TẾ

 

5.      Rút ra bài học

 Qua bài thực hành này chúng ta đã học được các nội dung cơ bản sau: 
·         Kết nối mạch ngõ vào digital đơn giản (nút nhấn) 
·         Đọc trạng thái ngõ vào digital 
·         Xuất tín hiệu digital điều khiển đèn LED tương ứng với trạng thái của nút nhấn

Wednesday, August 15, 2012

ARDUINO ĐIỀU KHIỂN 2 LED VỚI HAI TẦN SỐ KHÁC NHAU






1. Mục đích 

Giúp người học biết cách kết nối thử nghiệm mạch (đèn LED) trên breadboard và điều khiển nhấp nháy hai đèn LED với hai tần số khác nhau.

2. Linh kiện cần thiết

- Arduino UNO        (x1)
- Breadboard            (x1)
- Điện trở 220 Ohm (x2)
- LED                       (x2)


3. Tóm tắt

- Kết nối các linh kiện với mạch arduino
- Kết nối arduino vơi máy tính (qua cổng USB)
- Viết chương trình
- Biên dịch kiểm  tra lỗi và nạp vào kit arduino

4. Nội dung
a. Kết nối

Nối các linh kiện như hình vẽ sau:
 

b.Viết code trong Arduino IDE
Hai led1 và led2 lần lượt nhấp nháy với chu kì 4s và 2s
GIẢN ĐỒ XUNG
LED 1

LED 2         



Nhập đoạn code sau:

// điều khiển nhấp nháy hai led với hai tấn số khác nhau
int led1 = 9;
int led2 = 8;
void setup() {               
  pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);    
}
// the loop routine runs over and over again forever:
void loop() {

   digitalWrite(led1, LOW);   
   digitalWrite(led2, LOW);
   delay(1000);                // wait for a second
   digitalWrite   (led2, HIGH);    
   delay(1000);               // wait for a second
   digitalWrite(led1, HIGH);
   digitalWrite(led2, LOW);
   delay(1000);               // wait for a second
   digitalWrite(led2, HIGH);
   delay(1000);
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
   delay (1000);    
 }

Sau đó nhấn nút verify để biên dịch chương trình và kiểm tra lỗi.Nhấn tiếp nút upload để nạp chương trình cho kit arduino.
 
5. Rút ra bài học 

Sau bài này các bạn sẽ biết cách: 
·         viết một đoạn code cơ  bản trong Arduino IDE 
·         vẽ giản đồ xung 
·         xuất xung ngõ ra điều khiển ngoại vi đơn giản theo sơ đồ xung có sẵn