Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Radio Internet Pi-Arduino

Komponen dan persediaan

Arduino UNO
× 1
Raspberry Pi 3 Model B
× 1
SainSmart LCD Keypad Shield untuk Arduino
× 1
catu daya 5V
× 1

Aplikasi dan layanan online

python

Tentang proyek ini


Ikhtisar

Saya suka mendengarkan radio ketika saya sedang membuat sesuatu atau memasak, tetapi di tempat saya tinggal penerimaan FM sangat buruk. Dan dengan Internet, mendengarkan stasiun radio dunia adalah kesenangan, tetapi saya tidak suka menggunakan ponsel cerdas saya untuk mendengarkan musik, jadi dengan banyak Googling, saya menemukan beberapa solusi.

Saya mendasarkan proyek ini pada tutorial lain:Radio Internet Arduino / Raspberry Pi oleh akellyirl. Kode ini ditulis dengan Python pada Raspberry Pi dan pada dasarnya menggunakan daemon pemutar musik Linux (mpd) dan pemutar (mpd). Ada perpustakaan nanpy yang memungkinkan Python berkomunikasi dengan Arduino yang mengontrol tombol tekan dan LCD.

Saya menggunakan pelindung LCD/keyboard untuk Arduino yang memiliki tombol tekan:SainSmart LCD Keypad Shield untuk Arduino, dan kemudian menambahkan 4 strip tombol tekan yang saya hapus dari jam alarm yang rusak. Pertama saya menggunakan Raspberry Pi 2 dengan USB WiFi adapter, tapi sekarang saya menggunakan RP3 yang sudah built in WIFI dan tidak perlu antena.

Bagian tersulit adalah menemukan URL yang tepat dari stasiun yang saya inginkan. Akhirnya saya menemukan program ini:URL HELPER yang mengendus situs tempat Anda berada dan menunjukkan URL media yang diputar. Untuk suaranya, saya menggunakan sepasang speaker komputer aktif yang juga dipulihkan dari memo.

Petunjuk penginstalan

Instruksi instalasi untuk RP3 (dari Arduino / Raspberry Pi Internet Radio oleh akellyirl di Arduino):

1. Perbarui Raspbian ke paket terbaru:

$ sudo apt-get update 

2. Instal paket mpd/mpc:

$ sudo apt-get install mpc mpd 

Kami ingin dapat berbicara dengan Arduino dari Python yang berjalan di Pi. Untuk melakukannya, kita perlu menginstal pustaka nanpy untuk Python dan firmware nanpy untuk Arduino:

1. Instal paket Arduino untuk membangun firmware nanpy untuk Arduino:

$ apt-get install arduino 

2. Dapatkan pustaka nanpy untuk Python dan ekstrak dari /home/pi:

$ wget http://pypi.python.org/packages/source/n/nanpy/nanpy-v0.7.tar.gz $ tar xvf nanpy-v0.7.tar.gz 

3. Dapatkan setuptools untuk Python (ketergantungan untuk nanpy) dan ekstrak:

$ wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e $ tar xvf setuptools-0.6c11.tar.gz 

4. Dapatkan pyserial untuk Python (ketergantungan untuk nanpy) dan ekstrak:

$ wget http://pypi.python.org/packages/source/p/pyserial/pyserial-2.6.tar.gz $ tar xvf pyserial-2.6.tar.gz 

5. Buka direktori setuptools dan instal Python setuptools:

$ cd setuptools-0.6c11 $ sudo python setup.py install 

6. Buka direktori nanpy dan instal pustaka Python nanpy:

$ cd ../nanpy $ sudo python setup.py install 

7. Buka direktori serial dan instal perpustakaan serial Python:

$ cd ../pyserial-2.6 $ sudo python setup.py install 

Sekarang kita sudah mendapatkan file yang kita butuhkan, mari kita letakkan firmware nanpy di Arduino.

Firmware

