Talaan ng mga Nilalaman:

Senior Radio - Raspberry Pi: 8 Hakbang
Senior Radio - Raspberry Pi: 8 Hakbang

Video: Senior Radio - Raspberry Pi: 8 Hakbang

Video: Senior Radio - Raspberry Pi: 8 Hakbang
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Hulyo
Anonim
Senior Radio - Raspberry Pi
Senior Radio - Raspberry Pi

Ang proyekto ng Senior Radio ay isang bukas na mapagkukunan na naa-access na dinisenyo aparato sa radyo sa internet na may parehong mga bahagi ng hardware at software. Ito ay inilaan upang magamit para sa mga gumagamit na pamilyar sa pagkontrol ng isang radio sa bulsa kung saan kinokontrol ng mga pagdayal ang dami at ang napiling istasyon ng radyo. Ang proyekto ay ginawa gamit ang isang disenyo na nakasentro sa gumagamit, nakatuon sa isang gumagamit na nais ang isang katulad na laki at mga kontrol bilang isang karaniwang radio na handheld.

Itinayo ito upang masiyahan ang mga pangangailangan ng pagpayag sa mga indibidwal na may kapansanan na makinig sa libu-libong iba't ibang nilalaman ng streaming sa internet na karaniwang magagamit lamang sa pamamagitan ng isang browser ng internet. Maraming tao ang walang kakayahang gumamit ng ganoong aparato nang madali, kaya nilalayon ng disenyo na ito na gumawa ng pamilyar na interface para sa isang modernong teknolohiya.

Ang pangunahing pag-andar ay nasa Github, nakaimbak sa isang python 3.7.3 na programa na tinatawag na seniorRadio.py. Nagbabasa ito at nagsusulat ng isang json file upang maiimbak ang estado ng radyo, kaya kapag na-on mo ito maaalala ang kasalukuyang antas ng audio at istasyon na napili. Bilang karagdagan, nagbabasa ito ng isang naka-host na json file sa online na maaari mong baguhin! Pinapayagan kang i-update ang mga istasyon ng radyo nang malayuan kung ibibigay mo ito sa iba.

Kasalukuyan itong nilikha upang kumonekta sa isang bluetooth speaker, ngunit madaling gawin upang mai-play ang isang onboard speaker din.

Ang tagalikha ng aparatong ito ay malamang na hindi ang gumagamit, at nangangailangan ng kahit kaunting karanasan sa electronics at pangunahing kaalaman sa programa. Napakainam din ng karanasan sa Linux.

Sa gumagamit, ang pagpapaandar ay simple:

Sa power up ay i-play nito ang huling istasyon na napili sa default na audio device. Kinokontrol ng kaliwang dial ang istasyon, kung saan ang ilang mga pag-click ng dial ay nagbabago sa isang bagong URL. Ito ay lulon pagkatapos ng huling o unang entry. Kinokontrol ng tamang dial ang antas ng audio. Ipinapahiwatig ng LED na nakabukas ang programa. At ang pushbutton ay naka-pause o "patayin" ang radyo. Kaya't sa sandaling napagana, ang isang gumagamit ay maaaring pindutin ang pindutan upang i-pause / i-play, o "i-off / on", ang radyo at ang dalawang pagdayal upang makontrol ito.

Mga gamit

Naka-link sa bawat item ang partikular na ginamit ko. Nagkakahalaga sa akin ng halos $ 60 na may maraming natitirang mga suplay!

Pangunahing kaalaman sa elektronik at linux - para sa pagpupulong at pag-debug

Raspberry Pi Zero W (Ang Zero WH ay may pre-solder na mga header at malamang na kapaki-pakinabang)

MicroSD card-8 GB + at kakayahan o

MicroUSB 5V power adapter - Kasama rin sa link ang microHDMI adapter at microUSB OTG sa USB Isang adapter para sa pag-setup kung kailangan mo sila

Bluetooth speaker

