树莓派3BMySQL-学习使用笔记202004(5)

news/2024/7/21 13:18:38 标签: mysql, vim, python, linux

树莓派3B&MySQL环境配置与使用详细教程

安装配置MySQL

1.更新apt-get

sudo apt-get update

(在shell里面输入命令,下同)
在这里插入图片描述

2.安装MySQL

sudo apt-get install mysql-server

mysqlmariadbconfd50servercnf_18">3. 打开 /etc/mysql/mariadb.conf.d/50-server.cnf并修改

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf 

进入一个文档界面,将光标移动至bind-address处,点击i键开始编辑,用#来注释掉bind-address,然后按esc,输入 :wq! 保存退出,可以用命令再次进入文档查看是否修改成功。(如果对操作不熟悉,修改了其他地方又不好改,按esc,再输入 :q! 就可以不保存退出,你需要用sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf重新进文档修改)
在这里插入图片描述

设置新用户

进入MySQL先

sudo mysql

添加用户noel,密码123456

CREATE USER 'noel'@'%' IDENTIFIED BY '123456'; 
GRANT ALL PRIVILEGES ON *.* TO 'noel'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 
FLUSH PRIVILEGES;

退出数据库

exit

在这里插入图片描述

修改密码的方法

下面更改之前创建的用户Noel的密码

sudo mysqladmin -u noel -p password

会提示输入旧密码:
新密码:
确认新密码:
(这里输密码的时候是看不见的,只要确保前后输入一致就行,错了也会有提示的)
在这里插入图片描述

重启MySQL

重启

sudo service mysql stop 
sudo service mysql start

用户登录,并输入密码

sudo mysql -u noel -p

在这里插入图片描述

测试数据库

查看当前已经建立的数据库

SHOW DATABASES;

(这里之前已经建立了senserdb和senserdb_lx两个数据库)
在这里插入图片描述

创建新的数据库和表单并查看是否创建成功

创建数据库

CREATE DATABASE noeldb;
SHOW databases;

在这里插入图片描述
如有需要删除某个数据库,用drop:

drop database xxxxxx;

在noeldb下创建一个表单(table),该表单包含三个域(fields):时间、温度、湿度。

USE noeldb;
create table noeldb_ht(Time datetime,Temperature float(3,1),Humidity float(3,1));

查看表单是否创建成功:

show tables;

创建成功后的可以看到:
在这里插入图片描述
查看表单属性:

DESCRIBE noeldb_ht;

在这里插入图片描述

手动插入数据,并查看

insert into noeldb_ht values('2020-04-23',22,65);
select *from noeldb_ht;

成功插入数据:
在这里插入图片描述

写入温湿度数据进数据库

1、环境配置

获取

git clone https://github.com/PyMySQL/PyMySQL

切换目录

cd PyMySQL

安装

sudo python3 setup.py install

2、温湿度检测以及数据写入

传感器:DHT11
引脚:GPIO4
在这里插入图片描述
代码:

python">#! /usr/bin/python
# -*- coding:utf-8 -*-

import RPi.GPIO as GPIO #( 导入模块 )
import sys
import time
import pymysql
pymysql.install_as_MySQLdb()

dht11_rpi_pin=4 #湿度温度连接的引脚号 GPIO4
def GPIO_INIT(): 
    GPIO.setwarnings(False)
    #( 引脚编号 )
    #初始化引脚
    GPIO.setmode(GPIO.BCM)
 
# 用于获取湿度温度
# dht11_rpi_pin : 湿度温度连接的引脚号
# 返回二元组 [ 湿度 , 温度 ]
def get_dht11(dht11_pin):
    buff=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    data = []
    j = 0
    GPIO.setup(dht11_rpi_pin, GPIO.OUT)
    GPIO.output(dht11_pin,0)
    time.sleep(0.02) # 拉低20ms

    GPIO.output(dht11_pin,1)
    time.sleep(0.000025)# 拉高20-40us

    GPIO.setup(dht11_pin,GPIO.IN) 

    while not GPIO.input(dht11_pin): # 检测返回信号 检测到启示信号的高电平结束
        continue


    while GPIO.input(dht11_pin): # 检测到启示信号的高电平则循环
        continue

    while j < 40:
      k = 0
      while GPIO.input(dht11_pin) == GPIO.LOW:
#         print ("pinlevel_1")
        continue
        
      while GPIO.input(dht11_pin) == GPIO.HIGH:
#         print ("pinlevel_2")
        k += 1
        if k > 100:
          break
      if k < 8:
        data.append(0)
      else:
        data.append(1)
     
      j += 1
     
    print ("sensor is working.")
