Hirdetés

Raspberry pi pico projekt #3 - lámpa kapcsoló

Van egy fali lámpa a nappaliban. 2x3w meleg fehér LED, hygge fényt ad. Felújításnál raktuk fel, volt kilógó föld, nulla és fázis, közelben a bejárati ajtó mellett kapcsoló (gondoltuk azt kapcsolja). Közben derült ki, hogy a vezeték csak simán konnektorból lett felvezetve, nincs hozzá kapcsoló. Egyébként is rossz helyen lett volna hozzá a bejárati ajtó mellett, nem lett volna kényelmes.
Kanapé került alá, és nem akartunk fizikai kapcsolót rakni oda a falra esztétikai okok miatt. Szóval kaptam kollégámtól egy shelly wifi-s kapcsolót, amit be lehetett rakni a falba (pont befért a kanapé mögötti, alatta lévő konnektor mögé.

Hamar kiderült, hogy kényelmetlen mindig laptop-on vagy telefonon (akár a saját applikációval) kapcsolgatni, amikor kell. Egy fizikai kapcsoló kell! Ekkor már volt nálam pár pico w egység. Adta magát a dolog: abból lesz a vezeték nélküli villanykapcsoló. Ám nem elégedtem volna meg azzal, hogy csak a lámpa kapcsolására használjam el. Annyi mindent tud! Szóval raktam hozzá még egy hőmérséklet és páratartalom mérő szenzort is.

Raspberry pi pico projekt #0

Szekrény díszvilágítás gyerekszobába.

Ez volt a legelső projekt, amit ezzel a mikrovezérlővel terveztem megvalósítani. Eredetileg egy sima pi pico-t akartam volna berakni. Ám amikor többet rendeltem a wifi-s verzióból, kitaláltam, hogy lehessen wifi-n keresztül is vezérelni. Egy nagyon egyszerű, buta REST api-on keresztül. Aztán hozzácsaptam még egy dht11-es szenzort is, mert miért ne.

Magát az alap vezetékezést, LED vezérlést a wc lámpás projekt során sikerült nagyjából kikísérleteznem. 5V ugye megy a vsys-ről, kell egy tranzisztor, hogy ki- és be- lehessen kapcsolni a kört.

A szenzort már ismertem régebbről, amikor először játszottam raspberry pi 3-mal. Bekötéséről sok anyagot találni neten. Itt egy példa:

Én a GP16 PIN-t használtam bemenő adat csatlakozáshoz.

Raspberry pi pico projekt #1 - upgrade

A szenzort rögzítettem.

ki szereti a danette-et? :DDD

A kód is kijavításra került. Most már az aktív idő alatt is figyeli a mozgást és nullázza a visszaszámlálót. A request-ek nem zavarnak, ha hibát dobnak.

import board
import digitalio
import pwmio
import asyncio as uasyncio
import os, time, sys, ipaddress, ssl, wifi, socketpool
import adafruit_requests

greenLED_PIN = board.GP11 # Pin number for the board's built in LED.
redLED_PIN = board.GP15
blueLED_PIN = board.GP2
PIR_PIN = board.GP0 # Pin number connected to PIR sensor output wire.
TRA_PIN = board.GP16

# Setup digital input for PIR sensor:
pir = digitalio.DigitalInOut(PIR_PIN)
pir.direction = digitalio.Direction.INPUT

# setup for transistor to turn on/off the 5v output for the LED strip
tra0 = digitalio.DigitalInOut(TRA_PIN)
tra0.direction = digitalio.Direction.OUTPUT

# Setup pwm output for LEDs:
green = pwmio.PWMOut(greenLED_PIN, frequency=1000)
red = pwmio.PWMOut(redLED_PIN, frequency=1000)
blue = pwmio.PWMOut(blueLED_PIN, frequency=1000)

maxPWM = 65535

def setPercent(val):
c = 1 - val/100
return int(c * maxPWM)

green.duty_cycle = setPercent(0)
blue.duty_cycle = setPercent(0)
red.duty_cycle = setPercent(0)
tra0.value = False

async def dimmUpUntil(ledPWM, val):
percentVal = 1
currentVal = setPercent(percentVal)
while percentVal < val:
#print("increasing led value " + str(currentVal))
ledPWM.duty_cycle = currentVal
percentVal = percentVal*(1+1-int(percentVal*0.01))
currentVal = setPercent(percentVal)
await uasyncio.sleep_ms(50)
currentVal = setPercent(val)
ledPWM.duty_cycle = currentVal

async def dimmDownSlowly(ledPWM, fromVal):
percentVal = fromVal
currentVal = setPercent(percentVal)
while percentVal > 2:
#print("decreasing led value " + str(currentVal))
if pir.value:
return 1
ledPWM.duty_cycle = currentVal
percentVal = percentVal-2
currentVal = setPercent(percentVal)
await uasyncio.sleep_ms(300)
ledPWM.duty_cycle = setPercent(0)
return 0

def connect():
try:
# Connect to the WIFI, use settings.toml to configure SSID and Password
wifi.radio.connect(<SSID>, <Password>) # wifi access point neve és a hozzátartozó jelszó kell ide
except Exception as e:
# Handle connection error
# For this example we will simply print a message and exit the program
return False
pool = socketpool.SocketPool(wifi.radio)
return adafruit_requests.Session(pool, ssl.create_default_context())

async def sendRequest(url):
requests = connect()
try:
resp = requests.get(url)
print(str(resp))
resp.close()
except Exception as e:
print("Error:\n", str(e))

async def stayOn():
count = 0
while count < 230000:
count += 1000
if pir.value:
print("still moving")
count = 0
print(count)
await uasyncio.sleep_ms(1000)

async def motionStarts(old_value):
tra0.value = True
# PIR is detecting movement! Turn on LED.
turnOnBlue = uasyncio.create_task(dimmUpUntil(blue, 65))
turnOnRed = uasyncio.create_task(dimmUpUntil(red, 100))
turnOnGreen = uasyncio.create_task(dimmUpUntil(green, 95))
# Check if this is the first time movement was
# detected and print a message!
if not old_value:
uasyncio.create_task(sendRequest("http://192.168.0.170/cgi-bin/assign.py?wc=activated"))
print('Motion detected')
await uasyncio.gather(turnOnBlue, turnOnRed, turnOnGreen)
await uasyncio.gather(uasyncio.create_task(stayOn()))

async def motionEnds(old_value):
# Again check if this is the first time movement
# stopped and print a message.
if old_value:
old_value = False
print('Motion ended!')
uasyncio.create_task(sendRequest("http://192.168.0.170/cgi-bin/assign.py?wc=deactivated"))

# PIR is not detecting movement. Turn off LED.
turnOffRed = uasyncio.create_task(dimmDownSlowly(red, 100))
turnOffGreen = uasyncio.create_task(dimmDownSlowly(green, 95))
turnOffBlue = uasyncio.create_task(dimmDownSlowly(blue, 65))
listOfResults = await uasyncio.gather(turnOffRed, turnOffGreen, turnOffBlue)
if sum(listOfResults) > 0:
return old_value
tra0.value = False
print('led has been turned down')
return old_value

# Main loop that will run forever:
async def main():
old_value = pir.value
while True:
pir_value = pir.value
if pir_value:
await motionStarts(old_value)
print(" motion happened ")
#pir_value = pir.value
old_value = pir_value
else:
old_value = await motionEnds(old_value)

uasyncio.run(main())

Raspberry pi pico projekt #2 - csengő

Feleségem szeretett volna egy csengőt a mi lakásunkhoz a házban.
Megint remek alkalom a gyakorláshoz :K . Az alap most is a pi pico. Ezt próbáltam a lehető legegyszerűbbre megcsinálni. Utánajártam hogyan lehet audio-t lejátszani ezzel az rp2040 alapú mikrovezérlővel. Szerencsére a circuitpython jól kezeli a hang lejátszását, ráadásul MP3 playback is van! Remek!

Kellett egy hangszóró.
Kezdetben ilyen kis gyenge, mini hangszóróval teszteltem, hogy működik-e a lejátszás. Csak nagyon közel tartva a fülemhez hallottam, hogy szól. Szóval vagy rakok rá egy erősítőt, vagy kitalálok valami mást. Volt otthon egy forrasztható 3,5mm csatlakozó alljzat és rengeteg használaton kívüli hangszóró.

Akkor elkezdtem kigondolni, hogyan legyen meg nagyjából a kapcsolási rajz.

Raspberry pi pico projekt #1

Körülbelül fél évvel ezelőtt akadtam rá erre a kis mikrovezérlőre. Nem sok időm volt foglalkozni vele, de több projektet is elkezdtem (néhány olyanokból fakadt, hogy meg lettem kérve, csináljak ezt-meg-azt :D ).

A legelső az egy éjjeli, nem túl erős fény a mellékhelyiségbe.
Probléma: az alap világítótest túl fényesnek bizonyult ahhoz, hogy ha kell, éjjel annak a segítségével lássunk. Feleségem kérte tőlem. Nekem meg jó ürügy volt arra, hogy legyen a éjszakára felkapcsolható, "okos", mozgásérzékelővel ellátott világítás. A legegyszerűbb egy sima kapcsolóval ellátott gyengébben világító lámpatest vagy LED szalag lett volna. No, de akkor hogyan gyakoroljam a mikrovezérlő programozását? (Mert azt ugye meg kell venni, és használni kell! ;] )

