LoginSignup

Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

3
6

More than 3 years have passed since last update.

ใ€RaspberryPiใ€‘้ƒจๅฑ‹ใฎ็…งๆ˜Žใ‚’ๆถˆใ™ใจ่‡ชๅ‹•็š„ใซ LCD ใ‚‚ๆถˆ็ฏใ™ใ‚‹ใ‚จใ‚ณ่จญ่จˆ DIY

Last updated at Posted at 2020-02-04

ๅ‰ๅ›žใฏๆถฒๆ™ถใƒ‡ใ‚ฃใ‚นใƒ—ใƒฌใ‚คใ‚’ๆถˆ็ฏใงใใ‚‹ใ‚‚ใฎใซไบคๆ›ใ—ใพใ—ใŸใ€‚
ๆฌกใฏใƒญใƒžใƒณใ‚’่ฟฝใ„ๆฑ‚ใ‚ใฆใฟใŸใ„ใจๆ€ใ„ใพใ™ใ€‚

ไป•ๆง˜

  1. ้ƒจๅฑ‹ใฎ็…งๆ˜ŽใŒๆถˆใˆใ‚‹
  2. Arduino ใซๆŽฅ็ถšใ•ใ‚ŒใŸ็…งๅบฆใ‚ปใƒณใ‚ตใƒผใซใ‚ˆใ‚Š้ƒจๅฑ‹ใฎ็…งๅบฆใ‚’ๆคœ็Ÿฅ๏ผˆ50 ไปฅไธ‹ใซใชใ‚‹๏ผ‰
  3. Python ใŒใ‚ทใƒชใ‚ขใƒซ้€šไฟกใ‹ใ‚‰้ƒจๅฑ‹ใฎ็…งๅบฆใ‚’ๅ–ๅพ—๏ผˆ50 ไปฅไธ‹ใ‚’ๅ–ๅพ—๏ผ‰
  4. ้ƒจๅฑ‹ใŒๆš—ใ„็Šถๆ…‹ใซ๏ผˆ็…งๅบฆ 50 ไปฅไธ‹ใซ๏ผ‰ๅค‰ๅŒ–ใ—ใŸใ‚‰ๆถฒๆ™ถใƒ‡ใ‚ฃใ‚นใƒ—ใƒฌใ‚คใฎๆถˆ็ฏใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒ
  5. ้ƒจๅฑ‹ใฎ็…งๆ˜Žใ‚’็‚นใ‘ใ‚‹
  6. ้ƒจๅฑ‹ใŒๆ˜Žใ‚‹ใ„็Šถๆ…‹ใซ๏ผˆ็…งๅบฆ 50 ไปฅไธŠใซ๏ผ‰ๅค‰ๅŒ–ใ—ใŸใ‚‰็‚น็ฏใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒ

่ƒŒๆ™ฏ

  • ใ‚ณใƒžใƒณใƒ‰ใ‚’ใ„ใกใ„ใกๆ‰“ใคใฎใŒ้ขๅ€’
  • ใ‹ใจใ„ใฃใฆ้ƒจๅฑ‹ใซไบบใŒใ„ใชใ„๏ผˆ็…งๆ˜Žใ‚’ๆถˆใ—ใŸ๏ผ‰็Šถๆ…‹ใง LCD ็‚นใใฃใฑใชใ—ใฏใ‚‚ใฃใŸใ„ใชใ„
  • ใƒญใƒžใƒณ้‡่ฆ–

ใƒใƒผใƒ‰ใ‚ฆใ‚งใ‚ข่จญ่จˆ

ใƒžใ‚คใ‚ณใƒณ๏ผšArduino Micro
็…งๅบฆใ‚ปใƒณใ‚ตใƒผ๏ผšNJL7302L-F3 1ๅ€‹
ๆŠตๆŠ—๏ผš10kฮฉ 1ๅ€‹