Mga kable ng M / F at M / M jumper

2 Rotary encoder - parehong link tulad ng nasa itaas

Maliit na breadboard

Pushbutton

LED (opsyonal) - bumili ng LED + push button sa itaas

Kahon para sa balot

Hakbang 1: Pag-set up (walang ulo) Raspberry Pi W

Pag-set up (walang ulo) Raspberry Pi W
Pag-set up (walang ulo) Raspberry Pi W

Kailangan naming i-setup ang operating system sa raspberry pi na tatakbo ang software. Wala sa ito ang natatangi sa proyektong ito. Para sa pag-debug, inirerekumenda kong i-set up ito upang ma-access mo rin ito sa mode na walang ulo. Nangangahulugan ito na ma-access mo ang pi sa iyong WiFi network sa pamamagitan ng GUI o isang SSH terminal at hindi mo kailangan ng isang keyboard, mouse, at monitor upang magamit ito sa bawat oras. Magagawa mo ito nang hindi nangangailangan na kumonekta sa isang monitor / mouse / keyboard kailanman kung ikaw ay mas matalino sa tech. Ang ilang mga halimbawa ng mga tagubilin dito. Gayunpaman ito ay hindi gaanong tuwid, at sa ibaba ay isa pang paraan upang i-set up ito.

Sa unang pagkakataong ito ay malamang na kakailanganin mo:

  • Raspberry Pi W
  • MicroSD sa SD card adapter [upang isulat ang OS papunta sa SD card]
  • MicroSD card (~ 8 GB +) [upang maiimbak ang OS at aming programa]
  • Lakas ng MicroUSB (5V)
  • MicroUSB sa USB A [para sa mouse / keyboard]
  • Mini HDMI to HDMI adapter [para sa display output]
  • Keyboard
  • Mouse
  • Subaybayan

Una, kakailanganin mong i-flash ang operating system sa rPi micro SD card.

Gumamit ako ng raspian buster, i-download mo ito sa isang computer na may isang read card / manunulat ng SD at pagkatapos ay i-flash ang raspian OS sa SD card. Ang BalenaEtcher ay isang madaling software upang magawa ito

Susunod na ilagay ang SD card sa pi slot, ikonekta ang monitor, keyboard at lakas. Magpatuloy sa pamamagitan ng mga hakbang sa pag-set up na hinihikayat ka ng raspian, kabilang ang pagkonekta nito sa iyong WiFi network at pagpapares ng iyong bluetooth speaker sa pamamagitan ng GUI. Mahusay na kasanayan ay upang i-update ito gamit ang mga sumusunod na utos

sudo apt-get update

sudo apt-get upgrade

Kung nais mong isama ang pagmamarka ng iyong pi walang ulo, kakailanganin muna naming grab ang ip address ng pi. Sa pamamagitan ng isang terminal ay mahahanap mo ito sa pamamagitan ng

ifconfig

utos Kailangan mong paganahin ang SSH at VNC sa mga pagpipilian sa interface sa

sudo raspi-config

Pagkatapos ng isang restart, maaari mo na ngayong subukan ang pag-access sa pi over SSH o VNC. Ang SSH ay isang interface lamang ng terminal, at maaaring mas madali mong magamit ang GUI upang ipares ang isang bluetooth speaker. Maaari kang gumamit ng isang programa tulad ng VNC na kumonekta upang madaling ma-access ang iyong pi sa isang hiwalay na computer sa iyong network. Maaari mong gamitin ang isang programa tulad ng masilya sa SSH dito.

Bukod dito, maaari mong i-set up ang isang VNC cloud account upang ma-access mo ang aparato mula sa network kung kinakailangan

Hakbang 2: I-install ang Senior Radio Software

I-install ang Senior Radio Software
I-install ang Senior Radio Software

Maaari itong magawa mula sa isang terminal window ng raspberry pi. Siguraduhin muna na naka-install ka na git

sudo apt-get install git

