본문으로 바로가기
반응형

설계도랑 실물이랑 매칭(맞춰보는거)하는 것을 Mapping이라고한다.

라즈베리파이의 pin을 살펴보자.

pinout

 

 

 

아래 이미지에서 라즈베리 파이의 핀들의 정확한 명칭을 알 수 있다.

라즈베리파이 gpio 구조

 

각 핀 번호에대한 명칭과 기능에대해서 출력하고 싶으면 아래 코드를 작성하면된다.

gpio readall

 

 BCM은 브로드컴에서 사용하는 이름이다. 라즈베리파이 Chip 제조사의 이름이 브로드컴이다. Name 항목에 SDA.1, SCL.1 같은 이름이 있는데 이것이 BCM에서 쓰는 Name이다.

 

 

 

 

라즈베리파이에 접속하고 아래의 코드를 작성하자.(work는 저번에 만든 폴더이다)

mkdir python

cd python

sudo git clone github.com/adafruit/Adafruit_Python_DHT

 

 

cd Adafruit_Python_DHT

sudo python setup.py install

 

 

 

온도 센서를 꽂아보자.

-를 9번 그라운드 

+를 1번에 5.5V

Out을 7번 GPIO4에 꽂아주자.

 

 

 

Adafruit_Python_DHT  디렉터리는 설치하는데 사용했으니 삭제해주자.

sudo rm -rf Adafruit_Python_DHT

 

 

 

파일을 만들면서 vi 편집기에 온습도 센서를 작동하는 코드를 작성해보자.

vi dht_test001.py

Sensor.read_retry(Sensor.DHT11, 4) 

로 센서가 작동은 되는데 온습도를 감지하는 것을 출력해줘야한다.

import Adafruit_DHT as Sensor

 Humi, Temp  = Sensor.read_retry(Sensor.DHT11, 4)
print ("Humidity = {0:0.1f}% Temp = {1:0.1f} *C".format(Humi, Temp))

습도랑 온도가 출력된다

 

 

while문으로 계속 습도랑 온도를 출력해보자.

import Adafruit_DHT as Sensor
import time

Outpin = 4 
while True:
     Humi, Temp  = Sensor.read_retry(Sensor.DHT11, Outpin)
     print ("Humidity = {0:0.1f}% Temp = {1:0.1f}*C".format(Humi, Temp))
     time.sleep(1)

계속 온습도가 출력된다

While문을 빠져나오려면 Ctrl + C 를 눌러주면 빠져나올 수 있다.

 

 

 

이제 DB에 데이터들을 넣는 것을 해보자. 

DB와 연결하고 쿼리문을 실습해보고 실습해보자.

우선 DB와 파이썬을 연결해주는 프로그램을 설치해야한다.

pip install mysql-connector

 

 

mariaDB 디렉터리를 새로 생성해주고 vi 편집기로 테스트를 진행해보자.

vi 편집기화면

 

 

실행해보자.

python 001_Test_Connection.py

# -*- coding:utf-8 -*-
import mysql.connector;

Maria = mysql.connector.connect(host="127.0.0.1", user="root", passwd="1234", database="mydb")
print(maria)

 

 

 

 

DB에 접속하는 Config문을 작성해보자

# -*- coding:utf-8 -*-
import mysql.connector;

Maria_Config = {
 "user" : "root",
 "passwd" : "1234",
 "host" : "127.0.0.1",
 "database" : "mydb",
 "port" : "3306"
}

Maria = mysql.connector.connect(**Maria_Config)
print(Maria)

실행했을때 위의 이미지들처럼 <> 안에 mysql. 어쩌구가 출력되면 정상적으로 되는 것이다.

 

 

 

 

 

DB의 데이터를 조회하는 쿼리문을 파이썬에 작성해보자.

vi 003_Text_Connection.py
# -*- coding:utf-8 -*-
import mysql.connector;

Maria = mysql.connector.connect(host="127.0.0.1", user="root", passwd="1234", database="mydb")
Cursor = Maria.cursor();
Query = "SELECT * FROM tblRegister"
Cursor.execute(Query);
for row in Cursor:
    print(row);

조회 쿼리문 실행화면

 

 

 

 

DB에 데이터를 삽입하는 쿼리문을 작성해보자. 실행한다음에 조회하는 쿼리문 python 003_Test_Connection.py 을 실행해서 확인해보자.

vi 004_Test_Insert.py
# -*- coding:utf-8 -*-
import mysql.connector;