#     print (data)
     
    humidity_bit = data[0:8]
    humidity_point_bit = data[8:16]
    temperature_bit = data[16:24]
    temperature_point_bit = data[24:32]
    check_bit = data[32:40]
     
    humidity = 0
    humidity_point = 0
    temperature = 0
    temperature_point = 0
    check = 0
     
    for i in range(8):
      humidity += humidity_bit[i] * 2 ** (7-i)
      humidity_point += humidity_point_bit[i] * 2 ** (7-i)
      temperature += temperature_bit[i] * 2 ** (7-i)
      temperature_point += temperature_point_bit[i] * 2 ** (7-i)
      check += check_bit[i] * 2 ** (7-i)
     
    tmp = humidity + humidity_point + temperature + temperature_point
    if check == tmp:
        
        #print ("temperature : ", temperature, ", humidity : " , humidity)
        #这里开始写入数据库了
        conn= pymysql.connect(
                host='127.0.0.1',
                port = 3306,
                user='andy',
                passwd='123456',
                db ='noeldb',
                )
        cur = conn.cursor()
        cur.execute("insert into noeldb_ht(Time,Temperature,Humidity) values(now(),'%d','%d')"%(temperature,humidity))
        cur.close()
        conn.commit()
        conn.close()
        return ["当前湿度:",humidity,"温度:",temperature]
    else:
        print ("wrong")
        print ("temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp)


try:
    GPIO_INIT()
    time.sleep(2)
    while True:
        print(get_dht11(dht11_rpi_pin))
        time.sleep(2)


except KeyboardInterrupt:
        GPIO.cleanup()#清除引脚设置恢复默认 程序结束时, 最好清除引脚设置并恢复默认.

停止温湿度采集程序后在shell里面查看自动写入的温湿度

select *from noeldb_ht;

在这里插入图片描述

没了!

--------------------------------------------------------------------------------------------诺有缸的高飞鸟202004


http://www.niftyadmin.cn/n/1082613.html

相关文章

lt;lt;c语言点滴gt;gt;,C语言学习点滴(二)

在程序中经常需要比较两个数据的大小&#xff0c;已决定下一步的的工作。比如Person因为年龄不够&#xff0c;没有权限使用&#xff0c;这里我们就可以通过分支语句来解决#include int main(){int age;printf("input you age:");scanf("%d",&age);if(a…

css js写在一起 vue_vue技术点及面试题更新之—55

1.css只在当前组件起作用在style标签中写入scoped即可 例如&#xff1a;2.v-if 和 v-show 区别v-if按照条件是否渲染,操作是DOMv-show是display的block或none&#xff1b;操作是css样式。3.route和router的区别route是路由信息对象&#xff0c;包括path&#xff0c;fullpath&am…

找出占用大量资源的SQL

该语句找出磁盘读大于10000的SQL col username format a10col sid format 9999select b.username,a.disk_reads,a.executions,a.disk_reads/decode(a.executions,0,1,a.executions) rds_ratio,a.sql_text sql from v$sqlarea a,dba_users b where a.parsing_user_idb.user_id a…

汇编语言 c51语言,51单片机汇编语言

a) 单个按键与多个LED灯(位操作—输入与字节操作—输出)—判断与子程序此处只是将输出指令由位指令换成了字节指令&#xff0c;而输入判断仍然是位判断指令。ORG 0000HMAIN:; CLR CMOV C&#xff0c;P2.0 ;获取P2.0位状态 送位累加器;位与字节转换需要判断指令JNC ZIJIE;JC位…

树莓派3B+Python点亮led(2)

1、准备&#xff08;树莓派得联网&#xff09; 打开shell 输入以下命令资源获取&#xff1a; wget https://sourceforge.net/projects/raspberry-gpio-python/files/RPi.GPIO-0.6.2.tar.gz解压&#xff1a; tar xvzf RPi.GPIO-0.6.2.tar.gz切换目录&#xff1a; cd RPi.GP…

树莓派3B超声测距(3)

准备&#xff1a;树莓派3B&#xff0c;thonny&#xff0c;超声传感器&#xff0c;线 1、硬件连接 用的BCM编号方式 超声传感器的trig脚接20&#xff0c;echo脚接21。VCC&#xff0c;GND是供电的。 2、上代码 import RPi.GPIO as GPIO import timeTrig_Pin 20 Echo_Pin 21…

Microsoft CRM 安装问题汇总

记录安装过程遇到的问题&#xff1a;1. Windows 2003必须是SP2版本&#xff0c;和R2版本是有区别的。2.framework 3.0和3.5其实都是可以的。如果出现如下错误&#xff1a;The type initializer for Microsoft.Crm.LocatorService threw an exceptionThe type initializer for M…

stc12c5a单片机c语言adc,STC12C5A60S2单片机的ADC采样程序分享

/* 功能&#xff1a;使用12C5A60S2内部AD读取外部三路电压&#xff0c;显示在1602上 *//*   最多可同时输入8路电压&#xff0c;设置P1ASF        */#include #includesbit RS P2^6; //定义1602使用的端口sbit RW P2^5;sbit EN P2^7;#define uchar unsigned…