Nakasalalay sa aling operating system ang na-install mo, maaaring magkakaiba ang mga hakbang na ito dahil maaaring kailanganin mong mag-install ng mga karagdagang pakete, sasabihin sa iyo ng system kung gayon. Una kailangan naming i-download ang nakatatandang radio code mula sa github. https://github.com/Bunborn/seniorRadio May perpektong, gumagawa ka ng aming sariling repo upang makagawa ka ng mga pagbabago at madaling baguhin ang mga istasyon ng radyo sa katulad na paraan ng ginagawa ko. Fork ang repo kung ganon

Gayunpaman, maaari mong gamitin ang kapareho ng minahan nang walang problema kung nais mong i-host ang iyong file ng radio json sa ibang lugar

Pagkatapos i-clone ang repo sa anumang lokasyon na nais mong maging. Mabuti ang default na direktoryo. Kunin ang URL kung aling github repo ang gusto mo sa pamamagitan ng pagpindot sa berdeng clone o pag-download na pindutan.

Bumalik sa window ng terminal, git clone

Dapat mo na ngayong makita ang isang labis na direktoryo na pinangalanang seniorRadio kapag tumitingin gamit ang ls. Kamangha-mangha!

Ang code ay sinadya upang maging self-document, kung titingnan ay magiging kapaki-pakinabang. Lalo na para sa mga layunin ng pag-debug at kung binabago mo ang system.

Hakbang 3: Mag-install ng Karagdagang Software

Mag-install ng Karagdagang Software
Mag-install ng Karagdagang Software

Bago kami magpatuloy sa circuit at subukan ito, kailangan din naming i-download ang VLC at ang python api para dito. Maaaring mayroon ka ng naka-install na VLC. Ang unang dalawang utos ay ia-update ang pi, at ang huling dalawang utos sa ibaba ay mai-install ang VLC at pagkatapos ang python api

sudo apt-get update

sudo apt-get upgrade

sudo snap i-install ang VLC

sudo apt-get install vlc-python

Bilang karagdagan, i-install din ang gpiozero, na gagamitin namin upang maiugnay sa mga pin ng GPIO ng pi. Maaari mo nang mai-install ito depende sa iyong operating system.

sudo apt-get install gpiozero

Hakbang 4: Maghanap ng Mga Stream ng Mga Istasyon ng Radyo

Maghanap ng Mga Radyo ng Stasyon ng Radyo
Maghanap ng Mga Radyo ng Stasyon ng Radyo

Susunod, isa sa mga pinaka kasiya-siyang bahagi! Oras upang piliin ang anumang mga stream na gusto mo.

Sa aking file ng InternetStations.json makikita mo ang aking mga link sa stream, pangunahin para sa balita at musika. Ngunit mayroong isang toneladang naka-host na nilalaman doon. Ang susi dito ay upang mahanap ang direktang stream URL address. Halimbawa, ang mga balita sa BBC at mga istasyon ng musika ay matatagpuan dito sa blog na ito. Ang mga direktang stream na ito ay walang anumang graphic na interface at awtomatikong i-play ang stream sa pamamagitan ng iyong browser media player. Ito ang mga URL na kailangan namin upang mabasa ito ng VLC! Maaari mong subukan ang anumang link nang mabilis sa iyong web broswer, o sa pamamagitan ng VLC sa iyong normal na computer upang matiyak na gagana ito sa pi.

Upang hanapin ang mga istasyong ito, maaari kang maghanap para sa direktang stream online kung i-host ito ng serbisyo. Ang isang mabilis na paraan ay maaari ding i-play ang stream, mag-right click sa browser at pindutin ang "inspect element". Mag-navigate sa tab ng network at dapat itong ipahiwatig ang stream na 'direktang' URL. Ipinapakita ito ng video sa youtube na ito. Ang pagre-refresh ng pahina na may bukas na tab ay dapat makatulong.