Világos! Kell valami esemény általi vezérlés pluszban! Eszembe jutott, hogy a gyerek néha panaszkodik, hogy nem éri fel a kapcsolót. Milyen egyszerű is lenne, ha éjjelre igazából egy mozgásérzékelő kapcsolná fel? És akkor még csak tapizni sem kell mindenfele, amikor az ember félálomban használni szeretné a mosdót.

DIR-600 b5e feltámasztási kísérlet

Nagyon régen van már nálam egy nem működő router. Próbáltam eladni nem sok sikerrel. (Talán mert elfelejtettem a HW verziót is odaírni?)
[link]

Pár hete szereztem magamnak egy raspberry pi hobbyfejlesztő számítógépet. Utána olvastam a dolognak, és elvileg mindenféle áramköri segédlet nélkül, 3 kábel segítségével a serial elérhető lenne (3.3V uArt mini interfész segítségével). Elég bénán néz ki a forrasztásom, nem vagyok rá büszke. 15 év után (életemben kb másodszor) forrasztottam valamit.

A VCC-n kívűl minden mást összekötöttem: GND -> GND, TX -> RX, RX -> TX
Feltettem a minicom nevű szoftvert, beállítottam a serialt, hogy a serial login ne legyen engedélyezve. (Lehet, hogy ezt rosszul értelmeztem?) Most két serial is van a /dev alatt, ttyAMA0 és ttyS0, amiknél tudok konfigurálgatni. Amíg a serial login Yes-re volt állítva, a minicom megállt, kifagyott.

