ücretsiz online eğitim platformları
herhangi bir konuda eğitim içeriği arıyorsanız en temel nokta arama motorları tabiki ancak türkçe içeriğe sahip, derli toplu ücretsiz bildigim ve kullandığım platformlar
herhangi bir konuda eğitim içeriği arıyorsanız en temel nokta arama motorları tabiki ancak türkçe içeriğe sahip, derli toplu ücretsiz bildigim ve kullandığım platformlar
çok fazla karışık olmayan basit bir dlna server ihtiyacınız varsa minidlna tam size göre. raspbery pimi açıyoruz ve kurulumu gerçekleştiriyoruz.
sudo apt-get install minidlna
kurulum sorunsuz olarak tamamlandıktan sonra. minidlna mızı konfigüre edebiliriz.. bunun için bize öncelikle video, ses, resim dosyalarımızın konumu gerekiyor. raspberrypi ye herhangi bir taşınabilir bir disk taktığınızı ve doğru şekilde mount edildiğini varsayacağız.
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 976760001 366707224 610052777 38% /media/usb
taşınabilir diskimizin kontrolü yaptıktan sonra minidlna nın root olarak çalıştırılmaması önerilmektedir.
sudo nano /etc/default/minidlna
dosyası içerisinde
# User and group the daemon should run as
#USER="minidlna"
#GROUP="minidlna"
gerekli değişiklikler yapılabilir.. şu aşamada bu çok önemli değil. genel ayarları yapalım. konfigürasyon dosyasını açalım
sudo nano /etc/minidlna.conf
dosya içerisinde aşagıdaki satırları bulalaım
# * "A" for audio (eg. media_dir=A,/var/lib/minidlna/music)
# * "P" for pictures (eg. media_dir=P,/var/lib/minidlna/pictures)
# * "V" for video (eg. media_dir=V,/var/lib/minidlna/videos)
# * "PV" for pictures and video (eg. media_dir=PV,/var/lib/minidlna/digital_camera)
media_dir=/var/lib/minidlna
ben video ve müzik için tanımlamaları yapacağım.
media_dir=V,/media/usb/ARSIV/FILM
media_dir=A,/media/usb/ARSIV/mp3
dosyayı kaydedip çıktıntan sonra. minidlna nın başlatılması gerekecek. şimdi başlatalım. aktif olarak çalışıyorsa yeniden başlatmanız gerekiyor tabiki..
sudo service minidlna start
sudo service minidlna restart
sudo service minidlna force-reload
uygun parametre ile minidlna yı başlattıktan sonra, durum bilgisini kontrol ettiğinizde servisin yeniden başladığından emin olmalısınız.
pi@raspberrypi:~ $ sudo service minidlna status
â— minidlna.service - LSB: minidlna server
Loaded: loaded (/etc/init.d/minidlna; generated)
Active: active (running) since Sun 2020-07-26 17:40:36 +03; 24min ago
Docs: man:systemd-sysv-generator(8)
Process: 1478 ExecStart=/etc/init.d/minidlna start (code=exited, status=0/SUCCESS)
Tasks: 2 (limit: 2068)
CGroup: /system.slice/minidlna.service
└─1497 /usr/sbin/minidlnad -f /etc/minidlna.conf -P /run/minidlna/minidlna.pid -r
Jul 26 17:40:36 raspberrypi systemd[1]: Starting LSB: minidlna server...
Jul 26 17:40:36 raspberrypi systemd[1]: Started LSB: minidlna server.
artık minidlan kullanıma hazır. aynı ağdaki bir cihazdan tarayıcınıza
http://raspberry-pi-ip-adresi:8200
adresini yazarak minidlna nın durum bilgisine ulaşamabilirsiniz… yazdığım dizinlerde 481 tane film 2887 tanede mp3 müzik dosyası varmış.
dlna client özelliği olan herhangi bir cihazdan artık içeriğe erişebiliriz. ben testi evdeki vestel televizyonda ve windows 10 da test yaptım.
ekran görüntüsü yer aldığı gibi raspberrypi yi sorunsuz olarak gördü. videoları sorunsuz izleyebiliyorum. ancak mp3 lerde sorun yaşadım. mp3 kısmını kullanmadığım için çok detaylı incelemedim ancak mp3 sayısının çok fazla olması, cache aktif etmemem ve mp3 isimlerinde ve mp3 taglarında çok fazla türkçe ve absürt karartker yer almasından kaynaklandığını düşünüyorum.
artık elimizde çalışan bir dlna servisimi var. biraz kişileştirmek isterseniz konfigürasyon dosyasını açarak
sudo nano /etc/minidlna.conf
örneğin clientlerda görünen dlna sunucu adını,
# Name that the DLNA server presents to clients.
# Defaults to "hostname: username".
#friendly_name=
friendly_name=cicek_dlna_server
değiştirebilirsiniz.
NOT: bu servisi aktif kullanılırken raspberrynizde aktif bir şeyler yapmak isterseniz dikkatli olur.. benim rpi de hd video izlerken %25 sistem kaynakların tüketiyor.
yaptığınız uygulamaları sosyal platformlar ile buluşturmak istiyorsanız telegram bunun için iyi bir başlangıç olabilir.
öncelikle mevcut bir telegram hesabınız olması gerekiyor. hesabınızla
BotFather
botunu bulun ve sırayla
/start
/newbot
/kullanicak_bot_adi_bot ( sonunda bot olmak zorunda)
yazıyoruz. adımları doğru şekilde gerçekleştirdiysek; yeni bir bot oluşturarak bize bir token / HTTP API üretecek.
uygulamamızı raspberry pi üzerinde gerçekleştireceğimiz için bize öncelikle sağlam bir kütüphane gerekiyor. ben bu uygulamamızda python – teleport kütüphanesi kullanacağım
pip install telepot
ile kütüphanemizi raspberry pi üzerine kuralım. ( python , pip vb gereksinimlerin daha önceden kurulu olduğu varsayılmaktadır)
kullanıcıdan gelecek komutları dinleyen ve buna cevap dönecek basit bir bot yapalım. aşağıdaki örnekte raspberry pi nin gerçek ipsini, zamanı gibi basit bir kaç fonksiyonun nasıl gerçekleştirileceği görülmektedir.
uygulamayı geliştirerek raspberry pi ile istediğiniz tüm işlemleri telegram üzerinden yönetebilirsiniz.
#coder :- Ferhat Cicek
import sys
import time
import telepot
import requests
import datetime
def handle(msg):
chat_id = msg['chat']['id']
command = msg['text']
print('Komut: %s' % command)
if command =='ip':
ipadd = requests.get('https://checkip.amazonaws.com').text.strip()
bot.sendMessage(chat_id, str(ipadd))
elif command == 'zaman':
bot.sendMessage(chat_id, str(datetime.datetime.now()))
elif command == 'resim':
bot.sendPhoto(chat_id, photo="/wp-content/uploads/2019/09/kalyon.jpg")
elif command == 'dosya':
bot.sendDocument(chat_id, document=open('/home/pi/telegram/telegram.py'))
elif command == 'muzik':
bot.sendAudio(chat_id, audio=open('/home/pi/test.mp3'))
bot = telepot.Bot('6686324245:AAVuDyUVKAYeKVLW3TuFD5ty_3XTVQTnpZQ')
bot.message_loop(handle)
print('Komut bekleniyor...')
while 1:
try:
time.sleep(10)
except KeyboardInterrupt:
print('\n Program sonlandı')
exit()
except:
print('Hata')
python ile yazdığımız bu küçük uygulamayı çalıştırsak ve raspberry pi
ve telegrama ait ekran görüntüleri aşağıdaki gibi olacaktır.
raspberry pi nizi statik ip kullanan bir ağa dahil etme durumunuzda /etc/network/interfaces dosyasında ufak bir değişiklik yapmanız gerekecektir.
pi@raspberrypi:~ $ sudo nano /etc/network/interfaces
dosyamızı açalım. eth0 arayüzü varsayılan olarak dhcp üzerinden ip olacak şekilde yapılandırılmış durumdadır. öncelikle bu satırın başına # ekleyerek pasif hale getirelim.
auto eth0
#iface eth0 inet dhcp
sonrasında kullanacağımız ağa ait gerekli bilgileri girelim. bu örnekte 192.168.5.208/28 ağında 192.168.5.212 ipsini kullanacak şekilde yapılandırma yapıyoruz
iface eth0 inet static
address 192.168.5.212
netmask 255.255.255.240
gateway 192.168.5.209
network 192.168.5.208
broadcast 192.168.5.223
dosyayı interfaces dosyasını kaydedip çıkıyoruz. değişikliğin geçerli olması için network ile ilgili servisleri yeniden başlatılması gerekir ancak biz daha sağlam bir yol izliyoruz ve raspberry pi yi yeniden başlatıyoruz
pi@raspberrypi:~ $ sudo reboot
raspberry yeniden başladıktan sonra gerekli kontrollerimizi yapalım
pi@raspberrypi:~ $ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.5.212 netmask 255.255.255.240 broadcast 192.168.5.223
inet6 fe80::ba27:ebff:fe40:752b prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:40:75:2b txqueuelen 1000 (Ethernet)
RX packets 7839 bytes 3539827 (3.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5185 bytes 1208823 (1.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
aslında kurulumu gerçekleştirmek oldukça basit. http://www.webmin.com/deb.html adresinden güncel paket bilgisini öğrenerek kıyayolunu kopyalayarak raspberry pi üzerine indiriyoruz.
pi@raspberrypi:~ $ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.900_all.deb
--2019-02-23 21:50:12-- http://prdownloads.sourceforge.net/webadmin/webmin_1.900_all.deb
prdownloads.sourceforge.net (prdownloads.sourceforge.net) çözümleniyor... 216.105.38.13
prdownloads.sourceforge.net (prdownloads.sourceforge.net)[216.105.38.13]:80 bağlanılıyor... bağlantı kuruldu.
HTTP isteği gönderildi, yanıt bekleniyor... 301 Moved Permanently
Yer: http://downloads.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb [izleyen]
--2019-02-23 21:50:13-- http://downloads.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb
downloads.sourceforge.net (downloads.sourceforge.net) çözümleniyor... 216.105.38.13
Bağlantı tekrar kullanılıyor: prdownloads.sourceforge.net:80.
HTTP isteği gönderildi, yanıt bekleniyor... 302 Found
Yer: https://kent.dl.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb [izleyen]
--2019-02-23 21:50:14-- https://kent.dl.sourceforge.net/project/webadmin/webmin/1.900/webmin_1.900_all.deb
kent.dl.sourceforge.net (kent.dl.sourceforge.net) çözümleniyor... 212.219.56.185
kent.dl.sourceforge.net (kent.dl.sourceforge.net)[212.219.56.185]:443 bağlanılıyor... bağlantı kuruldu.
HTTP isteği gönderildi, yanıt bekleniyor... 200 OK
Uzunluk: 15846232 (15M) [application/octet-stream]
Kayıt yeri: `webmin_1.900_all.deb'
webmin_1.900_all.deb 100%[===============================================================>] 15,11M 1,97MB/s in 10s
2019-02-23 21:50:25 (1,46 MB/s) - `webmin_1.900_all.deb' kaydedildi [15846232/15846232]
sıra kurulum işlemine geldi.
pi@raspberrypi:~ $ sudo dpkg --install webmin_1.900_all.deb
Daha önce seçili olmayan webmin paketi seçiliyor.
(Veritabanı okunuyor ... 140139 dosya veya dizin kurulu durumda.)
Paket açılacak: webmin_1.900_all.deb ...
Paket açılıyor: webmin (1.900) ...
Ayarlanıyor: webmin (1.900) ...
Webmin install complete. You can now login to https://raspberrypi:10000/
as root with your root password, or as any user who can use sudo
to run commands as root.
Tetikleyiciler işleniyor: systemd (232-25+deb9u9) ...
şimdi raspberryinin ip adresini öğrenelim
i@raspberrypi:~ $ hostname -I
192.168.1.5 192.168.5.1
webmin 10000 portunu kullanıyor. tarayıcımıza adresi yazalım
https://192.168.1.5:10000
karşılama ekranı aşağıdaki gibidir.
kullanıcı adı : pi
şifre : raspberry
bilgileri webmine ilk giriş için geçerlidir. giriş sayfamız aşağıdaki gibidir.
raspberry pi de eth0 ile edindiğimiz internet paylaşımın wlan0 üzerinden paylaşıma açacak şekilde bilinen adıyla hotspot bir örnek uygulama yapalım.
bu işlemi yapabilmemiz için öncelikle ethernet arayüzlerin doğru şekilde yapılandırılmış ve çalışıyor olması ön şarttır. bu konuya bu yazıda değinmeyeceğiz.
bu paylaşım için yapabilmek için paylaşımı gerçekleştirecek bir servis uygulamasının aktif edilmesi gerekmektedir. bunu yapabileceğiniz en temel uygulama hostapd dir. bununla birlikte istemcilere ip dağıtımını / yönetimini yapacak bir servis ihtiyacınız daha olacaktır. dns servis için kullanabileceğiniz uygulama sayısını çok daha fazladır. bu örnekte dnsmasq kullanacağız.
hostapd ve dnsmasq temel raspberry dağıtımlarında yer almamakta ancak depolarda bu uygulamalar mevcuttur. bu uygulamaları öncelikle kuralım
sudo apt-get install hostapd dnsmasq
artık yapılandırma sürecine başlayabiliriz. raspberry üzerinde bu ve benzeri uygulamalar yaparken karşılaşacağınız temel bir sorunu öncelikle çözmeliyiz.
dhcpcd üzerinden internet paylaşımı yapacağımız wlan0 arayüzünü pasif hale çekmemiz gerekiyor. bunun nedeni ip dağıtımı için dnsmasq kullanacak olmamızdır.
sudo nano /etc/dhcpcd.conf
dhcpcd.conf dosyasını açtıktan dosyanın en altında wlan0 için gerekli satırı ekleyelim
denyinterfaces wlan0
sıra geldi ethernet arayüzleri için gerekli yapılandırmalara
sudo nano /etc/network/interfaces
interfaces dosyası için loopback, eth0 ve wlan0 için gerekli yapılandırma ayarlarını girelim. loopback ve eth0 için ilave bir şey yapmıyoruz. wlan0 için hotplug olarak izin vererek yukarıda sorundan kaynaklı olarak static yapılandırma yapıyoruz. bu örnekte wlan0 için 192.168.5.0/24 adresini rezerve ederek kullanacağız.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.5.1
netmask 255.255.255.0
network 192.168.5.0
broadcast 192.168.5.255
arayüz tanımları yapıldıktan sonra hostapd servis tanımlarını yapmaya geldi
sudo nano /etc/hostapd/hostapd.conf
burada yayın yapılacak kablosuz ağa ait servis ve güvenlik ayarlarını yapılandırıyoruz. burada hw_mode a özellikle dikkat etmek gerekiyor ancak fiziksel ve yazılımsal olarak desteği olmayan modlar seçilmemelidir.
aşağıdaki yapılandırma raspberry pi 3 de sorunsuz olarak çalışmaktadır.
interface=wlan0
driver=nl80211
ssid=fcicek_wifi
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=fcicek_wifi_sifre
rsn_pairwise=CCMP
hostapd ayarlarını yaptıktan sonra hostapd için yapılandırma dosyası konum ayarlarını yapalım.
sudo nano /etc/default/hostapd
hostapd dosyasını açarak DAEMON_CON=”” olarak görülen satırda gerekli değişikliği yapalım
DAEMON_CONF="/etc/hostapd/hostapd.conf"
hostapd için yapılandırmayı tamamlanmış olduk sırada dnsmasq ayarı kaldı. öncelikle mevcut dosyamızı yedekleyelim
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
sudo nano /etc/dnsmasq.conf
ve dnsmasq.conf dosyasını açarak kullanacağımız 192.168.5.0/24 için gerekli diğer ayarları girelim.
interface=wlan0
listen-address=192.168.5.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=192.168.5.10,192.168.5.50,24h
burada dns server olarak google sunucu adresi girilmiş ve 10 ve 50 arası kullanıcılar için açılmıştır. sudo reboot ile raspberryi yeniden başlatalım. raspberry pi yeniden başladıktan sonra fcicek_wifi ssid ağımız görebiliriz.
şimdi paylaşımdaki en önemli aşamaya geldik diyebiliriz. gerekli natlamanın yapılması. sysctl.conf dosyası altında net.ipv4.ip_forward parametresini aktif ederek 1 yapmamız gerekmektedir.
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
bundan sonra iptables ile gerekli nat / yönlendirmeleri yapıyoruz.
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
son bir şey kaldı.. açılış dosyamıza iptables ayarlarının girilmesi. burada ekleyeceğimiz satırı exit 0 dan önce girmeye dikkat edin.
sudo nano /etc/rc.local
iptables-restore < /etc/iptables.ipv4.nat
exit 0
temel olay bu kadar. eth0 ile yaptığımız bağlantıyı fcicek_wifi ssid ile paylaşıma snduk. şimdi raspberry üzerindeki arayüzlerden geçen trafiklerimizi kontrol edelim..
pi@raspberrypi:/etc $ vnstat
rx / tx / total / estimated
eth0:
Şub '19 192,83 MiB / 11,59 MiB / 204,42 MiB / 258,00 MiB
yesterday 162,42 MiB / 5,47 MiB / 167,89 MiB
today 30,40 MiB / 6,12 MiB / 36,53 MiB / 421 MiB
wlan0:
Şub '19 6,53 MiB / 30,31 MiB / 36,84 MiB / 45,00 MiB
yesterday 843 KiB / 15 KiB / 858 KiB
today 5,70 MiB / 30,30 MiB / 36,00 MiB / 409 MiB
Options
standby:customer mode
av1 yuv: n/a
av2&av3: av2 avail.-av3 n/a
av4 : cvbs+svhs
teletext : fastext
txt table : auto
language : 1
crt: 4:3
pip : n/a
main tuner: pan. d82g3-da5g3
pip tuner: philips
svm&dci : off
blueback : off
lti&comb : off
cti : off
dynamic focus: off
protection : n/a
panorama : n/a
keyboard : p- p+ v- v+
calculator : n/a
game : n/a
alarm timer : n/a
demo mode : 0
Sound Options
bg : europe
dk : n/a
i : n/a
l/l : n/a
fm radio/tv guide : none
nicam : n/a
dolby virtual: n/a
bass option : none
headphone : n/a
carrier mute: via micro
pat : n/a
simple hotel : n/a
hotel max vol : 31
osd offset : 1020
bcl delta : 50
agc method: sync+peak white
tilt : n/a
tilt 0 : 32
crt4:3 mode16:9 : via flybl
adaptive pkg : on
If Adj.
agc : 4
agc for vhf : 4
pip agc : 15
pip agc for vhf: 20
50Hz Geom.
vertical amplitude : -60
vertical shift: -8
horizontal width: +40
horizontal shift: -49
trapeze corr: -50
cushion corr : -201
upper corner 1 : -10
lower corner 1: +20
upper corner 2 : +46
lower corner 2: +40
linearity : -6
s-correction : +160
vertical angle : -2
vertical bow : 0
start line measur: 10
ver blanking stop : 20
ver blanking start : 333
hor. blanking stop : 200
hor. blanking start : 1220
hor. osd position : 32
ver. osd position : 18
50Hz Geom. Hor. II
hor. width : 0
ver. zoom : 60
flybl : 14
trapeze corr : -70
cushion corr : -170
upper corner 1 : +10
lower corner 1 : +40
upper corner 2 : +10
lower corner 2 : +30
50Hz Geom. EHT
eht treshold : 35
eht time constant : 40
vertical eht 1 : -280
vertical eht 2 : 0
horizontal eht 1 : -280
horizontal eht 2 : -30
eht dtc : -10
eht p1 : -40
eht p2 : -40
60Hz Geom.
vertical amplitude : -72
vertical shift : -4
horizontal width : +43
horizontal shift : -63
trapeze corr : -40
cushion corr : -200
upper corner 1 : +10
lower corner 1 : +20
upper corner 2 : +20
lower corner 2 : +40
linearity : -20
s-correction : +150
vertical angle : 0
vertical bow : 0
start line measur : 10
ver. blanking stop : 19
ver. blanking start : 333
hor. blanking stop : 200
hor. blanking start : 1220
hor. osd position : 18
ver. osd position : 11
60Hz Geom. Hor. II
hor. width : 0
ver. zoom : 60
cutoff timer : 10
trapeze corr : -60
cushion corr : -190
upper corner 1 : +10
lower corner 1 : +65
upper corner 2 : 0
lower corner 2 : 0
60Hz Geom. EHT
eht treshold : 33
eht time constant : 40
vertical eht 1 : -250
vertical eht 2 : -40
horizontal eht 1 : -200
horizontal eht 2 : -40
eht dtc : -50
eht p1 : -30
eht p2 : -30
Video Adj. 1
r. drive : 356
g. drive : 356
b. drive : 356
r. cutoff : 156
g. cutoff : 156
b. cutoff : 156
ibrm : 310
wdrm : 290
screen adj : 140
Video Adj. 2
bcl gain : 250
bcl treshold : +242
bcl treshold ii : +170
bcl time constant1 : 511
bcl time constant2 : 0
osd brightness : 100
osd contrast : 200
txt brightness : 100
txt contrast : 120
yc delay for pal : 9
yc delay for secam : 2
yc delay for ntsc : 10subcarrier adj : 18
Video Adj. 3
dpwl gain : -300
dpwl start p. : 480
pwl time constant : 1
pwl : 250
svm gain : 20
svm coring : 7
svm limiter : 63
svm delay : 3
svm diff window : 4
PRESET bölümünden dilediğiniz veya tüm ayarları varsayılan ayarlara çevirebilirsiniz.
ultrasonik alıcı vericiler mesafe ölçme, cisim algılama vb bir çok alanda günlük hayatımızın içinde yer almaktadır. tüm bu uygulamalar sesin farklı ortamlarda yayılma hızının farklı olması, yansıma ve doppler kanunlarının kullanılması ile mümkün olmaktadır.
sesin yayılma hızı ortam yoğunluğuna, sıcaklığa vb kriterere bağlı değişmektedir. 0 derecede 1 atmosferde sesin havada yaklaşık olarak 340 m/s ile hızla ilerlediğini kabul edebiliriz. (kritik bir uygulama yapılmıyorsa)
konu hakkında bilgi alınmak istenirse https://www.grc.nasa.gov/www/k-12/airplane/sound.html adresinden yararlanılabilir.
piyasdaki en uygun fiyatlı ultrasonic sensor HC-SR04. bu nedenden dolayı çokca örnek uygulama bulabilirsiniz. ürüne ait temel bilgiler ve zamanla diagrami aşağıda yer almaktadır.
Çalışma Voltajı | DC 5V |
Çektiği Akım | 15 mA |
Çalışma Frekansı | 40 Hz |
Maksimum Görme Menzili | 4m |
Minimum Görme Menzili | 2cm |
Görme Açısı | 15 ° |
Tetik Bacağı Giriş Sinyali | 10 us TTL Darbesi |
Echo Çıkış Sinyali | Giriş TTL sinyali ve Mesafe Oranı |
Boyutları | 45mm x 20mm x 15mm |
bu bilgilere göre echo portundan okuduğumuz değeri 58 e bölersek cismin uzaklığını cm cinsinden yaklaşık olarak elde etmiş oluruz.
HC-SR04 ün arduino ile fiziksel bağlantılarını aşagıdaki şekilde yapabiliriz. kullanacağınız pingleri kendi uygulamanıza göre uyarlayabilirsiniz.
devreye ait kod ise
/* HC-SR04 ornegi * Arduino | HC-SR04 * ------------------- * 5V | VCC * 10 | Trig * 9 | Echo * GND | GND */ //hc-sr04 sensorune ait kullanicak trigger ve echo portlari const int trig_pin = 10; int echo_pin = 9; //uygulamada kullanilacak guvenli mesafe int guvenlik_mesafesi = 10; //uygulamada gunveli mesafe bilgisini ledle takip edebilmek icin //kullanilacak pinler int led_mesafe_guvenli = 3, led_mesafe_guvensiz = 2; void setup() { //uygulada kullanilacak pinlerin durumunu ayarlayalim Serial.begin(9600); pinMode(trig_pin, OUTPUT); pinMode(echo_pin, INPUT); pinMode(led_mesafe_guvenli, OUTPUT); pinMode(led_mesafe_guvensiz, OUTPUT); } void loop() { //sesin_suresi milisaniye cinsinden bir veridir. //bu veri santimetreye cevrilmektedir. long sesin_suresi, mesafe_cm; //olcum oncesi trigger low yapilarak sinyal gonderilmesi engellenir //10 ms sinyal gonderildikten sonra //bunun amaci olasi hata olcumlerini minimize etmektedir digitalWrite(trig_pin, LOW); delayMicroseconds(2); digitalWrite(trig_pin, HIGH); delayMicroseconds(10); digitalWrite(trig_pin, LOW); // pinMode(echo_pin, INPUT); sesin_suresi = pulseIn(echo_pin, HIGH); // olculen sureyi cm olarka mesafeye cevirme mesafe_cm = sesin_suresi / 29 / 2 ; //modulun olcum sinirlari disinda ise seri porttan menzil disi mesajinin //olcum sinilari icinde ise mesafe bilgisinin seria porttan gonderilmesi if (mesafe_cm > 200 || mesafe_cm < 2){ Serial.println("Menzil Disi"); } else { Serial.print(mesafe_cm); Serial.print(" cm"); Serial.println(); } //olculen mesafenin guvenli mesafe icinde olup olmaginin testi //olculen mesafeye ledlerinin durumunun degistirilmesi if (mesafe_cm > guvenlik_mesafesi) { digitalWrite(led_mesafe_guvenli, HIGH); digitalWrite(led_mesafe_guvensiz, LOW); } else { digitalWrite(led_mesafe_guvensiz, HIGH); digitalWrite(led_mesafe_guvenli, LOW); } delay(100); }
dfdf
arduino konusunda en temel uygulamalardandır led flash uygulaması yapmak. konuya meraklı kişiler ilk ledli uygulamasını yaptıktan sonra daha elle tutulur şeyler yapmak isterler. bu noktada bir zaman yapmış olduğum bir uygulamayı bende yazı haline getireyim.
uygulamada uno r3 kullandım. uno nun 3, 5, 6, 9, 10, 11 pinleri çıkış olarak kullanılmaktadır. ledleri bu pinlere bağlamadan önce 200 ohm civarı bir direnç kullanmayı unutmayın. devrenin şeması aşağıdaki gibidir.
devrenin kodu ise
int led_sayisi = 6; int led_pin[6] = {3, 5, 6, 9, 10, 11}; void setup() { Serial.begin(9600); //belirledigimiz tum pinleri cikis yapalim for (int i = 0; i < led_sayisi; i++) { pinMode(led_pin[i], OUTPUT); } } void loop() { animasyon_1(); } void animasyon_1() { //tüm ledleri sonuk olarak belirleyelim int led_durum[6] = {0, 0, 0, 0, 0, 0 }; for (int j = 0; j < 2; j++) { //tum ledlerin konumunu sırasyla degistirelim //ilk dongude led sonuk durumdaysa yanacak //dongu tekrar edersen yanik durumdaysa sonecek for (int i = 0; i < led_sayisi; i++) { led_durum[i] = ~led_durum[i]; digitalWrite(led_pin[i], led_durum[i]); delay(150); } } }
devreyi kurup uygularsanız aşagıda yer alan videodaki gibi sonuç göreceksiniz.
raspberry pi 3 kablosuz ağ özelliği ile geliyor ve eski modellerindeki gibi driver vb tanıtımı ile uğraşmıyorsunuz. bununla ilgili daha önce bir yazı paylaşmıştım. “raspberry pi ““ raspbian : kablosuz bağlantı ayarları”
raspberry pi 3 üzerinde wifi gömülü olduğu için wifi ayarlarını yapmanız ise oldukça kolay. öncelikle wpa_supplicant.conf dosyasnı açıyoruz
pi@raspberrypi:~ $ nano /etc/wpa_supplicant/wpa_supplicant.conf
ve dosya içerisine
network={
ssid="kablosuz_agda_kullanilan_iot.gen.tr"
psk="kablosuz_ag_sifresi"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
satırlarınızı ekliyoruz
burada ssid ve şifre dışındaki alanlar konusunda bilginiz yoksa ve modeminiz ile gerekli uyumlu şekilde konfigürasyon yapmak istiyorsanız aşagıdaki eşleştirmeyi kullanabilirsiniz..
proto : WPA2 için RSN , WPA1 için WPA
key_mgmt : kişisel ağ için WPA-PSK , kurumsal ağ için WPA-EAP
pairwise WPA2 için CCMP ve WPA1 için TKIP
auth_alg : ototik bağlannma OPEN, diğer ayarlar için LEAP veSHARED