ArduinoでFMラジオを作ろう!

AruduinoFMラジオ

Arduino Pro MiniとFMラジオモジュールであるTEA5767を使ってFMラジオを制作しています。

Step 1: FMラジオの作り方はビデオで紹介してあるよ!

 

Youtubeにアップロードしてある制作ガイドはパート1とパート2の二つに分かれています。下記に書かれているおおまかな概要よりは詳細に説明してあるよ。

 

Step 2: パーツを注文しよう!

以下のパーツが必要だ。

1x Arduino Pro Mini: http://amzn.to/1pgkpSJ

(Optional) FTDI breakout: http://amzn.to/1pgkxS6

1x TEA5767: http://amzn.to/222XF6s

1x MCP4151: http://amzn.to/1pgkBRX

1x TDA1905: http://amzn.to/1SzD9YE

or (Optional) 1x PAM8403: http://amzn.to/1pgkPIH

1x HD44780 16×2 LCD: http://amzn.to/1SzDmLh

1x MT3608: http://amzn.to/222Y4G9

1x TP4056: http://amzn.to/1pgl1YB

1x Micro USB breakout: http://amzn.to/1pgldqR

1x 18650 Li-Ion battery: http://amzn.to/1pglkTi

1x Slide Switch: http://amzn.to/1pglJFj

1x Rotary Encoder: http://amzn.to/1pglLgm

1x Speaker: http://amzn.to/1pglYQv

6x 10kΩ, 1x 3.3kΩ, 1x 100Ω, 1x 1Ω Resistor: http://amzn.to/1pgm2Ql

1x 10kΩ Potentiometer: http://amzn.to/1pgmspN

1x 100nF, 1x 220nF Capacitor: http://amzn.to/1pgmRZq

3x 1µF, 1x 2.2µF, 1x 10µF, 1x 220µF Capacitor: http://amzn.to/1pgmEFu

1x Retractable Antenna: http://amzn.to/1R70xqZ

2x 5mm RGB LED: http://amzn.to/1pgn7Yt

Perfboard with copper dots: http://amzn.to/1pgndz7

Step 3: 回路を作ろう!

circut

arduinofm2

arduinoFM1

arduinofm3

Step 4: Arduinoにコードをアップロードしよう!

以下のコードを.inoの拡張子で保存してArduinoにアップロードしよう!

#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal.h>
#define clk 2
#define dt 3
#define sw 4
#define cs A0
LiquidCrystal lcd(5,6,7,8,9,10);
double frequency;
unsigned char frequencyH = 0;
unsigned char frequencyL = 0;
unsigned int frequencyB;
int Vol;
boolean mode;

volatile boolean TurnDetected;
volatile boolean up;

byte customChar[8] = {  //creates the arrow 
  0b10000,
  0b11000,
  0b11100,
  0b11110,
  0b11110,
  0b11100,
  0b11000,
  0b10000
};

void isr0 ()  {
  TurnDetected = true;
  up = (digitalRead(clk) == digitalRead(dt));
}

void setFrequency()  {
  frequencyB = 4 * (frequency * 1000000 + 225000) / 32768;
  frequencyH = frequencyB >> 8;
  frequencyL = frequencyB & 0XFF;
  Wire.beginTransmission(0x60);
  Wire.write(frequencyH);
  Wire.write(frequencyL);
  Wire.write(0xB0);
  Wire.write(0x10);
  Wire.write((byte)0x00);
  Wire.endTransmission(); 
} 

void setVolume() {
 digitalWrite(cs, LOW);
 SPI.transfer(0);
 SPI.transfer(Vol);
 digitalWrite(cs, HIGH);
}

void displaydata(){
 lcd.setCursor(1,0);
 lcd.print("FM:");
 lcd.print(frequency);
 lcd.setCursor(1,1);
 lcd.print("Vol:");
 lcd.print(100-Vol*100/255);
 lcd.print("%");
} 

void arrow(){
 lcd.begin(16, 2);
 if (mode == 1){
   lcd.setCursor(0,0);
   lcd.write((uint8_t)0);}
 else{
   lcd.setCursor(0,1);
   lcd.write((uint8_t)0);} 
}

void setup() {
  SPI.begin();
  Wire.begin();
  lcd.begin(16, 2);
  pinMode(cs,OUTPUT);
  pinMode(clk,INPUT);
  pinMode(dt,INPUT);  
  pinMode(sw,INPUT);
  mode = 1; //frequency mode
  lcd.createChar(0, customChar); // arrow Char created
  frequency = 99.8; //starting Frequency
  Vol = 220; //starting Volume
  setFrequency();
  setVolume();
  arrow();
  displaydata();
  attachInterrupt (0,isr0,FALLING);
}

void loop() {
  if (!(digitalRead(sw))){
    mode=!mode;
    arrow();
    displaydata();
    delay(500);}
    
  if (TurnDetected && mode == 1){
    if(up){
      if (frequency >= 107.90){
        setFrequency();
        arrow();
        displaydata();}
      else{   
      frequency = frequency + 0.1;
      setFrequency();
      arrow();
      displaydata();}}
    else{
      if (frequency <= 87.6){
        setFrequency();
        arrow();
        displaydata();}
      else{
      frequency = frequency - 0.1;
      setFrequency();
      arrow();
      displaydata();}}
      TurnDetected = false;
    }

  if (TurnDetected && mode == 0){
    if(up){
      Vol = Vol - 10;
      if (Vol <= 0){
        Vol = 0;
        setVolume();
        arrow();
        displaydata();}
      else{
      setVolume();
      arrow();
      displaydata();}}
    else{
      Vol = Vol + 10;
      if (Vol >= 255){
        Vol = 255;
        setVolume();
        arrow();
        displaydata();}
      else{
      setVolume();
      arrow();
      displaydata();}}
      TurnDetected = false;
    }   
  }


    
  
 

Step 5: ケースを作ろう!

Illustratorやinkscapeなど、SVGを描画出来るアプリを使ってケースを設計します。元記事にSVGのデータもあります。

case case1 case2

そして組み立てていけば形になってきます。

Step 6: できあがり!!!

これであなたのFMラジオができあがったよ!ちゃんと作りたい人は転載元と動画を参考にして作ってみてください!

 

転載元

http://sp.jorudan.co.jp/hanami/spot_117.html

Be the first to comment

Leave a Reply

Your email address will not be published.


*


CAPTCHA