Sa sandaling mayroon ka ng iyong mga istasyon, nais mong ilagay ang mga ito sa online upang ang iyong seniorRadio python na programa ay maaaring makuha ang mga ito. Maraming mga pagpipilian upang magawa ito, maaari kang gumamit ng mga site tulad ng Github, bitbucket, o kahit na sourceforge. Ang pangunahing layunin ng pagho-host ng listahang ito sa online ay upang ang pag-set up ng gumagamit ay maaaring baguhin ang listahan ng stream online nang malayuan.

Sa pagsisimula ng programa ng sawa mayroong isang variable na tinatawag na url, baguhin lamang ito upang maging URL ng iyong json file kasama ang mga link ng istasyon ng URL

Maaari mong sundin ang parehong format sa aking file sa internetStation.json. Kung nais mong gumamit din ng github, maaari mo lang tinidor ang aking seniorRadio repository, at i-edit ang iyong sariling internetStation.json file at ituro ito sa "hilaw" na URL. Mahahanap mo iyan sa ibaba sa Github GUI sa sandaling na-click mo ang file.

Hakbang 5: Lumikha ng Mga Circuits

Lumikha ng Circuits
Lumikha ng Circuits

Ngayon kailangan naming i-setup ang circuit. Magbabago ito batay sa iyong kagamitan, ngunit sa ibaba ay kung paano ko nai-set up ang minahan.

pinout.xyz/ para sa sanggunian sa kung aling mga pin ang alin. Dahil ginagamit namin ang library ng gpiozero, nag-aalala kami sa pag-numero lamang ng BCM pin. Tandaan na bumili ako ng ilang dagdag na KY040 rotary encoder - ang mga pagdayal - upang subukan ang mga ito dahil lahat sila ay hindi pare-pareho ang kawastuhan. Ang bawat isa ay mayroong ilang "bouncing", o simpleng maling output, kaya't pinili ko ang pinakamahusay sa dalawa na mayroon ako. Sa code ay mapapansin mo na may ilang mga hakbang upang malimitahan ang talbog din na ito.

Ikinonekta ko ang aking pindutan sa BCM pin 17 at ground

Ang aking LED sa isang 1k ohm risistor pagkatapos BCM pin 27 at lupa

Ang aking KY040 rotary encoder ay nagkaroon ng + lead sa 5V, ang GND sa lupa at SW ay nakadiskonekta. Ang mga ito ay konektado sa isang mini breadboard

Ang rotary encoder dt pin na konektado sa BCM pin 21

Ang rotary encoder clk pin na konektado sa BCM pin 20

Ang antas ng audio rotary encoder dt pin na konektado sa BCM pin 19

Ang antas ng audio rotary encoder clk pin na konektado sa BCM pin 16

Kung binago mo ang mga pin na ito, i-update lamang ang numero sa programa ng sawa pati na rin kung saan itinatakda nito ang mga handler

Gumamit ako ng isang mini breadboard upang gawing mas madali ito. Gumamit ako ng mga wire ng jumper ng M / M at M / F din upang mapadali ang interface. Naghinang ako ng ilang mga lead ng jumper wire papunta sa mga pin ng pushbutton / LED na binili ko kanina. Upang hindi maghinang, maaari kang makakuha ng mga pindutan ng push at LED na mayroon nang mga lead ng jumper wire o madaling kumonekta sa isa.

Hakbang 6: Subukan Ito

Ngayon, dapat ay mayroon kang isang operating system! Subukan natin ito. Mag-navigate sa folder gamit ang python program, malamang:

cd seniorRadio

python3 seniorRadio.py

Sa kasalukuyan, mayroong isang 45 segundo na pagkaantala sa pagsisimula ng programa upang bigyan ito ng oras upang mahanap ang bluetooth speaker na nasa lakas. Maaari mong puna ang linyang ito kung hindi mo kailangan ito sa pagsubok. Maaaring sabihin sa iyo ng programa na kailangan mong mag-install ng mga karagdagang pakete, magpatuloy kung gayon. Maaaring kailanganin ding mag-install ng isang mas bagong bersyon ng Python.

