fide
Meraklı ve "nasıl" sorusunu seven biri
- Katılım
- 8 Eylül 2021
- Mesajlar
- 2,005
ESP32-EYE kameralı Esp32 modülü ile çalışmak uzun zamandır aklımda vardı. Birkaç hafta önce bozuk su sayacı elime geçti. Uzun zamandır aradığım bir nesne idi.
Ortaya sayaç okuma projesi çıktı.
Ana oyuncular yukarıdaki su sayacı ve ESP32-EYE (TTGO-Camera) modülü.
Yardımcı oyuncu ise sabitleme aparatı.
Sayaç genel olarak karanlık bir köşede olacağı için led, lens ve tutucu aparat gerekecek. O parçayı da yazıyı yazdığım esnada basıyorum.
Bitince yukardakine benzer bir şekilde gözükecek inşallah.
ESP32-EYE ile aldığım ilk görüntü aşağıda.
Bu noktadan sonra yapılacak iki iş var. Ya fotoyu görüntü işleme için bir sunucuya yönlendirip sayacın okuduğu değeri sayısal olarak almaya çalışacağım yada Esp32 ile görüntü işlemeyi kendim yapacağım.
İlki daha mantıklı gibi görünüyor ama birkaç denemeden sonra mantıklı olan yol ortaya çıkacaktır.
Kod şimdilik sadece foto çekip ESP32 üzerinde jpg olarak saklıyor. Geliştirme kısmına henüz başlamadım.
Ortaya sayaç okuma projesi çıktı.
Ana oyuncular yukarıdaki su sayacı ve ESP32-EYE (TTGO-Camera) modülü.
Yardımcı oyuncu ise sabitleme aparatı.
Sayaç genel olarak karanlık bir köşede olacağı için led, lens ve tutucu aparat gerekecek. O parçayı da yazıyı yazdığım esnada basıyorum.
Bitince yukardakine benzer bir şekilde gözükecek inşallah.
ESP32-EYE ile aldığım ilk görüntü aşağıda.
Bu noktadan sonra yapılacak iki iş var. Ya fotoyu görüntü işleme için bir sunucuya yönlendirip sayacın okuduğu değeri sayısal olarak almaya çalışacağım yada Esp32 ile görüntü işlemeyi kendim yapacağım.
İlki daha mantıklı gibi görünüyor ama birkaç denemeden sonra mantıklı olan yol ortaya çıkacaktır.
ESP32-EYE Sayac Okuma:
import camera
import machine
import network
import binascii
from time import sleep
import socket
from machine import Pin
import os
from ssd1306 import SSD1306_I2C
ssid = "Kablosuz Ağ Adı"
key = "Wifi password"
dest = "192.168.1.60"
port = 5000
sayac = 0
def configNetwork(ssid = "", key = ""):
# create station interface
wlan = network.WLAN(network.STA_IF)
wlan.active(True) # activate the interface
wlan.scan() # scan for access points
state = wlan.isconnected() # check if the station is connected to an AP
if state == False:
wlan.connect(ssid, key) # connect to an AP
sleep(3)
mac = binascii.hexlify(wlan.config('mac')) # get the interface's MAC address
conf = wlan.ifconfig() # get the interface's IP/netmask/gw/DNS addresses
return [mac, conf]
def socketConnect(dest, port, data):
addr = socket.getaddrinfo(dest, port)[0][-1]
s = socket.socket()
s.connect(addr)
s.send("OTEC")
#state = configNetwork(ssid, key)
#print("mac: {}, IP: {}\r\n".format(state[0].decode("utf-8"), state[1][0]))
#socketConnect(dest, port, data)
#camera.init(0, format=camera.JPEG, fb_location=camera.PSRAM)
#camera.deinit()
#sleep(0.5)
def takePhoto():
global sayac
camera.init(0, d0=5, d1=14, d2=4, d3=15, d4=18, d5=23, d6=36, d7=39, format=camera.JPEG, framesize=camera.FRAME_VGA, xclk_freq=camera.XCLK_10MHz, href=25, vsync=27, reset=-1, pwdn=26,sioc=12, siod=13, xclk=32, pclk=19)
camera.flip(1)
# left / right
camera.mirror(1)
# framesize
camera.framesize(camera.FRAME_VGA ) #FRAME_VGA)
# The options are the following:
# FRAME_96X96 FRAME_QQVGA FRAME_QCIF FRAME_HQVGA FRAME_240X240
# FRAME_QVGA FRAME_CIF FRAME_HVGA FRAME_VGA FRAME_SVGA
# FRAME_XGA FRAME_HD FRAME_SXGA FRAME_UXGA FRAME_FHD
# FRAME_P_HD FRAME_P_3MP FRAME_QXGA FRAME_QHD FRAME_WQXGA
# FRAME_P_FHD FRAME_QSXGA
# Check this link for more information: https://bit.ly/2YOzizz
# special effects
camera.speffect(camera.EFFECT_NONE)
# The options are the following:
# EFFECT_NONE (default) EFFECT_NEG EFFECT_BW EFFECT_RED EFFECT_GREEN EFFECT_BLUE EFFECT_RETRO
# white balance
camera.whitebalance(camera.WB_OFFICE)
# The options are the following:
# WB_NONE (default) WB_SUNNY WB_CLOUDY WB_OFFICE WB_HOME
# saturation
camera.saturation(0)
# -2,2 (default 0). -2 grayscale
# brightness
camera.brightness(0)
# -2,2 (default 0). 2 brightness
# contrast
camera.contrast(0)
#-2,2 (default 0). 2 highcontrast
# quality
camera.quality(10)
# 10-63 lower number means higher quality
buf = camera.capture()
sayac += 1
file = "a{}.jpg".format(sayac)
with open(file, "wb") as f:
#f.write(buf.encode("charmap"))
f.write(buf)
oled.text('Taken', 0, 0)
oled.show()
print("Take Photo")
camera.deinit()
takePhoto()
"""
while(True):
#stateBtn = button.value()
#statePir = pir.value()
#if statePir == 1:
print(stateBtn, " ", statePir)
sleep(5)
takePhoto()
"""