산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY Si4730 전 대역 라디오(LW, MW, SW, FM)

구성품 및 소모품

Arduino Nano R3
× 1
Si4730 라디오 모듈
× 1
Adafruit Standard LCD - 파란색 바탕에 16x2 흰색
× 1
푸시 버튼이 있는 로터리 인코더
× 1
개발 보드, 클래스 D 오디오 증폭기 모듈
× 1
스피커:0.25W, 8옴
× 1
오래된 MW 라디오의 페라이트 막대
× 1
슬라이드 스위치
× 1

필요한 도구 및 기계

납땜 인두(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

Arduino 라디오를 언급하면 ​​항상 최신 FM 라디오(유럽의 경우 88-108MHz)를 생각합니다. LW, MW 및 SW 대역은 0.2 ~ 30MHz 범위를 포괄합니다. SW는 특히 흥미롭다. 단파 대역의 전파는 전리층이라고 불리는 대기의 전하를 띤 원자 층에서 반사되거나 굴절될 수 있습니다. 따라서 단파 라디오는 때때로 전체 대륙 또는 그 너머의 매우 장거리 통신에 사용될 수 있습니다.

아래에서 위에서 언급한 모든 대역을 커버하는 라디오의 개발을 소개하겠습니다. 이 라디오의 "핵심"은 Silicon Labs의 Si4730 IC로, AliExpress에서 몇 달러에 소형 개발 보드 형태로 구입할 수 있습니다.

이 보드는 I2C 프로토콜을 사용하여 Arduino에 의해 제어됩니다. 코드는 Julio C. Rosa가 작성했으며 코드 및 체계와 함께 아래에 제공된 Si4735-I2C-R4 라이브러리를 기반으로 합니다. 제조사에서는 이 칩(Si4730)이 AM/FM 전용이라고 하지만 실제로는 SW에서도 작동합니다. 오디오 출력을 위해 저는 매우 저렴하고 기능적인 미니 디지털 앰프 보드 2*3W PAM8403 Class D를 사용합니다.

이 장치는 적절한 하우징에 조립되어 있으며 완전한 소형 World Band 라디오를 나타냅니다. 그렇지 않으면 나는 상대적으로 인구 밀도가 높은 지역의 1층에 살고 10미터 길이의 안테나를 사용하므로 수신이 상당히 약하지만 여전히 내가 소유하고 있는 상업용 품질의 포켓 라디오와 비슷합니다.

마지막으로 이 칩은 TECSUN, DEGEN, SANGEAN 등과 같은 유명 브랜드의 휴대용 라디오에서 사용하고 있습니다.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • 코드
  • 도서관
  • 코드C/C++
    <사전>/************************************************ ************************************************** ** JCR Si4730/5 수신기 LW/MW/SW/FM - 공유할 버전입니다. 배선 세부 사항은 회로도를 참조하십시오. Julio C. Rosa 작성 - The CesarSound - 2019년 5월 명령:radio.volumeUp(); radio.volumeDown();radio.seekDown(); radio.seekUp(); radio.mute(); 라디오.음소거 해제(); 라디오.setMode(FM); radio.tuneFrequency(9490); 라디오.getStatus(); 라디오.getVolume(); 라디오.getMode(); 라디오.getMute(); radio.toggleMute(); RSQ메트릭 rsq; radio.getRSQ(&rsq); (rsq.stereo); print_number(rsq.stereoBlend); print_number(rsq.SNR); (rsq.seekable); print_number(rsq.RSSI); 인쇄 모드(); print_station_freq(); 인쇄 볼륨(); print_mute(); print_home(); 라디오.getCallSign(콜사인); printp(rds1); Serial.write(callSign); 라디오.getProgramTypeStr(프로그램 유형); Serial.write(프로그램 유형); (rds1); (rds2); (rds3); (rds4); (rds5);************************************************ ************************************************** *****/// Library#include #include #include #include "Wire.h"// I/O SettingsRotary r =Rotary(2, 3 );LiquidCrystal lcd(12, 13, 7, 6, 5, 4);const byte band =A0;//변수 설정 unsigned int freq =880;unsigned int freqmax =10800;unsigned int freqmin =50;unsigned1 in;unsigned int freqold;unsigned int buttonstate;unsigned int count =15;// radio.Si4735 radio;void setup() { lcd.begin(16, 2); PCICR |=(1 <>"); lcd.setCursor(3, 0); lcd.print(":"); lcd.setCursor(13, 0); lcd.print("kHz");}// 인코더 InterruptISR(PCINT2_vect) { unsigned char result =r.process(); if (결과) { if (결과 ==DIR_CW) { 주파수 =주파수 + fstep; if (주파수>=freqmax) { freq =freqmax; } } else { 주파수 =주파수 - fstep; if (주파수 <=freqmin) { freq =freqmin; } } }} 무효 루프() { if (freqold !=freq) { tune(); } 빈도 =빈도; lcd.setCursor(5, 0); lcd.print(주파수); lcd.print(" "); 버튼 상태 =디지털 읽기(대역); // 반다스 선택기 if (buttonstate ==LOW) { inc_preset(); 동안 (디지털 읽기(대역) ==0); } // Medidor - S-미터(dBu) e SNR(dB) - RSQMetrics를 사용하려면 주석 처리를 제거합니다. rsq; radio.getRSQ(&rsq); lcd.setCursor(0, 2); lcd.print("dBu:"); lcd.print(rsq.RSSI); lcd.setCursor(9, 2); lcd.print("dB:"); lcd.print(rsq.SNR);}// 사전 설정 INCvoid inc_preset() { count++; if (count> 15) count =1; 대역 사전 설정(); delay(100);}// Bandasvoid의 사전 설정 선택자 bandpresets() { lcd.setCursor(0, 0); 스위치(개수) { 경우 1:주파수 =370; 라디오.setMode(LW); radio.tuneFrequency(주파수); command_am(); f단계 =5; lcd.print("LW1"); 부서지다; 경우 2:주파수 =620; 라디오.setMode(AM); radio.tuneFrequency(주파수); f단계 =5; lcd.print("MW1"); 부서지다; 경우 3:주파수 =840; 라디오.setMode(AM); radio.tuneFrequency(주파수); f단계 =5; lcd.print("MW2"); 부서지다; 경우 4:주파수 =3700; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW0"); 부서지다; 사례 5:주파수 =4985; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW1"); 부서지다; 사례 6:주파수 =6010; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =1; lcd.print("SW2"); 부서지다; 사례 7:주파수 =7200; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =1; lcd.print("SW3"); 부서지다; 사례 8:주파수 =10000; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW4"); 부서지다; 사례 9:주파수 =11940; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW5"); 부서지다; 사례 10:주파수 =13710; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW6"); 부서지다; 사례 11:주파수 =15400; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW7"); 부서지다; 사례 12:주파수 =17560; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW8"); 부서지다; 사례 13:주파수 =21505; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("SW9"); 부서지다; 사례 14:주파수 =27015; 라디오.setMode(SW); radio.tuneFrequency(주파수); f단계 =5; lcd.print("CB1"); 부서지다; 사례 15:주파수 =9700; 라디오.setMode(FM); radio.tuneFrequency(주파수); f단계 =10; lcd.print("FM1"); 부서지다; }}//Sintonizador - tunervoid tune() { radio.tuneFrequency(freq);}//명령 소프트 음소거 해제 / AVC 최대 이득 무효 command_am() { radio.setProperty(PROP_AM_SOFT_MUTE_MAX_ATTENUATION, 0); // 0(꺼짐) - 63 radio.setProperty(PROP_AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN, 0x3A98); // 1000 - 7800}
    라이브러리C/C++
    미리보기 없음(다운로드만 가능).

    회로도


    제조공정

    1. 무선 회로
    2. 라디오
    3. 고무줄
    4. DIY 써모캠 제작
    5. UVC 상자 DIY UV 살균기
    6. Pi-Arduino 인터넷 라디오
    7. JX 웨이브 생성기
    8. DIY 가상 현실 스케이트보드
    9. Arduino 기반 샤워 캐빈 FM 라디오
    10. 수직 띠톱이란 무엇입니까?