sudo apt-get install python3.7

Ang ilang mga posibleng isyu kahit na tumatakbo ang programa:

Wala akong naririnig na tunog

Tiyaking naka-on ang speaker at napili sa iyong raspberry pi. Sa pamamagitan ng GUI dapat mong ipares ito at pagkatapos ay piliin ito bilang iyong audio output device. Bukod dito, suriin ang iyong mga audio driver. Ang isang karaniwang isyu ay maaaring kailanganin mong muling mai-install ang pulseaudio package

Audio choppy o paggupit at paglabas

Subukang ilipat ang aparato malapit sa iyong WiFi router. Bilang karagdagan, siguraduhing malapit ang Bluetooth speaker. Maaari ding maging isang isyu sa audio driver

Hakbang 7: Ilagay sa isang Permanenteng Enclosure

Ilagay sa isang Permanenteng Enclosure
Ilagay sa isang Permanenteng Enclosure

Susunod, ilagay ito sa isang kahon o katulad na aparato upang ito ay manirahan nang permanente. Inirerekumenda ko ang pagkakaroon ng isa na maaari mong ma-access sa paglaon din para sa pag-debug. Nakuha ko ang maliit na kahon na gawa sa kahoy sa isang tindahan ng bapor sa halagang $ 2, at maiugnay ito sa pahina ng mga suplay. Inirekomenda ng isa sa aking mga kaibigan ang isang kahon ng tabako.

Pagkatapos ay pinutol ko ang mga butas sa harap para sa pindutan ng itulak at paikot na mga switch, at nag-drill ng isang butas sa likod ng kahon para sa microUSB power cord.

Sinubukan ko ang bundok at tiyakin na gumana ito, at voilà!

Sa wakas, gumamit ako ng sobrang pandikit upang hawakan ang pindutan ng push. Ang aking breadboard ay may isang malagkit sa ilalim na kumonekta sa isang bahagi ng kahon. Gumamit ako ng isang maliit na strip ng duct tape upang ma-secure ang likod ng pi sa kahon, kaya maaari itong ilipat sa ibang pagkakataon kung kinakailangan.

Hakbang 8: Program sa Pag-setup upang Patakbuhin sa Startup

Sa wakas, malamang na gugustuhin mong ang programang sawa na ito ay tumakbo sa pagsisimula ng raspberry pi kaya hindi mo kailangang gawin ito nang manu-mano. Maraming mga paraan upang magawa ito na maaari mong makita sa online.

Personal, na-set up ko ito gamit ang pangalawang paraan sa tutorial na SparkFun na ito:

Dito, hinihintay nito ang system na ipasok ang grapikong desktop bago patakbuhin ang programa. Pagkatapos ay naantala ng programa ng sawa sa loob ng 45 segundo upang bigyan ang oras ng system upang kumonekta muli sa bluetooth speaker. Kung gumagamit ka ng isang integrated speaker, maaari mong alisin ang pagkaantala na ito. Tandaan na dapat ay nasa blueber muna ang speaker! (para sa solusyon ng bluetooth)

Ngayon ay maaari mong subukan ang pag-power off at muling pag-power sa iyong pi! Pagkatapos ng halos 90 segundo ang iyong pi ay dapat na magsimulang tumugtog muli sa mga stream ng radyo. Sa pagpindot sa pushbutton ito ay i-pause / maglaro. Tandaan sa mga reboot na ito binabasa muli nito ang internetStations json file kaya kung binago mo ang iyong mga istasyon kailangan mong i-restart ang aparato upang gumana ang mga ito. Binabati kita!

Kung nagawa mo ito, o gumawa ng mga pagbabago sa proyekto, mangyaring ipaalam sa akin!

Pahina ng Github:

Inirerekumendang: