fc-enail
This project is inspired by the FC Community and a desire to have a better E-Nail product, with ease of use, advanced features, and wireless connectivity.
Highlights
- Easy temperature adjustments with rotary dial
- Easy on/off of heater both on device and remotely
- Quick temps from mobile screen to go to a temperature with 1-click
- Save/Load profiles (PID settings and coil temperature offset) for different devices (can use auto-tune to generate)
- Run scripts for fancy up-temp procedures and the like
- Full mobile access including:
- Remotely start, adjust temperatures, and monitor
- Run scripts
- Manage/create/edit scripts with the script editor (drag/drop GUI)
- Manage profiles and launch auto-tune to generate
- Ability to connect device to WiFi network through device UI
- Automatic discovery of device on local networks, but ability to configure if not found or on different subnets
Getting Started
Prerequisites
-
Omron E5CC-QX2ASM-802
-
Raspberry Pi Zero running Raspbian
-
Button w/ 3V LED
-
Rotary Encoder (Quadrature Encoder), with button
-
Class D Mono Amplifier and 1-3W speaker (eg. Adafruit PAM8303A)
-
128x64 I2C OLED Display
-
RS-485 to UART converter w/ auto direction control (ie. something w/ a MAX13487E chip)
-
5V Power Supply, 500mA
-
Raspbeery Pi Pin Configuration:
Button
- button: PIN 29 (GPIO 5)
- led: PIN 31 (GPIO 6)
- grounds: 30, 39
Speaker/Amp
- PIN 32 (GPIO 12)
- 5V or 3.3V (PIN 2)
- ground: 34
- 5V joined w/ encoder 5V
OLED:
- 3.3V (PIN 1)
- SDA (PIN 3, GPIO 2)
- SCL (PIN 5, GPIO 3)
- ground: 9
RS-485
- 3.3V (PIN 17)
- ground: PIN 14
- TXD (PIN 10, UART0 RX)
- RXD (PIN 8, UART0 TX)
Rotary Encoder
- 5V (PIN 2)
- Channel A: PIN 18 (GPIO 24)
- Channel B: PIN 16 (GPIO 23)
- ground: PIN 20
- Button: PIN 15 (GPIO 22), GROUND PIN: 25
Installing
- install Raspbian
- install NodeJS 14.x
- npm install -g fcenail --unsafe
-
Update d:\config.txt
start_x=0
enable_uart=1
dtoverlay=disable-bt
gpio=15,16,18,22=pu
dtoverlay=audremap
audio_pwm_mode=2
hdmi_ignore_edid_audio=1
-
Create d:\wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CA
network={
ssid=""
psk=""
}
-
Boot and run raspi-config
a. Hostname: fcenail
b. Set localization options: America/Toronto, en-US
c. Enable SPI, I2C
d. Disable serial console, enable serial
-
Install NodeJS
-
Install NetworkManager
sudo apt-get install network-manager
Create connections, wifi-wlan0 and Hotspot:
-
/etc/NetworkManager/system-connections/wifi-wlan0.nmconnection
[connection]
id=wifi-wlan0
uuid=ccaac89e-a2db-4412-ba51-b551d75712f0
type=wifi
autoconnect-priority=100
autoconnect-retries=3
interface-name=wlan0
permissions=
timestamp=1608730297
[wifi]
mac-address-blacklist=
mode=infrastructure
seen-bssids=74:83:C2:3A:E3:AA;74:83:C2:2D:62:6E;
ssid=Linamar
[wifi-security]
key-mgmt=wpa-psk
psk=L1n@m@r+23
[ipv4]
dns-search=
method=auto
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=ignore
-
/etc/NetworkManager/system-connections/Hotspot.nmconnection
[connection]
id=Hotspot
uuid=9be42a41-2c0a-42f4-a646-c9bd3b380874
type=wifi
autoconnect-priority=1
interface-name=wlan0
permissions=
timestamp=1608320053
[wifi]
mac-address-blacklist=
mode=ap
seen-bssids=B8:27:EB:24:83:71;
ssid=fcenail
[wifi-security]
key-mgmt=wpa-psk
psk=1234567890
[ipv4]
address1=10.20.30.1/24
dns-search=
method=shared
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=ignore
sudo nmcli c add type wifi con-name wifi-wlan0 ifname wlan0 ssid <ssid> wifi-sec.key-mgmt wpa-psk wifi-sec.psk <password>
Edit /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dhcp=internal
[ifupdown]
managed=true
````
Reboot and add hotspot
nmcli c add type wifi ifname wlan0 con-name Hotspot autoconnect no ssid hotspot-ssid
set priorities to 100 and 1 for wifi-wlan0 and Hotspot respectively.
eg. sudo nmcli c mod wifi-wlan0 device.autoconnect-priority 100
-
Install Git
sudo apt-get install git
-
Install tmate (version 2.4 at time of writing this)
Install tmate using the download from the releases page. Expand the download and copy the "tmate" file to the /usr/local/bin folder.
https://github.com/tmate-io/tmate/releases
-
Install fcenail
sudo npm install -g fcenail --unsafe
Built With
- Typescript
- ReactJS/Redux
- NodeJS
- ExpressJS
- Socket.IO
- Raspberry Pi
- Omron E5CC-QX2ASM-802
Authors
J-Cat
License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License
Acknowledgments
- Thanks to Rocco Musolino, Patrik Melander, Maciej Sopyło for the ALSA aplay module being used here-in.
- Thanks to Nicolas Vienot from tmate.io