ๅ›ž่ทฏใฏใใ‚Œใปใฉ้›ฃใ—ใ„ใ‚‚ใฎใงใฏใชใ„ใงใ™ใ€‚
ๅ…ฅๅŠ›ใฏ 5V ใงใ€ๅ‡บๅŠ›ใŒ A3 ใจๆŠตๆŠ— 10kฮฉ -> GND ใซใชใฃใฆใ„ใ‚‹ใ ใ‘ใงใ™ใ€‚
๏ผˆๅ›ž่ทฏๅ›ณใงใฏๆŠตๆŠ—ใŒ 220ฮฉ ใซใชใฃใฆใพใ™ใŒใ€ใใ‚Œใ—ใ‹็ตตใŒ่ฆ‹ใคใ‘ใ‚‰ใ‚Œใชใ‹ใฃใŸใฎใง่ชญใฟๆ›ฟใˆใฆใใ ใ•ใ„๏ผ‰
Screenshot_20200201[1].png

IMG_20200201_1728.jpg

ๅ‚่€ƒ๏ผšใกใณใงใƒใ€œใฎ2ใง้Šใ‚“ใงใฟใŸ

ใ‚ฝใƒ•ใƒˆใ‚ฆใ‚งใ‚ข่จญ่จˆ

ใพใšใฏ Arduino ใงๅฎŸ่กŒใ™ใ‚‹ใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใงใ™ใ€‚
A3๏ผˆใ‚ขใƒŠใƒญใ‚ฐ3็•ชใƒใƒผใƒˆ๏ผ‰ใ‚’่ชญใฟๅ–ใฃใฆใ€1็ง’ใŠใใซใ‚ทใƒชใ‚ขใƒซ้€šไฟกใธๆ›ธใๅ‡บใ™ใ ใ‘ใฎใ‚ทใƒณใƒ—ใƒซใชใ‚‚ใฎใงใ™ใ€‚

mySketch.ino
void setup() {

  //start serial connection
  Serial.begin(9600);

  //configure pin A3 as an input and enable the internal resistor
  pinMode(A3, INPUT);

}

void loop() {

  //read the photocell value into a variable
  int sensorVal = analogRead(A3);

  //print out the value of the photocell
  Serial.println(sensorVal);

  //delay 1000 ms
  delay(1000);

}

ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น่จญ่จˆ

UI ็”ป้ข่กจ็คบใจใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆๅˆถๅพกใฏ Python ใŒ่กŒใ„ใพใ™ใ€‚
ใพใšใฏ Tkinter ใง็”ป้ขใ‚’ไฝœใ‚Šใพใ™ใŒใ€ใƒ‘ใƒ‡ใ‚ฃใƒณใ‚ฐ๏ผˆpadx, pady๏ผ‰ใ‚’ๅ–ใฃใŸใจใ“ใ‚ใŒใ‚ฐใƒฌใƒผใซใชใฃใฆใพใ™ใ€‚
Screenshot_20200201[2].png
โ€ปๆ•ฐๅ€คใชใฉใฎ่กจ็คบใฏใƒ€ใƒŸใƒผใงใ™ใ€‚

ใกใชใฟใซใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใฎไธ€้ƒจใฏใ“ใ‚“ใชๆ„Ÿใ˜ใ€‚

main.py
self.label1=Label(self, text="ๆŽฅ็ถšๅ…ˆ", bg="white", font=("Sans", 16, "normal"))
self.label1.grid(row=0, column=0, sticky="news", padx=5, pady=2)

self.label2=Label(self, text="/dev/ttyACM0", bg="#E4E4FF", font=("Sans", 16, "normal"))
self.label2.grid(row=0, column=1, sticky="news", padx=5, pady=2)

