Bisher war es ein langer Weg und ich weiß nicht mehr, was es ist, aber ich möchte es als Referenz für mich selbst belassen. Verwenden Sie raspberryPi und julus (Spracherkennung). ① Mike Verwenden Sie julius (Spracherkennung) mit raspberryPi. ② Installation Verwenden Sie Himbeer-Pi und Julius (Spracherkennung). ③ Wörterbucherstellung Verwenden Sie raspberryPi und Julius (Spracherkennung). ④ L Chika Verwenden Sie raspberryPi und Julius (Spracherkennung). ⑤i2c Character Display Edition
AQM0802 (unter Verwendung der fertigen Version des kleinen Displays für die i2c-Verbindung) Überbrückungskabel (Stecker-Buchse) 4-5 raspberryPi 3B+ USB-Mikrofon
Richten Sie die i2c-Nutzung für Raspeye ein. Das Pin-Layout ist von oben UDD, RESET, SCL, SDA, GND. Verdrahten Sie also anhand des folgenden Bilds. Zitiert aus Verwenden des LCD-Moduls mit Raspberry Pi
Überprüfen Sie die Verbindung.
$ sudo i2cdetect -y 1
Ich konnte bestätigen, dass es mit 3e verbunden war.
I2C_LCD_TEST.sh
#!/bin/sh
# AQM0802A Raspberry Pi I2C control
# http://www.neko.ne.jp/~freewing/
# http://akizukidenshi.com/catalog/g/gP-06669/
# sudo nano I2C_LCD_TEST.sh
# sudo chmod 755 I2C_LCD_TEST.sh
# ./I2C_LCD_TEST.sh
#AQM0802A LCD-Initialisierung
# 0x38 0x39 Function Set
i2cset -y 1 0x3e 0x00 0x38 0x39 i
# 0x10 Bias selection/Internal OSC frequency adjust
# 0x70 Contrast set(low byte)
# 0x56 Power/ICON control/Contrast set(high byte)
# 0x6C Follower control
i2cset -y 1 0x3e 0x00 0x10 0x70 0x56 0x6C i
sleep 0.3
# 0x38 Function Set
i2cset -y 1 0x3e 0x00 0x38 i
# 0x02 Return Home
i2cset -y 1 0x3e 0x00 0x02 i
# 0x0C Display ON/OFF control
# i2cset -y 1 0x3e 0x00 0x0C i
# 0x0F Display ON/OFF control
i2cset -y 1 0x3e 0x00 0x0F i
# 0x01 Clear Display
i2cset -y 1 0x3e 0x00 0x01 i
sleep 0.5
# 0x40 CGRAM addres = 0x00 CHARACTER CODE = 0x00
i2cset -y 1 0x3e 0x00 0x40 b
i2cset -y 1 0x3e 0x40 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 i
# 0x40 CGRAM addres = 0x08 CHARACTER CODE = 0x01
i2cset -y 1 0x3e 0x00 0x48 b
i2cset -y 1 0x3e 0x40 0x1F 0x1E 0x1D 0x1C 0x1B 0x1A 0x19 0x18 i
#DDRAM-Adresse der ersten Zeile= 0x00
i2cset -y 1 0x3e 0x00 0x80 b
# "=FREE =="
i2cset -y 1 0x3e 0x40 0x3D 0x46 0x52 0x45 0x45 0x20 0x3D 0x3D i
sleep 0.5
#DDRAM-Adresse in der 2. Zeile= 0x40
i2cset -y 1 0x3e 0x00 0xc0 b
# "== WING="
i2cset -y 1 0x3e 0x40 0x3D 0x3D 0x20 0x57 0x49 0x4E 0x47 0x3D i
$ chmod 755 I2C_LCD_TEST.sh
$ sudo ./I2C_LCD_TEST.sh
So verbinden Sie das Flüssigkristallmodul AQM0802A vom I2C-Kommunikationstyp mit dem GPIO von Raspberry Pi 3 wird derzeit getestet. Es kann bestätigt werden, dass die Anzeige funktioniert.
# Bildschirminitialisierung
$ i2cset -y 1 0x3e 0x00 0x38 0x39 0x14 0x70 0x56 0x6c i
$ i2cset -y 1 0x3e 0x00 0x38 0x0c 0x01 i
$ i2cset -y 1 0x3e 0x00 0x80
#Löschen Sie alles und bewegen Sie den Cursor an den Anfang der ersten Zeile
sudo i2cset -y 1 0x3e 0 0x38 0x0d 0x01 i
#Zeigen Sie die angegebenen Daten kontinuierlich an
sudo i2cset -y 1 0x3e 0x40 [data1] [data2] [data3] i
#Brechen Sie die Linie und bewegen Sie den Cursor an den Anfang
sudo i2cset -y 1 0x3e 0x00 0xc0 i
0x3e ist das Schreibziel (I2CBUS). i ist "Blockdaten", eine Spezifikation zum kontinuierlichen Schreiben von Daten. b ist ein normaler Schreibvorgang in Bytes. Zeichenanzeige von AQM0802 Zitat Zeichen auf dem LCD-Display mit Raspberry Pi Null anzeigen Detaillierte Erläuterung des Rasberry PI I2C-Befehls
Die Wortanzeige wird unter Bezugnahme auf die Zeichenmuster von AQM0802 erstellt.
#Vielen Dank
sudo i2cset -y 1 0x3e 0x40 0xb1 0xd8 0xb6 0xde 0xc4 0xb3 i
Ari Kato U.
#Hallo
sudo i2cset -y 1 0x3e 0x40 0xba 0xdd 0xc6 0xc1 0xca i
Hallo
test_i2c001.py
#!usr/bin/env python
# -*- coding: utf-8 -*-
import smbus
import time
import subprocess
import socket
import string
i2c = smbus.SMBus(1) # 1 is bus number
addr02=0x3e #lcd
_command=0x00
_data=0x40
_clear=0x01
_home=0x02
display_On=0x0f
LCD_2ndline=0x40+0x80
#LCD AQM0802/1602
def command( code ):
i2c.write_byte_data(addr02, _command, code)
time.sleep(0.1)
def writeLCD( message ):
mojilist=[]
for moji in message:
mojilist.append(ord(moji))
i2c.write_i2c_block_data(addr02, _data, mojilist)
time.sleep(0.1)
def init ():
command(0x38)
command(0x39)
command(0x14)
command(0x73)
command(0x56)
command(0x6c)
command(0x38)
command(_clear)
command(display_On)
def ari ():
arigatoulist=[0xb1, 0xd8, 0xb6, 0xde, 0xc4, 0xb3]
i2c.write_i2c_block_data(addr02, _data, arigatoulist)
time.sleep(0.1)
print(arigatoulist)
def konnichiha():
konnichihalist=[0xba, 0xdd, 0xc6, 0xc1, 0xca]
i2c.write_i2c_block_data(addr02, _data, konnichihalist)
time.sleep(0.1)
HOST = '127.0.0.1' #IP-Adresse des Julius-Servers
PORT = 10500 #Listening-Port des Julius-Servers
DATESIZE = 1024 #Anzahl der empfangenen Datenbytes
class Julius:
def __init__(self):
self.sock = None
def run(self):
#Stellen Sie über Socket-Kommunikation eine Verbindung zum Julius-Server her
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as self.sock:
self.sock.connect((HOST, PORT))
strTemp = "" #Variablen, die gesprochene Wörter speichern
fin_flag = False #Ende der Geschichte Flagge
while True:
#Empfangen Sie Daten vom Julius-Server
data = self.sock.recv(DATESIZE).decode('utf-8')
for line in data.split('\n'):
#Aus den empfangenen Daten<WORD>Extrahieren Sie die nachgeschriebenen Wörter und speichern Sie sie in einer Variablen.
# <WORD>Danach werden die gesprochenen Wörter aufgelistet.
index = line.find('WORD="')
if index != -1:
#Speichern Sie die in strTemp gesprochenen Wörter
strTemp = strTemp + line[index+6:line.find('"',index+6)]
#Für empfangene Daten</RECOGOUT>'Wenn ja, endet die Geschichte. ⇒ Setzen Sie das Flag auf True
if '</RECOGOUT>' in line:
fin_flag = True
#Führen Sie für jedes gesprochene Wort eine Druckanweisung aus
if fin_flag == True:
if 'Vielen Dank' in strTemp:
print("Bitte schön")
init ()
command(_clear)
ari()
elif 'Hallo' in strTemp:
print("Guten Abend")
init ()
command(_clear)
konichiwa()
else:
print("Gesprochene Worte:" + strTemp)
fin_flag = False
strTemp = ""
if __name__ == "__main__":
julius = Julius()
julius.run()
Erstellen Sie eine japanische Wörterbuchdatei gemäß den Zeichenmustern von AQM0802.
nihongo.py
nihongo = {"Ah":0xb1,
"ich":0xb2,
"U.":0xb3,
"e":0xb4,
"Oh":0xb5,
"Oder":0xb6,
"Ki":0xb7,
"Ku":0xb8,
"Ke":0xb9,
"Dies":0xba,
"Sa":0xbb,
"Shi":0xbc,
"Su":0xbd,
"einstellen":0xbe,
"Damit":0xbf,
"Ta":0xc0,
"Chi":0xc1,
"Einer":0xc2,
"Hand":0xc3,
"Wann":0xc4,
"Nana":0xc5,
"Zu":0xc6,
"Nu":0xc7,
"Hallo":0xc8,
"von":0xc9,
"Ist":0xca,
"Hallo":0xcb,
"Fu":0xcc,
"Was":0xcd,
"Ho":0xce,
"Gut":0xcf,
"Nur":0xd0,
"Mu":0xd1,
"Mich":0xd2,
"Ebenfalls":0xd3,
"Oder":0xd4,
"Yu":0xd5,
"Yo":0xd6,
"Et al.":0xd7,
"Ri":0xd8,
"Ru":0xd9,
"Re":0xda,
"Ro":0xdb,
"Beeindruckend":0xdc,
"Hmm":0xdd,
"Zu":0xa6,
"Ah":0xa7,
"ich":0xa8,
"U.":0xa9,
"Eh":0xaa,
"Mm":0xab,
"Ja":0xac,
"Shu":0xad,
"Yo":0xad,
"Tsu":0xaf,
"Aber":"182 222",
"Gi":"183 222",
"Gu":"184 222",
"Ge":"185 222",
"Gehen":"186 222",
"Za":"187 222",
"Ji":"188 222",
"Zu":"189 222",
"Ze":"190 222",
"Es tut mir Leid":"191 222",
"Ist":"192 222",
"Ji":"193 222",
"Zu":"194 222",
"damit":"195 222",
"Machen":"196 222",
"Wenn":"202 222",
"Und":"203 222",
"Bu":"204 222",
"Sein":"205 222",
"Bo":"206 222",
"Pa":"202 223",
"Pi":"203 223",
"Pu":"204 223",
"Sport":"205 223",
"Po":"206 223"
}
test_i2c003.py
#!usr/bin/env python
# -*- coding: utf-8 -*-
import smbus
import time
import subprocess
import socket
import string
from nihongo import nihongo
i2c = smbus.SMBus(1) # 1 is bus number
addr02=0x3e #lcd
_command=0x00
_data=0x40
_clear=0x01
_home=0x02
display_On=0x0f
LCD_2ndline=0x40+0x80
#LCD AQM0802/1602
def command( code ):
i2c.write_byte_data(addr02, _command, code)
time.sleep(0.1)
def word( message ):
kotoba = []
for moji in message:
kotoba.append(moji)
wordlist = []
for idx in range(0, len(kotoba)):
a = kotoba[idx]
val = nihongo[a]
if type(val) is int:
wordlist.append(val)
else:
nums = val.split()
for i in range(2):
wordlist.append(int(nums[i]))
print(wordlist)
i2c.write_i2c_block_data(addr02, _data, wordlist)
time.sleep(0.1)
def init ():
command(0x38)
command(0x39)
command(0x14)
command(0x73)
command(0x56)
command(0x6c)
command(0x38)
command(_clear)
command(display_On)
HOST = '127.0.0.1' #IP-Adresse des Julius-Servers
PORT = 10500 #Listening-Port des Julius-Servers
DATESIZE = 1024 #Anzahl der empfangenen Datenbytes
class Julius:
def __init__(self):
self.sock = None
def run(self):
#Stellen Sie über Socket-Kommunikation eine Verbindung zum Julius-Server her
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as self.sock:
self.sock.connect((HOST, PORT))
strTemp = "" #Variablen, die gesprochene Wörter speichern
fin_flag = False #Ende der Geschichte Flagge
while True:
#Empfangen Sie Daten vom Julius-Server
data = self.sock.recv(DATESIZE).decode('utf-8')
for line in data.split('\n'):
#Aus den empfangenen Daten<WORD>Extrahieren Sie die nachgeschriebenen Wörter und speichern Sie sie in einer Variablen.
# <WORD>Danach werden die gesprochenen Wörter aufgelistet.
index = line.find('WORD="')
if index != -1:
#Speichern Sie die in strTemp gesprochenen Wörter
strTemp = strTemp + line[index+6:line.find('"',index+6)]
#Für empfangene Daten</RECOGOUT>'Wenn ja, endet die Geschichte. ⇒ Setzen Sie das Flag auf True
if '</RECOGOUT>' in line:
fin_flag = True
#Führen Sie für jedes gesprochene Wort eine Druckanweisung aus
if fin_flag == True:
print(strTemp[4:-3])
init ()
command(_clear)
word(strTemp[4:-3])
fin_flag = False
strTemp = ""
if __name__ == "__main__":
julius = Julius()
julius.run()
Recommended Posts