mirror of
https://github.com/skot/ESP-Miner.git
synced 2025-03-17 21:32:52 +01:00
add emc2101 driver (blocking i2c for now)
This commit is contained in:
parent
e1aed90572
commit
1963616140
43
Cargo.lock
generated
43
Cargo.lock
generated
@ -457,6 +457,14 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "emc2101-driver"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/Georges760/emc2101-rs?rev=94cea2a7f2ec8732c06839631ec12def9e8d0847#94cea2a7f2ec8732c06839631ec12def9e8d0847"
|
||||
dependencies = [
|
||||
"embedded-hal 0.2.7",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "enum-as-inner"
|
||||
version = "0.4.0"
|
||||
@ -547,6 +555,24 @@ dependencies = [
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "esp-miner"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"embassy-executor",
|
||||
"embassy-net",
|
||||
"embassy-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"embedded-io 0.4.0",
|
||||
"embedded-svc",
|
||||
"emc2101-driver",
|
||||
"esp-backtrace",
|
||||
"esp-println",
|
||||
"esp-wifi",
|
||||
"esp32s3-hal",
|
||||
"fugit",
|
||||
"static_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "esp-println"
|
||||
version = "0.5.0"
|
||||
@ -627,23 +653,6 @@ dependencies = [
|
||||
"esp-hal-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "esp_miner"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"embassy-executor",
|
||||
"embassy-net",
|
||||
"embassy-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"embedded-io 0.4.0",
|
||||
"embedded-svc",
|
||||
"esp-backtrace",
|
||||
"esp-println",
|
||||
"esp-wifi",
|
||||
"esp32s3-hal",
|
||||
"fugit",
|
||||
"static_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
|
@ -1,5 +1,5 @@
|
||||
[package]
|
||||
name = "esp_miner"
|
||||
name = "esp-miner"
|
||||
version = "0.1.0"
|
||||
authors = ["Georges PALAUQUI <g.palauqui@gptechinno.com>"]
|
||||
edition = "2021"
|
||||
@ -31,6 +31,8 @@ embassy-time = { version = "0.1.1", package = "embassy-time", features = [
|
||||
] }
|
||||
embedded-io = "0.4.0"
|
||||
embedded-svc = { version = "0.24.0", default-features = false, features = [] }
|
||||
# emc2101-driver = { version = "0.1.0", path = "../emc2101-driver" }
|
||||
emc2101-driver = { version = "0.1.0", git = "https://github.com/Georges760/emc2101-rs", rev = "94cea2a7f2ec8732c06839631ec12def9e8d0847" }
|
||||
esp-backtrace = { version = "0.7.0", features = [
|
||||
"esp32s3",
|
||||
"panic-handler",
|
||||
@ -54,7 +56,10 @@ fugit = "0.3.6"
|
||||
static_cell = "1.0.0"
|
||||
|
||||
[features]
|
||||
default = ["emc2101-tach"]
|
||||
generate-clki = []
|
||||
emc2101-tach = []
|
||||
emc2101-alert = []
|
||||
|
||||
[profile.release]
|
||||
# Explicitly disable LTO which the Xtensa codegen backend has issues
|
||||
|
37
src/main.rs
37
src/main.rs
@ -6,6 +6,7 @@ use embassy_executor::{Executor, _export::StaticCell};
|
||||
use embassy_net::{tcp::TcpSocket, Config, Ipv4Address, Stack, StackResources};
|
||||
use embassy_time::{Duration, Timer};
|
||||
use embedded_svc::wifi::{ClientConfiguration, Configuration, Wifi};
|
||||
use emc2101_driver::{Level, EMC2101};
|
||||
#[cfg(feature = "generate-clki")]
|
||||
use esp32s3_hal::ledc::{
|
||||
channel::{self, ChannelIFace},
|
||||
@ -149,7 +150,7 @@ fn main() -> ! {
|
||||
/* embedded-hal-async is on its way : https://github.com/esp-rs/esp-hal/pull/510 */
|
||||
|
||||
// will be used to control emc2101/ina260/ds44232u
|
||||
let _i2c = I2C::new(
|
||||
let i2c = I2C::new(
|
||||
peripherals.I2C0,
|
||||
io.pins.gpio46,
|
||||
io.pins.gpio45,
|
||||
@ -157,12 +158,44 @@ fn main() -> ! {
|
||||
&mut system.peripheral_clock_control,
|
||||
&clocks,
|
||||
);
|
||||
|
||||
/* As of today embedded-hal-async traits are not yet available for I2C */
|
||||
/* see https://github.com/esp-rs/esp-hal/issues/70 */
|
||||
/* So cannot drive I2C slaves asynchronously for now... */
|
||||
/* This give me time to implement async in emc2101 driver too */
|
||||
|
||||
let mut emc2101 = EMC2101::new(i2c, emc2101_driver::SENSOR_ADDRESS).unwrap();
|
||||
/* Noctua PWM fan have a PWM target frequency of 25kHz, acceptable range 21kHz to 28kHz */
|
||||
/* The signal is not inverted, 100% PWM duty cycle (= 5V DC) results in maximum fan speed. */
|
||||
/* See https://noctua.at/pub/media/wysiwyg/Noctua_PWM_specifications_white_paper.pdf */
|
||||
emc2101.set_fan_pwm(25_000, false).unwrap();
|
||||
#[cfg(feature = "emc2101-tach")]
|
||||
emc2101.enable_tach_input().unwrap();
|
||||
#[cfg(feature = "emc2101-alert")]
|
||||
emc2101.enable_alert_output().unwrap();
|
||||
let lvl1 = Level {
|
||||
temp: 50,
|
||||
percent: 20,
|
||||
};
|
||||
let lvl2 = Level {
|
||||
temp: 70,
|
||||
percent: 50,
|
||||
};
|
||||
let lvl3 = Level {
|
||||
temp: 80,
|
||||
percent: 70,
|
||||
};
|
||||
let lvl4 = Level {
|
||||
temp: 90,
|
||||
percent: 85,
|
||||
};
|
||||
let lvl5 = Level {
|
||||
temp: 100,
|
||||
percent: 100,
|
||||
};
|
||||
emc2101
|
||||
.set_fan_lut(&[lvl1, lvl2, lvl3, lvl4, lvl5], 3)
|
||||
.unwrap();
|
||||
|
||||
let wifi_config = Config::Dhcp(Default::default());
|
||||
let wifi_seed = 1234; // very random, very secure seed
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user