e230d0c4b6eb58e56f149a2d869cfaf62d9d96ea
BOM-DAT/transistor-dat/2024-10-01-19-17-13.png
| ... | ... | Binary files /dev/null and b/BOM-DAT/transistor-dat/2024-10-01-19-17-13.png differ |
BOM-DAT/transistor-dat/2024-10-01-19-17-24.png
| ... | ... | Binary files /dev/null and b/BOM-DAT/transistor-dat/2024-10-01-19-17-24.png differ |
BOM-DAT/transistor-dat/transistor-dat.md
| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | + |
|
| 2 | +# transistor-dat |
|
| 3 | + |
|
| 4 | +## common used |
|
| 5 | + |
|
| 6 | +### S8050 |
|
| 7 | + |
|
| 8 | +- [[relay-dat]] drive |
|
| 9 | + |
|
| 10 | +| pin | name | common | |
|
| 11 | +| --- | --------- | -------- | |
|
| 12 | +| 1 | base | io input | |
|
| 13 | +| 2 | emittor | gnd | |
|
| 14 | +| 3 | collector | output | |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + |
|
| 19 | + |
|
| ... | ... | \ No newline at end of file |
Chip-dat/74xx-dat/74HC595-dat/74HC595-dat.md
| ... | ... | @@ -36,8 +36,13 @@ optional |
| 36 | 36 | - When the output-enable (OE) input is high, the outputs are in the high-impedance state. |
| 37 | 37 | |
| 38 | 38 | |
| 39 | +## code |
|
| 40 | + |
|
| 41 | +- [[py-595-demo-1.py]] - [[py-595-demo-2.py]] |
|
| 42 | + |
|
| 43 | + |
|
| 39 | 44 | ## ref |
| 40 | 45 | |
| 41 | -- [[RPI-dat]] |
|
| 46 | +- [[RPI-dat]] - [[rpi-python-dat]] |
|
| 42 | 47 | |
| 43 | 48 | - [[74HC595]] |
| ... | ... | \ No newline at end of file |
Chip-dat/74xx-dat/74HC595-dat/py-595-demo-1.py
| ... | ... | @@ -0,0 +1,73 @@ |
| 1 | +import RPi.GPIO as gpio |
|
| 2 | +from time import sleep |
|
| 3 | + |
|
| 4 | +class Shifter(): |
|
| 5 | + inputA = 19 |
|
| 6 | + inputB = 23 |
|
| 7 | + clock = 21 |
|
| 8 | + clearPin = 22 |
|
| 9 | + |
|
| 10 | + def __init__(self): |
|
| 11 | + self.setupBoard() |
|
| 12 | + self.pause = 0 |
|
| 13 | + |
|
| 14 | + def tick(self): |
|
| 15 | + gpio.output(self.clock, gpio.HIGH) |
|
| 16 | + sleep(self.pause) |
|
| 17 | + gpio.output(self.clock, gpio.LOW) |
|
| 18 | + sleep(self.pause) |
|
| 19 | + |
|
| 20 | + def setValue(self, value): |
|
| 21 | + for i in range(24): |
|
| 22 | + bitwise = 0x800000 >> i |
|
| 23 | + bit = bitwise & value |
|
| 24 | + if bit == 0: |
|
| 25 | + gpio.output(self.inputB, gpio.LOW) |
|
| 26 | + else: |
|
| 27 | + gpio.output(self.inputB, gpio.HIGH) |
|
| 28 | + self.tick() # Corrected method call |
|
| 29 | + |
|
| 30 | + def clear(self): |
|
| 31 | + gpio.output(self.clearPin, gpio.LOW) |
|
| 32 | + self.tick() # Corrected method call |
|
| 33 | + gpio.output(self.clearPin, gpio.HIGH) |
|
| 34 | + |
|
| 35 | + def setupBoard(self): |
|
| 36 | + # Uncomment if needed |
|
| 37 | + # gpio.setup(self.inputA, gpio.OUT) |
|
| 38 | + # gpio.output(self.inputA, gpio.HIGH) |
|
| 39 | + |
|
| 40 | + gpio.setup(self.inputB, gpio.OUT) |
|
| 41 | + gpio.output(self.inputB, gpio.LOW) |
|
| 42 | + |
|
| 43 | + gpio.setup(self.clock, gpio.OUT) |
|
| 44 | + gpio.output(self.clock, gpio.LOW) |
|
| 45 | + |
|
| 46 | + gpio.setup(self.clearPin, gpio.OUT) |
|
| 47 | + gpio.output(self.clearPin, gpio.HIGH) |
|
| 48 | + |
|
| 49 | +def main(): |
|
| 50 | + pause = 0.5 |
|
| 51 | + gpio.setmode(gpio.BOARD) |
|
| 52 | + shifter = Shifter() |
|
| 53 | + running = True |
|
| 54 | + |
|
| 55 | + while running: |
|
| 56 | + try: |
|
| 57 | + # shifter.clear() |
|
| 58 | + # shifter.setValue(1) |
|
| 59 | + # sleep(1) |
|
| 60 | + shifter.clear() |
|
| 61 | + shifter.setValue(0x0AAAAAA) |
|
| 62 | + sleep(pause) |
|
| 63 | + shifter.clear() |
|
| 64 | + shifter.setValue(0x0555555) |
|
| 65 | + sleep(pause) |
|
| 66 | + |
|
| 67 | + except KeyboardInterrupt: |
|
| 68 | + running = False |
|
| 69 | + |
|
| 70 | + gpio.cleanup() # Clean up GPIO pins on exit |
|
| 71 | + |
|
| 72 | +if __name__ == "__main__": |
|
| 73 | + main() |
Chip-dat/74xx-dat/74HC595-dat/py-595-demo-2.py
| ... | ... | @@ -0,0 +1,42 @@ |
| 1 | + |
|
| 2 | +from pi74HC595 import pi74HC595 |
|
| 3 | +import RPi.GPIO as gpio |
|
| 4 | +from time import sleep |
|
| 5 | + |
|
| 6 | +gpio.setmode(gpio.BOARD) |
|
| 7 | + |
|
| 8 | +# ds sh st |
|
| 9 | + |
|
| 10 | + |
|
| 11 | + |
|
| 12 | +# shift_register.set_by_list([0, 1, 0, 1, 1, 1, 0, 0]) |
|
| 13 | + |
|
| 14 | + |
|
| 15 | +def main(): |
|
| 16 | + |
|
| 17 | + pause = 0.5 |
|
| 18 | + gpio.setmode(gpio.BOARD) |
|
| 19 | + # shifter = Shifter() |
|
| 20 | + sh1 = pi74HC595(23, 22, 21, 2) |
|
| 21 | + sh2 = pi74HC595(19, 18, 16, 2) |
|
| 22 | + |
|
| 23 | + running = True |
|
| 24 | + |
|
| 25 | + while running: |
|
| 26 | + try: |
|
| 27 | + |
|
| 28 | + sh1.set_by_list([0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0]) |
|
| 29 | + sh2.set_by_list([0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0]) |
|
| 30 | + |
|
| 31 | + sleep(pause) |
|
| 32 | + |
|
| 33 | + sh1.clear() |
|
| 34 | + sh2.clear() |
|
| 35 | + |
|
| 36 | + except KeyboardInterrupt: |
|
| 37 | + running = False |
|
| 38 | + |
|
| 39 | + gpio.cleanup() # Clean up GPIO pins on exit |
|
| 40 | + |
|
| 41 | +if __name__ == "__main__": |
|
| 42 | + main() |
Tech-dat/GPIO-dat/rpi-gpio-drive-dat/rpi-gpio-drive-dat.md
| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | + |
|
| 2 | +# rpi-gpio-drive-dat |
|
| 3 | + |
Tech-dat/GPIO-dat/rpi-gpio-drive-dat/rpi-gpio-drive-dat.py
| ... | ... | @@ -0,0 +1,19 @@ |
| 1 | + |
|
| 2 | +# rpi-gpio-drive-dat.py |
|
| 3 | + |
|
| 4 | +import RPi.GPIO as GPIO |
|
| 5 | +from time import sleep |
|
| 6 | + |
|
| 7 | +GPIO.setmode(GPIO.BOARD) |
|
| 8 | +GPIO.setup(29, GPIO.OUT) # set a port/pin as an output |
|
| 9 | + |
|
| 10 | + |
|
| 11 | +try: |
|
| 12 | + while True: |
|
| 13 | + GPIO.output(29, 1) # set GPIO24 to 1/GPIO.HIGH/True |
|
| 14 | + sleep(2) # wait half a second |
|
| 15 | + GPIO.output(29, 0) # set GPIO24 to 0/GPIO.LOW/False |
|
| 16 | + sleep(2) # wait half a second |
|
| 17 | + |
|
| 18 | +except KeyboardInterrupt: # trap a CTRL+C keyboard interrupt |
|
| 19 | + GPIO.cleanup() # resets all GPIO ports used by this program |
|
| ... | ... | \ No newline at end of file |
Tech-dat/SBC-dat/RPI-dat/RPI-errors-dat/RPI-errors-dat.md
| ... | ... | @@ -20,10 +20,11 @@ to |
| 20 | 20 | |
| 21 | 21 | |
| 22 | 22 | |
| 23 | -- /etc/apt/sources.list.d/ 是存放额外软件源的目录。 |
|
| 23 | +- /etc/apt/sources.list.d/raspi.list 是存放额外软件源的目录。 |
|
| 24 | 24 | - /etc/apt/sources.list 是主要的系统软件源文件。 |
| 25 | 25 | - /etc/sources.list.d/raspi.list 是与 Raspberry Pi 相关的软件源配置文件。 |
| 26 | 26 | |
| 27 | + |
|
| 27 | 28 | not working options |
| 28 | 29 | |
| 29 | 30 | /etc/apt/sources.list.d/raspi.list |
Tech-dat/SBC-dat/RPI-dat/RPI-python-dat/RPI-python-dat.md
| ... | ... | @@ -6,4 +6,14 @@ apt-get install pip |
| 6 | 6 | Note, selecting 'python3-pip' instead of 'pip' |
| 7 | 7 | |
| 8 | 8 | |
| 9 | + |
|
| 10 | +## setup env |
|
| 11 | + |
|
| 12 | + python3 -m venv .venv |
|
| 13 | + source .venv/bin/activate |
|
| 14 | + |
|
| 15 | + pip install RPi.GPIO |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + |
|
| 9 | 19 | - [[python-dat]] |
| ... | ... | \ No newline at end of file |
Tech-dat/SBC-dat/RPI-dat/RPI-setup-dat/RPI-setup-dat.md
| ... | ... | @@ -89,4 +89,30 @@ Edit /etc/wpa_supplicant/wpa_supplicant.conf and add id_str="school" under the s |
| 89 | 89 | |
| 90 | 90 | - libreoffice-common |
| 91 | 91 | - chromium |
| 92 | -- python2.7 |
|
| ... | ... | \ No newline at end of file |
| 0 | +- python2.7 |
|
| 1 | + |
|
| 2 | +## updates |
|
| 3 | + |
|
| 4 | +- check architectures armv7l or aarch64 |
|
| 5 | + |
|
| 6 | +### sources list |
|
| 7 | + |
|
| 8 | +- /etc/apt/sources.list.d/raspi.list 是存放额外软件源的目录。 |
|
| 9 | +- /etc/apt/sources.list 是主要的系统软件源文件。 |
|
| 10 | +- /etc/sources.list.d/raspi.list 是与 Raspberry Pi 相关的软件源配置文件。 |
|
| 11 | + |
|
| 12 | + |
|
| 13 | + |
|
| 14 | +### setup the CN GFW mirror updating sources |
|
| 15 | + |
|
| 16 | +首先通过 uname -m 确定你使用的系统的架构。 |
|
| 17 | + |
|
| 18 | +编辑镜像站后,请使用sudo apt-get update命令,更新软件源列表,同时检查您的编辑是否正确。 |
|
| 19 | + |
|
| 20 | +https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/ |
|
| 21 | + |
|
| 22 | +选择你的 Raspbian 对应的 Debian 版本 Debian 12 (bookworm) |
|
| 23 | + |
|
| 24 | + deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bookworm main |
|
| 25 | + |
|
| 26 | +- ref https://mirrors.tuna.tsinghua.edu.cn/help/raspberrypi/ |
|
| ... | ... | \ No newline at end of file |
Tech-dat/actuator-dat/relay-dat/2024-10-01-19-16-11.png
| ... | ... | Binary files /dev/null and b/Tech-dat/actuator-dat/relay-dat/2024-10-01-19-16-11.png differ |
Tech-dat/actuator-dat/relay-dat/relay-dat.md
| ... | ... | @@ -21,10 +21,17 @@ HF32F-G-5-HS |
| 21 | 21 | |
| 22 | 22 | ## relay control schematic |
| 23 | 23 | |
| 24 | -using N-mos mosfet control |
|
| 24 | +## using N-mos mosfet control |
|
| 25 | 25 | |
| 26 | 26 |  |
| 27 | 27 | |
| 28 | +## using NPN transistor drive |
|
| 29 | + |
|
| 30 | + |
|
| 31 | + |
|
| 32 | +- [[transistor-dat]] |
|
| 33 | + |
|
| 34 | + |
|
| 28 | 35 | ### fly back diode |
| 29 | 36 | |
| 30 | 37 | A flyback diode (also known as a freewheeling diode or reverse protection diode) is used to protect a relay or other inductive loads. When the relay coil is de-energized, it generates a high voltage reverse current (called back EMF) due to its inductive nature. This reverse current can damage other components in the control circuit. |