1. เจเจพเจฃ เจชเจเจพเจฃ
เจเจเฉฐเจกเฉ 'เจคเฉ เจฆเฉ เจ เฉฑเจง-เจชเฉเจฒ เจเฉเจจเฉ เจคเจฃเจพเจ เจเฉเจเจพเจ เจฆเฉ เจจเจพเจฒ nrf52832 เจฎเจพเจเจเฉเจฐเฉเจเฉฐเจเจฐเฉเจฒเจฐ เจฒเจ เจเฉฑเจ เจธเฉฐเจเจพเจฐ เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจตเจฟเจเจธเจค เจเจฐเจจ เจฆเจพ เจเฉฐเจฎ เจธเฉเฅค
เจเจน เจเฉฐเจฎ เจเจธเจพเจจ เจจเจนเฉเจ เจธเฉ, เจเจฟเจเจเจเจฟ เจฎเฉเจจเฉเฉฐ เจเจฟเจธเฉ เจตเฉ เจธเจฎเจเจฆเจพเจฐ เจเจพเจฃเจเจพเจฐเฉ เจฆเฉ เจเจพเจ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเจฐเจจเจพ เจชเจฟเจ เจธเฉ. เจเจน เจตเจงเฉเจฐเฉ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉ เจเจฟ "เจฌเฉเจฐเจพเจ เจฆเฉ เจเฉเฉเจน" เจจเฉเจฐเจกเจฟเจ เจธเฉเจฎเฉเจเฉฐเจกเจเจเจฐ เจคเฉเจ เจนเฉ SDK เจตเจฟเฉฑเจ เจนเฉ - เจจเจฟเจฐเฉฐเจคเจฐ เจธเฉฐเจธเจเจฐเจฃ เจ เจชเจกเฉเจเจธ, เจเฉเจ เจฐเจฟเจกเฉฐเจกเฉเจเจธเฉ เจ เจคเฉ เจเจฒเจเจฃ เจตเจพเจฒเฉ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพเฅค เจฎเฉเจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจคเฉเจ เจธเจญ เจเฉเจ เจฒเจฟเจเจฃเจพ เจชเจฟเจ.
เจฎเฉเจจเฉเฉฐ เจฒเจเจฆเจพ เจนเฉ เจเจฟ เจเจน เจตเจฟเจธเจผเจพ เจเจธ เจคเฉฑเจฅ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ เจเจพเจซเจผเฉ เจขเฉเจเจตเจพเจ เจนเฉ เจเจฟ เจเจธ เจเจฟเฉฑเจช เจตเจฟเฉฑเจ เจเฉฑเจ BLE เจธเจเฉเจ เจนเฉ เจ เจคเฉ เจเจฐเจเจพ เจฌเจเจพเจเจฃ เจฎเฉเจก เจฒเจ "เจเฉเจกเฉเจเจผ" เจฆเจพ เจชเฉเจฐเจพ เจธเฉเฉฑเจ เจนเฉเฅค เจชเจฐ เจฎเฉเจ เจคเจเจจเฉเจเฉ เจนเจฟเฉฑเจธเฉ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจกเฉเฉฐเจเจพเจ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจเจพเจตเจพเจเจเจพ, เจเจฟเจเจเจเจฟ เจเจธ เจตเจฟเจธเจผเฉ 'เจคเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฒเฉเจ เจฒเจฟเจเฉ เจเจ เจนเจจเฅค
2. เจชเฉเจฐเฉเจเฉเจเจ เจฆเจพ เจตเฉเจฐเจตเจพ
เจฒเฉเจนเจพ:
- เจ เจกเจพเจซเจฐเฉเจ เจซเฉเจฆเจฐ nRF52 เจฌเจฒเฉเจซเจฐเฉเจ LE (เจนเฉฑเจฅ เจตเจฟเฉฑเจ เจเฉ เจนเฉเจเจ)
- HX711 ADC
- เจเฉเจจเฉ เจธเจเฉเจฐเฉเจจ เจเฉเจ 2 เจชเฉ.เจธเฉ. (50x2 เจเจฟเจฒเฉเจเฉเจฐเจพเจฎ)
- เจชเฉเจฐเฉเจเจฐเจพเจฎเจฐ ST-LINK V2
เจธเจพเฉฑเจซเจเจตเฉเจ เจฐ:
- IDE VSCODE
- NRF SDK 16
- เจเจชเจจเจเจธเฉเจกเฉ
- เจชเฉเจฐเฉเจเจฐเจพเจฎเจฐ ST-LINK V2
เจธเจญ เจเฉเจ เจเฉฑเจ เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ เจนเฉ, เจคเฉเจนเจพเจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจฎเฉเจเจซเจพเจเจฒ เจจเฉเฉฐ เจเจตเฉเจ เจเจฐเจจเจพ เจนเฉเจตเฉเจเจพ (เจคเฉเจนเจพเจกเฉ SDK เจฆเจพ เจธเจฅเจพเจจ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเฉ)เฅค
3. เจเฉเจก เจฆเจพ เจตเจฐเจฃเจจ
เจ เจธเฉเจ GPIOTE เจฎเฉเจกเฉเจเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจพเจฐเจเจพเจ เจ เจคเฉ เจเจตเฉเจเจเจพเจ เจฆเฉ เจฌเจพเจเจกเจฟเฉฐเจ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจชเฉเจฐเฉเจซเจฟเจฐเจฒ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจเจฐเจพเจเจเฉ, เจจเจพเจฒ เจนเฉ PPI เจฎเฉเจกเฉเจเจฒ เจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเฉเจธเฉเจธเจฐ เจฆเฉ เจญเจพเจเฉเจฆเจพเจฐเฉ เจคเฉเจ เจฌเจฟเจจเจพเจ เจเฉฑเจ เจชเฉเจฐเฉเจซเจฟเจฐเจฒ เจคเฉเจ เจฆเฉเจเฉ เจตเจฟเฉฑเจ เจกเฉเจเจพ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจจ เจฒเจเฅค
ret_code_t err_code;
err_code = nrf_drv_gpiote_out_init(PD_SCK, &config);//ะฝะฐัััะฐะตะฒะฐะตะผ ะฝะฐ ะฒัั
ะพะด
nrf_drv_gpiote_out_config_t config = GPIOTE_CONFIG_OUT_TASK_TOGGLE(false);//ะฑัะดะตะผ ะฟะตัะตะดะตัะณะธะฒะฐัั ะฟะธะฝ ะดะปั ะธะผะฟัะปััะฐ
err_code = nrf_drv_gpiote_out_init(PD_SCK, &config);//ะฝะฐัััะฐะตะฒะฐะตะผ ะฝะฐ ะฒัั
ะพะด
เจ เจธเฉเจ 10 ฮผs เจฆเฉ เจฎเจฟเจเจฆ เจฆเฉ เจจเจพเจฒ เจฆเจพเจฒเจพเจ เจจเฉเฉฐ เจชเฉเจฆเจพ เจเจฐเจจ เจฒเจ เจเจเจเจชเฉเฉฑเจ เจฒเจ PD_SCL เจธเจฎเจเจพเจฒเฉ เจฒเจพเจเจจ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐเจฆเฉ เจนเจพเจเฅค
nrf_drv_gpiote_in_config_t gpiote_config = GPIOTE_CONFIG_IN_SENSE_HITOLO(false);// ะฟะตัะตั
ะพะด ััะพะฒะฝั ั ะฒััะพะบะพะณะพ ะฝะฐ ะฝะธะทะบะธะน
nrf_gpio_cfg_input(DOUT, NRF_GPIO_PIN_NOPULL);// ะฝะฐ ะฒั
ะพะด ะฑะตะท ะฟะพะดััะถะบะธ
err_code = nrf_drv_gpiote_in_init(DOUT, &gpiote_config, gpiote_evt_handler);
static void gpiote_evt_handler(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
{
nrf_drv_gpiote_in_event_disable(DOUT);//ะพัะบะปััะฐะตะผ ะฟัะตััะฒะฐะฝะธะต
nrf_drv_timer_enable(&m_timer0);//ะฒะบะปััะฐะตะผ ัะฐะนะผะตั
}
เจ เจธเฉเจ HX711 เจฆเฉ เจคเจฟเจเจฐเฉ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจฒเจ DOUT เจกเฉเจเจพ เจฒเจพเจเจจ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐเจฆเฉ เจนเจพเจ; เจเฉเจเจฐ เจเฉเจ เจจเฉเจตเจพเจ เจชเฉฑเจงเจฐ เจนเฉ, เจคเจพเจ เจเฉฑเจ เจนเฉเจเจกเจฒเจฐ เจเจพเจฒเฉ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจฐเฉเจเจพเจตเจ เจจเฉเฉฐ เจ เจธเจฎเจฐเฉฑเจฅ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ PD_SCL เจเจเจเจชเฉเฉฑเจ 'เจคเฉ เจเจฒเจพเจ เจชเจฒเจธ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจพเจเจฎเจฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจพเจเฅค
err_code = nrf_drv_ppi_channel_alloc(&m_ppi_channel1);
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_assign(m_ppi_channel1, nrf_drv_timer_event_address_get(&m_timer0, NRF_TIMER_EVENT_COMPARE0), nrf_drv_gpiote_out_task_addr_get(PD_SCK));// ะฟะพะดะบะปััะฐะตะผ ัะฐะนะผะตั ะบ ะฒัั
ะพะดั
APP_ERROR_CHECK(err_code);
err_code = nrf_drv_ppi_channel_enable(m_ppi_channel1);// ะฒะบะปััะฐะตะผ ะบะฐะฝะฐะป
APP_ERROR_CHECK(err_code);
nrf_drv_gpiote_out_task_enable(PD_SCK);
// gpiote เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจเจฐเฉ
เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ, เจ เจธเฉเจ PPI เจฎเฉเจกเฉเจเจฒ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจเจชเจฃเฉ เจเจพเจเจฎเจฐ เจจเฉเฉฐ PD_SCL เจเจเจเจชเฉเฉฑเจ เจจเจพเจฒ เจเจจเฉเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจคเจพเจ เจเจฟ เจเจฆเฉเจ เจเฉเจ เจคเฉเจฒเจจเจพเจคเจฎเจ เจเจเจจเจพ เจตเจพเจชเจฐเจฆเฉ เจนเฉ เจคเจพเจ 10 ฮผs เจฆเฉ เจฎเจฟเจเจฆ เจฆเฉ เจจเจพเจฒ เจฆเจพเจฒเจพเจ เจชเฉเจฆเจพ เจเจฐเจจ เจฒเจ, เจ เจคเฉ GPIOTE เจฎเฉเจกเฉเจเจฒ เจจเฉเฉฐ เจตเฉ เจเจพเจฒเฉ เจเฉเจคเจพ เจเจพ เจธเจเฉเฅค
nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;// ะฟะพ ัะผะพะปัะฐะฝะธั
timer_cfg.frequency = NRF_TIMER_FREQ_1MHz;// ัะฐะบัะธััะตะผ ะฝะฐ ัะฐััะพัะต 1ะะณั
ret_code_t err_code = nrf_drv_timer_init(&m_timer0, &timer_cfg, timer0_event_handler);
APP_ERROR_CHECK(err_code);
nrf_drv_timer_extended_compare(&m_timer0,
NRF_TIMER_CC_CHANNEL0,
nrf_drv_timer_us_to_ticks(&m_timer0,
10),
NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK,
true);// ััะฐะฑะฐััะฒะฐะตั ะฟะพ ััะฐะฒะฝะตะฝะธั
เจ เจธเฉเจ เจเจผเฉเจฐเฉ เจเจพเจเจฎเจฐ เจ เจคเฉ เจเจธเจฆเฉ เจนเฉเจเจกเจฒเจฐ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจพเจเฅค
if(m_counter%2 != 0 && m_counter<=48){
buffer <<= 1;// ะฟะตัะตะผะตะฝะฝะฐั ััะธัะฐะฝะฝัั
ะดะฐะฝัั
c_counter++;// ััะตััะธะบ ะฟะพะปะพะถะธัะตะปัะฝัั
ะธะผะฟัะปััะพะฒ
if(nrf_gpio_pin_read(DOUT))buffer++;//ััะธััะฒะฐะตะผ ัะพััะพัะฝะธะต ะฒั
ะพะดะฐ
}
เจธเจญ เจคเฉเจ เจฆเจฟเจฒเจเจธเจช เจเฉเจเจผ เจเจพเจเจฎเจฐ เจนเฉเจเจกเจฒเจฐ เจตเจฟเฉฑเจ เจตเจพเจชเจฐเจฆเฉ เจนเฉ. เจชเจฒเจธ เจฆเฉ เจฎเจฟเจเจฆ 20 ฮผs เจนเฉเฅค เจ เจธเฉเจ เจ เจเฉเจฌ เจฆเจพเจฒเจพเจ (เจตเจง เจฐเจนเฉ เจเจฟเจจเจพเจฐเฉ เจฆเฉ เจจเจพเจฒ) เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฆเฉ เจนเจพเจ เจ เจคเฉ เจฌเจธเจผเจฐเจคเฉ เจเจฟ เจเจนเจจเจพเจ เจฆเฉ เจธเฉฐเจเจฟเจ 24 เจคเฉเจ เจตเฉฑเจง เจจเจพ เจนเฉเจตเฉ, เจ เจคเฉ เจเฉฑเจฅเฉ 48 เจเจเจจเจพเจตเจพเจ เจนเจจเฅค เจนเจฐเฉเจ เจ เจเฉเจฌ เจเจเจจเจพ เจฒเจ, DOUT เจชเฉเฉเจนเจฟเจ เจเจพเจเจฆเจพ เจนเฉ
เจกเฉเจเจพเจธเจผเฉเจ เจคเฉเจ เจเจน เจชเจคเจพ เจเฉฑเจฒเจฆเจพ เจนเฉ เจเจฟ เจฆเจพเจฒเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจเฉฑเจเฉ เจเฉฑเจ 25 เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ, เจเฉ เจเจฟ 128 เจฆเฉ เจฒเจพเจญ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเฉ เจนเฉ (เจเฉเจก เจตเจฟเฉฑเจ เจฎเฉเจ 25 เจฆเจพเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจนเฉ), เจเจน 50 เจเจพเจเจฎเจฐ เจเจตเฉเจเจเจพเจ เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจนเฉ, เจเฉ เจเจฟ เจกเฉเจเจพ เจซเจฐเฉเจฎ เจฆเฉ เจ เฉฐเจค เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉ.
++m_counter;// ััะตััะธะบ ัะพะฑััะธะน
if(m_counter==50){
nrf_drv_timer_disable(&m_timer0);// ะพัะบะปััะฐะตะผ ัะฐะนะผะตั
m_simple_timer_state = SIMPLE_TIMER_STATE_STOPPED;//
buffer = buffer ^ 0x800000;
hx711_stop();//jะพัะบะปััะฐะตะผ hx711
}
เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ, เจ เจธเฉเจ เจเจพเจเจฎเจฐ เจจเฉเฉฐ เจฌเฉฐเจฆ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจกเฉเจเจพ (เจกเฉเจเจพเจธเจผเฉเจ เจฆเฉ เจ เจจเฉเจธเจพเจฐ) เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ HX711 เจจเฉเฉฐ เจเฉฑเจ เจชเจพเจตเจฐ เจเจชเจค เจฎเฉเจก เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฆเฉ เจนเจพเจเฅค
static void repeated_timer_handler(void * p_context)
{
nrf_drv_gpiote_out_toggle(LED_2);
if(m_simple_timer_state == SIMPLE_TIMER_STATE_STOPPED){
hx711_start();// ะฒะบะปััะฐะตะผ hx711
nrf_drv_gpiote_out_toggle(LED_1);
m_simple_timer_state = SIMPLE_TIMER_STATE_STARTED;
}
}
/**@brief Create timers.
*/
static void create_timers()
{
ret_code_t err_code;
// Create timers
err_code = app_timer_create(&m_repeated_timer_id,
APP_TIMER_MODE_REPEATED,
repeated_timer_handler);
APP_ERROR_CHECK(err_code);
}
เจ เจธเฉเจ RTC เจเจพเจเจฎเจฐ เจคเฉเจ 10 เจธเจเจฟเฉฐเจ เจฆเฉ เจ เฉฐเจคเจฐเจพเจฒ เจจเจพเจฒ เจเจตเฉเจเจเจพเจ เจฆเฉ เจเจฎเฉเจฆ เจเจฐเจฆเฉ เจนเจพเจ (เจเจน เจคเฉเจนเจพเจกเฉ เจฎเจฐเจเจผเฉ เจ เจจเฉเจธเจพเจฐ เจนเฉ) เจ เจคเฉ เจนเฉเจเจกเจฒเจฐ เจตเจฟเฉฑเจ HX711 เจจเฉเฉฐ เจฒเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ, เจเจฟเจธ เจจเจพเจฒ DOUT เจฒเจพเจเจจ 'เจคเฉ เจฐเฉเจเจพเจตเจ เจเจเจเจฆเฉ เจนเฉเฅค
เจเฉฑเจ เจนเฉเจฐ เจฌเจฟเฉฐเจฆเฉ เจนเฉ, เจฒเฉเจเจธ UART เจฆเฉเจเจฐเจพ เจเจเจเจชเฉเฉฑเจ เจนเจจ (เจฌเจพเจก เจฐเฉเจ 115200, TX - 6 เจชเจฟเฉฐเจจ, RX - 8 เจชเจฟเฉฐเจจ) เจธเจพเจฐเฉเจเจ เจธเฉเจเจฟเฉฐเจเจพเจ sdk_config.h เจตเจฟเฉฑเจ เจนเจจ
เจธเจฟเฉฑเจเจพ
เจคเฉเจนเจพเจกเฉ เจงเจฟเจเจจ เจฒเจ เจคเฉเจนเจพเจกเจพ เจธเจพเจฐเจฟเจเจ เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ, เจฎเฉเจจเฉเฉฐ เจเจฎเฉเจฆ เจนเฉ เจเจฟ เจเจน เจฒเฉเจ เจฒเจพเจญเจฆเจพเจเจ เจนเฉเจตเฉเจเจพ เจ เจคเฉ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจฒเจ เจนเฉฑเจฒ เจฒเฉฑเจญเจฃ เจฒเจ เจเฉเจฎเจคเฉ เจธเจฎเจพเจ เจเจเจพเจเจเจพเฅค เจฎเฉเจ เจเจน เจเจนเจฟเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ เจเจฟ เจคเจเจจเฉเจเฉ เจชเจนเฉเฉฐเจ เจเฉ เจจเฉเจฐเจกเจฟเจ เจเจชเจฃเฉ เจชเจฒเฉเจเจซเจพเจฐเจฎเจพเจ เจตเจฟเฉฑเจ เจตเจฐเจคเจฆเจพ เจนเฉ เจเจฐเจเจพ เจเฉเจธเจผเจฒเจคเจพ เจฆเฉ เจฆเฉเจฐเจฟเจธเจผเจเฉเจเฉเจฃ เจคเฉเจ เจเจพเจซเจผเฉ เจฆเจฟเจฒเจเจธเจช เจนเฉ.
PS
เจชเฉเจฐเฉเจเฉเจเจ เจ เจเฉ เจตเฉ เจตเจฟเจเจพเจธ เจ เจงเฉเจจ เจนเฉ, เจเจธ เจฒเจ เจเฉเจเจฐ เจเจน เจตเจฟเจธเจผเจพ เจฆเจฟเจฒเจเจธเจชเฉ เจฆเจพ เจนเฉ, เจคเจพเจ เจ เจเจฒเฉ เจฒเฉเจ เจตเจฟเฉฑเจ เจฎเฉเจ เจญเจพเจฐ เจธเฉเจเจธเจฐเจพเจ เจจเฉเฉฐ เจเฉเจฒเฉเจฌเจฐเฉเจ เจเจฐเจจ เจฆเฉ เจจเจพเจฒ เจจเจพเจฒ BLE เจธเจเฉเจ เจจเฉเฉฐ เจเฉเฉเจจ เจฒเจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจพเจเจเจพ.
เจธเจฎเฉฑเจเจฐเฉ
เจชเฉเจฐเฉเจเฉเจเจ เจเฉเจก -
เจ เฉฐเจเจฐเฉเจเจผเฉ เจตเจฟเฉฑเจ HX711 เจฒเจ เจกเฉเจเจพเจธเจผเฉเจ -
เจธเจเฉเจฐเฉเจจ เจเฉเจ เจฆเฉ เจธเฉฐเจเจพเจฒเจจ เจฆเจพ เจตเจฐเจฃเจจ
เจธเจฐเฉเจค: www.habr.com