mirror of
https://github.com/google/mozc-devices.git
synced 2025-11-08 16:53:28 +03:00
Initial checkin of piropiro version.
This commit is contained in:
128
mozc-piropiro/README.md
Normal file
128
mozc-piropiro/README.md
Normal file
@@ -0,0 +1,128 @@
|
||||
Copyright 2015 Google Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
|
||||
Summary
|
||||
=====================================
|
||||
|
||||
Mechanical design, circuit diagram and firmware of Google Japanese Input
|
||||
piropiro version.
|
||||
|
||||
|
||||
Files
|
||||
=====================================
|
||||
|
||||
* stl/* -- 3D shape data of mechanical parts
|
||||
* README.txt -- this file
|
||||
* circuit.png -- Circuit diagram
|
||||
* assembly.png -- Mechanical assembly instruction
|
||||
* arduino/piropiro/piropiro.ino -- Firmware source code (Arduino sketch)
|
||||
|
||||
|
||||
Building your device
|
||||
=====================================
|
||||
|
||||
## Mechanical parts
|
||||
|
||||
Output all mechanical parts under stl/ directory with a 3D printer.
|
||||
Additionally, you need these parts.
|
||||
|
||||
* M2x4 scerws x7
|
||||
* M2 washer (inside diameter=2.2mm, outside diameter=5.8mm) x1
|
||||
* A party horn x1
|
||||
|
||||
## Electronic parts
|
||||
|
||||
* Arduino Nano
|
||||
Some other models of Arduino (e.g. Arduino Uno) can be used
|
||||
if required function is available.
|
||||
* RN-42-EK or a compatible evaluation kit
|
||||
RN-42 can be used instead if wired appropriately.
|
||||
* GP2Y0E02A distance sensor
|
||||
* 1/8W Resistors
|
||||
* 1k
|
||||
* 470
|
||||
* Breadboard and jump wires
|
||||
|
||||
## Assembly
|
||||
|
||||
See the circuit diagram and mechanical assembly instruction images.
|
||||
|
||||
## RN42 module configuration
|
||||
|
||||
This step is required for the first time, or when changing the device's name.
|
||||
Note that you should not connect Arduino Nano when you configure RN-42-EK via
|
||||
USB, because signal from Arduino Nano overrides the TxD signal on RN-42-EK.
|
||||
See Microchip's documents for detail.
|
||||
|
||||
1. Connect RN-42-EK to your PC by USB.
|
||||
2. Run a terminal emulator and open the serial port for RN-42-EK.
|
||||
3. Type '$$$'. Make sure 'CMD' is returned from RN-42-EK and the green LED on
|
||||
RN-42-EK blinks fast.
|
||||
4. Configure the module by these commands:
|
||||
|
||||
* * * * * *
|
||||
SU,115k
|
||||
SM,6
|
||||
SA,2
|
||||
S~,6
|
||||
SH,0000
|
||||
SN,MY_PIROPIRO_KEYBOARD
|
||||
R,1
|
||||
* * * * * *
|
||||
MY\_PIROPIRO\_KEYBOARD is a device name that will appear when you scan Bluetooth
|
||||
devices, and can be replaced by your preferred name.
|
||||
|
||||
The commands will configure the module as follows:
|
||||
|
||||
* 115200bps
|
||||
* Pairing mode
|
||||
* SSP "just works" mode
|
||||
* SPP profile
|
||||
* HID flag register = 0 (keyboard)
|
||||
|
||||
|
||||
## Electronic Circuit Assembly
|
||||
|
||||
See the circuit diagram for detail.
|
||||
When operating the device, supply power by USB cables to both RN-42-EK and
|
||||
Arduino Nano. You can alternatively supply 3.3V power to RN-42-EK from Arduino's
|
||||
3.3V pin, but this requires a modification on RN-42-EK to disconnect the
|
||||
regulator's output pin on it from the circuit.
|
||||
|
||||
|
||||
Using piropiro input
|
||||
=====================================
|
||||
|
||||
## Sensor adjustment
|
||||
|
||||
1. Attach the device to your party horn. The sensor should be positioned about
|
||||
40mm apart from the rolled paper tube.
|
||||
2. Turn on Arduino Nano and adjust the optical axis of the sensor. The LED on
|
||||
Arduino board is lit while the sensor is collectly sensing the tip of the
|
||||
paper tube between 50mm -- 350mm.
|
||||
|
||||
|
||||
## Bluetooth pairing
|
||||
|
||||
Using your device (e.g. Android phone), scan Bluetooth devices and you will
|
||||
find MY\_PIROPIRO\_KEYBOARD (or the name you set up) in the available device
|
||||
list.
|
||||
|
||||
## How to input
|
||||
|
||||
Switch the Japanese IME on the paired device to romaji input mode.
|
||||
Characters will be input as you blow the horn.
|
||||
The length of the horn chooses the vowel.
|
||||
In order to switch to the next column (consonant), quickly shrink the horn and blow it again.
|
||||
105
mozc-piropiro/arduino/piropiro/piropiro.ino
Normal file
105
mozc-piropiro/arduino/piropiro/piropiro.ino
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* Copyright 2015 Google Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Firmware of piropiro (party horn) Bluetooth keyboard.
|
||||
*/
|
||||
|
||||
#define V_REF 5.0
|
||||
#define PIN_LED 13
|
||||
#define N_AD_SAMPLES 10
|
||||
|
||||
#define INTERVAL_MSEC 20
|
||||
#define COMMIT_TIME (600 / INTERVAL_MSEC)
|
||||
|
||||
#define ROWS 5
|
||||
#define COLS 9
|
||||
|
||||
const char* characters[ROWS * COLS] = {
|
||||
"a", "i", "u", "e", "o",
|
||||
"ka", "ki", "ku", "ke", "ko",
|
||||
"sa", "si", "su", "se", "so",
|
||||
"ta", "ti", "tu", "te", "to",
|
||||
"na", "ni", "nu", "ne", "no",
|
||||
"ha", "hi", "hu", "he", "ho",
|
||||
"ma", "mi", "mu", "me", "mo",
|
||||
"ya", "ya", "yu", "yu", "yo",
|
||||
"wa", "wo", "nn", ",", "."
|
||||
};
|
||||
|
||||
int column = 0;
|
||||
int vowel = 0;
|
||||
int release_duration = 0;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
pinMode(PIN_LED, OUTPUT);
|
||||
column = 0;
|
||||
vowel = 0;
|
||||
}
|
||||
|
||||
float getVoltage(int ch) {
|
||||
return analogRead(ch) * V_REF / 1023;
|
||||
}
|
||||
|
||||
float getAverageVoltage(int ch) {
|
||||
float sum = 0.0;
|
||||
for (int i = 0; i < N_AD_SAMPLES; i++) {
|
||||
sum += getVoltage(ch);
|
||||
}
|
||||
return sum / N_AD_SAMPLES;
|
||||
}
|
||||
|
||||
float voltageToLength(float voltage) {
|
||||
return 648 - voltage * 268;
|
||||
}
|
||||
|
||||
void loop() {
|
||||
float length = voltageToLength(getAverageVoltage(0));
|
||||
if (length > 350) {
|
||||
digitalWrite(PIN_LED, LOW);
|
||||
} else {
|
||||
digitalWrite(PIN_LED, HIGH);
|
||||
if (length < 50) {
|
||||
if (vowel > 0) {
|
||||
vowel = 0;
|
||||
column ++;
|
||||
if (column >= COLS) {
|
||||
column = 0;
|
||||
}
|
||||
release_duration = 0;
|
||||
} else if (release_duration > COMMIT_TIME) {
|
||||
vowel = 0;
|
||||
column = 0;
|
||||
} else if (column > 0) {
|
||||
release_duration ++;
|
||||
}
|
||||
} else {
|
||||
int target_vowel = (length - 80) / 40 + 1;
|
||||
if (target_vowel > 5) target_vowel = 5;
|
||||
if (vowel < target_vowel) {
|
||||
if (column > 0 || vowel > 0) {
|
||||
Serial.print("\b");
|
||||
}
|
||||
vowel ++;
|
||||
int current_character = vowel - 1 + column * 5;
|
||||
Serial.print(characters[current_character]);
|
||||
}
|
||||
}
|
||||
}
|
||||
delay(INTERVAL_MSEC);
|
||||
}
|
||||
|
||||
BIN
mozc-piropiro/assembly.png
Normal file
BIN
mozc-piropiro/assembly.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
BIN
mozc-piropiro/circuit.png
Normal file
BIN
mozc-piropiro/circuit.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
mozc-piropiro/stl/arm.stl
Normal file
BIN
mozc-piropiro/stl/arm.stl
Normal file
Binary file not shown.
BIN
mozc-piropiro/stl/base.stl
Normal file
BIN
mozc-piropiro/stl/base.stl
Normal file
Binary file not shown.
BIN
mozc-piropiro/stl/holder1.stl
Normal file
BIN
mozc-piropiro/stl/holder1.stl
Normal file
Binary file not shown.
BIN
mozc-piropiro/stl/holder2.stl
Normal file
BIN
mozc-piropiro/stl/holder2.stl
Normal file
Binary file not shown.
BIN
mozc-piropiro/stl/sensor_bracket.stl
Normal file
BIN
mozc-piropiro/stl/sensor_bracket.stl
Normal file
Binary file not shown.
Reference in New Issue
Block a user