ESP32-EYE Sayaç okuyucu (ESP32 Haftasonu projeleri)

fide

Meraklı ve "nasıl" sorusunu seven biri
Katılım
8 Eylül 2021
Mesajlar
1,877
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ı.

1720764239845.png
1720764269093.png

Ana oyuncular yukarıdaki su sayacı ve ESP32-EYE (TTGO-Camera) modülü.
Yardımcı oyuncu ise sabitleme aparatı.

1720764390549.png
1720764412823.png
1720764440961.png


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.

1720764539548.png
1720764553814.png

Bitince yukardakine benzer bir şekilde gözükecek inşallah.

ESP32-EYE ile aldığım ilk görüntü aşağıda.

a1.jpg


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()
"""
Kod şimdilik sadece foto çekip ESP32 üzerinde jpg olarak saklıyor. Geliştirme kısmına henüz başlamadım.
 

Ekler

  • holder.STL
    149.1 KB · Görüntüleme: 14
  • Lens Holder.STL
    46.5 KB · Görüntüleme: 12
  • lensHolderBar-rev1.STL
    23 KB · Görüntüleme: 14
led ile aydınlatma denemesi

a1.jpg

alınan fotoğraf.
Çözünürlük ve kalite ile ilgili denemeler yapabilirim artık
 
esp32-p4 satışa çıkarsa bu tip görüntü işlemeler rahatlıkla yapılabilecek. içinde dual core 400mhz riscV işlemci var. gerçi internetde normal esp32 ile yapılmış 5-10 fps görüntü işleme örnekleri de var. sayaç gibi işlerde çok daha yavaş bu işi yapsa bile yeterli olur.

sayaç okuma - iot projelerinde bu görüntü işleme tekniği ilk olarak hazır sayaçları değerlendirmek için düşünülmüştü. ama artık çoğu sayacın içinde manyetik pulse çıkışı var. sayaç hareketleri bir pulse üretiyor ve mcu bu pulseları sayıyor.

kodu tam anlayamadım esp32 üzerinde micropython mu çalışıyor ?

biz benzeri bir işi tarım projesi için yapmıştık. tarlalarda böcek yoğunluğunu sayıyıyor. feromon tuzağı denilen üzerinde böcek türüne göre koku bulunan kareli kağıtlar var. bu kağıtlara saat veya günde kaç tane böcek yapıştığını sayıyor.

1720777087022.png
 
Esp32 üzerinde Micropython çalışıyor. Mbus yada manyetik cam sensör (Reed kontak) ile çıkış verenler var. Görüntü işleme ve çizim (Solid) denemek için projeyi yapıyorum.
 
Son düzenleme:

Çevrimiçi personel

Forum istatistikleri

Konular
6,343
Mesajlar
107,860
Üyeler
2,623
Son üye
kukulate

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top