nanpy memungkinkan program Python yang berjalan di Raspberry Pi untuk mengoperasikan Arduino menggunakan sintaks Arduino-Sketch konvensional, mis. program Python untuk membaca input analog dari Arduino mungkin membaca:

int val =Arduino.analogRead(14) 

Nanpy memiliki dua komponen:

  • Library untuk Python yang memungkinkan perintah Arduino ditulis dalam sintaks yang sudah dikenal dan berkomunikasi dengan Arduino;
  • Firmware yang berjalan di Arduino, berkomunikasi dengan Python di Pi.

Kami menginstal bagian Python dari nanpy dan mengunduh bagian Arduino dari nanpy di Pi pada langkah terakhir. Sekarang kita perlu mengunggah firmware nanpy ke Arduino.

Colokkan Arduino ke USB Raspberry Pi.

1. Buka direktori firmware nanpy dan unggah ke Arduino:

$ cd ../nanpy/firmware $ export BOARD=uno $ make $ make upload 

Jika Anda mendapatkan laporan bahwa perangkat tidak ditemukan di /dev/ttyACM0, colokkan Arduino ke port USB lainnya.

Saya membuat skrip daftar putar dan skrip Python (diterbitkan di tab kode) dan membuat skrip Python dijalankan secara otomatis pada boot Raspberry. Saya juga menambahkan tombol tekan lain untuk menampilkan beberapa opsi menu seperti menampilkan IP atau memilih output audio.

pembaruan terakhir:saya membuatnya ulang:, menambahkan rotary encoder untuk panggilan dan volume dan 3d mencetak kasing:


Kode

  • piradio
  • radio_plylist.sh