Régi videokártyák

Néhány régi kártyát találtam pakolás közben.
2 PCI portos S3 Virge kártya
1 AGP-sATI rage IIC (nakos1212 fórumtárs részére félretéve)

Akinek kell, szóljon. Én nem vagyok gyűjtő. Elég egy kézfogás vagy mosoly érte, ezért sem rakom HA-ra.

Motorháztető zár probléma (és lemerült az akku)

Szóval a következő a helyzet. Én most nem járulok hozzá a személyautómmal a CO2 kibocsátáshoz, ugyanis, nem indul, nem tudok kiállni sem a garázsból.
1. Lemerült az akkumulátor. Ezt könnyen tudnám orvosolni, viszont most jön a második gond...
2. A motorháztető zár nem nyílik.

2004-es Ford Focus Fresh 1.4, benzines. Elöl a Ford márkajelzés elfordítható és mögötte található a zár. Elvileg egyszer balra fordítom a kulcsot a zárban, kipattan kicsit a tető, megfogom, aztán jobbra fordítom a kulcsot és nyílik. Kétszer már sikerült is nyitnom. Harmadszorra annyit produkált, hogy 90 fok helyett kb. csak 60 fokig fordul el balra a kulcs, nem kattan semmi.

Állítóalag valami műanyag szerencsétlenség van a zárszerkezetben, ami elmozdulhat, eltörhet. Valaki, valami ötlet? Később jó lenne azért megmozdítanom a szekeret, ha már sajátom, és nemrég vettem.

Klíma-sztrájk Budapesten

Ma 9:30-tól 12-ig volt egy békés tüntetés a Batthyány-téren. Elmentem, kíváncsi voltam rá. Szerintem ennek van értelme, nem a politikai pártok veszekedésének. Indexen, hvg-n, hir24, egyéb híroldalakon sehol nem látom hatalmas betűkkel, nagy képpel kirakva legfelül. Miért?

Van egy 3 hónapos kislányom. Szeretném, ha egy élhető világot tapasztalna meg, nem kellene megküzdenie a kiszámíthatatlan időjárás, az élelemhiány, vízhiány, levegőhiány és egyéb negatív változások keltette viszontagságokkal.

Egyébként éljen a haza! Amíg még élhető...

Jázmin

Megszületett a lányom. :D :)

Hihetetlen és csodálatos dolog.
Még December 9-én, 2 nappal a születésnapom után.

Éljen soká Jázminka! :)