설계도랑 실물이랑 매칭(맞춰보는거)하는 것을 Mapping이라고한다.
라즈베리파이의 pin을 살펴보자.
pinout
아래 이미지에서 라즈베리 파이의 핀들의 정확한 명칭을 알 수 있다.
각 핀 번호에대한 명칭과 기능에대해서 출력하고 싶으면 아래 코드를 작성하면된다.
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 편집기로 테스트를 진행해보자.
실행해보자.
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();
참고로 파이썬은 문자열을 만드는 방법이 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);
이번엔 많은 데이터를 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으로 지금의 시간을 가져올 수 있다.
다음에는 이 온도랑 습도는 C# 그래프로 표현하는 것을 해보자.
'개발자과정준비 > 라즈베리파이(Raspberry Pi)' 카테고리의 다른 글
라즈베리파이로 부저센서 출력, 피아노 구현 (0) | 2021.05.25 |
---|---|
[RaspberryPi] 블루투스와 비콘 (0) | 2020.09.23 |
[Raspberry Pi] 9. Process, Cron, Daemon (0) | 2020.07.30 |
[Raspberry Pi] 8. Flask 제어와 웹으로 라즈베리파이 제어 (1) | 2020.07.29 |
[Raspberry Pi] 7. LED 제어, PWM 제어, Flask (0) | 2020.07.27 |