piradioPython
Saya bukan programmer python (ini sebagian besar copy/past dari bit yang saya temukan di google.
sejauh ini berhasil :)
Skrip ini harus dimuat saat startup di pi, saya menambahkan tugas crontab
dari datetime import datetimefrom subprocess import *from time import sleep, strftimefrom Queue import Queuefrom threading import Threadimport osfrom nanpy import Arduino, Lcdimport socketArduino.pinMode(14, input) lcd =Lcd([8,9,4,5,6,7],[16,2]) # Atur pin LCD untuk Sainsmart Shieldlcd.printString("Ruben's RadioZ",0,0)lcd.printString ("Memuat" + "."*3,0,1)sleep(5)max_trax =10x =1loop_menu =1loop_radio =1stations=[]#ditambahkan untuk menampilkan nama stasiun saat menekan tombol stations.append("Ecco 99 ") station.append("Galgalaz ")stations.append("Galaz ")stations.append("88 FM ")stations.append("Gimel")stations.append("Radios 100fm ")stations.append("Kol Hamusica " )stations.append("WQXR New York")stations.append("WPR Winsconsin ")stations.append("BBC world service")stations.append("LINN jazz")stations.append("LINN classic")#. ...........def get_local_ip_address(target):ipaddr ='' coba:s =socket.socke t(socket.AF_INET, socket.SOCK_DGRAM) s.connect((target, 8000)) ipaddr =s.getsockname()[0] s.close() kecuali:pass return ipaddrprint "Raspberry Pi - Local IP Address"print( get_local_ip_address('10.0.1.1'))print(get_local_ip_address('google.com'))#tampilkan alamat ipdef display_ipaddr():show_wlan0 ="ip addr show wlan0 | potong -d/ -f1 | awk '/inet/ {printf \"w%15.15s\", $2}'" show_eth0 ="ip addr tampilkan eth0 | potong -d/ -f1 | awk '/inet/ {printf \"e%15.15s\", $2}'" ipaddr ='' #ipaddr =run_cmd(show_eth0) ipaddr =get_local_ip_address('10.0.1.1') #if ipaddr =="":# ipaddr =run_cmd(show_wlan0) lcd.printString('IP Address:',0,0) lcd.printString(ipaddr,0,1) sleep(2)#menu di tombol kelima def displaymenu():if x==1 :lcd.printString("1. Tampilan ",0,0) lcd.printString(" Alamat IP ",0,1) elif x==2:lcd.printString("2. Output Audio ",0,0) lcd .printString(" ke Port HDMI ",0,1) elif x==3:lcd.printString("3. Output Audio ",0,0) lcd.printString(" ke port Analog",0,1) elif x ==4:lcd.printString("4. Output Audio ",0,0) lcd.printString(" Port Sel. Otomatis",0,1) elif x==5:lcd.printString("5. Muat ulang " ,0,0) lcd.printString(" Daftar Putar ",0,1) elif x==6:lcd.printString("6. ShutDown ",0,0) lcd.printString(" Sistem ",0,1) lain:lcd.printString("7. Keluar ke ",0,0) lcd.printString(" Menu Utama ",0,1) def load_playlist():output =run_cmd("mpc clear") output =run_cmd("/ home/pi/radio/radio_playlist.sh") def ru n_cmd(cmd):p =Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT) output =p.communicate()[0] mengembalikan output def getKey():val =Arduino.analogRead(14) jika val ==1023:return "NONE" elif val <100:return "RIGHT" elif val <150:return "UP" elif val <330:return "DOWN" elif val <510:return "LEFT" elif val <750:return "SEL" else:kembalikan "KBD_FAULT" load_playlist()def getTrack():L=[S.strip('\n') untuk S di os.popen('mpc').readlines()] # Dapatkan info Track dari stdout perintah mpc output =run_cmd("mpc current") station =output [0:16] # Pilih Stasiun dan Track info track =output [-17:-1] lcd.printString(station + " " *(16 - len(stasiun)), 0, 0) lcd.printString(track + " "*(16 - len(track)), 0, 1) track_num =1 # Mulai pada Track nomor 1os.system(" sudo service mpd restart") os.system("mpc play "+str(track_num)) # Beri tahu OS untuk Memutarnya saat loop_radio ==1:getTrack() loop_menu =1 x =1 key =getKey() if key =="UP":track_num +=1 jika track_num> max_trax:trac k_num =1 lcd.printString(stations[track_num-1],0,0) os.system("Sudo service mpd restart") os.system("mpc play " + str(track_num)) getTrack() kunci elif =="BAWAH":track_num -=1 jika track_num <1:track_num =max_trax lcd.printString(stations[track_num-1],0,0) os.system("sudo service mpd restart") os.system("mpc play " + str(track_num)) getTrack() kunci elif =="LEFT":os.system("mpc volume +10") lcd.printString(16*" ", 0, 0) lcd.printString(16*" ", 0, 1) output =run_cmd("mpc volume") lcd.printString("VOLUME UP:", 0, 0) lcd.printString(output, 5, 1) sleep(.25) lcd.printString(16*" " ,0,0) lcd.printString(16*" ",0,1) kunci elif =="KANAN":os.system("mpc volume -10") lcd.printString(16*" ",0,0) lcd.printString(16*" ", 0,1) output =run_cmd("mpc volume") lcd.printString("VOLUME DOWN:", 0, 0) lcd.printString(output, 5, 1) sleep(.25 ) lcd.printString(16*" ",0,0) lcd.printString(16*" ",0,1) kunci elif =="SEL":while loop_menu ==1:displaymenu() key =getKey() if kunci =="KANAN":os.system("mpc volume +10") lcd.printString(16*" ", 0, 0) lcd.printString(16*" ", 0, 1) output =run_cmd("mpc volume") lcd.printString("VOLUME UP:", 0, 0) lcd.printString(output, 5, 1) sleep(.25) lcd.printString(16*" ",0,0) lcd.printString(16*" ",0,1) kunci elif ==" KIRI":os.system("mpc volume -10") lcd.printString(16*" ",0,0) lcd.printString(16*" ", 0,1) output =run_cmd("mpc volume") lcd .printString("VOLUME BAWAH:", 0, 0) lcd.printString(output, 5, 1) sleep(.25) lcd.printString(16*" ",0,0) lcd.printString(16*" ", 0,1) kunci elif =="UP":if x <=1:x =7 else:x =x - 1 kunci elif =="DOWN":if x>=7:x =1 else:x =x + 1 kunci elif =="SEL":if x ==1:display_ipaddr() #get_local_ip_address() sleep(1) elif x ==2:output =run_cmd("amixer -q cset numid=3 2") lcd. printString("Audio OUT-->HDMI", 0, 0) lcd.printString("output ", 0, 1) sleep(.5) elif x ==3:output =run_cmd("amixer -q cset numid=3 1") lcd.printString("Audio OUT->Analog", 0, 0) lcd.printString("output ", 0, 1) sleep(.5) elif x ==4:output =run_cmd("amixer -q cset numid=3 0") lcd.printString("Audio OUT-> Auto", 0, 0) lcd.printString("output ", 0, 1) sleep(.5) elif x ==5:load_playlist() os.system('mpc play 1') elif x ==6:lcd.printString("Good Bye ", 0, 0) lcd.printString("Have a Nice Day ", 0, 1) output =run_cmd("mpc stop") # =run_cmd("sudo shutdown now") quit() elif x ==7:loop_menu =0 getTrack() break elif key =="RIGHT":os.system("mpc volume +2") lcd.printString(16*" ",0,0) lcd.printString(16*" ", 0,1) output =run_cmd("mpc volume") lcd.printString("VOLUME UP:", 0 , 0) lcd.printString(output, 5, 1) sleep(.25) lcd.printString(16*" ",0,0) lcd.printString(16*" ",0,1) kunci elif =="LEFT ":os.system("mpc volume -2") lcd.printString(16*" ", 0, 0) lcd.printString(16*" ", 0, 1) output =run_cmd("mpc volume") lcd. printString("VOLUME BAWAH:", 0, 0) lcd.printString(output, 5, 1) sleep(.25) lcd.printString(16*" ",0,0) lcd.printString(16*" ",0 ,1)
radio_plylist.shSH
ini daftar putar saya dengan stasiun israeli
#! /bin/shmpc hapus 1>/dev/null#1 ecco99mpc tambahkan http://99.livecdn.biz/99fm_aac#2 galgalazmpc tambahkan http://glglzwizzlv.bynetcdn.com/glglz_mp3#3 galazmpc tambahkan http://glzwizzlv .bynetcdn.com/glz_mp3#4 88 fmmpc tambahkan http://ibala.vidnt.com:8000/iba_radio-88fmM#5 gimelmpc tambahkan http://ibala.vidnt.com:8000/iba_radio-gimelM#6 radio 100 fmmpc tambahkan http://100fm.streamgates.net/Radios100Fm#7 kol hamusicampc tambahkan http://ibala.vidnt.com:8000/iba_radio-kolmusicaM#8 wqxrmpc tambahkan http://stream.wqxr.org/wqxr#9 npr currentmpc tambahkan http://current.stream.publicradio.org/kcmp.mp3#10 bbcmpc tambahkan http://bbcwssc.ic.llnwd.net/stream/bbcwssc_mp1_ws-eieuk#11 linn jazzmpc tambahkan http://radio.linnrecords .com:8003/autodj#12 linn classicmpc tambahkan http://radio.linnrecords.com:8004/autodj

Skema


Proses manufaktur

  1. Raspberry Pi Universal Remote
  2. Sepotong Raspberry Pi
  3. Cycle Chaser
  4. Detektor Pencuri Raspberry Pi
  5. Sensor Suhu Raspberry Pi
  6. RASPBERRY PI HOME AUTOMATION
  7. MrRobot – Robotika yang diaktifkan dengan aplikasi Seluler Ubuntu (termasuk Raspberry Pi dan arduino)
  8. Robot Kotak CD Raspberry Pi
  9. Robot Raspberry Pi dikendalikan melalui Bluetooth
  10. Buat Robot Streaming Video Terkendali Internet Anda dengan Arduino dan Raspberry Pi