ๅ†…้ƒจใƒ‘ใƒ‡ใ‚ฃใƒณใ‚ฐ๏ผˆipadx, ipady๏ผ‰ใซใ—ใฆใฏใฉใ†ใ‹ใ€‚
็ตๆžœใฏใ“ใกใ‚‰ใ€‚
Screenshot_20200201[3].png
ใ„ใ‚„ใ„ใ‚„ใ€ใใ†ใ˜ใ‚ƒใชใ„ใ‚“ใ ใ€‚
็ฉบ้–“ใจใ„ใ†ใ‹ใ€็™ฝ่ƒŒๆ™ฏใงไฝ™็™ฝใ‚’ๆŒใŸใ›ใŸใ„ใ ใ‘ใชใ‚“ใ ใ€‚

ใชใ‚“ใจใ‹ใชใ‚‰ใชใ„ใ‚‚ใฎใ‹ใจ่ชฟในใฆใ„ใ‚‹ใจใ€
็™ฝ่ƒŒๆ™ฏใฎใƒ•ใƒฌใƒผใƒ ใ‚’่ฆชใซ็ฝฎใใ€ๅญใจใ—ใฆใƒฉใƒ™ใƒซใ‚’ๆ‰€ๅฑžใ•ใ›ใŸใ‚‰่‰ฏใ„ใจใฎๆƒ…ๅ ฑใ€‚

main.py
self.label1=Label(self, text="ๆŽฅ็ถšๅ…ˆ", bg="white", font=("Sans", 16, "normal"))
self.label1.grid(row=0, column=0, sticky="news", ipadx=5, ipady=2)

self.frame2=Frame(self, bg="white")
self.frame2.grid(row=0, column=1, sticky="news")
self.frame2.columnconfigure(0, weight=1)
self.label2=Label(self.frame2, text="", bg="#E4E4FF", font=("Sans", 16, "normal"))
self.label2.grid(row=0, column=0, sticky="news", padx=5, pady=2)

Screenshot_20200201[4].png
ไปŠๅบฆใฏใ†ใพใ่กŒใใพใ—ใŸใ€‚
ใƒใƒƒใƒˆๆฐ‘้”ใฏๅคฉๆ‰ใ ใ‚‰ใ‘ใงใ™ใชใ€‚
ใ—ใ‹ใ—ใ€ใ“ใ‚Œใ ใ‘ใฎใŸใ‚ใซๅŠๆ—ฅๆฝฐใ—ใฆใพใ™ใ‹ใ‚‰ใญใ€‚ๅ ฑใ‚ใ‚Œใชใ„ใฃใ™ใ€‚

ไป•ไธŠใ’

ใ‚ปใƒณใ‚ตใƒผใƒ‡ใƒใ‚คใ‚น๏ผˆArduino๏ผ‰ใ‚’ๆŽขใ—ใฆใ€ๆŽฅ็ถšใงใใ‚ŒใฐๆŽฅ็ถšใ—ใฆใ€ŒๆŽฅ็ถšๅ…ˆใ€ใจใ€Œ้€šไฟก้€Ÿๅบฆใ€ใ‚’่กจ็คบใ—ใพใ™ใ€‚
ไพ‹ๅค–ๆ™‚ใฏไฝ•ใ‚‚ใ—ใพใ›ใ‚“ใ€‚1็ง’ๅพŒใซๅ†ๅ‡ฆ็†ใ—ใฆๆŽฅ็ถšใงใใŸใ‚‰ใใ‚Œใง่‰ฏใ„ใจๅˆคๆ–ญใงใใ‚‹ใ‹ใ‚‰ใงใ™ใ€‚

