diff --git a/CLC-qthing/FastDimmer.cpp b/CLC-qthing/FastDimmer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cd1744c56b1aa2b3df1f7a7e090dc25bcae44373 --- /dev/null +++ b/CLC-qthing/FastDimmer.cpp @@ -0,0 +1,76 @@ +#include "FastDimmer.hpp" + +#include "driver/gpio.h" +#include "driver/ledc.h" + + + +static uint8_t channel = 0; + +ledc_channel_t getNextLEDChannel() { + return (ledc_channel_t)channel++; +} + + +static bool timerConfigured = false; + +static void configureTimer() { + if (!timerConfigured) { + ledc_timer_config_t ledc_timer; + ledc_timer.duty_resolution = LEDC_TIMER_1_BIT, // resolution of PWM duty + ledc_timer.freq_hz = 38000, // frequency of PWM signal; 2KHz is max for CN5711 + ledc_timer.speed_mode = LEDC_HIGH_SPEED_MODE, // timer mode + ledc_timer.timer_num = LEDC_TIMER_0, // timer index + // Required for newer esp-idf: + //ledc_timer.clk_cfg = LEDC_AUTO_CLK, // Auto select the source clock + ledc_timer_config(&ledc_timer); + + ledc_fade_func_install(0); + + timerConfigured = true; + } +} + + +FastDimmer::FastDimmer(uint8_t gpio) { + + configureTimer(); + + gpio_config_t conf; + + conf.intr_type = GPIO_INTR_DISABLE; + conf.mode = GPIO_MODE_OUTPUT; + conf.pin_bit_mask = 1ULL << gpio; + conf.pull_up_en = GPIO_PULLUP_DISABLE; + conf.pull_down_en = GPIO_PULLDOWN_DISABLE; + + gpio_config(&conf); + gpio_set_level((gpio_num_t)gpio, 0); + + + ledc_channel_config_t ledc_channel; + ledc_channel.channel = this->channel; + ledc_channel.duty = 0; + ledc_channel.gpio_num = (gpio_num_t)gpio; + ledc_channel.speed_mode = LEDC_HIGH_SPEED_MODE; + ledc_channel.hpoint = 0; + ledc_channel.timer_sel = LEDC_TIMER_0; + + ledc_channel_config(&ledc_channel); + + // setBrightness(0); + + ledc_set_duty(LEDC_HIGH_SPEED_MODE, this->channel, 1); + ledc_update_duty(LEDC_HIGH_SPEED_MODE, this->channel); + +} + +const float maxPWM = 1024.0f; + +void FastDimmer::setBrightness(float b) { + + uint16_t pwm = (uint16_t)( b*b * maxPWM ); + + ledc_set_duty(LEDC_HIGH_SPEED_MODE, this->channel, pwm); + ledc_update_duty(LEDC_HIGH_SPEED_MODE, this->channel); +} diff --git a/CLC-qthing/FastDimmer.hpp b/CLC-qthing/FastDimmer.hpp new file mode 100644 index 0000000000000000000000000000000000000000..b080f79c6c2be2ed1da506c915fc62e9df13e93a --- /dev/null +++ b/CLC-qthing/FastDimmer.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include <qthing.h> + +#include "driver/ledc.h" + + +ledc_channel_t getNextLEDChannel(); + + +class FastDimmer { + public: + FastDimmer(uint8_t gpio); + void setBrightness(float b); + + private: + ledc_channel_t channel = getNextLEDChannel(); +}; diff --git a/CLC-qthing/SimpleUART.cpp b/CLC-qthing/SimpleUART.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dda62a8877f492877c3dfe12b8cc86f7049c48cc --- /dev/null +++ b/CLC-qthing/SimpleUART.cpp @@ -0,0 +1,20 @@ + + + +/* + +const uart_port_t uart_num = UART_NUM_2; +uart_config_t uart_config = { + .baud_rate = 115200, + .data_bits = UART_DATA_8_BITS, + .parity = UART_PARITY_DISABLE, + .stop_bits = UART_STOP_BITS_1, + .flow_ctrl = UART_HW_FLOWCTRL_CTS_RTS, + .rx_flow_ctrl_thresh = 122, +}; +// Configure UART parameters +ESP_ERROR_CHECK(uart_param_config(uart_num, &uart_config)); + +*/ + + diff --git a/CLC-qthing/SimpleUART.hpp b/CLC-qthing/SimpleUART.hpp new file mode 100644 index 0000000000000000000000000000000000000000..01e5ce5c9bb532a4d73afe94a25cb13156f7b3f7 --- /dev/null +++ b/CLC-qthing/SimpleUART.hpp @@ -0,0 +1,6 @@ + +#include <cinttypes> + + + + diff --git a/CLC-qthing/device_config.h b/CLC-qthing/device_config.h new file mode 100644 index 0000000000000000000000000000000000000000..b9bf347820d4226a84c0a10de72f72607b341006 --- /dev/null +++ b/CLC-qthing/device_config.h @@ -0,0 +1,9 @@ +// hostname and device namespace +#define DEVICE_NAME "CyanLight" + +#define NTP_SERVER "pool.ntp.org" + + +#define DEVICE_IP "192.168.0.254" +#define DEVICE_GW "192.168.0.1" +#define DEVICE_NETMASK "255.255.255.0" diff --git a/CLC-qthing/device_main.cpp b/CLC-qthing/device_main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9b53a38e4ba7bc548fe171a47459331fe1f1b2d5 --- /dev/null +++ b/CLC-qthing/device_main.cpp @@ -0,0 +1,82 @@ +#include <qthing.h> + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "driver/gpio.h" + +#include "mqtt_common.h" +#include "esp_log.h" + + +#include "FastDimmer.hpp" + +#include "Arduino.h" + + +// ####################### +// ####### CONFIG ######## +// ####################### + +const uint8_t senderTX = 26; +const uint8_t senderCLK = 25; + +const uint8_t receiverRX = 23; + +// ### end cfg ### + + +HardwareSerial sender(1); +HardwareSerial receiver(2); + + +void senderTask(void *ignored) { + + uint16_t delay = 10; + vTaskDelay(delay / portTICK_PERIOD_MS); + + while (true) { + sender.print("Hello, Infrared communication!"); + vTaskDelay(delay / portTICK_PERIOD_MS); + + sender.print(" typing…"); + vTaskDelay(delay / portTICK_PERIOD_MS); + + sender.print(" ðŸ¾â€¦"); + vTaskDelay(delay / portTICK_PERIOD_MS); + + sender.println(" 🕷🕸ðŸ˜"); + vTaskDelay(delay / portTICK_PERIOD_MS); + } +} + + +void receiverTask(void *ignored) { + while (true) { + if (receiver.available()) + Serial.print( (char)receiver.read() ); + else + vTaskDelay(2); + } +} + + +void device_main() { + + // enable_wlan(); + + + // FastDimmer pt4115(IO_PT4115); + + FastDimmer baseClock(senderCLK); + + Serial.begin(115200); + + uint16_t baud = 4800; + + sender.begin(baud, SERIAL_8N1, -1, senderTX); // tx = 27 + receiver.begin(baud, SERIAL_8N1, receiverRX, -1); // rx = 26 + + xTaskCreate(senderTask, "sender", 8192, NULL, 6, NULL); + xTaskCreate(receiverTask, "receiver", 8192, NULL, 6, NULL); +} diff --git a/TripwireHook b/TripwireHook index a04734c6fe90526c2a2b60c76e9cbbf9e1908225..9feca91c60c8050f8df978ac0cb11ec11b4794ed 160000 --- a/TripwireHook +++ b/TripwireHook @@ -1 +1 @@ -Subproject commit a04734c6fe90526c2a2b60c76e9cbbf9e1908225 +Subproject commit 9feca91c60c8050f8df978ac0cb11ec11b4794ed