Maria = mysql.connector.connect(host="127.0.0.1", user="root", passwd="1234", database="mydb")
Cursor = Maria.cursor();
Query = "INSERT INTO tblRegister VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)";
Values = ('Facto', '8888', '헬로키', '1234', '989898', 'fine@dgegdf.com', '010-9999-2222', '11223', '한국 어디저기99', '99프로그래머77')
Cursor.execute(Query,Values);
Maria.commit();

004를 실행하고 003을 실행하니 Values로 추가한 데이터가 출력되었다

 

 

참고로 파이썬은 문자열을 만드는 방법이 4가지이다.

' ㅁ '

" ㅁ "

''' ㅁ ''

""" ㅁ """

 

 

 

 

 

 

조회 쿼리문을 일일이 쳐주는게 귀찮으니까 004_Test_insert2.py 를 만들어서 insert문과 select문을 같이 넣어주자.

vi 004_Test_insert2.py
# -*- coding:utf-8 -*-
import mysql.connector;

Maria = mysql.connector.connect(host="127.0.0.1", user="root", passwd="1234", database="mydb")
Cursor = Maria.cursor();
Query = "INSERT INTO tblRegister VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)";
Values = ('Factory','11155','1스마트1','1001','100010011','tion@dgdf.com','010-1001-1231','10001','1부산 한국1','1개발하기1');
Cursor.execute(Query,Values);
Maria.commit();

Query = "SELECT * FROM tblRegister"
Cursor.execute(Query);

for row in Cursor:
    print(row);

데이터 추가하면서 조회하는 쿼리문인데 이미 데이터 추가해버려서 003으로 조회했다

 

 

 

 

이번엔 많은 데이터를 DB에 넣어보자(many를 사용하면된다)

yy 는 복사 p는 붙여넣기이다. insert2 에서 수정해서 실행하면된다

vi 004_Test_insert2.py
# -*- coding:utf-8 -*-
 import mysql.connector;
 
 Maria = mysql.connector.connect(host="127.0.0.1", user="root", passwd="1234", database="mydb")
 Cursor = Maria.cursor();
 
 Query = "INSERT INTO tblRegister VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)";
 Values = [
     ('Facto3', '8888', '헬키', '1234', '989898', 'fine@dgegdf.com', '010-9999-2222', '11223', '한국 어디저기99', '99프로그래머77'),
     ('Facto6', '9999', '로티로티', '2234', '9999', 'application@dgegdf.com', '010-3333-2222', '33333', '저기11', '프로그래머11'),
     ('oracle0', '7777', '이순신', '7777', '787878', 'dsfa@dgegdf.com', '010-7777-2222', '74343', '한국 어디저기77', '프로그래머77'),
     ('rorod4', '2222', '이경미', '123456', '123456', 'aa@dd.com', '010-0000-0000', '1234', '한국 어디저기', '프로그래머' ),
     ('smartFact5', '5555', '스마트', '0000', '01001', 'cation@dgegdf.com', '010-5656-1231', '28888', '부산 한국', '개발하기')
 ]
 
 Cursor.executemany(Query,Values);
 Maria.commit();
 
 Query = "SELECT * FROM tblRegister"
 Cursor.execute(Query);
 
 for row in Cursor:
   print(row);

한꺼번에 데이터가 추가된 것을 볼 수 있다

 

 

 

 

 

 

 

쿼리문 실습을 해봤으니 이제 온습도 센서를 담을 DB를 생성해보자.

터미널을 새롭게 띄우고 마리아DB에 접속한다.

 

온습도센서의 데이터가 들어갈 테이블을 생성하자. 시간당 습도, 온도를 저장해야하니 3개의 타입을 지정해서 생성해주면 된다.

 

 

 

 

이제 vi편집기로 온습도를 출력하면서 DB에 저장해보자.

# -*- coding:utf-8 -*-
import mysql.connector;
import Adafruit_DHT as Sensor
from datetime import datetime
import time
  
Maria = mysql.connector.connect(host="localhost", user="root", passwd="너의암호", database="mydb");
Cursor = Maria.cursor();
  
while True :
     Humi, Temp = Sensor.read_retry(Sensor.DHT11, 4)
     d = datetime.today().strftime('%Y-%m-%d %H:%M:%S')
     Query = "INSERT INTO tblSensorDHT11 VALUES(%s,%s,%s)";
     Values = [
         (d,Humi,Temp)
      ];
     print(d,Humi,Temp)
     Cursor.executemany(Query,Values);
     Maria.commit();

datatime으로 지금의 시간을 가져올 수 있다.

 

 

vi 편집기로 작성
실행시키면 시간, 습도, 온도가 출력된다

 

출력된 데이터는 DB에 저장된 것을 확인할 수 있다

 

 

다음에는 이 온도랑 습도는 C# 그래프로 표현하는 것을 해보자.

 

 

반응형