main.py
# ่กจ็คบใ‚’ๆ›ดๆ–ฐ
def update(self):
    # ใ‚ปใƒณใ‚ตใƒผใƒ‡ใƒใ‚คใ‚นใ‚’ๆŽขใ™
    self.ser_name=sensor_setting.dev_search()

    try:
        # ้€šไฟกๆบ–ๅ‚™ไธญใ‹ใคใ€ใ‚ปใƒณใ‚ตใƒผใƒ‡ใƒใ‚คใ‚นใŒ OS ใซ่ช่ญ˜ใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆ
        if not self.ser_init and self.ser_name != "":
            # ใ‚ทใƒชใ‚ขใƒซ้€šไฟกใฎๅˆๆœŸๅŒ–
            self.ser=serial.Serial(self.ser_name, sensor_setting.bps, timeout=sensor_setting.timeout)

            # ้€šไฟกๆบ–ๅ‚™ๅฎŒไบ†
            self.ser_init=True

            # ๆŽฅ็ถšๅ…ˆใ‚’่กจ็คบ
            self.label2.configure(text=self.ser_name)

            # ๆŽฅ็ถš้€Ÿๅบฆใ‚’่กจ็คบ
            self.label4.configure(text="{0}bps".format(sensor_setting.bps))

    # ไพ‹ๅค–ๆ™‚ใฏไฝ•ใ‚‚ใ—ใชใ„
    except:
        pass

ๆŽฅ็ถšใงใใŸใ‚‰ใ‚ทใƒชใ‚ขใƒซ้€šไฟกใ‚’้–‹ๅง‹ใ—ใฆใ€็…งๅบฆใ‚’ๅ–ๅพ—ใ—ใพใ™ใ€‚
้ƒจๅฑ‹ใŒๆš—ใใชใฃใŸใ‚‰ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆๆถˆ็ฏใ€ๆ˜Žใ‚‹ใใชใฃใŸใ‚‰็‚น็ฏใ™ใ‚‹ใ‚ˆใ†ใซ้€ฃๅ‹•ใ—ใพใ™ใ€‚

ไพ‹ๅค–็™บ็”Ÿๆ™‚ใฏๆฌกใฎ1็ง’ๅพŒใซใƒชใƒˆใƒฉใ‚คใ—ใพใ™ใ€‚

main.py
    try:
        # ใ‚ทใƒชใ‚ขใƒซ้€šไฟกใ‚’้–‹ๅง‹
        if self.ser.is_open == False:
            self.ser.open()

        # 1่กŒๅ—ไฟก๏ผˆb'็…งๅบฆยฅrยฅn' ใฎๅฝขๅผใงๅ—ไฟก๏ผ‰
        serval=self.ser.readline()

        if len(serval) >= 0:
            # ๆ”น่กŒใ‚ณใƒผใƒ‰ใ‚’ๅ‰Š้™ค๏ผˆb'็…งๅบฆ'๏ผ‰
            serval=serval.strip()

            # ใƒใ‚คใƒŠใƒชๅฝขๅผใ‹ใ‚‰ๆ–‡ๅญ—ๅˆ—ใซๅค‰ๆ›๏ผˆ็…งๅบฆ๏ผ‰
            serval=serval.decode("utf-8")

            # ็…งๅบฆใ‚’ๆ›ดๆ–ฐ
            self.label12.configure(text=serval)

            # ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆ็‚น็ฏไธญใซ้ƒจๅฑ‹ใŒๆš—ใใชใฃใŸใ‚‰
            if int(serval) < 50 and self.backlight_state == 1:
                # ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆๆถˆ็ฏ
                os.system('sudo sh -c "echo 0 > /sys/class/backlight/soc\:backlight/brightness"')
                self.backlight_state=0

            # ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆๆถˆ็ฏไธญใซ้ƒจๅฑ‹ใŒๆ˜Žใ‚‹ใใชใฃใŸใ‚‰
            elif int(serval) >= 50 and self.backlight_state == 0:
                # ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆ็‚น็ฏ
                os.system('sudo sh -c "echo 1 > /sys/class/backlight/soc\:backlight/brightness"')
                self.backlight_state=1

    # ไพ‹ๅค–ๆ™‚
    except:
        # ใ‚ปใƒณใ‚ตใƒผ่กจ็คบใ‚’ใ‚ฏใƒชใ‚ข
        self.label6.configure(text="")
        self.label8.configure(text="")
        self.label10.configure(text="")
        self.label12.configure(text="")

    # 1็ง’ๅพŒใซๅ†่กจ็คบ
    self.master.after(1000, self.update)

ใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใ‚’้–‰ใ˜ใ‚‹ๅ‰ใซใ€ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆใ‚’็‚น็ฏใ—ใพใ™ใ€‚
ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆๅˆถๅพกใŒไธญๆ–ญใ™ใ‚‹ใฎใงใ€็‚น็ฏใ—ใฆใŠใ„ใŸๆ–นใŒไฝ•ใ‹ใ‚ใฃใŸใจใใฏไพฟๅˆฉใ‹ใชใจๆ€ใ„ใพใ—ใŸใ€‚

main.py
# ้–‰ใ˜ใ‚‹ใƒœใ‚ฟใƒณใ‚คใƒ™ใƒณใƒˆ
def on_closing():
    if messagebox.askyesno("Quit", "็ต‚ไบ†ใ—ใพใ™ใ‹๏ผŸ"):
        # ใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆ็‚น็ฏ
        os.system('sudo sh -c "echo 1 > /sys/class/backlight/soc\:backlight/brightness"')

        # ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ็ต‚ไบ†
        root.destroy()

ใพใจใ‚

Python ใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใฏ้•ทใ‚ใชใฎใงใ€
ใ”่ˆˆๅ‘ณใ‚ใ‚Šใพใ—ใŸใ‚‰ GitHub ใ‚’ใ”ๅ‚็…งใใ ใ•ใ„ใ€‚
https://github.com/km7902/mySensor

ใชใ‚“ใจใ‹ใ€้ƒจๅฑ‹ใฎ็…งๆ˜Žใจ้€ฃๅ‹•ใ—ใฆใƒใƒƒใ‚ฏใƒฉใ‚คใƒˆ ON/OFF ใŒใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ—ใŸใ€‚
ๆถˆ่ฒป้›ปๅŠ›ใฏใ€Œใกใ‚Šใคใ‚‚ใ€ใงใ™ใ‹ใ‚‰ใ€‚ๅœฐ็ƒใซๅ„ชใ—ใ„ใ‚ทใ‚นใƒ†ใƒ ใซใชใ‚Šใพใ—ใŸใ€‚

ๆฌกใฏๆธฉๅบฆใƒปๆนฟๅบฆใƒปๆฐ—ๅœงใ‚’ๅ–ๅพ—ใ—ใฆใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใซ่จ˜้Œฒใ—็ถšใ‘ใ‚‹ใจใ„ใ†
ไป•็ต„ใฟใŒใงใใŸใ‚‰ใ„ใ„ใชใจๆ€ใฃใฆใ„ใพใ™ใ€‚

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Python's like ranking last week

ใŠ้กŒใฏไธๅ•๏ผQiita Engineer Festa 2024ใง่จ˜ไบ‹ๆŠ•็จฟ๏ผ
ak-sasaki0919

ใ—ใ‚‡ใƒผใ‚‚ใชใ„ไบ‹ๅ‹™ไฝœๆฅญใ‚’ๅฟซ้ฉใซใ™ใ‚‹ใŸใ‚ใฎใƒ„ใƒผใƒซใ‚’ไฝœใ‚ŠใŸใ„ใจใใ€€ใ€œใ‚ปใ‚ญใƒฅใ‚ขๆ„่ญ˜ใฎ้ซ˜ใ„ไผš็คพ็ทจใ€œ

Linked from these articles

Comments

No comments

Let's comment your feelings that are more than good

Being held Article posting campaign

ใ—ใใ˜ใ‚Šใ‚จใƒณใ‚ธใƒ‹ใ‚ข๏ผ็งใฟใŸใ„ใซใชใ‚‹ใช๏ผ

~
View details

ใฏใ—ใ‚™ใ‚ใฆใฎ่จ˜ไบ‹ๆŠ•็จฟ

~
View details
3
6

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address